Why gyms have terrible signal
If you have ever tried to pull up a previous session mid-workout and watched a spinner hang indefinitely, you already know the problem. Gyms are hostile environments for mobile connectivity.
- Basement and underground locations. A large proportion of commercial gyms occupy basement floors. Concrete and steel attenuate radio signals sharply; a bar of LTE outside becomes no service two floors down.
- Thick concrete walls and dense metal equipment. Even ground-floor gyms built with reinforced concrete slabs and racks packed with steel weight plates create a Faraday-cage effect that degrades signal inside the training floor.
- Crowded Wi-Fi channels. Gyms that offer guest Wi-Fi often run cheap access points overloaded by dozens of members streaming music simultaneously. The resulting packet loss makes API-dependent apps behave as if offline anyway.
- Rural and suburban locations. Gyms outside city centres frequently sit in areas with weak carrier coverage to begin with. Roaming between towers mid-session adds latency spikes that interrupt app functionality.
The result is the same whether the cause is a basement, a concrete wall, or a saturated access point: an app that requires a live connection to function is unreliable exactly when and where you need it most. The solution is not hoping for better signal — it is choosing an app that does not need it.
What 'offline-first' actually means
"Offline-first" is a software architecture decision, not a marketing badge. It describes an app where the local device is the primary source of truth, and the network is treated as an optional enhancement rather than a dependency.
In a conventional app, every action — logging a set, fetching your last session, saving a workout — triggers a request to a remote server. If that request fails, the action fails. The app is effectively a thin interface for a database that lives somewhere else.
In an offline-first app, all data is written to storage on your device first. Every read and write happens locally, instantly, with no network round-trip. When a connection is available, the app synchronises the local state with the cloud — but that sync is background and optional. The workout you logged in the basement is saved whether or not the sync ever runs.
The technology that makes offline-first possible in a web app is IndexedDB — a structured database built into every modern browser and available inside Progressive Web Apps (PWAs). Data written to IndexedDB persists across sessions, survives the browser closing, and is never at risk of a network timeout.
How SammaGym works offline
SammaGym is built offline-first from the ground up using Dexie.js, a well-established wrapper around the browser's IndexedDB API. Every workout, every set, every personal record, and every progress photo you log is written to a local database on your device the moment you tap save.
- Log sets without a connection. Open a session, pick your exercises, and log weight and reps. Everything saves locally in real time. No spinner, no failure message, no lost data.
- See your previous session inline. The last session's weight and reps appear in grey under each active set — pulled from local storage, not a server, so they load instantly regardless of signal.
- Rest timer works offline. Start the rest timer between sets. It runs locally in the app and stays visible on your lock screen without any network activity.
- Progress photos stored locally. Photos are saved to local storage and are never automatically uploaded without your permission.
- Auto-regulated progression suggestions. The progression engine reads your local history to decide whether to suggest adding reps, adding weight, or holding steady. It does not call an API — the calculation runs on your device.
- Cardio GPS offline. GPS is a satellite signal, not a cellular one. SammaGym's cardio tracker reads GPS coordinates and records them locally. You can track a run or walk with no internet connection; the route is saved to your device at the end.
Optional cloud sync — backing your data up to SammaGym's servers and making it accessible across multiple devices — does require a connection when it runs. But it runs in the background automatically when you reconnect. The sync step never interrupts your session and its failure never causes data loss, because the local copy is always the authoritative record.
For a full overview of what SammaGym tracks, see the best free workout tracker comparison.
The privacy benefit of local storage
Offline-first architecture has a secondary benefit that matters to a growing number of people: your training data stays on your device by default.
Apps that require a live server connection upload your data with every interaction — sometimes to servers you cannot inspect, in jurisdictions you may not know, retained for durations you have not agreed to in plain language. Body weight, progress photos, workout frequency, and training capacity are genuinely sensitive personal data.
With SammaGym, everything you log remains on your device unless you actively choose to enable cloud sync. There is no server receiving your set data while you are lifting. The app does not need to phone home to function.
This is meaningfully different from apps that describe themselves as privacy-focused while still sending workout data to their servers in real time. Local-first means the data physically does not leave your device during a session.
Honest trade-offs: what does need a connection
An honest article about an offline-first app has to be clear about where the network is still required. SammaGym has three genuine dependencies on a connection.
- 1First install. SammaGym is a Progressive Web App. The first time you open it, your browser downloads the app shell, scripts, and assets — that requires a connection. After that first load, the service worker caches everything the app needs to function, and you can use it offline indefinitely. Think of it like installing from an app store: the download needs a connection; using it afterward does not.
- 2Optional cloud sync. If you want your data backed up or accessible on a second device, sync runs when a connection is available. This is optional — the app functions fully without it. If you never enable sync, your data stays local and no connection is ever needed after the first install.
- 3Account creation (optional). Creating a SammaGym account to enable sync requires a connection. If you use the app without an account (local-only mode), no sign-in is needed and no connection is required after install.
These are real constraints and worth knowing before you rely on the app in a dead-zone gym. The practical implication: open the app once at home before your first session in a low-signal environment, and the installation will be complete. You will not need a connection again to log workouts.
If you have been logging workouts in a spreadsheet and want to understand why a dedicated app handles offline scenarios better, see our guide on why spreadsheets fail for workout tracking.
How to install and use it offline
Installing SammaGym takes under a minute. Because it is a PWA, there is no app store involved — you install it directly from the browser.
- 1Open app.sammagym.com on your phone while you have a connection (home Wi-Fi, or any reliable signal).
- 2Wait for the page to fully load. The service worker will cache the app in the background — this is the only step that requires a connection.
- 3Tap your browser's share or menu button and choose Add to Home Screen (Safari on iOS) or Install App (Chrome on Android). The app icon will appear on your home screen.
- 4Open the app from the home screen icon. It now runs as a standalone app, indistinguishable from a native install.
- 5Set up your first program using the routine builder. Your exercises and program structure are saved locally.
- 6Walk into the gym — connection or not — and log your session. Every set saves immediately to your device.
Once installed, SammaGym works exactly like a native app for all core logging features. The rest timer stays on your lock screen, GPS cardio reads satellite position data independently of cellular signal, and your previous session loads instantly from local storage.
Sources
- Mozilla Developer Network — IndexedDB API, MDN Web Docs, developer.mozilla.org/en-US/docs/Web/API/IndexedDB_API.
- Google Developers — Offline Cookbook, web.dev/offline-cookbook.
- W3C — Service Workers specification, w3.org/TR/service-workers.
- Dexie.js — A Minimalistic Wrapper for IndexedDB, dexie.org.
- Apple Developer Documentation — Adding a Web App to the Home Screen, developer.apple.com.

