Offline First Apps

Offline First App Development

Tepia builds offline first mobile apps where the on device database is the source of truth and the network is treated as optional, so people keep working in basements, rural areas and crowded venues. Changes queue locally and sync in the background under defined conflict rules, using SQLite, Room, Core Data or Realm in native, React Native and Flutter apps.

The essentials at a glance

An offline first app is designed around the moment the connection drops, not the moment it comes back.

dream-app

Local First Data

Every screen reads from the on device database, so Tepia apps open instantly and keep working when the network disappears mid task.

Read: Field Tech Apps
connect-audience

Clear Conflict Rules

Tepia decides per record type whether the latest edit wins, fields merge, or the server rules, before any sync code is written.

Read: Rugged Device Enterprise Apps
smart-product

Outbox Sync

Changes go into a local queue with unique IDs and replay in order when signal returns, so nothing is lost and nothing saves twice.

Read: Field Inspection and Checklist App Development
optimize-ecommerce

Tested Disconnected

Tepia QA runs every core flow in airplane mode, on throttled networks and across app restarts, not just on office Wi-Fi.

The numbers matter.

Figures Tepia keeps in mind when deciding what an app must do without a connection.

32%

People Still Offline

The ITU estimates about a third of the world, roughly 2.6 billion people, was still not using the internet in 2024.

53%

Abandon Slow Loads

Google's 2016 mobile speed research found 53 percent of mobile visits are abandoned when a page takes longer than three seconds to load.

4.5

Average App Rating

Tepia clients report apps averaging 4.5 stars on the App Store and Google Play, and staying usable on bad signal is part of that.

Who needs an offline first app, and at what level

Coverage maps hide the places where work actually happens. Technicians lose signal in crawlspaces and mechanical rooms, inspectors work on rural sites, warehouse staff move through steel buildings, hospital teams pass through basements and imaging suites, and event staff scan tickets in a stadium where tens of thousands of phones share the same towers. If your app stops at a spinner in any of those places, people go back to paper and type it in later.

Not every app needs full offline capability, and Tepia sizes it to the job:

  • Cached reading. Recently viewed content stays available, such as a product catalog or a schedule. Suitable for most consumer apps.
  • Offline capture. Users create new records, photos and signatures offline that upload later, but rarely edit shared data. Common for inspections and proof of delivery.
  • Full offline read and write. Users edit shared records that others may also change, which requires sync with conflict handling. Typical for work orders, inventory and patient visit notes.

Each step up adds engineering, so Tepia agrees the level per feature during Discovery rather than applying the heaviest option everywhere.

Choosing a conflict strategy for each record type

Conflicts happen when two people change the same record while one of them is offline. There is no single right answer, so Tepia picks a rule per record type and writes it into the User Stories:

Strategy How it works Good fit Watch out for
Last write wins The most recent edit replaces the record Personal settings, a user’s own drafts Silent loss of another person’s changes; device clocks can be wrong
Field level merge Changes to different fields combine; only same field edits conflict Work orders, customer records, asset details Needs per field change tracking on the device
Server decides The server accepts or rejects the change against current state Inventory counts, bookings, anything with limited supply The user must be told clearly when a change is rejected
Append only events Each action is a new entry, never an edit Time logs, readings, chemical or medication records Totals must be calculated from events, not stored
Flag for review Both versions are kept and a person chooses Inspection findings, clinical notes Someone has to own the review queue

Append only designs are underrated. When every reading or note is its own record, most conflicts disappear, and you get an audit trail for free.

The architecture behind a reliable sync

