Proč PWA není mrtvé: případová studie trefa.app

Blog · 17. května 2026

Proč PWA není mrtvé: případová studie trefa.app

Progressive Web App hype skončil, ale technologie tiše dospěla. Co se naučil trefa.app během roku v produkci s tisíci uživatelů na iOS i Androidu.

Mezi roky 2017 a 2020 byla PWA technologickým hype-cyclem. Konference, blogposty, oficiální podpora Googlu i Microsoftu. Pak přišlo zklamání — iOS držel klíčové API zavřené, install prompty se ukázaly jako matoucí, marketing nativních aplikací byl pořád silnější. Komunita se přesunula k Flutteru, React Native a Capacitoru.

Tiše se ale stalo něco dalšího. PWA technologie dál dospívala. Apple v posledních letech doplnil chybějící API, browsery zlepšily install flow, service worker spec se ustálil. A pro produktové týmy bez velkého rozpočtu se z PWA stalo překvapivě silné řešení.

Tento článek je honest case study trefa.app — firemní tipovací aplikace postavená jako PWA — po roce v produkci. Co fungovalo, co nefungovalo a komu bych dnes PWA doporučil.

Kontext: co je trefa.app

Trefa.app je webová aplikace pro firemní tipovačku. Uživatel se přihlásí přes Google, založí ligu pro svou firmu, pozve kolegy přes odkaz nebo QR kód a všichni společně tipují výsledky zápasů. Aplikace synchronizuje data ze sportovních API (NHL, Premier League, mistrovství světa) a v reálném čase přepočítává body.

Frontend je Next.js 16 + React 19 + Tailwind, hostovaný na Vercelu. Backend je Django 5 + DRF + Channels na Hetzneru. Mezi tím PostgreSQL na Supabase a Redis pro real-time komunikaci.

Příjemný detail: žádná nativní iOS ani Android aplikace neexistuje. PWA je jediný klient. Uživatelé na iPhonu, Androidu, ve Windows i v macOS používají úplně stejnou věc.

Proč jsme šli do PWA místo nativních appek

Rozhodnutí bylo z velké části ekonomické. Nativní aplikace by znamenala:

  • Vývoj dvou paralelních klientů (iOS Swift + Android Kotlin), nebo nějaký cross-platform framework (Flutter, React Native).
  • App Store + Google Play submission proces — submission fee, review delays, periodické přepublikování při změnách backendové API.
  • Push notifikace přes APNs a FCM, dvě různé infrastruktury, dva různé certifikační procesy.
  • Update flow přes obchody — uživatel musí aktivně updatovat, část zůstává na starší verzi měsíce.

Pro produkt s relativně malou cílovkou (firemní týmy, ne mass-market) byly náklady na nativní vývoj výrazně vyšší než přínos. PWA odstranila všechny zmíněné body najednou.

Technické výhody, kterých si uživatelé nevšimnou

Tohle je část, kterou bych před produkčním nasazením podcenil. Z pohledu vývoje má PWA řadu konkrétních výhod, které šetří týdny práce ročně:

Deploy je okamžitý. Push do main → Vercel buildne → za 2 minuty je nová verze u všech uživatelů. Žádné submission, žádné čekání, žádné kompatibilní verze klienta vs. backendu. Pokud udělám breaking change v API, druhý den ji opravím a všichni mají fix bezprostředně.

Jeden kód pro všechno. iOS, Android, Windows, macOS, Linux — všude stejná aplikace. Žádné platformně specifické bugy ("toto se rozbíjí jen na iPhone 13 v dark módu"), žádná duplicitní implementace.

Krátký cesty k uživateli. Pošleš odkaz, klikne, je v aplikaci. Žádné "stáhněte si naši appku z App Store, zaregistrujte se a pak se přihlaste". Pro B2B produkty s nízkým frequency použití (tipovačka funguje jen během sportovního turnaje) je tohle obrovský konverzní benefit.

Push notifikace fungují i bez instalace. Service worker registruje push subscription. Když uživatel klikne "Povolit notifikace", začne dostávat upozornění před zápasy bez ohledu na to, jestli aplikaci přidal na home screen nebo ji jen občas otevřel v Safari.

