Calendar renders without layout overflow across 320 to 1440px viewports
Why it matters
A booking calendar that requires horizontal scrolling at 320px fails WCAG 2.2 SC 1.4.10 (Reflow) and locks out users on low-end Android devices, which represent a disproportionate share of mobile traffic in emerging markets. Fixed-width calendar grids are one of the most common causes of horizontal overflow: a 7-column week grid with fixed column widths adds up to 700px or more on desktop, which is unreadable on mobile. Missing viewport meta tags compound this by preventing the browser from scaling correctly. The result is that mobile users see a broken, unreadable booking interface and leave.
Severity rationale
Low because horizontal overflow is a usability defect rather than a data-integrity risk, but it directly excludes mobile users and violates WCAG 2.2 SC 1.4.10 (Reflow).
Remediation
Replace fixed-width calendar grid containers with responsive Tailwind utility classes and ensure src/app/layout.tsx includes the viewport meta tag.
// src/components/Calendar.tsx
export function Calendar({ slots }) {
return (
<div className="w-full overflow-hidden">
{/* 1-col on mobile, 4-col on tablet, 7-col on desktop */}
<div className="grid grid-cols-1 sm:grid-cols-4 lg:grid-cols-7 gap-1">
{slots.map(slot => <CalendarSlot key={slot.id} {...slot} />)}
</div>
</div>
)
}
In src/app/layout.tsx, confirm the viewport meta tag is present:
export const metadata = {
// ...
viewport: 'width=device-width, initial-scale=1',
}
Test at 320px, 375px, 768px, 1024px, and 1440px using browser DevTools device emulation — no element should extend past the viewport edge.
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 · 1.4.10 — Reflow — calendar content must reflow at 320 CSS pixels without loss of information
Taxons
History
- 2026-04-18·v1.0.0·Initial import from booking-calendar-availability·automated