{"apis":["/useDateRange","/useTimezone"],"bug_class":"configuration_and_environment","fault_shape":"dt-1.tz-arg","fidelity_tier":"A","id":"card-dt-1.tz-arg-umami-4112","mechanism":"RevenuePage called useDateRange() without a timezone argument, so parseDateRange() fell back to the browser's local timezone when computing startDate/endDate, while the rest of the application used the configured settings timezone.","provenance":{"date":"2026-03-25","license":"MIT","repository":"https://github.com/umami-software/umami","source_links":["https://github.com/umami-software/umami/pull/4112","https://github.com/umami-software/umami/commit/e6f3f3b4b40a490d5cb050471baa0999366dab2a"]},"references":{"diff_excerpt":"diff --git a/src/app/(main)/websites/[websiteId]/(reports)/revenue/RevenuePage.tsx b/src/app/(main)/websites/[websiteId]/(reports)/revenue/RevenuePage.tsx\nindex 3e429c1..4dc19e0 100644\n--- a/src/app/(main)/websites/[websiteId]/(reports)/revenue/RevenuePage.tsx\n+++ b/src/app/(main)/websites/[websiteId]/(reports)/revenue/RevenuePage.tsx\n@@ -1,13 +1,14 @@\n 'use client';\n import { Column } from '@umami/react-zen';\n import { WebsiteControls } from '@/app/(main)/websites/[websiteId]/WebsiteControls';\n-import { useDateRange } from '@/components/hooks';\n+import { useDateRange, useTimezone } from '@/components/hooks';\n import { Revenue } from './Revenue';\n \nexport function RevenuePage({ websiteId }: { websiteId: string }) {\n+  const { timezone } = useTimezone();\n   const {\n     dateRange: { startDate, endDate, unit },\n-  } = useDateRange();\n+  } = useDateRange({ timezone });\n \n   return (\n     <Column gap>","failing_tests":[]},"runtime_dependence":{"levers_absent":[],"levers_apply":[],"levers_unverified":["hidden_runtime_state","distance_between_symptom_and_cause","plausible_wrong_static_fix","path_ambiguity","ordering_or_concurrency","magnitude_visible_only_at_runtime","external_side_effect_semantics"],"reason":"The code change demonstrates that passing the timezone argument resolves the mismatch. However, the input does not show whether hidden runtime state, distance between symptom and cause, plausible wrong static fix, path ambiguity, ordering or concurrency, magnitude visible only at runtime, or external side effect semantics apply, are absent, or are unverified.","value":"unknown"},"shape":{"matched_lines":["-  } = useDateRange();","+  } = useDateRange({ timezone });"],"rules_matched":["dt-1.tz-arg.source"],"shape_id":"DT-1.tz-arg"},"symptom":"The revenue chart was using the browser's local timezone instead of the timezone configured in Umami settings, causing a visible mismatch between header stats and chart data points.","trigger":"useDateRange() called without timezone argument causing date range boundaries to be computed in browser's local timezone instead of the user's configured settings timezone"}