Product notes · Mobile design

Expect the
network to vary.

A mobile experience should make its state clear when data is slow, unavailable or only partly saved. This guide turns that goal into design and engineering decisions.

On-delo Product Notes · 16 October 2026

Start by mapping network-dependent actions

List each point where the product needs to send or receive data: sign-in, search, loading a profile, sending a message, uploading a photo, or confirming a change. For each action, ask what the person sees if the request takes longer than expected, fails once, or succeeds on the server but the response never reaches the device.

This map finds gaps that a happy-path prototype hides. It also keeps offline behavior focused: not every screen needs full offline access, but users should understand which actions need a connection.

Make waiting legible

Show that work has started and preserve the user's context while it is in progress. Avoid blank screens and controls that appear frozen. For a longer action, make it clear what is happening and offer a safe way to cancel when cancellation will not corrupt the operation.

If a request fails, say what could not be completed and what the person can do next. “Try again” is useful only when retrying is safe. For a payment, message or other action that might already have reached the service, first check its status or provide a confirmation path so a retry does not duplicate it.

Protect work that has not been sent

When a user composes a message or fills out a form, keep a local draft until the service confirms that it was received. Distinguish clearly between a draft stored on the device, an item waiting to send and a completed action. Provide a visible retry for queued items and tell users when a draft exists only on that device.

Local storage has privacy and security implications. Store only what the product needs, use platform protections, and clear sensitive local data when the user signs out or removes it where appropriate. Do not keep secrets in plain text or imply that a local draft is backed up if it is not.

Reduce unnecessary data transfer

Measure the result on representative devices and connections. A small transfer can still feel slow if the screen blocks on several sequential requests, so look at both data size and the number of round trips.

Test failures deliberately

Include slow responses, dropped connections, airplane mode, a connection that returns mid-action, an expired session and a server error in the test plan. Check that the interface gives a truthful status, preserves recoverable work and avoids duplicate submissions. Test on the devices and network conditions your intended users actually have; do not assume a desktop emulator represents them.

Write down the product's offline promise

For each important journey, state whether it works offline, waits to sync, or requires a live connection. Add this to product documentation and user-facing help. A narrow promise the product keeps is better than a broad “works anywhere” claim that fails when someone needs it.

Back to all product guides ↗