Mobile development
Mobile apps with deep roots
We build iOS and Android apps that feel at home on each platform and stay in step with the rest of your system — the same accounts, the same content, the same rules.
The app is rarely alone
Most apps depend on something else: an API, a content source, a payment provider, a notification service. When these pieces are designed separately they drift apart, and users notice first. We design the app together with the services it needs, documenting each contract between them.
We generally recommend a cross-platform approach such as Flutter or React Native for products that need to reach both platforms on a sensible budget, and fully native Swift or Kotlin where device features or performance demand it. We will explain the trade-off for your case in writing.
What a mobile engagement can include
Platform choice and architecture
A short written comparison of native and cross-platform options for your specific features, team skills and maintenance expectations, with a recommendation and reasons.
Offline and poor-signal behaviour
Decisions about what the app should do on a train or in a basement: cached content, queued actions, clear messages and safe retry rules.
Accessibility on device
Support for dynamic text sizes, screen readers (VoiceOver and TalkBack), sufficient contrast and touch targets, tested on real devices.
Notifications and deep links
Push notifications that respect user choice, and links that open the right screen from email, web or another app.
Privacy and permissions
Asking for camera, location or contacts only when needed, with plain explanations, and accurate store privacy declarations.
Build and signing pipeline
Automated builds for test and release, with signing keys and certificates held in accounts you own.
Choose your starting point
We begin with discovery and interface design, testing the core journey as a clickable prototype before writing production code. Expect the first working build after the main flows are agreed.
We review your designs for platform conventions, accessibility and missing states (empty, loading, error, offline), agree adjustments with your designer, then build in short cycles.
We start with a code and dependency review, a test build, and a written health report. Then we agree whether to stabilise, refactor in place or plan a careful rebuild.
You receive
- Source code in a repository you own
- Test builds via TestFlight and Google Play internal testing
- Architecture note and API contracts
- Accessibility check summary
- Release checklist and store assets list
- Handover session with your team
Have an app idea, a set of designs or an app that needs rescuing? Tell us where you are.
Start a conversation