Next Project Book a discovery call

Kotlin and Android development

Android apps in Kotlin with Jetpack Compose: built for a fragmented device landscape, background work that survives the battery rules, and releases you can stage.

Android is not one device. It is a range of screen sizes, manufacturers with their own battery policies, and users on OS versions four years apart. Building well for it is mostly about respecting that spread instead of testing on one flagship.

Compose as the default

Jetpack Compose for new UI, with the existing view system kept where a screen already works and rewriting it would buy nothing. State is hoisted, screens are previewable, and the same layout is checked at phone, foldable and tablet widths rather than assumed to scale.

Background work under real rules

Doze, app standby and vendor-specific killers mean a job you scheduled may not run when you expected. We use WorkManager with constraints that describe the actual requirement — needs network, needs charging, must be exact — and we design the feature to be correct when the job runs late.

Data layer

A single source of truth in the local database, network as a refresher rather than the origin of truth. That makes the app usable on a bad connection, which is the condition most of its users are actually in.

Shipping

Play Console staged rollouts, so a regression reaches one per cent of users instead of all of them. Crash and ANR rates are watched per release with a threshold that halts the rollout automatically. Builds and signing run in CI/CD, never on a developer machine.

The cross-platform question

If the app is mostly forms, lists and sync on both platforms, one codebase costs less to run — see Flutter and React Native. If it leans on the device, build both natively; the iOS half is Swift. Either way the argument belongs in the first week, and it is set out on mobile development.

Ready to scope the next step?

Tell us what you want to build or fix. We reply with a plan, a rough budget and a start date. No slide deck first.