Co PWA neumí (honest section)

Tady je upřímnost důležitější než marketing. PWA má reálné limity, na které jsme v produkci narazili.

iOS push notifikace mají specifika. Apple Web Push existuje od iOS 16.4, ale funguje jen pokud uživatel přidá PWA na home screen. Pokud používá aplikaci přes Safari taby, push subscription se neuloží. To je friction, který nativní aplikace nemá.

App Store není přístupný. Pro některé buyer persona (HR oddělení, IT manažery v korporátech) je "nemám to v App Store" ekvivalentní "není to seriózní". Subjektivní, ale reálný.

Některé OS API jsou nedostupná. Bluetooth Low Energy, NFC, deep file system access — pro běžnou aplikaci to nevadí, ale pokud potřebuješ tyhle features, PWA tě limituje.

Offline mód je možný, ale ne automatický. Service worker musíš nastavit ručně, cache strategie vymyslet, sync queues implementovat. Pro plně offline-first aplikaci je to víc práce, než si vývojáři představují.

Performance benchmark vs. nativní: PWA je pomalejší o ~15–25 % na první load (kvůli JS bundle parsing) a ~5–10 % v běžné interakci. Pro většinu aplikací nepostřehnutelný rozdíl, pro hardcore gaming nebo video editing je to dealbreaker.

Výsledky po roce v produkci

Konkrétní data z trefa.app po roce běhu:

  • Cross-platform stabilita — vývojářský tým 1 člověka udržuje aplikaci na všech operačních systémech bez specifických bugů. Stejný cyklus testování pro všechny.
  • Deploy frekvence — průměrně 3–5 deployů týdně přes Vercel. Žádný z nich neřeší App Store submission delay.
  • Push notifikace — aktivních ~70 % uživatelů, push delivery rate ~95 % na Android, ~85 % na iOS (díky home-screen install requirementu).
  • Žádné App Store fees — uspořeno cca 70 USD ročně na developer účty + cca 30 % komise z transakcí (která by jinak hrozila u in-app purchase).

Hlavní obchodní benefit nakonec nebyl technický. Byla to rychlost iterace. Pokud zákazník napsal "tahle funkce by se mi hodila", obvykle jsem ji ten den ze začal a do týdne byla v produkci. To u nativní aplikace prostě nejde.

Komu bych PWA dnes doporučil

PWA se hodí, pokud platí alespoň dva z následujících bodů:

  • Máš omezené zdroje a nemůžeš si dovolit dvě nativní aplikace plus webovou verzi.
  • Tvoji uživatelé používají aplikaci občas (ne každý den), takže nízká friction při prvním otevření je důležitá.
  • Tvoje aplikace nepotřebuje hardcore OS API (Bluetooth, NFC, plný file system).
  • Chceš deploy bez bran obchodů s aplikacemi.
  • Tvoje cílovka je smíšená — iOS i Android, mobil i desktop.

Naopak PWA pravděpodobně nebude správná volba, pokud:

  • Tvoje aplikace běží denně, několik hodin denně, a uživatelé ji intenzivně používají (sociální sítě, messaging).
  • Potřebuješ pokročilé OS integrace.
  • Tvoji buyer expectují App Store presence.
  • Performance je kritická (gaming, video, AR).

Závěr

PWA hype možná skončil, ale technologie tiše dorostla do bodu, kdy je pro mnoho produktů lepší volbou než nativní vývoj. Trefa.app stojí na PWA už rok a nevidím důvod to měnit. Naopak — kdybych dnes začínal znovu, šel bych do toho rychleji.

Pokud zvažuješ pro svůj projekt mezi PWA a nativní aplikací, vezmi v úvahu jednu věc nad rámec technických argumentů: PWA tě posune rychleji do produkce. A v ranější fázi je rychlost iterace cennější než cokoliv jiného.

Mimochodem, trefa.app si můžeš sám vyzkoušet — žádná instalace, jen klik a tipuješ.

Proč PWA není mrtvé: případová studie trefa.app