service / 03 mobile apps

Mobile apps,
shipped to both stores.

We build mobile applications in Flutter and React Native — one codebase, both stores, native modules only where the platform actually demands them. We've integrated M-Pesa SDK, biometric storage, USSD bridges, deep linking, push notifications via FCM and APNs, and offline-first sync. We also do the unglamorous part: writing the Play Store listing, navigating Apple's review process, and shipping the first update before churn hits.

— ch. 01 / what you get

What you get

One codebase for iOS + Android

Flutter 3 with Material 3 and Cupertino widgets, or React Native with Expo dev-client. Native modules only for things the framework genuinely can't do (deep-link interceptors, M-Pesa SDK, USSD overlays).

M-Pesa mobile SDK integration

STK Push initiated from the app, callback reconciled server-side, transaction history rendered from your own API. We handle the timeout edge cases that break most M-Pesa mobile flows in production.

Offline-first sync

Local SQLite or Realm cache, background sync to your API, conflict resolution by last-write-wins or by domain rules you specify. Works on a matatu through Limuru with no signal — syncs when it comes back.

App Store + Play Store submission

We write the Play Store listing copy, generate the screenshots, fill in the App Privacy questionnaire, and handle the inevitable Apple review pushback. You get an approved app, not a build artefact.

Crash reporting + analytics from day one

Sentry or Firebase Crashlytics wired in pre-launch. PostHog or Mixpanel for product analytics. You see crashes within minutes of them happening, not in a quarterly report.

— ch. 02 / our approach

Our approach

We default to Flutter for new projects because it gives us one codebase, one design system, and a build pipeline that doesn't require an M1 Mac for every developer. React Native is the right choice when you have an existing React web app and the team wants shared components — we'll use it when the case is real.

Mobile development has a longer feedback loop than web. A bad release stays installed for weeks. So we invest heavily upfront in CI, instrumented betas through TestFlight and Play Internal Testing, and a release checklist that has saved us multiple rollback emergencies.

Most engagements end with a 90-day stability retainer — we monitor crash rate, response to user reviews, and the small fixes that need to ship within a week of launch.

— ch. 03 / pricing & timeline

Pricing & timeline

single-platform MVP · 8–10 weeks · KES 350,000+ · Android first
cross-platform v1 · 10–14 weeks · KES 600,000+ · iOS + Android
complex flagship · 16+ weeks · KES 1,200,000+ · custom native modules
post-launch retainer · ongoing · from KES 60,000/month · bug-fix SLA

Includes Play Store + App Store developer account setup ($25 + $99/year passed through at cost). Apple review iterations included.

— ch. 04 / recent example

Recent example

Driver payout appa Flutter application for a Kerugoya-based logistics operator. Drivers see their daily runs, request M-Pesa B2C disbursements, and chat with dispatch — all offline-tolerant. Shipped to Play Store in 6 weeks of full-time work.

12,000 installs in month one — 4.6 star average
98.2% crash-free sessions on launch week
M-Pesa B2C payouts averaging 8.4 seconds end-to-end

Have a mobile app to scope?

Tell us what it should do for users and what they'll pay for it. We'll come back with a realistic 10-week plan.