image_print

The App That Worked Perfectly (In Nairobi)

Fatima’s agricultural extension app was beautiful. Clean interface. Real-time data sync. Rich multimedia content. Cloud-based analytics. Her demo at the Kigali tech conference was flawless — everyone loved it.

Then she deployed it to rural Rwanda.

Within two weeks, her field officers were back to using paper forms.

The problems cascaded:

  • The app required constant internet connection to function.
  • Syncing failed when connectivity dropped mid-session.
  • Large video files consumed expensive data bundles.
  • The app crashed when the network was unstable.
  • Forms filled offline disappeared when connection returned.
  • Field officers frustrated, reverted to reliable pen and paper.

Fatima had built a perfect product for Nairobi’s 4G networks. But 80% of her actual users worked in areas with intermittent 2G connectivity at best.

Her investors wanted to know why adoption was dismal. Her field team was demoralized. Her carefully designed app was failing not because the concept was wrong, but because she’d designed for connectivity that didn’t exist.

Then she met David, a developer who’d spent years building tools for off-grid health workers in Malawi. He asked one question that changed her perspective:

“Did you design this app offline-first, or did you just add offline mode as an afterthought?”

The difference between those two approaches would determine whether her product succeeded or failed across most of Africa.

Read on to find out how to design products that actually work in low-connectivity environments — not as compromised versions of online products, but as purposefully designed solutions for the reality of African infrastructure.

Why “Mobile-First” Doesn’t Mean “Internet-First”

The mobile revolution in Africa is real. Mobile phone penetration exceeds 80% in most countries. Mobile money transactions dwarf traditional banking. Mobile internet subscriptions are growing rapidly.

But here’s what the statistics miss:

Reality Check 1: Coverage ≠ Connectivity

Network coverage maps show:

  • “90% of population covered by mobile networks”
  • Impressive 3G/4G rollout.
  • Growing internet penetration.

Ground reality is:

  • Coverage exists but reliability varies wildly.
  • 3G/4G available but users are on 2G to save costs.
  • Network congestion during peak hours.
  • Connectivity drops when moving between towers.
  • Rural areas: intermittent or no signal.
  • Urban informal settlements: congested networks.

Reality Check 2: Data Costs Are Prohibitive

Many African countries have the world’s most expensive data relative to income.

Typical costs:

  • 1GB of data: $5-15 (depending on the country).
  • Average daily income (informal workers): $2-5.
  • Monthly data budget for most users: $1-3.

User behaviour:

  • Data bundles purchased in tiny increments (20MB at a time).
  • Apps that consume data heavily are deleted immediately.
  • Downloads happen only on WiFi.
  • Videos/images are disabled in apps to save data.
  • Updates are turned off.

Example: A farmer earning $3/day isn’t going to spend $10 on data to use your agricultural app, no matter how useful it is.

Reality Check 3: Device Constraints Are Real

While smartphones dominate, the devices users actually have are:

Characteristics:

  • Entry-level smartphones (not flagships).
  • Limited storage (8-16GB, mostly full).
  • Low RAM (1-2GB).
  • Older Android versions (app compatibility issues).
  • Small screens with lower resolution.
  • Short battery life.
  • Frequently shared between multiple users.

User behaviour:

  • Apps that require >50MB storage get deleted.
  • Heavy apps that drain battery are avoided.
  • Sometimes there are multiple people using the same device (no personalization).
  • There are often apps competing for limited storage.

Example: Most users have phones costing $30-80. Apps designed for iPhone 14 or Samsung Galaxy S23 don’t work well on these devices.

The Five Connectivity Environments (Design for Yours)

Not all low-connectivity is the same. Understanding your environment determines design choices.

Environment 1: Intermittent Urban

Characteristics:

  • 3G/4G available but congested.
  • Connection drops frequently.
  • Speed varies wildly (fast to unusably slow).
  • WiFi available in some locations.
  • Power usually available for charging.

Examples: Informal settlements in Nairobi, Lagos, Johannesburg

Design implications:

  • The app you must handle connection drops gracefully.
  • Critical functions work offline, sync when connected.
  • Aggressive caching of frequently used data.
  • Background sync when WiFi detected.

User story: Street vendor in Lagos uses app throughout day with intermittent connection; everything syncs when they reach home WiFi at night.

Environment 2: Scheduled Connectivity

Characteristics:

  • No regular connectivity in work environment.
  • Periodic access (going to town, WiFi spots).
  • Intentional data usage (purchases bundles, uses deliberately).
  • Often 2G when available.

Examples: Rural farmers, remote health workers, village-based agents

Design implications:

  • Full offline functionality essential.
  • Sync happens in batches during connectivity windows.
  • Minimize data transfer (efficient sync protocols).
  • Clear indication of what’s synced vs pending.

