The internet isn’t always there
Kids on the school bus. Parents on the Underground. A family device in the corner of the kitchen where the Wi-Fi gives up. Real family messaging happens on connections that aren’t always good — and an app that gives up the moment the bars disappear isn’t actually a family messaging app.
Shoal stays useful through all of that.
What works offline
- Reading your conversations. When you open Shoal without a connection, your most recent messages are already there — cached from the last time you had signal. The app loads instantly, full of context.
- Writing and sending new messages. Tap send and your message is encrypted and queued on your device. The bubble shows a queued status so you can tell at a glance which messages haven’t gone out yet.
- Switching between conversations. All your cached threads are browsable. No spinner, no “couldn’t load” errors, no losing your place.
What happens when you come back online
Queued messages send automatically — no manual retry, no duplicates. Each message has a stable client-side identifier, so even if the same message tries to send twice (browser flake, you closed the tab too soon), the server only stores one copy.
The status icons walk through the four delivery states — queued, sent, received, read — so you can watch each message find its way home. See message statuses for the full picture.
The honest shape of it
Offline reading is bounded by what’s cached. Older messages that weren’t in the most recent slice come back the next time you have signal. You can’t start fresh conversations offline (the contact list needs a server round-trip), and you can’t see messages sent to you while you were offline until the connection returns and the device syncs.
But the everyday case — open Shoal, read the last few messages, type a reply, hit send — works whether or not the network is cooperating. A thin amber banner at the top of the app lets you know when you’re offline; it goes away on its own when the connection’s back.
Why this is part of Shoal, not bolted on
A Progressive Web App in 2026 should not feel worse offline than a native app would. Shoal’s offline behaviour is built into the service worker and the on-device cache, not patched in after the fact — so the moment you install the app to your home screen, it already knows how to keep working when the network blinks. There’s no separate “offline mode” to switch on.