Mobile Web Apps
- Progressive Web Apps
- Mobile UX Engineering
- Touch Interaction
Web apps that feel native on a phone.
Swipe, drag, snap, and haptics that behave the way the platform taught people to expect. We build the interaction layer ourselves — you can install ours from npm and try it before you hire us.
What backs this
A shipping product and four published packages — each solving one piece of making the mobile web feel native. Install them, read them, try them on your phone.
A product, not a demo
Cue Quest — map discovery, verifiable check-ins, a social feed — runs as an installable PWA. No app store between you and your users, and no second codebase to pay for.
See the product →@present-day/reveal-row
Swipe-to-reveal actions for lists — the inbox gesture — driven by the browser's own scroll engine, so momentum and rubber-banding are the real thing.
Live playground →@present-day/carousel
A carousel on native CSS scroll snap. No reimplemented physics — swipes feel like the platform because they are the platform.
Live playground →@present-day/drawer
Bottom sheets with drag gestures, fractional snap points, and proper dialog semantics — focus trap, aria-modal, Escape to dismiss.
Live playground →@present-day/buzz
Haptic and audio feedback for taps that feel like taps — with graceful no-ops on devices that don't support it.
Live playground →
How it goes
Six steps.
No surprises.
The same process whether it’s one component or a whole product.
- 01
Free consultation
A call. What you're building, who it's for, what's in the way.
- 02
Scope & plan
Written scope, milestones, and a number — before anyone opens an editor.
- 03
Design
Screens and interaction states, reviewed on your phone, not in a slide.
- 04
Build
Working software at a private link from the first week.
- 05
Launch
Domain, analytics, and a handoff document you can actually read.
- 06
Support
Thirty days of fixes and tuning after you go live. Included.
Build it today.
Tell us what you’re making. We’ll tell you whether we’re the right people for it — and who is, if we’re not.