Features
The basement gym does not have signal. That is fine.
MuscleBuddy is a PWA built to keep logging when your connection drops, not just to load faster. A workout or a meal logged offline queues on your device and reaches the server the moment you reconnect, in order, without being counted twice.
What keeps working with no connection
Log a workout set by set, log a meal, or log an activity session, and none of it waits on a network request. Entries are written straight to a local database on your device (IndexedDB, the same storage every installed app on your phone uses), and the app shows you an explicit banner the moment it detects you have dropped connection, so a failed request reads as "you're offline" instead of as a bug.
The app shell itself is precached on install, along with the exercise-image library you've already viewed, so navigating around MuscleBuddy, opening your program, checking an exercise, doesn't need a live connection either. What still needs signal is anything that has to ask the server a fresh question: a new exercise you have never opened, another lifter's profile, a page you have not visited before.
Syncing back up: automatic, ordered, and idempotent
The moment your browser reports you are back online, or the next time you open the app, everything queued gets flushed to the server in one pass. Each queued entry carries a client-generated id, and the server dedupes on it, so a sync that gets interrupted and retried never creates the same workout twice, which matters directly: a duplicated session would double-count your training volume, your PRs, your muscle ranks, and the XP you'd earn from it.
While something is still waiting to sync, a second banner tells you exactly how many entries are pending, with a manual retry if you want to force it rather than wait. Both banners clear themselves the instant there is nothing left to report.
What happens to something that cannot be synced
Every log carries a date, and the server only accepts a backdated entry within a fixed logging window. If you log offline for long enough that an entry ages past that window before you reconnect, it is not silently dropped: the app tells you plainly that it could not be synced and why, rather than pretending the entry succeeded. Anything the server can accept, network conditions aside, gets there.
If your specific browser cannot provide local storage at all, a rare edge case rather than the common path, the app tells you outright that it cannot save the entry on this device instead of losing it with no explanation. The honest failure is the design choice: a training log that silently vanished would be worse than one that tells you it could not be saved.
Why offline matters for a training and health app specifically
A commercial gym's basement, a garage with one bar of signal, a hotel gym on a work trip: these are exactly the places serious training happens, and they are exactly where a connection-dependent app fails you mid-set. Offline support here is not a convenience feature bolted onto a web app; it is what makes MuscleBuddy usable in the actual conditions training happens in.
It reaches every module that logs something in the moment. Training sessions and activity logs queue offline the same way food logs do, so your macros for the day are exactly right the next time you check, whether or not you had signal when you logged the meal. Health check-ins and Upkeep entries (appointments, medications, and the other maintenance cadences) benefit from the same install-as-an-app foundation, though the day-to-day offline queue is built first and most deeply around workout and food logging, the two you're most likely to need mid-session with no signal at all.
Frequently asked
- What can I actually do with no internet connection?
- Log a full workout set by set, log a meal, and log an activity session. Anything already loaded, your program, exercises you have viewed, stays browsable too. A brand-new page you have never opened still needs a connection the first time.
- Will I lose anything I logged offline?
- No, as long as it syncs within the standard logging window. Everything queues locally and flushes to the server automatically the moment you reconnect. If your browser genuinely cannot store data at all, the app tells you immediately rather than silently dropping the entry.
- Can logging offline create duplicate workouts when it syncs?
- No. Each entry carries a unique id the server checks before saving, so a sync that gets interrupted and retried cannot create the same session twice, which would otherwise double-count your volume, PRs, and XP.
- How do I know if something is still waiting to sync?
- A banner shows the exact number of entries still pending, with a manual retry available any time. It disappears once everything has synced.
- Do I need to install the app for offline logging to work?
- Installing it to your home screen (as a PWA) gives you the fullest offline experience, including notifications, but the offline queue and sync itself work in a browser tab too, as long as your browser supports local storage.
Train wherever the signal does not reach
Log your workout or your meal offline. It queues on your device and syncs the moment you are back online.