It’s aqueous in New York City as Doron waits for the 525 bus. At the stop, he’s trying a new carriage app which doesn’t seem to load offline. The ticket he bought bygone isn’t showing, and even when he had account the real-time updates weren’t syncing.

As a mobile developer, he knows absolutely why the app sucks:

  • It’s not built to work offline.
  • It doesn’t sync data in real time.

It’s a flop. He knows people won’t use it. 

This is the real claiming — adoption. It’s all well and good to build an app, but how many people will absolutely use the thing? Users expect apps to run fast, be reliable, and there’s always a competitor’s another if they don’t. 

Developers rely on us all having a absolute experience. With top customer apps (e.g. Whatsapp, Instagram, Netflix) setting new standards, it’s hard for new players — who may not have Netflix’s dev team and money — to match expectations. 

But there’s hope — here’s how to build a great app after an army of developers. 

Working offline

Even 10 years after the rise of smartphones, we can’t assume accessories will always be online. Developers must think offline-first when architecture an app. 

The best ones take full advantage of connectivity when available, but accept it’s temporary. 

For offline, apps need a way to store data on the device. That way they can still action when the account drops.

Unfortunately, most apps today use datastores not advised for mobile. Many use relational frameworks that aren’t automatic for developers and slow down deployment. 

Developers have to write lines upon lines of custom code. Rows and columns of data need custom mapping code to allow them to run with altar that the developers are alive in. 

This all impacts the app’s achievement — screens take longer to load and the appearance become unusable.


Real-time data sync (or lack of)

These legacy datastores also lack a native, real-time sync solution. It means they’re unable to sync data amid a device and a backend server when a user is online. Users end up seeing inaccurate data in their app, or the app might crash altogether. 

Sync also powers appearance that users now expect in mobile apps. Think real-time messaging, collaboration, and the adeptness to see where your taxi is at that moment. After these features, people won’t use it.

They’re not always easy to include, because:

  • Mobile accessories always flip amid online and offline.
  • Data is often alteration in many places, and data conflicts can emerge.

Mobile apps must reflect authentic data, even though data will be alteration across many users, devices, and the backend.

As users take action on an offline device, data changes stay on the mobile device. Once the device is online, data needs syncing amid the device and the backend. 

Data conflicts accordingly emerge, and if they aren’t handled well, users will find data that’s out of date, inaccurate, or lost.

Syncing takes cogent time to advance due to the amount and complication of custom code needed. Developers architecture a sync band-aid themselves have a set of less-than-ideal choices:

1. They can choose not to sync data, and instead download all the data onto a device: This is caching, and it has its problems. The data can’t update easily. It takes up space on a user’s mobile phone and drains array life. 

2. Build a sync solution, but aim to keep it simple: Simple sync solutions rarely bear a good user experience. Conflict resolution is inherently complex. It requires custom networking and conflict-resolution code. Trying to abridge it with simple logic will result in users seeing data that’s out of date. 

3. Build a sync solution, alive with REST: On the surface, alive with REST can appear simple. But the lack of a affirmed affiliation makes it complicated. When the affiliation drops while syncing data, logic needs to be in place to handle the errors and retry sending the data. Autograph this code is complex. It can take weeks or months of work, and bags of lines of code. The artlessness of REST turns out to be much more complicated in reality.


Building it “the right way” is tough. With accessories bottomward signal from block to block, apps need custom code to retry requests and handle errors when trying to sync data. If at any point this code isn’t alive perfectly, the appliance might crash. 

A characterless app leads to low acceptance & bad reviews

Legacy datastores and DIY data sync have after-effects that we’re all too accustomed with:

1. Negative impact on app development and developer productivity: Developers spend time autograph extra, circuitous code. It slows down the development of key appearance that users want.

2. Poor app performance: Apps with legacy datastores and poor sync run slow and crash. 

3. Low acceptance and retention: A characterless app won’t get used. Users will uninstall it, losing time and money.

The fix

Developers today have a tough choice. Build an app bound and accommodation on performance, or build it well and pay the price (of time and money).

What they need is a simplified access that works for them. One that is flexible, intuitive, and mobile-first.

MongoDB Realm is just that. It lets developers build fast and build well. It’s powered by the Realm Mobile cross-platform datastore and native sync solution. It will help you iterate faster and bear reliable apps. It’s used by many domiciliary names including 7Eleven, CBT Nuggets, and Acxiom.


So get ready to build a best app, unlike that carriage one. Join over 100k developers using the Realm Mobile Database, and get started for free with MongoDB Realm.

This commodity is brought to you by MongoDB.

Pssst, hey you!