Most mobile apps we build are React Native. One codebase, both stores, a team that can move between web and mobile. In 2026 the framework is mature enough that "is it good enough?" isn't really a question any more.
But we still go native, in Swift and Kotlin, for a minority of projects. Here are the cases.
When we go native
- Hardware is the product. Bluetooth peripherals, camera pipelines, background sensor logging. The bridges exist, but you end up writing native code anyway, so start there.
- Platform features on day one. Widgets, Live Activities, App Clips, watch apps. React Native gets these eventually; native gets them at launch.
- Heavy animation and gesture work. Reanimated is excellent. A physics-driven, interruptible interaction is still easier to get right natively.
- An existing native team. If your engineers write Swift, we write Swift.
When we don't
Everything else: forms, lists, maps, payments, chat, dashboards. Northloop is a good example. Ride tracking, Strava import, coach chat and a training plan, all from one codebase, with both stores updated on the same afternoon.
The question isn't "which is better". It's "what does this app spend its time doing".