PWA iOS for a fitness studio: 1.2 MB vs 47 MB native, no App Store
A chain of 4 fitness studios wanted a mobile app for booking group classes, but didn't want to depend on store rules and pay 30% Apple commission. Built a progressive web app (PWA) — a site that installs on the phone like an ordinary app — with iOS Add to Home Screen, offline mode and push notifications.
Native iOS = store review on every change + 30% Apple commission + 47 MB install
The studio chain wanted a mobile app: group class schedule, booking, reminders 24 hours / 2 hours before training, visit history and memberships. Competitors built native iOS — but 30% Apple commission on in-app payments, $99/yr developer fee, and App Store review on every update, including text edits.
Second pain point: clients didn't want to "install yet another app". A competitor's native app got 2,100 installs in 14 days, but only 47% activated (opened more than once). Half the installs "lived" in the apps folder and were never opened.
The studios wanted to test new features quickly (e.g. video workouts), but the native flow required a fresh App Store review for every meaningful change — which blocked product velocity.
PWA with iOS-specific tuning for Add to Home Screen
- PWA manifest + Service Worker (Workbox 7) — the app installs with one tap via "Share → Add to Home Screen" with full icon and splash screen
- iOS-specific meta tags — apple-touch-icon for all iOS widths (180/167/152/120 px), `apple-mobile-web-app-status-bar-style`, `viewport-fit=cover` for notch on iPhone X+
- Install prompt for iOS — iOS Safari doesn't show the install banner automatically, so we added our own "Install for notifications" prompt with a 2-screen walkthrough
- Offline-first via IndexedDB — schedule, profile, training history, and membership cached locally. Viewable on the metro without network
- Background sync — booking a class even offline. Service Worker saves the action and sends to the server as soon as network is available
- WebPush + iOS 16.4+ support — push notifications for bookings and reminders 24h / 2h (with iOS 16.4 Apple finally supported WebPush in installed PWAs)
- YClients embed + YooKassa — booking via YClients API, membership payment directly via YooKassa without 30% Apple commission
What's under the hood
PWA numbers vs native iOS
Saved: ~₽890,000 in the first year on Apple commission (vs native) with the same UX and push notifications. New-feature deploys — 30 seconds via CI/CD, no blocking App Store review.
Who benefits from PWA over native
- Booking services (fitness / salons / SPA / clinics) — UX like native, no App Store review, no 30% commission
- E-commerce — push notifications for order status, offline catalog, fast install straight from the browser
- B2B tools for teams — no App Store distribution needed, central deploy for all employees
- EdTech / online schools — assignment delivery, offline lesson viewing, no App Store review for every update
- Performance campaigns with PWA landing pages — the app installs instantly, with none of the native-SDK fingerprinting problems
From technical brief to a live PWA that looks and behaves like an App Store app — 4-5 weeks. Pricing from ₽450,000 for a first version (booking + offline + push), from ₽600,000 for a full PWA with integrations.
Discuss a PWADeep dive:What AI implementation actually costs: the web-app-instead-of-native quote and what it covers
Related cases
Playable ad for a casual game: CPI −38%, install rate +73%
Interactive HTML5 mini-level built with Cocos2d-js. 18 variations across 5 ad networks (FB / TikTok /…
Internal CRM: email, customer card, calls, chargebacks
A custom mail indexer over IMAP, a customer card with order history from both stores, LLM-drafted replies…
Promo-page generator: brief or URL → finished page
Python + tkinter: a built-in scraper lifts the logo, favicon and copy off a source page, a templating layer…
The 9,900 ₽ audit — with a concrete report and quote
I'll tell you what to deploy in your business first, what the payback looks like, and whether you need AI for the task at all (sometimes you don't).
Or just send your question — I reply within 2 hours