Tepia builds offline first apps on a few rules that hold across native, React Native and Flutter projects:

  • The UI reads only from the local database. Room on Android, Core Data or SwiftData on iOS, SQLite or WatermelonDB in React Native, and Drift in Flutter. Network responses update the database, and the screen updates from there.
  • Every change goes through an outbox. Each change gets a unique ID so the server can safely ignore a duplicate when a retry follows a dropped response.
  • Sync moves deltas, not everything. The app asks for changes since its last cursor, deletions arrive as tombstones, and each user downloads only their territory, route or facility.
  • Background work respects the platform. Android WorkManager and iOS background tasks run sync when the system allows, and the app syncs again whenever it opens.
  • Photos travel separately. Attachments queue on their own, compress on device and upload in resumable chunks so one large file does not block form data.
  • Logins survive a long shift. If a token expires offline, the user keeps working and reauthenticates at the next sync.

On the server we build sync endpoints in Node.js or .NET on PostgreSQL, designed with our database design team. For simpler apps, Firebase offline persistence can be enough, and Tepia will say so.

How Tepia approaches offline first development

Offline behavior is planned in every one of the six Tepia phases, because adding it after launch usually means rewriting the data layer.

  1. Discovery: site visits or ride alongs to find the real dead zones, a review of the systems the app syncs with, and User Stories that state the offline level and conflict rule for each feature. The Investigation Summary estimates the volume of data each user needs on the device.
  2. Design: wireframes for sync status, pending changes, rejected edits and storage warnings, so users always know what has and has not reached the office.
  3. Development and Testing: the local schema, outbox and sync endpoints are built first. Alpha test plans cover disconnected use, and Beta runs on real devices in the places users actually work.
  4. Training: sessions show crews what the sync indicator means and what to do if a change is rejected.
  5. Launch: data migration seeds each device on first login, and the rollout goes team by team so sync load stays predictable.
  6. Support: sync failures are logged with device and app version, and repeat issues become tracked bugs.

Read about the full Tepia process.

Testing for the network your users really have

Office Wi-Fi hides every offline bug. Tepia QA uses the iOS Network Link Conditioner and Android emulator network profiles to simulate weak signal, then runs scripted cases that break naive apps: toggling airplane mode during a save, force closing the app mid sync, two devices editing the same record offline, a phone with the wrong clock, and a device that comes back after three days with hundreds of pending changes. We also test with low storage, since a full phone is a common reason sync fails in the field.

The app should never fail silently. Tepia builds a visible sync state showing pending items, the last successful sync and anything that needs attention. Offline first is a core part of our field tech apps and inspection and checklist apps, and it pairs well with rugged device apps. See our work or talk to Tepia about where your users lose signal.

Frequently asked questions

Who can build a mobile app that works without internet?
Tepia builds offline first iOS and Android apps in Swift, Kotlin, React Native and Flutter, with an on device database, an outbox for pending changes and background sync. Users keep working with no signal, and changes upload automatically when coverage returns.
What happens when two people edit the same record offline?
Tepia defines a conflict rule for each record type during Discovery, such as merging changes to different fields, letting the server decide for inventory, or flagging clinical notes for review. The rule is written into the User Stories and tested with two devices.
Can you add offline mode to an app we already have?
Often, yes, but it usually means rebuilding the data layer so screens read from a local database. Tepia starts with the features that matter most offline, such as forms and photos, and extends sync to other features in later releases.
Is Firebase offline support enough for our app?
For apps with simple data and few shared edits, Firebase offline persistence can work well, and Tepia will recommend it. When you need field level merging, large datasets per user or sync with an existing SQL system, Tepia builds a custom sync layer on PostgreSQL.
How do users know whether their work has synced?
Tepia designs a visible sync status showing pending items, the time of the last successful sync and any rejected changes. Users never have to guess whether a form reached the office.

What Our Customers Say.

A paragraph or two with information on your product/service or describes a problem your product/service is designed to solve.

Jascotina

CEO

“They customized the website’s backend to my business' specific needs and I am absolutely thrilled with the result.”

Water Saver Solutions

Senior Project Manager

"Tepia Co was always willing to go the extra mile for us."

Onward Engineering

VP & Operations Manager

"There are no hidden things, there are no surprises. We know what's going on."

Keep working when the signal drops