App types in comparison

Cross-platform frameworks compared

Comparisons on this topic usually end at whichever framework the author uses. So the verifiable attributes come first here, and separately after that, our own choice with reasons.

In short

Seriously in the running today are React Native and Flutter, plus .NET MAUI in houses that work in C#. The difference between the first two is less about performance than about construction: React Native uses the system's controls, Flutter draws its own. In practice the deciding factor is usually the language your team already knows.

Seriously in the running
Two or three
Usually decides it
The language
Our choice
React Native

The core

Two kinds of construction, not five brands

The list of names is longer than the number of actual approaches. Tell the two kinds of construction apart and you can judge most comparisons online for yourself.

  • They use what the system provides

    React Native and .NET MAUI produce the actual controls of iOS and Android. A list there is a system list. That feels right on each platform and automatically inherits whatever Apple and Google change about interaction and accessibility.

  • They draw everything themselves

    Flutter brings its own drawing layer and paints every control itself. The result is exactly the same picture on both platforms, independent of the system. That is an advantage when a distinct visual language matters, and a drawback when the app should feel native to the platform.

  • They show a website in a shell

    Ionic and Cordova run an embedded browser. That is the shortest path from an existing website to something in the store, and the longest to something that feels like an app.

Overview

The frameworks by attribute

Only figures you can look up. Performance percentages are deliberately absent from this table: the numbers in circulation come from no traceable measurement.

Cross-platform frameworks by language, construction, backer and status
Cross-platform frameworks by language, construction, backer and status Language Construction Backed by As of
React Native JavaScript, TypeScriptThe system's own controlsMeta, plus a large communityActive
Flutter DartIts own drawing layerGoogleActive
Ionic mit Capacitor Web technologiesEmbedded browserIonicActive
.NET MAUI C#The system's own controlsMicrosoftActive, successor to Xamarin
Apache Cordova Web technologiesEmbedded browserApacheRare in new projects
Xamarin C#The system's own controlsMicrosoftSupport ended 1 May 2024

On our own behalf

Why we use React Native

This is our decision for our projects, not a ranking. The reasons are mostly organisational, which is why they outlast technical ones.

  • The language your team already knows

    TypeScript runs across our web, backend and app work. Developers for it are easier to find than for Dart or C#, and knowledge carries between projects.

  • Fixing things past the store

    With Expo, corrections at the JavaScript layer can ship without waiting for another store review. For everything that does not touch the native layer, that shortens the route considerably.

  • We run it ourselves

    Our own products run on this stack, for years now and in the stores. We do not recommend anything whose maintenance we are not paying for ourselves.

Use case

When another path fits

  • Flutter, when the interface should be identical everywhere

    Flutter draws its controls itself instead of using the system's. That produces exactly the same picture on both platforms, and it is the better choice when a distinct visual language matters more than the feel of each platform. The price is Dart.

  • .NET MAUI, if you already work in C#

    If your backends run on .NET and the team knows C#, one language throughout counts for more than React Native's larger community.

  • Ionic, when it is a website at heart

    If your content comes from the web anyway and just needs to be available as an app as well, the embedded browser is the shortest path. The moment the app should feel like an app, that advantage is gone.

FAQ

Frequently asked questions

Which framework is the best?

There is no general answer, and anyone who gives one is selling something. React Native and Flutter are both sound. In practice the deciding factors are the language your team knows and who you will be able to hire in two years.

What is the actual difference between React Native and Flutter?

React Native uses the system's controls, Flutter draws its own. Almost everything else follows from that: React Native feels more natural on each platform, Flutter looks exactly the same on both. On top of that comes the language, TypeScript against Dart.

How big are the performance differences?

Between React Native and Flutter they are not decisive for ordinary applications. The gap only becomes clear against the embedded-browser frameworks. If you come across finely graded percentages online, ask about the measurement method, and usually there is none.

Is Xamarin still an option?

No. Microsoft ended support on 1 May 2024. The successor is .NET MAUI. Existing Xamarin apps should be moved there.

Can I change framework later?

The interface has to be rebuilt, there is no way around it. What you can salvage depends on how cleanly business logic, data access and interface are separated. Separate them from the start and a switch becomes a project rather than a rewrite.

Can cross-platform apps reach every device function?

React Native, Flutter and .NET MAUI reach everything, if necessary through a native module of your own. With the embedded-browser frameworks, access is narrower and depends on additional plugins.

Which language does my team have to learn?

React Native: JavaScript or TypeScript, usually already there. Flutter: Dart, a new language for almost every team. .NET MAUI: C#, already there if you work in .NET anyway. Ionic: web technologies.

What do you work with?

With React Native and Expo, including for our own products. If a project fits another path better, we say so in the first conversation instead of making it fit.

Next step

Which path suits your team is a short conversation.

This question turns less on the technology than on who maintains the app three years from now. We are glad to talk it through, even if our stack is not the answer.