diff --git a/README.md b/README.md
index 08648c0a..dcc6865f 100644
--- a/README.md
+++ b/README.md
@@ -9,18 +9,10 @@
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
---
@@ -119,18 +111,10 @@ docker compose up --force-recreate -d
## 🛟 Support
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
[release-shield]: https://img.shields.io/github/release/umami-software/umami.svg
diff --git a/src/components/metrics/RealtimeChart.tsx b/src/components/metrics/RealtimeChart.tsx
index a43dcb42..f42b96da 100644
--- a/src/components/metrics/RealtimeChart.tsx
+++ b/src/components/metrics/RealtimeChart.tsx
@@ -16,6 +16,7 @@ export function RealtimeChart({ data, unit, ...props }: RealtimeChartProps) {
const endDate = startOfMinute(new Date());
const startDate = subMinutes(endDate, REALTIME_RANGE);
const prevEndDate = useRef(endDate);
+ const prevData = useRef(null);
const chartData = useMemo(() => {
if (!data) {
@@ -28,14 +29,22 @@ export function RealtimeChart({ data, unit, ...props }: RealtimeChartProps) {
};
}, [data, startDate, endDate, unit]);
- // Don't animate the bars shifting over because it looks weird
const animationDuration = useMemo(() => {
+ // Don't animate the bars shifting over because it looks weird
if (isBefore(prevEndDate.current, endDate)) {
prevEndDate.current = endDate;
return 0;
}
+
+ // Don't animate when data hasn't changed
+ const serialized = JSON.stringify(chartData);
+ if (prevData.current === serialized) {
+ return 0;
+ }
+ prevData.current = serialized;
+
return DEFAULT_ANIMATION_DURATION;
- }, [endDate]);
+ }, [endDate, chartData]);
return (