Každá firma chce mobilní aplikaci. Nikdo nechce platit za vývoj nativní appky pro iOS i Android, procházet app store review a řešit update distribuce. Progressive Web Apps slibují webovou aplikaci s nativním zážitkem. Funguje to v enterprise? Testovali jsme.
Co je PWA a proč nás to zajímá¶
Progressive Web App je webová aplikace, která splňuje tři kritéria: spolehlivá (funguje offline), rychlá (okamžitá odezva díky cache) a engaging (push notifikace, instalace na home screen). Technicky: Service Worker + Web App Manifest + HTTPS.
Pro enterprise to znamená: jeden codebase pro desktop i mobil, žádná závislost na app storech, okamžitá distribuce updatů, nižší náklady na vývoj. Twitter Lite, Starbucks, Pinterest — velcí hráči už přešli. A čísla mluví: Twitter zaznamenal 65% nárůst stránek na session a 75% nárůst tweetů.
Service Worker — srdce PWA¶
Service Worker je JavaScript, který běží v pozadí, nezávisle na stránce. Zachytává síťové requesty a rozhoduje, co servírovat z cache a co stáhnout ze serveru. Pro enterprise klíčové: aplikace funguje i bez internetu.
Strategie cachování závisí na use case. Cache First pro statické assety (UI, ikony, fonty). Network First pro data z API — zkusí síť, při selhání servíruje cache. Stale While Revalidate pro data, kde mírná neaktuálnost nevadí — okamžitá odpověď z cache, na pozadí aktualizace.
Náš pilot: docházkový systém¶
Firma s 500 zaměstnanci v terénu (technici, montéři). Potřebují logovat příchod/odchod z mobilů. Terénní pracovníci často bez signálu. Nativní appka = 2 platformy × vývoj × testování × app store distribuce.
PWA řešení: Angular 6 aplikace s Service Workerem. Offline formulář ukládá záznamy do IndexedDB. Při obnovení konektivity Background Sync odešle data na server. Push notifikace připomínají zapomenutý odchod.
- Vývoj: 3 měsíce (vs. odhad 5 měsíců pro 2 nativní appky)
- Distribuce: odkaz v e-mailu, „Add to Home Screen” prompt
- Aktualizace: deploy na server, Service Worker automaticky aktualizuje
- Offline spolehlivost: 99.8% úspěšná synchronizace
Výhody pro enterprise¶
Žádný app store. Interní firemní aplikaci nemusíte publikovat do Google Play ani App Store. Odkaz na intranet, QR kód na nástěnce. IT oddělení neřeší MDM pro jednoduchou utility aplikaci.
Okamžité updaty. Nová verze je otázka deploye na web server. Žádné čekání na review, žádné „uživatelé mají starou verzi”. Service Worker detekuje změny a aktualizuje cache na pozadí.
Nižší TCO. Jeden tým, jeden codebase, jeden deploy proces. Angular/React vývojář zvládne PWA — nepotřebujete specialisty na Swift a Kotlin. Pro interní nástroje (docházka, ticketing, inventura) je ROI jasný.
Limity a realita¶
iOS podpora. Safari přidalo Service Worker podporu v březnu 2018 (iOS 11.3). Ale s omezeními: žádné Background Sync, žádné push notifikace, 50MB storage limit, automatický výmaz cache po 2 týdnech neaktivity. Pro iOS-heavy firmy to je problém.
Hardware přístup. Bluetooth, NFC, kamera — přístup je omezený oproti nativním appkám. Web Bluetooth existuje, ale jen v Chrome. Pokud aplikace potřebuje skenovat čárové kódy přes kameru — funguje. Pokud potřebuje komunikovat s BLE senzorem — problém.
Performance. Pro datově náročné aplikace (velké tabulky, komplexní vizualizace) je JavaScript stále pomalejší než nativní kód. Pro formulářové aplikace (většina enterprise use cases) rozdíl není znatelný.
Kdy PWA, kdy nativní¶
PWA: interní nástroje, formuláře, dashboardy, jednoduché CRUD aplikace, informační systémy, kde offline režim = read-only nebo jednoduchý form submit. Budget-conscious projekty s krátkým time-to-market.
Nativní: zákaznické aplikace s vysokými UX nároky, potřeba hardware API (Bluetooth, NFC, ARKit), výkonově náročné aplikace (hry, 3D), aplikace závislé na push notifikacích na iOS.
PWA v enterprise dává smysl — pro správné use case¶
Progressive Web Apps nejsou náhrada nativních aplikací. Jsou alternativa pro 70% enterprise mobilních potřeb — interní nástroje, kde rychlost vývoje a snadná distribuce převáží nad omezeným hardware přístupem. Jeden codebase, žádný app store, okamžité aktualizace. Pro docházkový systém nebo field service appku je to no-brainer.