fix: prevent NaN timestamps from breaking event charts in Firefox

When date-fns-tz zonedTimeToUtc returns Invalid Date in Firefox,
the unary + operator produces NaN, which gets sent as "NaN" in
query parameters. Routes using z.coerce.number().int() validation
(events/series, event-data/properties) reject NaN as non-integer,
returning 400 errors and showing "Something went wrong".

This fix:
- Falls back to raw date timestamps when timezone conversion
  produces NaN in useDateParameters
- Filters out NaN values in getQueryString to prevent invalid
  parameters from reaching the server

Fixes #4121
This commit is contained in:
seojcarlos
2026-04-07 21:24:11 +02:00
parent 0a838649b7
commit 2cd9657ae1
2 changed files with 6 additions and 3 deletions
+5 -2
View File
@@ -7,9 +7,12 @@ export function useDateParameters() {
} = useDateRange();
const { timezone, localToUtc, canonicalizeTimezone } = useTimezone();
const startAtValue = +localToUtc(startDate);
const endAtValue = +localToUtc(endDate);
return {
startAt: +localToUtc(startDate),
endAt: +localToUtc(endDate),
startAt: Number.isFinite(startAtValue) ? startAtValue : +startDate,
endAt: Number.isFinite(endAtValue) ? endAtValue : +endDate,
startDate: localToUtc(startDate).toISOString(),
endDate: localToUtc(endDate).toISOString(),
unit,
+1 -1
View File
@@ -2,7 +2,7 @@ export function getQueryString(params: object = {}): string {
const searchParams = new URLSearchParams();
Object.entries(params).forEach(([key, value]) => {
if (value !== undefined) {
if (value !== undefined && value !== null && !Number.isNaN(value)) {
searchParams.append(key, value);
}
});