Skip to main content
NELLA Labs

Technology in Africa

Designing for the connection your users actually have

Building for Ghana and Nigeria changes architecture decisions that a London-only product never has to make. Most of them are about payload size and failure behaviour, not device capability.

NELLA Labs Design · Product and service design6 min read

The common framing is "low-end devices", and it is mostly wrong. A four-year-old Android phone has enough processing power for almost any business application. What it does not have is a reliable, unmetered connection — and the cost of that data is a real household decision, not a technical footnote.

Payload size is a price, not a metric

When a user is on a metered connection, every megabyte your application ships has a cost they can name. A 3MB JavaScript bundle is not a Lighthouse score; it is money. This reframes performance work from optimisation to product ethics, and it changes what you are willing to trade.

  • Render the critical path on the server. The first meaningful view should not require a bundle to download, parse and hydrate before it exists.
  • Ship images responsively and in modern formats, and treat an unoptimised hero image as a defect rather than a nice-to-have.
  • Defer everything non-essential, and be honest about how much of your analytics and tag payload is essential.
  • Cache aggressively at the edge. Content that changes daily should not be re-fetched on every navigation.

Design the failure, not just the success

On an unreliable connection, requests fail routinely. A product that treats failure as exceptional will feel broken several times a session. The behaviour you design for a dropped request matters more than the behaviour you design for a successful one.

  • Never lose user input to a failed request. Persist locally first, synchronise afterwards.
  • Make retries explicit and manual where the action costs money, automatic where it does not.
  • Show real state: "saved", "saving", "not saved — retry" beats an ambiguous spinner that resolves into nothing.
  • Make destructive actions idempotent, because a user who is unsure whether a request succeeded will repeat it.

None of this is charity engineering. The same decisions — server-rendered critical paths, small payloads, honest failure states, idempotent actions — make the product better on a fibre connection in London. The constrained market simply makes the cost of ignoring them visible.

performancemobileAfricaaccessibility

Related

Applied AI

Your RAG system is a data leak waiting to happen

Most retrieval-augmented generation systems enforce permissions at indexing time, or not at all. Both are wrong, and the failure is invisible until it is severe.

8 min read

Identity and Trust

Identity verification is an orchestration problem, not an integration problem

Teams integrate a verification vendor per country and end up with several incompatible processes and no single audit trail. The fix is to make the sequence itself the thing you build.

7 min read

Responsible AI

Screen for high-risk processing during discovery, not before launch

A data protection impact assessment discovered two weeks before go-live is a schedule problem. Discovered during discovery, it is a design input.

6 min read

Service

Create

Take a new product from idea to a first release people actually use.

Service

Operate

Keep what you have built secure, available and improving.

Product

Trellis

Learning that connects families, learners and verified educators.

Next step

Dealing with this yourself?

Tell us what you are building. The Project Architect turns a rough description into a structured brief with an architecture direction.