Prečo PWA nie je mŕtve: prípadová štúdia trefa.app

Blog · 17. mája 2026

Prečo PWA nie je mŕtve: prípadová štúdia trefa.app

Progressive Web App hype skončil, ale technológia ticho dospela. Čo sa naučil trefa.app počas roka v produkcii s tisíckami používateľov na iOS aj Androide.

Medzi rokmi 2017 a 2020 bola PWA technologickým hype-cyklom. Konferencie, blogposty, oficiálna podpora Googlu aj Microsoftu. Potom prišlo sklamanie — iOS držal kľúčové API zatvorené, install prompty sa ukázali ako mätúce, marketing natívnych aplikácií bol stále silnejší. Komunita sa presunula k Flutteru, React Native a Capacitoru.

Ticho sa však udialo niečo ďalšie. PWA technológia ďalej dospievala. Apple v posledných rokoch doplnil chýbajúce API, browsery zlepšili install flow, service worker spec sa ustálil. A pre produktové tímy bez veľkého rozpočtu sa z PWA stalo prekvapivo silné riešenie.

Tento článok je honest case study trefa.app — firemná tipovacia aplikácia postavená ako PWA — po roku v produkcii. Čo fungovalo, čo nefungovalo a komu by som dnes PWA odporučil.

Kontext: čo je trefa.app

Trefa.app je webová aplikácia pre firemnú tipovačku. Používateľ sa prihlási cez Google, založí ligu pre svoju firmu, pozve kolegov cez odkaz alebo QR kód a všetci spoločne tipujú výsledky zápasov. Aplikácia synchronizuje dáta zo športových API (NHL, Premier League, majstrovstvá sveta) a v reálnom čase prepočítava body.

Frontend je Next.js 16 + React 19 + Tailwind, hostovaný na Verceli. Backend je Django 5 + DRF + Channels na Hetzneri. Medzi tým PostgreSQL na Supabase a Redis pre real-time komunikáciu.

Príjemný detail: žiadna natívna iOS ani Android aplikácia neexistuje. PWA je jediný klient. Používatelia na iPhone, Androide, vo Windows aj v macOS používajú úplne rovnakú vec.

Prečo sme šli do PWA namiesto natívnych appiek

Rozhodnutie bolo z veľkej časti ekonomické. Natívna aplikácia by znamenala:

  • Vývoj dvoch paralelných klientov (iOS Swift + Android Kotlin), alebo nejaký cross-platform framework (Flutter, React Native).
  • App Store + Google Play submission proces — submission fee, review delays, periodické prepublikovanie pri zmenách backendového API.
  • Push notifikácie cez APNs a FCM, dve rôzne infraštruktúry, dva rôzne certifikačné procesy.
  • Update flow cez obchody — používateľ musí aktívne updatovať, časť zostáva na staršej verzii mesiace.

Pre produkt s relatívne malou cieľovkou (firemné tímy, nie mass-market) boli náklady na natívny vývoj výrazne vyššie ako prínos. PWA odstránila všetky spomenuté body naraz.

Technické výhody, ktoré si používatelia nevšimnú

Toto je časť, ktorú by som pred produkčným nasadením podcenil. Z pohľadu vývoja má PWA množstvo konkrétnych výhod, ktoré šetria týždne práce ročne:

Deploy je okamžitý. Push do main → Vercel buildne → za 2 minúty je nová verzia u všetkých používateľov. Žiadne submission, žiadne čakanie, žiadne kompatibilné verzie klienta vs. backendu. Ak urobím breaking change v API, druhý deň ju opravím a všetci majú fix bezprostredne.

