Mobile application development

Mobile products rarely fail on the interface. They fail on sync conflicts, background refresh, expired certificates and a store review nobody planned for. We design for those from the first week and automate the release path so shipping an update stops being an event.

Practice 03 · iOS · Android · Offline-first · Store automation

01 — Position

Native or cross-platform is a decision, not a religion

We build both, and we choose per project rather than by habit. Before you commit, you get a written recommendation with the reasoning: what the app has to do on the device, how much platform-specific behaviour is involved, and who will maintain it in two years.

Cross-platform wins when the app is largely forms, lists and networking, and when one team maintaining one codebase matters more than the last five percent of platform polish. Native wins when the app leans on hardware, background processing, or platform APIs that move quickly.

What never changes is the boring infrastructure around it — and that is where most of the risk actually lives.

The parts that usually go wrong

  • Two devices editing the same record while offline
  • Push notifications that stop arriving after an OS update
  • Signing certificates expiring in the middle of a release
  • Store review rejecting a build on a policy nobody read
  • An API change that bricks every version already installed
  • Crashes that only happen on one Android vendor's firmware

02 — What we build

Scope of the practice

Field & operations apps

Tools for people working away from a desk: inspections, deliveries, service calls — designed to work with no signal and reconcile later.

Customer-facing apps

Accounts, catalogues, bookings and payments, with the onboarding flow treated as a first-class feature rather than an afterthought.

Offline-first sync

A conflict resolution strategy chosen deliberately, a local store that survives a force-quit, and a queue that drains cleanly on reconnect.

Push & deep links

Notification routing that survives OS changes, plus deep links that open the right screen whether or not the app is already installed.

Release automation

Signed builds produced by CI, uploaded to TestFlight and Play internal testing automatically, with a release checklist that is actually followed.

Crash & version safety

Crash reporting from day one, forced-upgrade handling, and an API contract that keeps older installed versions working.

03 — Delivered

What ends up in your hands

  • Apps published under your own Apple and Google accounts
  • Signing keys and certificates transferred and documented
  • An automated build that produces a store-ready artifact
  • A written sync strategy explaining conflict handling
  • Crash reporting configured and connected to your team
  • A release runbook covering versioning and rollback

The API behind the app

Typical stack

Cross-platform
React Native with TypeScript
Native iOS
Swift, SwiftUI or UIKit as the project requires
Native Android
Kotlin with Jetpack Compose
Local store
SQLite-backed persistence with a migration path
CI
Automated signing, build and store upload
Backend
Versioned REST or GraphQL, built by the same team
  • React Native
  • Swift
  • Kotlin
  • SQLite
  • TypeScript

04 — Questions

About mobile work

Whose developer accounts should the apps live under?

Yours, always. We can help you create and configure them, and we work inside them with the access you grant. An app published under a supplier's account is a hostage, not a deliverable.

Do we need separate iOS and Android teams?

Usually not. Most business apps are well served by one cross-platform codebase with a small amount of native code where the platforms genuinely differ. We will tell you before the estimate if your requirements point the other way.

Can you handle the store submissions?

Yes — metadata, screenshots, privacy declarations, review responses and the release itself. We also automate it, so that after handover your own team can ship without us and without ceremony.

Tell us where your users are standing

A warehouse with no signal, a customer on a train, an inspector on a roof. The context decides the architecture.

HALDIR LTD · HE 459882 · Nicosia, Cyprus