WhoBuilt

Offline first applications in React Native done well

Sep 14, 2018· 28 min· 787 views·Watch on YouTube

Speaker

Adrien Thiery of Veeva discusses building offline-first React Native apps at a Callstack conference.

Design for lost connectivity

Thiery shows how repeated pop-ups, endless loading screens, and apps that forget user data make poor offline experiences. He recommends keeping familiar parts of the interface available, giving calm status messages, preserving critical data such as tickets, and offering retry when useful.

Keep the interface useful offline

Trello lets users reopen previously loaded boards and cards, and mark checklist items complete while offline. This optimistic approach lets people keep working, but it depends on reliably saving and syncing their changes.

Save actions and state locally

Thiery uses his sample app InstaMeow to show how React Native Offline can expose connection status and adapt the interface. He stores selected cat images in Redux before attempting uploads, and uses Redux Persist to restore state after an app closes or crashes.

Queue requests and handle failures

For uploads, Thiery keeps pending images locally, moves successful uploads into the feed, and puts failed ones in a retryable state. React Native Offline can queue actions until connectivity returns and cancel queued uploads; he also recommends checking access to the app's server, not just general internet access.

Balance optimism with reliable storage

Thiery says background and post-closure action queues remain a gap for React Native offline apps, and notes that Redux Offline was not production-ready at the time. His guidance is to keep the UI responsive, be cautious with requests, save app state often, and prioritize the device over connectivity.

Takeaways

  • Keep familiar screens and useful local data available when the network drops.
  • Save user actions locally before sending them, then preserve failed work for retry.
  • Use optimistic UI only when queued changes can be reliably persisted and synced.
  • Check whether your own server is reachable, since internet access alone may not be enough.
  • Persist critical app state often so crashes or closures do not erase pending work.

Mentioned in this talk

Search inside this talk

What was claimed 10

Show all 10 facts

Related talks

Offline first applications in React Native done well, Adrien Thiery · WhoBuilt