Skip to content
Clownmind logo
Engineering

Offline-first is a product decision before it is a technical one

Sync libraries will solve the mechanics. They will not tell you what should happen when two people edit the same record on a train. That part is yours.

TRTobias RennerMobile lead19 May 20267 min
Cover illustration for “Offline-first is a product decision before it is a technical one”

Every offline-capable app eventually faces the same question: two devices changed the same thing while disconnected, and now they have both reconnected. The library you chose will happily resolve this for you, usually by picking whichever write arrived last. That is a product decision being made by a default.

Decide the conflict rules with the business

For a fitness app, last-write-wins on a workout log is fine — the stakes are low and the user is usually the only editor. For a field-service app where a technician and a dispatcher can both edit a job, silently discarding one of them is a serious failure that will surface as a complaint months later.

We run a short workshop on exactly this before any sync code is written: for each entity, who can edit it, how likely a conflict is, and what the business wants to happen when one occurs. It takes an afternoon and it prevents an entire category of bug.

Design the degraded state, do not inherit it

  • Every screen needs a designed offline appearance, not a spinner that never resolves.
  • Queued actions should be visible. Users tolerate delay; they do not tolerate uncertainty about whether something happened.
  • Failed syncs need a path back — a retry the user can trigger, and an explanation they can understand.
  • Test on a genuinely bad connection, not on airplane mode. Intermittent is much harder than absent, and much more common.

The payoff

On the last app we built this way, check-in failures in poor-signal venues went from a weekly support theme to effectively zero. None of that came from the sync library, which was doing its job the whole time. It came from having decided, in advance, what should happen when things go wrong.

Keep reading

Bring us the messy version

Thirty minutes with an engineer who has done this before.

No sales sequence. One reply from a senior engineer, usually within a working day.

Packages

Our Website Development Packages

Fixed-price builds for the websites businesses ask us for most — from a four-page static site to a fully custom Laravel store. Each package spells out what is included, links to live sites we have built at that level and demos you can click through, so you know exactly what you are paying for before work starts.

5-8 Pages

WordPress Dynamic Website

₹25,000+18% GST

Demo links

  • Normal theme
  • Up to 4 banners on the home page
  • Dynamic website
  • Up to 8 pages
  • Query form with 4 fields
  • Social media page linking
Ask about this package
10 Pages

Dynamic Website

₹40,000+18% GST

Demo links

  • Technology: HTML5, CSS3, Laravel, MySQL
  • Responsive design for mobile
  • Normal theme
  • Up to 4 banners on the home page
  • Dynamic website
  • Up to 10 pages
Ask about this package
15 Pages

Professional Website

₹49,999+18% GST

Demo links

  • Technology: HTML5, CSS3, Laravel, MySQL
  • Responsive design for mobile
  • Visually appealing theme
  • Up to 4 banners on the home page
  • Dynamic or static website
  • 15 pages
Ask about this package

Prices are in Indian rupees and exclude 18% GST. Domain, hosting, paid themes, plugins and app subscriptions are billed at cost. Somewhere between two packages, or need something that is not listed? Ask for a quote — it usually takes one call.

Want a second opinion before you spend the budget?

Half an hour with a senior engineer. No slides, and no sales call pretending to be something else.