Why mobile-first is not optional
Three forces converged to make mobile-first the only sane default:
- Traffic share. Most sites now see 60-80% of sessions from a phone. For local businesses and consumer brands, often 90%+.
- Google's mobile-first indexing. Default since 2019. The mobile version of your site is what Google ranks. If desktop has content the mobile version hides, that content does not exist for ranking.
- Performance constraints. Mobile networks are slower and CPUs are weaker than desktops. Designing within those constraints first produces sites that are also fast on desktop. The reverse rarely holds.
What mobile-first design looks like in practice
- Layout starts at 320 px wide. One column, generous touch targets (44 × 44 px minimum), bottom-aligned primary actions where reachable
- Typography uses fluid scales. Headings and body text use
clamp()so they read well on every viewport without breakpoints fighting each other - Imagery uses srcset. Phones never download desktop-sized hero images
- Navigation is drawer or bottom-bar first, not hamburger-only. Mega-menus appear at larger viewports, not before
- Forms use correct input modes:
inputmode="email",inputmode="numeric",autocompleteattributes everywhere - JavaScript is deferred or eliminated. Mobile CPUs choke on heavy JS frameworks; we ship the minimum that the site actually needs
- Performance budget is enforced — typically < 100 KB JS, < 50 KB CSS, hero image < 200 KB
Mobile-first vs responsive: the difference
Responsive web design means the site adapts to any viewport. Mobile-first means the design process starts at the smallest viewport. They are related but not the same. A site can be responsive and not mobile-first (built for desktop, then squeezed onto a phone). A site can be mobile-first and not responsive (a separate "m." site, which is rare in 2026 and almost always wrong).
What we ship is both: responsive web design with a mobile-first design process underneath.
Performance budgets we use
We hold the line on these numbers for marketing sites:
- LCP < 1.5 s on mid-range Android (Moto G4 class) over throttled 4G
- INP < 100 ms
- CLS < 0.05
- Total page weight < 500 KB on first load
- JS shipped < 100 KB compressed
- Lighthouse mobile score 95-100
Web apps are different — they need more JS and more interactivity. We have separate budgets for those, scoped during discovery.
Where mobile-first connects to other services
- Web design overview — parent service
- Responsive web design — natural pair
- Small business web design — small businesses are usually mobile-dominant
- E-commerce web design — most e-commerce buying happens on a phone
- Website optimization — for retrofitting an existing site to mobile-first standards
- Mobile app development — when web is not enough
Frequently asked about mobile-first web design
Will the desktop version still look great?
Yes. Mobile-first does not mean "ignore desktop." It means starting small and progressively enhancing. The desktop version often ends up cleaner because we are forced to prioritize content first.
Do I need a separate mobile site?
No. Separate "m." subdomains were a workaround from 2010 when CSS could not handle responsive layouts. In 2026, one responsive mobile-first site is the default. Subdomain "m." sites typically hurt SEO and double maintenance.
What about progressive web apps (PWAs)?
If you need offline support, push notifications, or "install to home screen" without an app store, we ship the site as a PWA. We do that for sites where it adds real value — typically commerce, account-based services, content readers. We do not push PWA on every project; for many, a fast responsive site is enough.
This is one of six tracks under our web design services. If your project covers more than one — for example, you need both a redesign and an e-commerce layer — we scope it as a single engagement under the parent service.
Talk about your mobile-first web design project
Tell us about the project. We'll respond within 24-48 hours with a fixed-scope proposal: timeline, deliverables and budget.
Start a project →