Gone Mobile

103: Offline Data Sync: Cautionary Tales

April 19th, 2024

The conversation revolves around the topic of offline battle tactics in mobile app development. Jon shares his experience with a pool app that required offline data storage and syncing. He initially used Realm, but faced issues with performance and scalability. He had to rewrite the login service and migrate data to a new backend. Allan discusses the challenges of offline data syncing, including handling deletes and updates, resolving conflicts, and ensuring data security. Jon explains his approach of using Cosmos DB and simple record types to handle offline data syncing. They emphasize the importance of considering the specific needs of the business and avoiding over-engineering solutions. The conversation explores the challenges and considerations of implementing offline functionality in mobile apps. The concept of 'end scars' is introduced, referring to the need to delete or reassign child data when the parent data is modified or deleted. The importance of handling offline scenarios gracefully and providing clear feedback to users is emphasized. The conversation also touches on the use of frameworks and abstractions for offline sync, with a discussion of Azure Mobile Apps and the limitations of such solutions. The benefits of using SQLite and the JSON support it offers are highlighted. In this final part of the conversation, Jon and Allan discuss their experiences with SQLite and offline functionality in mobile apps. They talk about the importance of optimizing app startup time and how SQLite can be a bottleneck in this process. They also share their preference for using SQL and the benefits of using SQLite-PCL-NET. The conversation then shifts to offline functionality and device-to-device communication, with Jon sharing his experience with Google's SDK for nearby communication. They briefly touch on the challenges of offline functionality in airplane environments and the limitations of Bluetooth connectivity. The episode concludes with a discussion on the importance of the SQLite raw library and its role in enabling advanced features like geolocation.


  • Offline data syncing in mobile app development can be challenging and requires careful consideration of business needs.
  • Choosing the right technology for offline data storage and syncing is crucial for performance and scalability.
  • Handling deletes, updates, conflicts, and data security are important aspects of offline data syncing.
  • Simplifying the data model and using simple record types can make offline data syncing easier to implement and maintain.
  • Avoid over-engineering solutions and focus on meeting the specific needs of the business. Offline functionality in mobile apps requires careful consideration and handling of data synchronization.
  • Handling 'end scars' is crucial, ensuring that child data is properly managed when parent data is modified or deleted.
  • Providing clear feedback to users about offline status and data synchronization is essential for a good user experience.
  • Using frameworks and abstractions for offline sync may have limitations and can lead to loss of control over data management.
  • SQLite is a reliable and widely-used option for local offline storage, with the added benefit of JSON support for flexible data storage. Optimizing app startup time is crucial, and SQLite can be a bottleneck in this process.
  • Using SQL and libraries like SQLite-PCL-NET can provide more control and flexibility in working with databases.
  • Offline functionality and device-to-device communication are important considerations in mobile app development.
  • The challenges of offline functionality in airplane environments include limited connectivity options and the need for peer-to-peer networks.
  • The SQLite raw library, maintained by Eric Sink, is a foundational piece for many SQLite-based solutions and enables advanced features like geolocation.


  • Hosts: Jon Dick, Allan Ritchie
  • Audio Engineer: Jim Heath


  • 00:00 Introduction and Setting the Stage
  • 01:43 Offline Battle Tactics and Scars
  • 08:14 Challenges with Realm and Login Service
  • 14:17 Avoiding Over-Engineering and Building Dependencies
  • 25:15 Simplifying the Data Model for Easier Syncing
  • 27:04 Conclusion and Key Takeaways
  • 27:34 Managing 'End Scars' in Data Synchronization
  • 29:23 Importance of Clear Feedback in Offline Scenarios
  • 32:30 Benefits of Using SQLite for Local Offline Storage
  • 37:28 Limitations of Frameworks for Offline Sync
  • 48:57 Optimizing App Startup Time and the Role of SQLite
  • 50:47 The Benefits of Using SQL and SQLite-PCL-NET
  • 51:20 Offline Functionality and Device-to-Device Communication
  • 52:21 Challenges of Offline Functionality in Airplane Environments
  • 55:18 The Importance of the SQLite Raw Library and Advanced Features

Episode Comments