Skip to main content
Skip to main content

Mobile QA checklist

Charts on mobile fail in predictable ways: zero height, page scroll fighting pinch-zoom, toolbar buttons clipped behind the notch. Use this checklist before release.

Setup guide: Mobile and responsive.
User-facing toolbar behavior: Top toolbar and mobile.

Before you test

RequirementWhy
viewport-fit=cover meta tagSafe areas on notched iPhones
Chart container has real height (vh, dvh, flex)Zero height = blank chart
ChartUI with compactBreakpoint={600} (default)Toolbar matches chart layout
Optional: mobileLayout="minimal"Fewer buttons on narrow bar

Automated checks (CI-friendly)

Run these in CI or locally before merge:

CheckCommandPass when
Chart environment testsnpm --prefix packages/chart testBreakpoint / matchMedia tests green
Compact layout testssameDesktop ↔ compact metrics toggle
Pointer helper testssameViewport coords for touch menu
ChartUI safe-area testsnpm --prefix packages/react-chart-ui testPadding uses safe-area-inset-*
Mobile toolbar E2Enpm --prefix apps/web run test:e2eCompact viewport shows ⋯ menu

Device matrix (manual)

Run your app with DevTools device mode or on real hardware.

TargetViewportBrowserPass when
Phone390×844iOS SafariNo horizontal page scroll; chart fills panel; ⋯ menu opens
Phone390×844Chrome AndroidPinch smooth; pan does not scroll page
Phone360×800Samsung InternetLong-press menu under finger; autoscale works
Tablet768×1024SafariToolbar readable; layout compact or touch
Narrow desktop580×900ChromeCompact toolbar; overflow not clipped
Desktop1280×800ChromeFull toolbar; left menu when drawing

Chart core

  • Resize or rotate: canvas reflows, no blank gaps
  • Value axis and time labels readable in compact mode
  • Legend truncates instead of overlapping plot
  • chart.setLayoutMode("desktop") forces desktop metrics on narrow window
  • chart.setLayoutMode("auto") restores reactive behavior

Touch interactions

  • Pan scrolls chart, not the document
  • Pinch zoom centers on fingers; stable at dataset edges
  • Long press (~500ms) opens menu at touch point
  • Menu actions work: go to start/end, autoscale, crosshair
  • Pinch dismisses open context menu
  • Crosshair stays after finger up (sticky crosshair)
  • Drawing hit targets feel usable (coarse pointer tolerance)

Gesture reference: Mobile and responsive.

ChartUI chrome

  • Pencil toggles drawing rail without page zoom
  • mobileLayout="default": indicators on compact bar
  • mobileLayout="minimal": indicators only under ⋯
  • ⋯ overflow: autoscale On/Off, scale (Lin/Log/%), settings, share (if on), currency
  • Settings dialog scrolls; OK/footer visible on small screens
  • Fullscreen uses viewport; safe area on notched devices
  • Exit fullscreen: chart height recovers (not 0px)

Page integration

  • viewport-fit=cover in HTML
  • Parent flex chain has min-height: 0 where needed
  • No double scrollbars (page + chart)
  • Modals and dropdowns usable on touch (portals not off-screen)

When to re-run this checklist

Re-test after changes to:

  • chartEnvironment, compact layout, InteractionsController
  • ChartUI, TopMenu, overflow menu CSS
  • Dialog components or --ui-mobile-breakpoint

Reporting bugs

Include:

  • Device model, OS version, browser
  • Viewport size, mobileLayout prop
  • Fullscreen yes/no
  • Screen recording for gesture issues

What is next?