Constraints And Signals
Signals override defaults. A simple web app can become native when a single non-negotiable platform API appears. A planned backend can disappear when local-first data and export are enough.
Strong Override Signals
| Signal | Usually pushes toward | Why |
|---|---|---|
| Restricted permissions | Native mobile | Store policy and OS permission UX define the product |
| SMS, contacts, background location, Bluetooth, NFC | Native mobile | Browser and cross-platform abstractions can be incomplete or policy-limited |
| Budget-device performance | Native mobile or carefully scoped PWA | Framework overhead matters when devices are weak |
| Offline-first with local ownership | Native, desktop, PWA, or CLI | Avoid backend-first until sync is required |
| Heavy file-system workflows | Desktop shell or CLI | Browser file APIs rarely match native ergonomics |
| Command-palette desktop UX | Electron or carefully tested Tauri | Rendering/focus consistency can matter more than binary size |
| Store-native trust | Native mobile or native Windows | Store listing, permissions, and updates shape user trust |
| Shared accounts and roles | Backend/API | You need server-side identity and authorization |
| Tool execution by AI | AI-native stack | Prompt instructions are not a security boundary |
Weak Signals
These are not enough by themselves:
- “I know React.”
- “AI is better at this stack.”
- “This framework is lighter.”
- “We might need sync later.”
- “It should be cross-platform eventually.”
- “The demo looks native.”
Release Signals
Distribution is often the hidden deciding factor.
| Release path | Questions to answer |
|---|---|
| URL/static hosting | Is it public, private, protected, or tailnet-only? |
| PWA install | Which browsers/devices must install and work offline? |
| Play Store | Which permissions need declarations, review, and policy evidence? |
| Microsoft Store/MSIX | Is the app packaged, unpackaged, store-distributed, or sideloaded? |
| Direct desktop download | How will signing, reputation, updater, and support work? |
| CLI package | Which package manager or binary download path is real for users? |
Warning: A dev command is not a release gate. A stack is not proven until the app can build in the release shape users will receive.