User story: Health worker visits 20 patients/day in villages with no signal; syncs all data when returning to clinic with WiFi.

Environment 3: SMS/USSD Only

Characteristics:

  • Basic phones or smartphones used as basic phones.
  • No data plan.
  • SMS works reliably.
  • USSD menus accessible.

Examples: Rural areas with basic phone users, users who can’t afford data

Design implications:

  • Text-based interfaces (SMS, USSD).
  • Structured short codes.
  • Minimal text to reduce costs.
  • Server-side processing.

User story: Farmer receives agricultural tips via SMS, responds with codes to request specific information.

Environment 4: No Connectivity

Characteristics:

  • No network coverage at all (or extremely rare).
  • Occasional access (trips to town).
  • Devices used entirely offline.

Examples: Very remote areas, nomadic populations, cross-border zones

Design implications:

  • Entirely offline-capable.
  • Bluetooth/local network for peer-to-peer data transfer.
  • SD card data transfer options.
  • Standalone functionality.

User story: Community health worker in remote Uganda uses app entirely offline; transfers data via SD card when visiting district office monthly.

Environment 5: Hybrid Access

Characteristics:

  • Users move between environments.
  • Sometimes online (urban), sometimes offline (rural).
  • Need consistent experience across contexts.

Examples: Agricultural extension workers, mobile sales agents, field officers

Design implications:

  • Seamless offline-online transitions.
  • Smart sync (priority data first).
  • Conflict resolution for data edited in both modes.
  • Clear status indicators.

User story: Sales agent operates in cities (online) and villages (offline); app works consistently in both with intelligent background syncing.

The Offline-First Design Framework

Here’s how to design products that actually work:

Principle 1: Core Functionality Works Offline, Always

The shift: Don’t think “what can work offline?” Think “what absolutely requires connectivity?”

Traditional approach:

  • Design for online.
  • Add offline mode for some features.
  • Many features disabled offline.
  • “Please connect to internet” messages everywhere.

Offline-first approach:

  • Design for offline.
  • Sync when connectivity is available.
  • ALL core functions work offline.
  • Connectivity enhances but isn’t required.

Example — Medic Mobile (Multiple African countries):

Community health worker app for patient tracking and care.

Offline-first design:

  • All patient forms are fillable offline.
  • Patient history is accessible offline.
  • Decision support tools work offline.
  • Messaging queues for when online.
  • Photos are compressed and stored locally.

Connectivity used for:

  • Syncing when available.
  • Receiving updated protocols.
  • Sending non-urgent data.

Result: Health workers serve patients reliably regardless of connectivity. System still functions even when offline for days/weeks.

Principle 2: Data is Precious — Treat It Accordingly

The shift: Every byte of data transfer should be justified and optimized.

Data-efficient design:

Compress everything:

  • Images compressed before upload (90% size reduction possible).
  • Data sent in compact formats (binary vs JSON where appropriate).
  • Delta syncs (only changes, not full records).

Smart caching:

  • Cache frequently accessed data locally.
  • Predictive pre-caching (download likely needed data when WiFi available).
  • Clear cache when storage is limited.

Lazy loading:

  • Load data only when needed.
  • Don’t auto-download images/videos.
  • Give users control over what downloads.

Example — Eneza Education (Kenya):

Mobile learning platform for students.

Data efficiency:

  • Lessons delivered via SMS and USSD (no data required).
  • Smartphone app: all content cached locally (one-time download on WiFi).
  • Images: highly compressed, black/white line drawings (not photos).
  • Videos: Optional download only on WiFi.

Result: Students can access full curriculum on 20MB/month data budget.

Principle 3: Sync Intelligently, Not Constantly

The shift: From continuous real-time sync to intelligent batched sync.

Smart sync strategies:

Priority-based:

  • Critical data syncs first (e.g., urgent patient data).
  • Nice-to-have data syncs later.
  • User can manually trigger priority sync.

Condition-based:

  • Sync when WiFi is detected.
  • Sync when battery >30%.
  • Sync when idle (not during active use).

Conflict resolution:

  • Clear rules for handling offline edits to same data.
  • Version tracking.
  • User-friendly conflict UI when needed.

Example -TaroWorks (Salesforce for offline, used across Africa):

Field data collection tool.

Intelligent sync:

  • Critical data syncs immediately when connectivity available.
  • Non-critical data batches for efficient transfer.
  • Detects WiFi and syncs larger data automatically.
  • Mobile data: only critical small updates.
  • Conflict resolution: “Server version” vs “Your version” — user chooses.

Result: Field agents work seamlessly offline; data reliably syncs without eating data bundles.

Principle 4: Design for Graceful Degradation

The shift: Experience improves with better connectivity but core value remains even with worst connectivity.

Degradation hierarchy:

Best case (4G, unlimited data):

  • Rich media (videos, high-res images).
  • Real-time collaboration.
  • Instant sync.
  • Enhanced analytics.

