Calendar displays appointment times in customer's local timezone
Why it matters
Displaying all appointment times in a single server timezone (typically UTC or the business owner's zone) forces customers to do mental arithmetic and guarantees no-shows. A customer in EST booking a slot labeled '14:00 UTC' will arrive at 2 PM local time, six hours late. This directly destroys revenue per missed appointment, generates support tickets, and violates baseline WCAG 3.1.4 abbreviation expectations when timezone labels are absent. High-volume booking platforms lose thousands of dollars weekly to this single defect.
Severity rationale
High because timezone display bugs produce silent no-shows that cost direct revenue per missed booking and damage customer relationships.
Remediation
Detect the viewer's timezone with Intl.DateTimeFormat().resolvedOptions().timeZone, then convert every stored UTC timestamp through date-fns-tz before render, and always display the zone abbreviation alongside the time. Update every appointment display component (calendar, confirmation page, email template). See src/components/AppointmentDisplay.tsx:
const userTz = Intl.DateTimeFormat().resolvedOptions().timeZone
const zoned = toZonedTime(appointment.start_time, userTz)
format(zoned, 'MMM d h:mm a zzz', { timeZone: userTz })
DetectionPro
The detection method for this pattern is part of AuditBuffet Pro.
The full method (what to look for, pass and fail conditions, and how results get reported) ships inside the Calendar & Availability Audit. The pattern definition, severity rationale, and remediation remain openly licensed under CC-BY-4.0.
External references
- wcag:2.2 · 3.1.4 — Abbreviations
Taxons
History
- 2026-04-18·v1.0.0·Initial import from booking-calendar-availability·automated