Open source · built byDhwani RIS

An offline-first mobile framework for Frappe.

The building blocks for production-ready Flutter apps on Frappe — offline engine, sync, auth and metadata-driven forms.
$ flutter pub add frappe_mobile_sdk
Built on Frappe Framework
9:41
◦ no signal
Visit Log
6 entries · 3 waiting to sync
Household #2291
✓ synced
Immunisation · 09:12
Household #2292
✓ synced
Nutrition · 09:48
Household #2293
◷ pending syncing✓ synced
Immunisation · 10:24
Household #2294
◷ pending
Referral · 11:03
Household #2295
◷ pending
Nutrition · 11:31
+
The contract
SDKFlutter · MIT2.0 beta
ControlFrappe · AGPL-3.0
Frappev15+
Where it runs

Built for programmes like these

Health & nutrition

Household visits, immunisation, screening and referrals — recorded at the doorstep, reviewed centrally.

Education

Attendance, assessment and student journeys tracked across schools and cohorts.

Agriculture & livelihoods

Plot-level surveys, seasonal cycles and enterprise data collected on the move.

Trusted by

People's Action for National IntegrationShiv Nadar FoundationReliance FoundationAdani FoundationTata Steel FoundationGodrejDeloitteMahindraCRISILSwasti Health CatalystChetnaPeople's Action for National IntegrationShiv Nadar FoundationReliance FoundationAdani FoundationTata Steel FoundationGodrejDeloitteMahindraCRISILSwasti Health CatalystChetna
How offline works

Offline is the normal operating state.

Staff record work with no network. The entry sits on the device until a connection returns, then reconciles with your Frappe server.
Read the offline model →
Synced
Confirmed by the server.
Pending
On the device, waiting for signal.
Syncing
Reconciling with the server now.
Failed
Retried automatically; the entry stays on the device.

Start with the quickstart.

Open source. Runs on the Frappe backend you already have.