Mid case (3G, limited data):

  • Compressed images.
  • Delayed sync.
  • Text-based content.
  • Core features fully functional.

Worst case (2G/SMS only):

  • Text-only interface.
  • Batch sync.
  • SMS/USSD fallback.
  • Essential functions still work.

Example — Farmerline (Ghana):

Agricultural information service.

Graceful degradation:

  • Best: Smartphone app with videos, images, voice notes.
  • Mid: SMS tips with basic formatting.
  • Worst: USSD menu with structured text info.
  • Same value across all tiers: actionable agricultural information reaches farmers.

Result: Service reaches farmers regardless of device or connectivity.

Principle 5: Make Offline Status Transparent

The shift: Users understand what’s happening, what’s synced, what’s pending.

Clear status indicators:

  • Connectivity status: Online/offline clearly indicated.
  • Sync status: “All synced” vs “3 items pending sync”
  • Data age: “Updated 2 hours ago” vs “Updated 3 days ago”
  • Actions: “This will send when online” vs “Sending now”

User confidence:

  • Users know data is safe (stored locally).
  • Users know what will happen when connectivity returns.
  • No mystery about whether actions succeeded.

Example — CommCare (Used by health programmes across Africa):

Mobile case management for health workers.

Transparency:

  • Clear online/offline indicator at top.
  • Pending submissions shown with count.
  • Each form shows sync status.
  • “Safe to close — data saved locally” messages.
  • Sync progress bar when online.

Result: Health workers trust the system; know their data is safe; understand submission status.

The Practical Low-Connectivity Toolkit

Let’s get tactical. Here are proven technical approaches:

Approach 1: Progressive Web Apps (PWAs)

What they are: Web apps that work offline using service workers.

Why they work for low-connectivity:

  • Install from web (no app store, saving data).
  • Work offline after initial load.
  • Update in background.
  • Smaller than native apps.
  • Work across devices.

When to use:

  • Content-focused apps (information, learning, reading).
  • Forms and data collection.
  • When you want one codebase for multiple platforms.

Example — Africa’s Talking USSD/SMS APIs:

While not PWA itself, their documentation site is PWA:

  • Developers can access docs offline.
  • Code examples cached locally.
  • Works on any device with browser.

Limitations:

  • Requires modern browser.
  • Some device features harder to access than native apps.
  • Initial load requires connectivity.

Approach 2: Hybrid Apps with Local Database

What they are: Apps (React Native, Flutter, etc.) with local storage (SQLite, Realm, etc.).

Why they work:

  • Full offline capability.
  • Fast local queries.
  • Sync when online.
  • Native device features accessible.

When to use:

  • Complex data relationships.
  • Frequent data queries.
  • Need native performance.
  • Multi-user devices.

Example — ODK Collect (Open Data Kit – widely used in Africa):

Data collection app for surveys and forms.

Offline-first design:

  • Forms downloaded once, used many times offline.
  • All data stored in local SQLite database.
  • Photos/audio/GPS stored locally.
  • Batch upload when connected.

Result: Used by thousands of organizations for offline data collection.

Approach 3: SMS/USSD Interfaces

What they are: Text-based interaction via SMS or USSD menus.

Why they work:

  • Works on any phone (even basic phones).
  • No data required.
  • Reliable even with poor signal.
  • Familiar interface for all users.

When to use:

  • Maximum reach (including basic phones).
  • Simple workflows (forms, queries, transactions).
  • When data costs are prohibitive.
  • Emergency/critical services.

Example — mPedigree (Ghana, Nigeria, Kenya, others):

Product authentication via SMS.

How it works:

  • Scratch code on product.
  • Send SMS with code.
  • Receive verification: genuine or fake.
  • No data, no app, no smartphone required.

Result: Millions of verifications; works for anyone with any phone.

Approach 4: Bluetooth/Local Sync

What it is: Peer-to-peer data sharing via Bluetooth or local WiFi.

Why it works:

  • No internet required.
  • Free (no data costs).
  • Works in zero-connectivity environments.
  • Good for group/community use.

When to use:

  • Very remote areas.
  • Group data collection.
  • Community sharing.
  • Resource constraints (one phone/tablet per group).

Example — Ustad Mobile (Offline learning platform):

Educational content sharing.

Offline distribution:

  • Content on teacher’s device.
  • Students connect via Bluetooth/local WiFi.
  • Content transfers peer-to-peer.
  • No internet needed.
  • Tracking syncs later when teacher reaches connectivity.

Result: Schools in remote areas access educational content with one internet-connected device shared to many.

Approach 5: Smart Caching and Pre-loading

What it is: Downloading and storing likely-needed data in advance.

