Workday · Mobile
Handheld ops UX for healthcare Zebra scanners — scan flow, density, and a design system that survives the floor. Operators move fast; mistakes cost time on the shift.
Operators run scan-heavy inventory on Zebra handhelds — small screens, physical keys, gloves, and no time for mis-taps. Canvas Web was built for desktop; every wrong proportion slowed the line.
Fix shared components once so all 21 tasks feel consistent — fleet-level reliability, not one-off screen polish.
Proved scan flow and density on batch pick, then extended Canvas Web in code — Figma targets, Cursor in the repo, 9 PRs merged.
Operators got tighter scan-to-confirm flows on real hardware. Mobile-web variants adopted beyond inventory.
A desktop design system, shift-long on a healthcare facility scanner
Clinical staff run inventory in mobile web on Zebra handhelds — rugged Android scanners in a healthcare facility supply area, with a hardware trigger and gloves-on use. The smallest screen in the fleet is our design minimum; desktop spacing breaks below that.
Scope
Not one pick screen. Every phase below runs on the same handheld WebView and shares the same component library.
Starting point
What we had
Legacy MAX mobile layer timing out under load. Canvas Web at desktop proportions — airy rows, truncated labels, scanner chrome eating the form.
What we chose
Extend Canvas Web for mobile web. Audit the shared components, re-proportion with existing tokens, and fix once — every task inherits.
Same library. Design in code. Shipped to production.
Built in code
React with Cursor — 9 merged PRs. Three screens became one. Internal PR artifacts on request.
Canvas Web is desktop-sized. Checked all 21 tasks at minimum width.
Re-sized padding & spacing with Canvas tokens.
9 PRs merged — top 3 contributor on the frontend work
Design in code
One of few Workday designers who ship to the repo — not just the file. I connected Cursor to the Canvas Web GitHub, pulled the design system into my workspace, and closed the gap between design and engineering.
Cursor linked to the Canvas Web GitHub — same codebase engineering reviews, design system on my machine.
Spacing and token values from Figma specs — prompted Cursor to apply the same Canvas tokens in component code.
Validated on the first inventory task, then rolled the pattern across every component in the modernization — 9 PRs merged.
Fix once. Every task inherits.
Labels truncated on the narrowest scanner. Swapped fixed spacing for clamp() — full text at minimum width.
Only 6 of 8 rows visible. Tightened padding — same layout, more lines per screen.
Blue panel ate a third of the screen. Moved scan state into the action bar.
The same end-to-end pick flow, rebuilt on the updated components
Legacy MAX on stock defaults — pick one line at a time, airy rows, a keypad covering half the screen.
Batch pick on the updated components — denser rows, fluid action bar, and the scanner driving every step.
Lead UX · design direction · design in code
Extended Canvas Web for mobile
Adapted spacing and density for Zebra scanners — same tokens, new proportions.
One catalog for 21 inventory tasks
Every screen pulls from the same shared component library.
Adopted by other teams
The mobile-web variants outlived the inventory project.
Nine PRs merged
Spacing, density, and fidelity shipped in code — not just in Storybook.