Mobile development
Apps chosen by argument, not by habit
We build iOS and Android applications in Swift, Kotlin or a cross-platform framework. Which one depends on your product's constraints, and we will show you the reasoning before you commit.
The platform question
Native development gives the closest fit to each operating system and the earliest access to new device features. Cross-platform frameworks let one team ship to both stores with a shared codebase. Neither is universally better. We compare them against your stated priorities, usually with the same weighting matrix shown on our home page, and record the result so the choice can be revisited if circumstances change.
What we pay attention to
- Behaviour with poor or no connectivity, and how data reconciles afterwards.
- Accessibility: dynamic type, screen readers, contrast and touch target sizes.
- Permissions requested only when needed, with a clear explanation.
- Battery, memory and app size on older supported devices.
- Push notifications that users can understand and control.
Deliverables
| Item | Purpose |
|---|---|
| Platform decision record | Why native or cross-platform, with the trade-offs accepted. |
| Screen and state map | Every screen, its empty, loading and error states, and how users move between them. |
| Test builds | TestFlight and Play internal testing builds at each increment. |
| Automated checks | Unit tests for logic, UI tests for critical journeys, run on each change. |
| Release notes and store copy drafts | Prepared alongside the code so launch is not a scramble. |
| Handover guide | How to build, sign and release the app without us. |

The part users never see
Most apps depend on a back end: accounts, data, notifications, payments. We design that service alongside the app, keep its interface versioned so older app releases continue to work, and document what happens when it is unavailable. See web development for how we structure those services.