October 01, 2026 by Himesh R
Avni 18.0 replaces the database inside the mobile app. Here is why, and what it means for your organisation.
A field worker in a village with no signal can still register a child, record a visit and sync it all a week later. That works because every Avni phone carries its own database. In 18.0, we start moving to a new one. It takes time, but it leaves us with a more stable app that we can keep making faster.
Picture a relay. The old runner has carried our data for years and is tiring. The new runner is alongside, hand out. The handover is the only moment the baton can drop, and we have to make it thousands of times, phone by phone, one organisation per leg. So we run each handover slowly, and we watch every one.
| On the track | What it means |
|---|---|
| The race | Hand every phone's data from the old database to the new one |
| 18.0 | The new runner is on the track. No baton has changed hands yet |
| The legs | One organisation at a time, smallest first |
| Your part | Finish drafts and move to a custom dashboard. We check the rest |
| Is it over? | Moving data across is done and tested. Speed work for large organisations continues |
The old database is no longer actively maintained. By February it had gone six months without a release. Each time Android moves forward, the database must keep pace, and with nobody coaching it, every upgrade became a coin toss. One security flaw with no fix, and our runner would have stopped mid-lap.
So we brought in a new runner: one of the most widely used databases in the world, with plenty of people keeping it fit. Data on the phone stays encrypted, as before.
18.0 puts the new runner on the track. Nobody crosses yet.
Update the app and every user stays exactly where they are. A handover starts only when an administrator adds a user to the SQLite Migration user group, and they sync. We do that together with each organisation, on a date agreed with it.
There is nothing to do yet. Avni's delivery and support team will contact your organisation with the details, including the date, before any of your users move.
That group sits in every organisation's admin screen. Please don't use it yourself. A baton passed before both runners are ready is how it gets dropped. A user can be handed back, but only with the platform team, and their phone downloads all its data again.
The first leg is a small organisation with two users. Before the real thing, we rehearse it on a test copy of its data. Then one user crosses. Then the second. Only then does the next organisation step up.
Each organisation gets one visit, and everything happens in it:
Then the rest of its users cross in batches, and we keep watching that leg for a month after.
We start at two or three organisations a week, then pick up the pace. Large organisations run the last legs, once the handover has become boring. Boring is the goal.
Out goes Realm. In comes SQLite, through op-sqlite, with SQLCipher for encryption. We didn't rewrite the app. We built a layer on SQLite that behaves like Realm, and it translates rules written in Realm's query language to SQL as they run.
The design notes are public, starting with the technical overview.
If we run this right, the baton changes hands on every phone, and nobody in the field breaks stride.