Why Progressive Web Apps Are the Future of Mobile Gaming

4 min readpwa · games · mobile

Install friction is the tax every mobile game pays before anyone plays it. PWAs remove that tax — and for the categories that don't need a GPU, they're now genuinely good enough.

Ask someone to try a mobile game and count what you're really asking for: open a store, search a name, read a permissions list, wait on a 60MB download, watch an install bar, find the icon, sit through a splash screen, dismiss a rating prompt. Somewhere in there, most people leave.

That funnel is the single largest cost in casual mobile gaming, and it has nothing to do with the game. A progressive web app deletes most of it. You send a link; the game is playing in about two seconds.

For a certain class of game — board, card, puzzle, word, turn-based, anything that isn't chasing a GPU — that trade is now clearly worth making.

The install tax is the whole problem

Casual games live and die on a shared moment: someone says "try this" and sends a link. Every step between that message and the first move is attrition, and the drop-off compounds — a store listing, a download, an install, a cold start. Each stage loses people who were, seconds earlier, genuinely willing to play.

A PWA collapses that to one step. The link is the game. There's no intermediate page whose only job is to convince someone to keep going.

This matters more in markets like Nepal, where OmniPlay gets much of its traffic. Storage on a mid-range Android phone is contested; people uninstall things weekly to make room for photos. Data is often metered. A 60MB download is a real decision. A 300KB page is not a decision at all.

What "offline" actually buys you

The obvious objection is that a website needs a connection and an installed app doesn't. That stopped being true when service workers shipped.

A service worker precaches every asset the app needs on first visit. After that, the app boots from local storage with no network involved at all — the same as a native app, because functionally it is the same: bytes on the device, executed locally.

We verify this the blunt way: DevTools, tick Offline, hard reload, play a full game of Ludo start to finish. It works, because there's nothing left to fetch. The font is self-hosted, the sounds are synthesised in the browser rather than downloaded as files, and game state lives in localStorage. There is no network call in the critical path to fail.

That's the bar. An app is only as offline-capable as its least optional request, so the discipline is removing requests, not caching them harder.

Installability without a store

"Add to Home Screen" gives you the part of installation that users actually care about — an icon, a standalone window, no browser chrome — without the part they don't.

A web app manifest is enough:

{
  "name": "OmniPlay",
  "short_name": "OmniPlay",
  "start_url": "/",
  "display": "standalone",
  "background_color": "#0b0d11",
  "theme_color": "#0b0d11",
  "icons": [
    { "src": "/icons/icon-192.png", "sizes": "192x192", "type": "image/png" },
    { "src": "/icons/icon-512.png", "sizes": "512x512", "type": "image/png" },
    {
      "src": "/icons/maskable-512.png",
      "sizes": "512x512",
      "type": "image/png",
      "purpose": "maskable"
    }
  ]
}

The maskable icon is the one people skip, and it's why some installed PWAs show a white square inside the system icon shape on Android. It's a separate asset with the artwork inset into a safe zone, not a flag you can set on an existing icon.

With a manifest and a service worker, Chrome and Edge offer installation directly. On iOS it's Share → Add to Home Screen — more friction than it should be, and worth being honest about as a real limitation.

Shipping without a review queue

The deployment difference is easy to undersell. A bug in a native game means a build, a submission, a review of hours to days, then a staged rollout, then waiting for users to update. Some never do, so you support old versions indefinitely.

A bug in a PWA means a deploy. Everyone gets the fix on next load. There is one version in the world.

And these aren't mutually exclusive. A Trusted Web Activity wraps the same live PWA in a thin Android shell that satisfies Play Store distribution — no port, no second codebase. The store listing points at the site. You get store discovery while still shipping fixes by deploying.

Where the argument stops

PWAs are not the answer for everything, and pretending otherwise is how the technology got a reputation for overpromising.

If you need sustained 120fps 3D, tight controller latency, or gigabytes of streamed assets, build native. WebGL and WebGPU have closed much of the gap, but not the part where you need every millisecond and every megabyte.

iOS remains the real constraint, not raw performance: install is a manual Share menu step most users don't know exists, push notification support arrived late, and storage eviction policies are less forgiving than Android's.

The honest framing is by category. If your game is board, card, puzzle, word, trivia, or turn-based — anything where the bottleneck is a human deciding what to do next rather than a GPU filling a frame — the web is already fast enough, and the distribution advantage is decisive.

That's the whole thesis behind OmniPlay. Three board games, no download, no account, no ads, and it plays on a plane. The technology stopped being the interesting constraint a while ago. Getting someone to the first move is the one that still matters.