Mobile Design Rounds
Glossary

Glossary

This page explains 75 hard words from the case studies and build guides. Each meaning is short and uses plain words. In a case study, the first use of a word has a dotted line under it. Select the word to come here. Each case study and build guide also has a closed box near the end. It is called "Words on this page".

A

Acknowledgement

A short reply that says the server got a message. If this reply is lost, the app does not know, so it sends the message again.

Also called: ack.

See also: Idempotency key, Outbox.

Used in: Design a chat app, Design photo backup and file sync, Design a news feed, Design a travel plans app.

Actor

A Swift type that runs one task at a time. This keeps its data safe when many tasks use it.

See also: Coroutine.

Used in: Design a pagination library, Design an analytics SDK.

APNs

Apple Push Notification service, the push service from Apple. Every push to an iPhone goes through it.

See also: FCM, Push address.

Used in: Design a push notification SDK, Design a chat app.

ATT

App Tracking Transparency. An iOS rule that says an app must ask the user before it tracks them across other apps.

See also: Privacy manifest.

Used in: Build it: an analytics SDK on Android and iOS.

B

Backpressure

What happens when data comes faster than the app can handle it. The app must slow the sender or drop some data.

See also: Conflation.

Used in: Build it: an analytics SDK on Android and iOS.

BGProcessingTask

A kind of iOS background task for long work. The system decides when it runs, often when the phone is idle.

Used in: Build it: photo backup and file sync on Android and iOS, Build it: a chat app on Android and iOS, WorkManager vs BGTaskScheduler: what runs your background work.

Bitmap

A picture in memory that is ready to draw. A big bitmap uses much memory.

See also: Decode.

Used in: Design an image loading library.

C

Cache key

The label of a saved item. Two requests with the same key share one saved copy.

See also: Request coalescing, Stale data.

Used in: Design an image loading library.

Captive portal

A login page that a Wi-Fi network shows before it gives access to the internet. The phone looks online, but requests fail.

Used in: Design a stock ticker app.

CDN

Content delivery network. Servers close to users that keep copies of your files.

See also: Cache key.

Used in: Design an image loading library, Design a video streaming app, Design a news feed.

Cohort

A group of users who share a trait, such as the same network or the same type of phone.

Used in: Design a video streaming app.

Cold start

A start of the app when it was not running. It is slower than a start from the background.

See also: Process death.

Used in: Design a chat app.

Conflation

Joining many updates into one. The app keeps only the newest value for each item.

See also: Sequence number, Backpressure.

Used in: Design a stock ticker app.

Coroutine

A light background task in Kotlin. It can pause and continue later without blocking a thread.

See also: Main thread, ViewModel.

Used in: Design photo backup and file sync, Design a chat app, Design a news feed, Design a stock ticker app.

Crash-free rate

The share of sessions that end without a crash.

Also called: crash-free.

See also: Staged rollout.

Used in: Design an analytics SDK, Design an image loading library, Design a video streaming app.

CRDT

A data type that merges edits from many devices by itself. Every device ends with the same result.

See also: Last-writer-wins.

Used in: Design a travel plans app.

Cursor

A saved place in a list. The server gives it to the app, and the app sends it back to get the next part.

See also: Paging.

Used in: Design a news feed, Design a pagination library, Design a travel plans app, Design a chat app, Cursor versus offset paging on mobile: why page numbers break.

D

DAO

A class that holds the database queries. DAO means data access object.

See also: Room.

Used in: Design a chat app, Design a news feed.

Debounce

To wait a short time and then act once. For example, send one request after the user stops typing.

Used in: Build it: a booking app on Android and iOS, Build it: a chat app on Android and iOS.

Decode

To turn an image file into pixels that the screen can draw. It takes time and memory.

See also: Bitmap, Downsampling, Main thread.

Used in: Design an image loading library, Design a video streaming app.

Dedupe

To keep only one copy of the same item. For example, a message that arrives twice is stored once.

See also: Idempotency key, Unique index.

Used in: Design photo backup and file sync, Design a pagination library, Cursor versus offset paging on mobile: why page numbers break.

A link that opens a specific screen in the app.

See also: Push address.

Used in: Design a hotel or ride booking app.

Downsampling

Loading an image at a smaller size than the file. This uses much less memory.

See also: Decode, Bitmap.

Used in: Design an image loading library.

Doze

The deep-sleep mode of an idle Android phone. It pauses network access and delays background work.

See also: WorkManager, FCM.

Used in: Design a chat app, Design a stock ticker app, Design a push notification SDK, WorkManager vs BGTaskScheduler: what runs your background work.

DRM

Digital rights management. Locks that stop people from copying licensed video.

See also: HLS.

Used in: Design a video streaming app.

E

ETag

A version tag that the server sends with a file. The app sends it back later to ask if the file changed.

See also: Stale data, Cache key.

Used in: Build it: an image loading library on Android and iOS.

Exponential backoff

Waiting longer after each failure. For example, wait 1 second, then 2, then 4.

Also called: backoff.

