← Blog

Your gym app should work without a signal

23 September 2026

Basements, car parks, that one corner by the rack — a gym is one of the few places people still lose signal every day. An app you train with has to survive it.

NOXFORGE keeps working when the connection drops mid-session: every set you log is written to the phone first and synced later. That part is easy. The hard part is the one nobody demos: opening the app when there was never a connection to begin with.

Three kinds of offline

They are not the same problem, and only the first one is obvious:

Why a service worker is not enough

A service worker caches the app so a browser can open it offline, and NOXFORGE has one. But in the Android app it cannot help with a cold start: a service worker never sees the WebView’s own top-level navigation. It handles what an already-loaded page asks for. So losing the network is covered and starting without one is not.

What actually works

The app ships a complete copy of itself inside the APK. At launch it asks Android one question — is there a network that actually reaches the internet? — and loads the live site if there is, or its own copy if there is not.

That question matters more than it looks. Android has a flag for “connected” and a separate one for “verified to reach the internet”, and the gap between them is every hotel wifi and every captive portal you have ever sworn at. NOXFORGE checks the second one.

Your training log comes back because it never lived only in the browser: it is mirrored to a file in the app's own storage on every change. Open the app on a dead phone in a basement and your history is there. Log a session, get a signal on the way home, and it merges and syncs on the next launch.

Why bother

Because the alternative is an app that is perfect in a demo and useless at the bottom of a stairwell. Offline is not a feature you add; it is a promise you either keep or you do not.

← More posts