Its raining in New York City as Doron waits for the 525 bus.
At the stop, hes trying a new transport app which doesnt seem to load offline.
The ticket he bought yesterday isnt showing, and even when he had service the real-time updates werent syncing.

As a mobile developer, he knows exactly why the app sucks:
Its a flop.
He knows people wont use it.
This is the real challenge adoption.

Its all well and good to build an app, but how many people will actually use the thing?
Users expect apps to run fast, be reliable, and theres always a competitors alternative if they dont.
Developers rely on us all having a positive experience.

With top consumer apps (e.g.
But theres hope heres how to build a great app without an army of developers.
Developers must think offline-first when building an app.

The best ones take full advantage of connectivity when available, but understand its temporary.
For offline, apps need a way to store data on the gadget.
That way they can still function when the service drops.
Unfortunately, most apps today use datastores not designed for mobile.
Many use relational frameworks that arent intuitive for developers and slow down deployment.
Developers have to write lines upon lines of custom code.
This all impacts the apps performance screens take longer to load and the features become unusable.
It means theyre unable to sync data between a unit 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 features that users nowexpectin mobile apps.
Think real-time messaging, collaboration, and the ability to see where your taxi is at that moment.
Without these features, people wont use it.
As users take action on an offline gear, data changes stay on the mobile gear.
Once the gear is online, data needs syncing between the gear and the backend.
Syncing takes significant time to develop due to the amount and complexity of custom code needed.
Developers building a sync solution themselves have a set of less-than-ideal choices:
1.
The data cant update easily.
It takes up space on a users mobile phone and drains battery life.
Conflict resolution is inherently complex.
It requires custom networking and conflict-resolution code.
Trying to simplify it with simple logic will result in users seeing data thats out of date.
Build a sync solution, working with REST:On the surface, working with REST can appear simple.
But the lack of a guaranteed connection makes it complicated.
Writing this code is complex.
It can take weeks or months of work, and thousands of lines of code.
The simplicity of REST turns out to be much more complicated in reality.
Building it the right way is tough.
If at any point this code isnt working perfectly, the tool might crash.
Negative impact on app development and developer productivity: Developers spend time writing extra, complex code.
It slows down the development of key features that users want.
Poor app performance: Apps with legacy datastores and poor sync run slow and crash.
Low adoption and retention: A mediocre app wont get used.
Users will uninstall it, losing time and money.
The fix
Developers today have a tough choice.
What they need is a simplified approach that works for them.
One that is flexible, intuitive, and mobile-first.
MongoDB Realmis just that.
It lets developers build fast and build well.
Its powered by the Realm Mobile cross-platform datastore and native sync solution.
It will help you iterate faster and deliver reliable apps.
Its used by many household names including 7Eleven, CBT Nuggets, and Acxiom.
So get ready to build a five-star app, unlike that transport one.
Join over 100k+ developers using the Realm Mobile Database, and get started for free withMongoDB Realm.