Installable web app (PWA)
Validating an idea; content and forms, no deep device access
$0 + domain · Low
△ You need push on every platform, background work, or a store listing people can find
Drawing set · L0–L3
A phone app lives inside someone else's rules. The store decides whether you ship, the operating system decides when your code may run, and every update waits in a review queue. This drawing set maps the shapes an app can take, from a website that installs like an app to a native build with a backend, and when each one is worth its cost.
Design philosophy
An app is a guest in a phone it does not own. It is judged by how politely it uses the owner's battery, attention and trust.
Every permission you request is a reason to uninstall. Ask at the moment it is needed, explain why, and keep working when the answer is no.
A server bug is fixed in minutes; an app bug waits for review and for users to update. Put logic that changes often on a server, not in the binary.
The operating system can pause, kill or sandbox you at any moment. Design for being interrupted instead of fighting the rules.
First app, one person? Start as an installable web app or a cross-platform build. Go native only when you need something the system hides from everyone else — calls, background work, sensors.
You want to hold the idea in your hand and see whether you actually open it twice. No store, no users, nothing to protect.
Either a web app that installs to the home screen, or a cross-platform build running on your own device through a development app. No backend: data stays on the phone.
Δ New at this level
Shapes on the map: Installable web app (PWA) · Cross-platform build (one codebase)
Choose whatever gets a build onto your real phone fastest. The simulator lies about touch, keyboards and performance; your pocket does not.
Also worth knowing — not verified by this site
People you have never met are installing the app on phones you have never seen. When it crashes, they will not tell you — they uninstall.
The app ships through the store's testing track first, then publicly. Crash reporting is built in from day one. If a system feature is essential, this is the moment to go native for that platform.
Δ New at this level
Shapes on the map: Cross-platform build (one codebase) · Native app (Kotlin / Swift)
Crash reporting is not optional at this level — it is your only view into devices you do not own. Keep the signing key backed up; losing it can mean you can never update the app again.
Also worth knowing — not verified by this site
Accounts, purchases or synced data have appeared. The store's payment rules now apply to you, and a data leak happens on millions of phones at once.
The app becomes a client of your own API. Accounts, purchases and anything that changes often move to the server, so they can be fixed without a store review. The server must accept requests from every app version still installed.
Δ New at this level
Shapes on the map: App + backend API
Follow the store's purchase rules exactly; many digital goods must use the store's own payment system. Verify every purchase on your server, never only in the app.
Also worth knowing — not verified by this site
Several versions are live at once, a bad release reaches a large audience before you notice, and the device matrix is too wide to test by hand.
Releases roll out in percentages with automatic halts, features ship dark behind flags you can switch from the server, and a device test farm runs on every build.
Δ New at this level
Shapes on the map: App + backend API · Native app (Kotlin / Swift)
The goal at this level is to make every release reversible without a new build. Anything that cannot be turned off remotely is a risk you ship blind.
Also worth knowing — not verified by this site
Every shape this can take. Most exist so you know what not to build yet.
Validating an idea; content and forms, no deep device access
$0 + domain · Low
△ You need push on every platform, background work, or a store listing people can find
iOS and Android from one team; most everyday apps
$0–25/mo + store fees · Low–mid
△ You fight the framework to reach a system feature, or performance limits the core experience
Deep system access: calls, background services, sensors — URDialer's shape
$0–25/mo + store fees · Mid — two codebases if you need both platforms
△ Accounts, sync or payments appear and the app needs a server of its own
Accounts, sync across devices, payments, shared data
$5–100/mo · Mid–high
△ Many releases in flight across versions — you need flags and staged rollouts
One plain sentence and one metaphor each. Click any tool module for the same treatment.