Flutter. Two platforms, one codebase.

Why Qorvano° builds its apps with Flutter — and where, in 2026, we would still recommend native Swift or Kotlin.

Anyone commissioning an app from a small studio eventually asks the question: native or cross-platform? In 2026, the answer is no longer as clear-cut as it was in 2019 — and that is a good thing. This entry explains why Qorvano° builds its apps with Flutter, where the choice really is uncritical, and where we would still point clients toward native development today.

The original doubt

There was a time when cross-platform development, for ambitious projects, was considered a compromise. The surface ran, but it felt foreign. Animations stuttered. Gestures misbehaved on iOS and Android in differently wrong ways. File access, haptics, accessibility — everything sat half a floor below the native implementation. And App Store reviewers noticed.

Dart as a language was unfamiliar. Flutter as a framework was young. If you wanted your app polished to a 1.0 finish, you wrote Swift for iOS and Kotlin for Android — in two teams, with two codebases, at roughly double the effort.

What Flutter is in 2026

Seven years later, Flutter is a different framework. Platform integration is complete: haptic feedback that feels right on iPhone and on a Pixel alike. Dynamic Type on iOS and Font Scaling on Android respected in parallel. Dark Mode following the system setting automatically. Accessibility APIs that serve VoiceOver and TalkBack equally. Material 3 and the Cupertino widget set render pixel-identically to their native counterparts.

Dart itself is a well-cared-for, stable language with a solid type system, good tooling and a build system that feels pleasantly small. If you are coming from modern TypeScript or Kotlin, you are up and running in an afternoon.

Since the Impeller rendering engine on iOS and the Skia replacement on Android, performance sits where you would expect it: 60 to 120 fps on modern devices, smooth scroll performance, low startup times. For the kind of app we build — precise tools, no AR filters, no real-time games — that is more than sufficient.

Where native development still wins

We would be dishonest advocates if we claimed Flutter were always the better choice. There are cases where we still point clients toward native Swift or Kotlin:

  1. Deep hardware integration. Anyone working at the lowest level with cameras, sensors, Bluetooth-LE stacks, or CoreML / MLKit benefits from native access to the most current APIs — often before Flutter plugins exist.
  2. Platform-exclusive features with a launch date. New iOS features (for example Live Activities, interactive widgets, Vision Pro integration) land in Swift first. If you want to move in sync with Apple's release rhythm, native is the better home.
  3. Apps with high native UI density, where system components are in the foreground (think Files, Mail, calendar clients). The effort of rebuilding those surfaces pixel-perfectly in Flutter is often higher than working in Swift/UIKit/SwiftUI directly.
  4. Very large teams with separate iOS and Android engineering departments. There, the organisational dividend of a shared codebase is lower, and Flutter introduces unnecessary bridging logic.

For a one-person studio like Qorvano°, none of these apply. For a major corporation with thirty iOS developers, at least one usually does.

Where Flutter clearly wins

At the same time, there are scenarios where Flutter is the more rational choice:

  • Small teams, two platforms. Every native implementation doubles development effort, bugs and QA cycles. Flutter almost halves that.
  • Parity iOS + Android releases. If you want to serve both platforms simultaneously and on equal footing, without one becoming the stepchild, a shared codebase is structurally the better starting point.
  • Data-heavy, custom-designed UIs. Finance dashboards, calculators, editor apps, B2B frontends — anywhere the UI is more bespoke than systemic, Flutter renders efficiently and consistently.
  • Predictable maintenance. One codebase, one build process, one dependency graph. Lower maintenance effort over time — and the reason longevity is a principle for us.

Our decision — and how we measure it

Numeris, our first public app, is built entirely in Flutter. Live LaTeX rendering, symbolic derivatives, 2D and 3D surface plots, haptics, 20 localisations, full accessibility — all in a single codebase, on iPhone, iPad and Android tablets. On each of these devices the app does not feel like "a Flutter app", but like an app that belongs to the respective system. That is our measure of success.

For client engagements, we raise the native-vs.-Flutter question in the first conversation — honestly, using the criteria above. If native is the better choice, we say so. Most projects that reach us, however, fit Flutter: small to medium in scope, dual-platform, focused on five-year maintainability rather than the latest platform feature.

In short

Flutter is no longer a compromise. For most small and mid-sized apps it is, in 2026, the more rational choice than separate native teams. Not because it wins everywhere, but because the effort it saves is larger than the few places where it cannot quite match native.

If you are seriously considering building an app — as a startup, in the mid-market, or as an individual with a clear idea — the decision should be made based on the concrete requirements. Not on old prejudices. That usually involves a conversation of perhaps ten minutes, which clarifies the right direction more than any blog post ever will.

If you are looking for that kind of conversation: get in touch.