Strategies:

  • Predictive: Download data user will probably need based on patterns.
  • Scheduled: Download updates at specific times (overnight when WiFi available).
  • User-controlled: Let users choose what to download.
  • Automatic cleanup: Remove old cached data when storage fills.

Example — WhatsApp:

Smart data management:

  • Auto-download only on WiFi (default setting in many African markets).
  • Compressed images.
  • Videos don’t auto-play (user taps to load).
  • “Low data usage” mode in settings.
  • Efficient caching of messages.

Result: Dominant messaging platform even in low-connectivity areas.

Your Low-Connectivity Design Checklist

Before building or deploying, assess:

Connectivity Context:

  • [ ] I know the actual connectivity in my users’ environments (not just coverage maps).
  • [ ] I understand data costs relative to user income.
  • [ ] I know what devices users actually have.
  • [ ] I’ve tested in real user environments (not just city WiFi).

Core Functionality:

  • [ ] All essential features work fully offline.
  • [ ] Users can complete critical workflows without connectivity.
  • [ ] App doesn’t crash when connectivity drops mid-session.
  • [ ] Data is safely stored locally.

Data Efficiency:

  • [ ] Images are compressed appropriately.
  • [ ] App uses minimal data for sync.
  • [ ] Users can control what downloads.
  • [ ] App size is <50MB (preferably <20MB).

Sync Design:

  • [ ] Sync happens in background intelligently.
  • [ ] Critical data prioritized in sync.
  • [ ] Clear sync status shown to users.
  • [ ] Conflict resolution is clear.

User Experience:

  • [ ] Offline status is clearly indicated.
  • [ ] Users understand what’s saved vs pending sync.
  • [ ] App loads quickly even offline.
  • [ ] Graceful degradation across connectivity levels.

Testing:

  • [ ] Tested on entry-level devices.
  • [ ] Tested with 2G simulation.
  • [ ] Tested with airplane mode.
  • [ ] Tested with intermittent connectivity.
  • [ ] Tested data consumption

Score: 15+ checks → Good offline design. <10 → Major gaps.

Your Low-Connectivity Design Action Plan

Phase 1: Reality Check (Week 1-2)

Understand actual context:

  • Visit users in their real environments.
  • Test connectivity where they work.
  • Understand their devices.
  • Map data costs relative to income.
  • Observe current workarounds.

Key question: What connectivity can we NOT assume exists?

Phase 2: Design for Worst Case (Week 3-4)

Define core offline functionality:

  • What absolutely must work offline?
  • How will data be stored locally?.
  • What’s the sync strategy?
  • How do we handle conflicts?

Prototype:

  • Build basic offline-first version.
  • Test in real conditions.
  • Validate assumptions.

Phase 3: Optimize Data (Week 5-6)

Minimize data footprint:

  • Compress images aggressively.
  • Use efficient data formats.
  • Implement delta sync.
  • Add user controls for downloads.

Measure:

  • Actual data consumption.
  • Storage requirements.
  • Battery usage.
  • Load times.

Phase 4: Test in Real Conditions (Week 7-8)

Field testing:

  • Deploy to small user group in actual environment.
  • Monitor connectivity patterns.
  • Track sync success rates.
  • Identify failure modes.
  • Gather user feedback.

Iterate:

  • Fix issues discovered.
  • Optimize based on real usage.
  • Improve efficiency.

Phase 5: Scale Thoughtfully (Month 3+)

Gradual rollout:

  • Expand to more users in same environment.
  • Monitor performance at scale.
  • Continue optimizing.
  • Build support systems for connectivity issues.

Low-Connectivity Design

Designing for low-connectivity isn’t about building a compromised version of an online product. It’s about purposefully designing for the infrastructure reality — which often results in a BETTER product for everyone.

The products that succeed:

  • Assume offline first, online as enhancement.
  • Treat every byte of data as precious.
  • Sync intelligently, not constantly.
  • Make connectivity status transparent.
  • Test relentlessly in real conditions.

So stop:

  • Designing for Silicon Valley connectivity and adding “offline mode” as afterthought.
  • Assuming “mobile-first” means “internet-first”
  • Building for flagship devices when users have entry-level phones.
  • Testing only on office WiFi.
  • Ignoring data costs.

Start:

  • Mapping actual connectivity in target environments.
  • Designing core functionality to work offline completely.
  • Optimizing every byte of data transfer.
  • Testing on entry-level devices in real conditions.
  • Treating connectivity as enhancement, not requirement.

When you design for low-connectivity environments, you don’t just make your product accessible to more users. You build more resilient, efficient, user-friendly products that work better for everyone.

The offline-first approach isn’t a constraint. It’s a discipline that produces better products.

Before building or deploying any product in African markets, ask:

“Would this product still deliver core value if the user had zero connectivity for a week?”

If the answer is no, redesign.

Because for millions of African users, zero connectivity for a week isn’t a hypothetical — it’s probable.

Build for that reality.