Jeden kód pre všetko. iOS, Android, Windows, macOS, Linux — všade rovnaká aplikácia. Žiadne platformovo špecifické bugy („toto sa rozbíja len na iPhone 13 v dark móde"), žiadna duplicitná implementácia.

Krátka cesta k používateľovi. Pošleš odkaz, klikne, je v aplikácii. Žiadne „stiahnite si našu appku z App Store, zaregistrujte sa a potom sa prihláste". Pre B2B produkty s nízkou frekvenciou používania (tipovačka funguje len počas športového turnaja) je toto obrovský konverzný benefit.

Push notifikácie fungujú aj bez inštalácie. Service worker registruje push subscription. Keď používateľ klikne „Povoliť notifikácie", začne dostávať upozornenia pred zápasmi bez ohľadu na to, či aplikáciu pridal na home screen alebo ju len občas otvoril v Safari.

Čo PWA neumí (honest section)

Tu je úprimnosť dôležitejšia ako marketing. PWA má reálne limity, na ktoré sme v produkcii narazili.

iOS push notifikácie majú špecifiká. Apple Web Push existuje od iOS 16.4, ale funguje len vtedy, ak používateľ pridá PWA na home screen. Ak používa aplikáciu cez Safari taby, push subscription sa neuloží. To je friction, ktorý natívna aplikácia nemá.

App Store nie je prístupný. Pre niektoré buyer persona (HR oddelenia, IT manažérov v korporátoch) je „nemám to v App Store" ekvivalentné „nie je to seriózne". Subjektívne, ale reálne.

Niektoré OS API sú nedostupné. Bluetooth Low Energy, NFC, deep file system access — pre bežnú aplikáciu to nevadí, ale ak potrebuješ tieto features, PWA ťa limituje.

Offline mód je možný, ale nie automatický. Service worker musíš nastaviť ručne, cache stratégie vymyslieť, sync queues implementovať. Pre plne offline-first aplikáciu je to viac práce, než si vývojári predstavujú.

Performance benchmark vs. natívna: PWA je pomalšia o ~15–25 % na prvý load (kvôli JS bundle parsing) a ~5–10 % v bežnej interakcii. Pre väčšinu aplikácií nepostrehnuteľný rozdiel, pre hardcore gaming alebo video editing je to dealbreaker.

Výsledky po roku v produkcii

Konkrétne dáta z trefa.app po roku behu:

  • Cross-platform stabilita — vývojársky tím 1 človeka udržuje aplikáciu na všetkých operačných systémoch bez špecifických bugov. Rovnaký cyklus testovania pre všetkých.
  • Deploy frekvencia — priemerne 3–5 deployov týždenne cez Vercel. Žiadny z nich nerieši App Store submission delay.
  • Push notifikácie — aktívnych ~70 % používateľov, push delivery rate ~95 % na Android, ~85 % na iOS (vďaka home-screen install requirementu).
  • Žiadne App Store fees — ušetrené cca 70 USD ročne na developer účty + cca 30 % komisia z transakcií (ktorá by inak hrozila pri in-app purchase).

Hlavný obchodný benefit nakoniec nebol technický. Bola to rýchlosť iterácie. Ak zákazník napísal „táto funkcia by sa mi hodila", zvyčajne som ju v ten deň začal a do týždňa bola v produkcii. To pri natívnej aplikácii jednoducho nejde.

Komu by som PWA dnes odporučil

PWA sa hodí, ak platia aspoň dva z nasledujúcich bodov:

  • Máš obmedzené zdroje a nemôžeš si dovoliť dve natívne aplikácie plus webovú verziu.
  • Tvoji používatelia používajú aplikáciu občas (nie každý deň), takže nízka friction pri prvom otvorení je dôležitá.
  • Tvoja aplikácia nepotrebuje hardcore OS API (Bluetooth, NFC, plný file system).
  • Chceš deploy bez brán obchodov s aplikáciami.
  • Tvoja cieľovka je zmiešaná — iOS aj Android, mobil aj desktop.

Naopak PWA pravdepodobne nebude správna voľba, ak:

  • Tvoja aplikácia beží denne, niekoľko hodín denne, a používatelia ju intenzívne používajú (sociálne siete, messaging).
  • Potrebuješ pokročilé OS integrácie.
  • Tvoji buyer očakávajú App Store presence.
  • Performance je kritická (gaming, video, AR).

Záver

PWA hype možno skončil, ale technológia ticho dorástla do bodu, kedy je pre mnoho produktov lepšou voľbou ako natívny vývoj. Trefa.app stojí na PWA už rok a nevidím dôvod to meniť. Naopak — keby som dnes začínal znova, šiel by som do toho rýchlejšie.

Ak zvažuješ pre svoj projekt medzi PWA a natívnou aplikáciou, vezmi do úvahy jednu vec nad rámec technických argumentov: PWA ťa posunie rýchlejšie do produkcie. A v ranejšej fáze je rýchlosť iterácie cennejšia než čokoľvek iné.

Mimochodom, trefa.app si môžeš sám vyskúšať — žiadna inštalácia, len klik a tipuješ.

Prečo PWA nie je mŕtve: prípadová štúdia trefa.app