See also: Jitter.

Used in: Design a chat app, Design an analytics SDK, Design a news feed, WorkManager vs BGTaskScheduler: what runs your background work.

F

FCM

Firebase Cloud Messaging, the push service from Google. On iOS it passes the push to APNs.

See also: APNs, Push address.

Used in: Design a chat app, Design a push notification SDK, WorkManager vs BGTaskScheduler: what runs your background work.

Foreground service

An Android service that shows a notification while it works. The system is less likely to stop it.

See also: WorkManager.

Used in: Design photo backup and file sync, Design a chat app, Design a stock ticker app, Design a travel plans app, WorkManager vs BGTaskScheduler: what runs your background work.

G

GTFS

General Transit Feed Specification. A standard set of text files for bus and train timetables.

Used in: Design a public transport app.

H

Hash

A short code made from the bytes of a file. Apps compare the codes to see if two files are the same.

Also called: content hash.

See also: Cache key.

Used in: Design photo backup and file sync, Design a public transport app, Design an image loading library, Idempotency keys on mobile: how to retry without sending twice.

Heartbeat

A small message that is sent on a timer. If the messages stop, the app knows the connection is broken.

See also: WebSocket.

Used in: Design a stock ticker app.

HLS

HTTP Live Streaming. A video format from Apple that splits a video into small files, so the player can change quality.

See also: Ladder, DRM.

Used in: Design a video streaming app.

Host app

The app that contains an SDK. You write the SDK, and another team writes the host app.

See also: SDK.

Used in: Design a pagination library, Design a push notification SDK, Design an analytics SDK, Design an image loading library.

I

Idempotency key

A unique ID that the app sends with a request. It lets the server see a repeat request and not do the work twice.

See also: Idempotent, UUID.

Used in: Design a travel plans app, Idempotency keys on mobile: how to retry without sending twice.

J

Jitter

A random change in each wait time. It stops many apps from trying again at the same moment.

See also: Exponential backoff.

Used in: Design a chat app.

K

Kill switch

A remote flag that turns a feature off at once. It is the one rollback that reaches apps that are already installed.

See also: Remote flag, Rollback.

Used in: Design a push notification SDK, Design an analytics SDK, Design a stock ticker app, Design photo backup and file sync.

L

Ladder

The full list of quality levels for one video. Each level is called a rung.

See also: HLS.

Used in: Design a video streaming app.

Last-writer-wins

A rule for conflicts. The newest edit replaces the older edit, and the older edit is lost.

See also: CRDT.

Used in: Design a travel plans app.

LRU cache

A cache that removes the item used longest ago when it is full. LRU means least recently used.

Also called: LRU.

See also: Cache key.

Used in: Build it: an image loading library on Android and iOS, Build it: a news feed on Android and iOS.

M

Main thread

The thread that draws the screen. If slow work runs on it, the screen freezes.

Also called: UI thread.

See also: Coroutine.

Used in: Design an image loading library, Design a stock ticker app, Design an analytics SDK.

Monotonic clock

A clock that only moves forward. The user cannot change it, so it is good for measuring how much time passed.

Also called: monotonic.

Used in: Design a hotel or ride booking app, Design an analytics SDK.

O

Offline-first

A design where the app works without a network. It saves each change on the phone first and sends it later.

See also: Source of truth, Outbox.

Used in: Design a travel plans app, Design a hotel or ride booking app, Idempotency keys on mobile: how to retry without sending twice.

Optimistic write

The app shows a change at once, before the server confirms it. If the server says no, the app undoes the change.

Also called: optimistic like.

See also: Outbox, Idempotent.

Used in: Design a news feed.

Outbox

A saved list of changes that the server has not confirmed yet. The app sends them later, even after it restarts.

See also: Idempotent, Acknowledgement.

Used in: Design a chat app, Design a news feed, Design a travel plans app, Design a push notification SDK, WorkManager vs BGTaskScheduler: what runs your background work.

P

Paging

Loading a long list in small parts. The app asks for one page at a time.

See also: Cursor, Prefetch.

Used in: Design a pagination library, Design a news feed, Cursor versus offset paging on mobile: why page numbers break.

Polling

Asking the server again and again if there is news. It costs battery and data.

See also: WebSocket.

Used in: Design a stock ticker app, Design a chat app.

Prefetch

Loading data before the user asks for it. It makes scrolling smooth, but it can waste data.

See also: Paging.

Used in: Design a pagination library, Design an image loading library, Design a news feed, Design a public transport app, Cursor versus offset paging on mobile: why page numbers break.

Privacy manifest

A file in an iOS app or SDK. It lists the data that the code collects and the system APIs that it uses.

See also: SDK, ATT.

Used in: Design an analytics SDK.

Process death

The system ends the process of your app to free memory. Anything that is only in memory is lost.

See also: Cold start, WorkManager.

Used in: Design a chat app, Design a news feed, Design photo backup and file sync.

Push address

The ID that a push service gives to one app on one phone. The server needs it to send a push, and it can change.

