Offline is the absence of a dependency
You cannot bolt offline onto a design whose happy path is 'upload, wait, download.' The only reliable way to work without a network is to not need one. That is why our image compressor does its work with codecs running inside the browser: the moment the computation lives on the device, the network stops being load-bearing.
Caching the things you need before you need them
Even a client-side tool needs its assets — the page, the fonts, the WebAssembly codecs. Offline means having those already on disk when the connection is gone, so the first online visit quietly caches everything the later offline visits will depend on. The work happens early so that nothing has to be fetched at the worst possible moment.
A service worker is the switchboard
The piece that makes caching serve reliably is a service worker: a small script the browser runs that sits between a request and the network. It can answer a request straight from the cache when the network fails, so the app never sees an error it has to handle. Done well, it is invisible; done badly, it is the reason a stale version of your site refuses to die.
The honesty part
Offline is not magic. A tool that genuinely works offline should tell you which parts still need the network — checking for updates, fetching a fresh price, loading a codec you have never used. Pretending everything works offline when it does not is worse than admitting the limit, because it turns a small inconvenience into a mysterious failure.
The reward is calm
None of this shows up as a feature on a pricing page. What it buys is the absence of a specific kind of panic — the spinner that never resolves because you are on bad wifi. Dependability is mostly about removing the situations where software lets you down, and offline capability removes a very common one.