Technology

Native Swift and Kotlin development,
as close as possible
to iOS and Android.

Native apps and modules, iOS in Swift and Android in Kotlin: hardware integrations, Bluetooth Low Energy, system APIs and critical performance, as a complete app or alongside a Flutter or React Native codebase.

Situations

When native is the answer.

Demanding hardware integration

Bluetooth Low Energy, sensors, accessories: latency, battery and reconnections are handled as close to the system as possible.

System APIs first

The product must use new Apple or Google APIs as soon as they ship, without waiting for a package to expose them.

An existing native app

A Swift or Kotlin codebase to evolve, modernise or take over after a team has left.

A native module in a cross-platform app

Most of the product is shared, but one part must be written in Swift and Kotlin.

Scope of work

What we build natively.

Complete apps or targeted modules, with the same standards for testing and release.

iOS apps in Swift

Interfaces, navigation, background tasks and App Store release.

Swift · iOS · App Store

Android apps in Kotlin

Interfaces, lifecycle, services and Google Play release.

Kotlin · Android · Google Play

Bluetooth Low Energy and hardware

Real-time exchanges with sensors, battery and reconnection management.

BLE · sensors

Modules for Flutter and React Native

Native bridges that expose a system feature to a cross-platform codebase.

Native modules · bridges

Performance and stability

Measuring start-up time, memory and crashes, and fixing the critical points.

Profiling · crashes

Release and maintenance

Signing, releases, operating system and store updates.

App Store · Google Play

Method

From need to release.

  1. 01

    Choose the approach

    Fully native, cross-platform or mixed: the comparison is made on your real constraints, with measurements when needed.

  2. 02

    Prove the critical point

    The riskiest integration, hardware or system, is prototyped first.

  3. 03

    Develop in increments

    Features delivered with their tests on real devices, with code review at every step.

  4. 04

    Release and maintain

    Store releases, crash monitoring and operating system updates.

Responsibilities

Who decides what.

A typical division of responsibilities, agreed for each engagement.

Who decides what.
TopicYour teamBlack Tide
HardwareYou provide the accessories and their documentationWe develop and test the integration
Store accountsYou keep the accounts in your nameWe prepare builds and releases
Technical choicesYou approve the chosen approachWe compare the options, with measurements
AcceptanceYou test on your target devicesWe fix within the agreed scope
Production releaseYou decide the dateWe release and monitor

Selected work

Native where it matters.

Meduz

Native Swift and Kotlin modules exposing an asynchronous Bluetooth Low Energy channel to the app, with under 100 ms latency required on some events. A React Native bridge was ruled out after comparative measurements.

Read the Meduz case

Each case describes the work delivered, its scope and the current status of the product.

Budget and next steps

Fixed price or time and materials.

Fixed price

For a defined Swift or Kotlin product or increment: discovery sets the scope, the estimate and the delivery increments.

Time and materials

A senior native mobile engineer joins your team at our public day rate of €750 excl. VAT, for a short or long engagement.

Takeover

For an existing native app: a diagnostic of the code, dependencies and release pipeline, then stabilisation or progressive modernisation.

Orders of magnitude

Budget ranges by maturity level, from prototype to scalable product, are published on our pricing page.

Useful questions

Frequent questions about native development.

Native or Flutter?

Native gives direct access to each system; Flutter shares the product layer. We work with both and recommend based on usage, hardware and the team that will maintain the app.

Do we need two teams for iOS and Android?

Not necessarily two teams, but two codebases. API contracts, business rules and the design system stay shared.

Can you add a native module to our Flutter or React Native app?

Yes. That is what we did on Meduz: Swift and Kotlin modules expose Bluetooth to the Flutter app.

Do you take over existing native apps?

Yes, after a diagnostic of the code, dependencies and release pipeline.

Next step

Let’s talk about your native app.

The target platforms, any hardware and the deadline: that is the starting point.