See also: FCM, APNs, Silent push.

Used in: Design a push notification SDK.

R

Remote flag

A setting that the server can change. It can turn a feature on or off without a new release.

Also called: feature flag.

See also: Kill switch, Staged rollout.

Used in: Design a push notification SDK, Design a chat app, Design a pagination library, Design an image loading library.

Repository

The class that reads and writes data for the rest of the app. It hides whether the data comes from the network or the database.

See also: DAO, ViewModel.

Used in: Design a hotel or ride booking app, Design a news feed, Design a pagination library, Design a video streaming app.

Request coalescing

Joining duplicate requests into one. All callers share the same download.

Also called: coalescing.

See also: Cache key.

Used in: Design an image loading library.

Resumable upload

An upload that can continue after a break. It does not start again from the first byte.

Used in: Design a chat app, Design photo backup and file sync.

Rollback

Going back to the old behavior after a problem. A build on a user's phone cannot be taken back, so teams use a kill switch.

See also: Kill switch, Staged rollout.

Used in: Design a chat app, Design a news feed, Design a video streaming app, Design a stock ticker app.

Room

Android's library for the database on the phone. You use a DAO to read and write the data.

See also: DAO, SwiftData, Schema migration.

Used in: Design a chat app, Design a hotel or ride booking app, Design a news feed, Design a pagination library.

S

Schema migration

A change to the layout of a database. It must run safely when the user updates the app.

See also: Room.

Used in: Design a chat app.

SDK

Software development kit. Code that other developers add to their own apps.

See also: Host app.

Used in: Design a push notification SDK, Design an analytics SDK, WorkManager vs BGTaskScheduler: what runs your background work.

Sequence number

A number that grows by one with each message. It shows the order, and it shows a gap when a number is missing.

Also called: seq.

See also: Conflation.

Used in: Design a chat app, Design a stock ticker app.

Silent push

A push with no visible alert. The system can delay it or drop it, so treat it only as a hint.

See also: Push address.

Used in: Design a push notification SDK, Design a chat app, WorkManager vs BGTaskScheduler: what runs your background work.

Snapshot

A copy of the data as it was at one moment. It is not a list of changes.

Used in: Design a stock ticker app, Design a travel plans app, Design a pagination library.

Source of truth

The one copy of the data that the app trusts. In these cases it is the database on the phone, and the screen only reads it.

See also: Offline-first.

Used in: Design a chat app, Design a news feed, Design a stock ticker app.

Staged rollout

A release to a growing share of users, not to everyone at once. It limits the harm of a bad release.

Also called: phased release.

See also: Rollback.

Used in: Design a chat app, Design a news feed, Design an image loading library, Design a video streaming app.

Stale data

Saved data that may be out of date. The app should show how old it is, or refresh it.

See also: TTL, ETag.

Used in: Design a stock ticker app, Design a public transport app, Design a pagination library, Design an image loading library.

SwiftData

Apple's library for saving data on an iPhone. It has the same role as Room on Android.

See also: Room.

Used in: Build it: a chat app on Android and iOS, Build it: an offline-first travel plans app on Android and iOS, Idempotency keys on mobile: how to retry without sending twice.

T

Tombstone

A row that says an item was deleted. The app keeps it for a while, so an old copy cannot bring the item back.

See also: Last-writer-wins.

Used in: Design a travel plans app.

TTL

Time to live. How long a saved item or a message stays valid before it expires.

See also: Stale data.

Used in: Build it: a push notification SDK on Android and iOS.

U

Unique index

A database rule that refuses a repeated value. It stops a second copy of a row from being saved.

See also: Upsert, Dedupe.

Used in: Design a chat app.

Upsert

A database step that inserts a row, or updates it if it already exists.

See also: Unique index.

Used in: Design a chat app, Design a news feed, Design a push notification SDK.

UUID

A random unique ID. Two devices almost never make the same one.

See also: Idempotency key.

Used in: Design a chat app, Design a push notification SDK, Idempotency keys on mobile: how to retry without sending twice.

V

ViewModel

A class that holds the state of one screen. It survives a screen rotation.

See also: Repository, Coroutine.

Used in: Design a chat app, Design a hotel or ride booking app, Design a stock ticker app, Design a news feed.

W

WebSocket

A two-way connection that stays open. The server can send data to the app at any time.

See also: Polling, Heartbeat.

Used in: Design a stock ticker app, Design a chat app.

WorkManager

Android's tool for background work that must run later. The work survives when the app closes or the phone restarts.

See also: Doze, Foreground service, Outbox.

Used in: Design a chat app, Design photo backup and file sync, Design a news feed, Design a travel plans app, WorkManager vs BGTaskScheduler: what runs your background work.

Not sure where to begin? Pick a reading path for your level.

Get the free one-page cheat sheet

One page: the five steps, a 45-minute time plan and two checklists. Print it or keep it on your phone.

We email you the cheat sheet after you confirm your address. You can also open it now from the Start here page. You get a short note when a new case is published. Unsubscribe any time. Privacy.