Flutter vs. React Native – wann ist welche Lösung besser?

EINE VERGLEICHENDE ANALYSE DER ZWEI MEIST GENUTZTEN PLATTFORMÜBERGREIFENDEN, MOBILEN APP-ENTWICKLUNGSTECHNOLOGIEN

Table of Contents

Seit 2021 ist Flutter vs. React Native die häufigste Entscheidung, wenn es um neue mobile und plattformübergreifende Entwicklungsprojekte geht. Bis vor kurzem war noch das auf JavaScript basierende React Native der unangefochtene Marktführer. Die Bibliothek für mobile Entwicklung hat die Lücke mit echten nativen Apps geschlossen und profitiert zudem von den Gemeinsamkeiten mit Reactjs, was derzeit als das beliebteste Webentwicklungs-Tool der Welt gilt.

Das bedeutet, es ist relativ einfach für React-Entwickler, React Native zu erlernen und umgekehrt. Dies hat zu einem besser qualifizierten Talentpool geführt, in dem sich viele Fähigkeiten überschneiden – ein guter Grund für viele Projektsponsoren, um plattformübergreifende, mobile Apps in React Native zu entwickeln.

Aber die mobile Entwicklungsbibliothek von Facebooks React hat starke Konkurrenz bekommen – nämlich in Form von Googles Flutter, einem Framework, was auf Dart, der Programmiersprache des Suchmaschinen-Giganten, beruht.

Flutter wurde erst im Jahr 2018 veröffentlicht, die Beta-Phase verlief bis zum Januar 2019, und ist daher noch ein relativ unausgereiftes Framework. React Native im Vergleich konnte sich seit 2015 weiterentwickeln und hat daher einen guten Vorsprung. Diese Position wird durch die Beliebtheit von Reactjs weiter bestärkt. Flutter hat aber schnell an Fahrt aufgenommen, insbesondere in der mobilen Entwicklung, was vor allem daran liegt, dass das Framework Material Design, Motion- und visuell-orientierte Widgets sowohl für Android als auch für iOS unterstützt. Dies macht Flutters mobile Entwicklung zur besten Passform für MVP- und PoC-Projekte.

Auf Github konnte Flutter bereits React Native in puncto „Stars“ überholen, mit denen Entwickler ihre Zufriedenheit zum Ausdruck bringen. Flutter hat React Native schon fast im Github-Repository eingeholt: Mit 178.364 gegenüber 197.840 wird das Framework bereits heute von vielen als die „Zukunft der mobilen Entwicklung“ beschrieben.

Flutter vs React Native Github Stars

Quelle: Star-History

Während Github-Stars eine populäre Metrik darstellen, um die Popularität von Programmiersprachen, Frameworks, Bibliotheken und Entwicklungs-Tools zu beurteilen, ist dies natürlich nur ein Indikator. Der Indikator sagt aber nichts darüber aus, welches Framework die besten technischen Möglichkeiten im Kontext eines bestimmten Entwicklungsprojekts bietet. Ebenfalls wird kein Einblick in den geschäftlichen Nutzfaktor gegeben, was von gleich wichtiger Bedeutung sein kann.

Und genau das ist das Ziel dieses Blogeintrags. Wir schauen uns die Stärken und Schwächen von Flutter und React Native im Rahmen verschiedener Anwendungen an und werfen ebenfalls einen genauen Blick auf den geschäftlichen Nutzfaktor beider Frameworks.

React Native vs. Flutter: Einführung in zwei führende plattformübergreifende Entwicklungstechnologien für mobile Anwendungen

Bevor wir uns mit den technischen und betriebswirtschaftlichen Unterschieden zwischen Flutter und React Native beschäftigen und uns die unterschiedlichen Anwendungsbeispiele genauer anschauen, verschaffen wir unseren Lesern vorab einen kleinen Überblick über beide Rivalen.

Einführung React Native

React Native ist das mobile Entwicklungs-Spinoff von ReactJs. Die Open-Source-JavaScript-Bibliothek wurde von Facebook gestartet und unterhalten. Die Bibliotheken von React und React Native sind sich hierbei relativ ähnlich:

„Der Hauptunterschied zwischen dem Erstellen browserbasierter Apps in React und mobilen Apps in React Native besteht darin, dass in React das virtuelle DOM zum Rendern von Browsercodes in Reactjs verwendet wird während in React Native native APIs verwendet werden, um Komponenten zu rendern. Der Code kommuniziert hierbei mit verschiedenen Umgebungen.“

„Ansonsten gibt es keinen großen Unterschied im Prozessablauf. Wenn Entwickler mit Props, Render-Props, Komponenten, HOCs und dem Lifecycle in React vertraut sind, sind sie auf einem guten Weg, auch mit React Native arbeiten zu können, denn die Grundregeln sind prinzipiell die gleichen. Jedoch muss zusätzlich erlernt werden, für eine Android- oder iOS-Umgebung und nicht für einen Browser zu entwickeln.“

Das React Framework (eigentlich JS-Bibliothek) – K&C

Die Ähnlichkeiten zwischen den beiden Bibliotheken bieten gleich mehrere Vorteile; für Entwickler ist es hilfreich, dass Erfahrungen in einer Bibliothek den Lernprozess für die andere Bibliothek deutlich beschleunigen. React gilt derzeit mit großem Abstand als die populärste Frontend-Entwicklungstechnologie – auf die Gründe werden wir noch genauer eingehen.

React Native Fakten

  • Open-Source-Bibliothek für mobile Entwicklung, von Facebook gestartet und gefördert
  • Ein mobiles Spin-Off von Reactjs, führendes JavaScript Framework/Bibliothek
  • 2015 veröffentlicht
  • JS nativ
  • Plattformübergreifende Technologie zum Erstellen von „fast nativen“ mobilen Android- und iOS-Apps

Einführung Flutter (und Dart)

Das mobile UI Framework Flutter ist ebenfalls eine Open-Source-Technologie, die ursprünglich von Google entwickelt wurde und immer noch unterhalten wird. Flutter wurde 2018 veröffentlicht und befand sich bis Januar 2019 in der Beta-Phase. Google steckt auch hinter Angular, dem JavaScript Framework, das als größter Rivale von Reactjs im Bereich nicht-mobile Entwicklung gilt. Aber das ist so ziemlich alles, wo die Ähnlichkeiten zwischen Angular und Flutter enden.

Während Reactjs und React Native beide auf JS basieren und sich daher sehr ähnlich sind, basiert Flutter auf Googles Dart-Programmiersprache. Dart wurde 2010 als Alternative zu JavaScript veröffentlicht, da einige Entwicklerkreise der Meinung waren, dass JS einige grundlegende Einschränkungen und Probleme aufweist, die auch nicht mit weiterer Entwicklung gelöst werden können.

Dart gilt im Allgemeinen als einfacher im Vergleich zu JS und anderen beliebten Programmiersprachen. Dies ist auf die Syntax zurückzuführen, die der menschlichen Sprache in vielen Facetten ähnelt. Es werden weniger Befehle verwendet, dafür aber mehr Optionen. Und Entwickler können den Variablen eigene Namen geben, was den Code oftmals verständlicher macht. Jedoch muss hierbei erwähnt werden, dass diese Abweichung von einer Standardisierung auch zu Problemen führen kann, wenn mehrere Entwickler an einem Projekt arbeiten.

Die einfache Syntax von Dart erleichtert den Lernprozess der Sprache. In einer StackOverFlow-Umfrage aus dem Jahr 2019 stand Dart direkt hinter JavaScript im Ranking der beliebtesten Programmiersprachen unter Entwicklern. Laut Umfrage wird Dart von 66,3% „geliebt“, verglichen mit 66,8% für JavaScript. In diesem Jahr hat Dart JavaScript in puncto Beliebtheit unter Entwicklern bereits überholt. Die 2020 Umfrage zeigt Dart bei einem Wert von 62,1% im Gegensatz zu 58,3% für JS.

Flutter kompiliert Dart mit Binärcode, wodurch ermöglicht wird, die native Leistung von Objective-C, Swift, Java oder Kotlin abzurufen. Inspiriert vom Erfolg von React, was sogar das Angular Framework in puncto Popularität überholen konnte, verwendet Flutter einen deklarativen Ansatz, um auf Widgets (Komponenten) basierende UIs zu erstellen. Widgets werden hierbei nur bei Bedarf gerendert, in der Regel, wenn der Zustand verändert wurde, was an den Virtual Dom von React erinnert.

Flutter Fakten

  • Open-Source-Bibliothek für mobile Entwicklung, von Google gestartet und gefördert
  • Im Gegensatz zu Angular von Google basiert Flutter auf Dart und nicht auf JavaScript
  • 2018 veröffentlicht und im Januar 2019 aus der Beta-Phase
  • X-Compiled – kommuniziert nativ mit mobilen Geräten
  • Plattformübergreifende Technologie zum Erstellen von „fast nativen“ mobilen Android- und iOS-Apps
  • Kann auch denselben Code zum Web portieren

React Native vs. Flutter: Wie schneiden die Rivalen in puncto technische Qualität und Leistung ab?

React Native und Flutter sind beides beliebte Entscheidungen, momentan sogar die populärsten Optionen, wenn es um die Entwicklung von plattformübergreifenden, mobilen Anwendungen für Android und iOS geht. Diese Popularität ist alles andere als ein Zufall, da beides großartige mobile Entwicklungs-Toolkits sind.

Doch was genau sind die technischen Eigenschaften, die die beiden Lösungen voneinander unterscheiden und wo liegen ihre Stärken und Schwächen – generell und im Kontext verschiedener Anwendungen? Können allgemeine Aussagen über mobile Anwendungen getroffen werden, die entweder mit Flutter oder React Native erstellt werden, wie beispielsweise eine bessere Leistung für Metriken wie Reaktionszeit oder im Rahmen bestimmter Anwendungsfälle? Und wenn ja, für welche Anwendungen?

Im Folgenden gehen wir diesen und weiteren Fragen auf die Spur.

Was haben React Native und Flutter gemeinsam?

Alle großen Rivalitäten entstehen aus der Tatsache, dass die Konkurrenten viel gemeinsam haben. Ansonsten würde es nicht zu einem so intensiven Wettbewerb kommen. Und React Native vs. Flutter bildet hier keine Ausnahme. Bevor wir uns jedoch den Unterschieden der beiden Rivalen widmen, ist es sinnvoll, vorab auf die Gemeinsamkeiten einzugehen.

Was haben die zwei plattformübergreifenden, mobilen Entwicklungs-Toolkits gemeinsam?

  • Beide Lösungen werden verwendet, um leistungsstarke, plattformübergreifende Apps mit nur einer Codebasis zu erstellen.
  • Anstelle von Web-Technologien werden eigene 2D Graphics Engines oder native Komponenten verwendet, um die Benutzeroberfläche anzuzeigen.
  • Apps, die sowohl Flutter als auch React Native nutzen, sind kaum von echten nativen Alternativen zu unterscheiden.
  • Beide haben eine Architektur, die auf Reactjs basiert bzw. von Reactjs inspiriert wurde.
  • Hochflexibel, da beide Lösungen nicht an plattformspezifische Beschränkungen gebunden sind.

Flutter & React Native sind beides plattformübergreifende Entwicklungs-Tools für mobile Anwendungen

Die größte Gemeinsamkeit zwischen Flutter und React Native und letztendlich auch der Grund, warum Entwickler und Projektsponsoren oft vor der Wahl zwischen beiden Lösungen stehen, ist die Tatsache, dass es sich bei beiden um sehr gute plattformübergreifende, mobile Entwicklungstechnologien handelt.

Plattformübergreifende Frameworks erstellen Apps, die entweder auf Android oder iOS ausgeführt werden können. Es gibt einige Besonderheiten in Bezug auf die Kommunikation mit Android oder iOS, die berücksichtigt und codiert werden müssen, aber etwa 90% der gleichen Codebasis kann in beiden mobilen Umgebungen verwendet werden.

Plattformübergreifende vs. native, mobile Apps

Native Anwendungen werden für die Ausführung auf einem bestimmten Betriebssystem erstellt. In der Welt der mobilen Entwicklung ist dies entweder Android (was rund 75% des Smartphone-Markts ausmacht) und iOS (rund 24%). Native Android-Apps werden entweder in Java oder Kotlin geschrieben und native iOS-Apps in Objective-C oder Swift.

Native, mobile Entwicklung

Der vielleicht größte Vorteil der nativen, mobilen Entwicklung besteht darin, dass die Hardware eines Geräts wie Kamera und GPS direkt genutzt werden kann. Plattformübergreifende Apps können ebenfalls auf die Gerätehardware zugreifen, was jedoch über Plugins stattfindet. Während dies in den meisten Fällen keine großen Auswirkungen auf die Benutzererfahrung hat, erhöht eine zusätzliche Schicht dennoch immer die Komplexität und somit auch das Risiko von Ausfällen und Fehlern. Gleichzeitig ist die Leistung nicht optimal.

Es ist auch um einiges einfacher, eine native Anwendung bei Google Play oder im App Store genehmigen zu lassen.

Bis vor kurzem war der Leistungsgewinn durch die native Entwicklung mobiler Apps noch offensichtlich. Auch wenn Flutter und React Native den größten Teil dieser Lücke geschlossen haben, gibt es immer noch Leistungsvorteile bei der nativen Entwicklung.

Native, mobile Entwicklung – Pros

  • Komplexere, native Anwendungen lassen sich leichter korrigieren.
  • Einfachere Nutzung der Hardwarefunktionen des Geräts wie Kamera, GPS, etc.
  • Optimale Geschwindigkeit – ein einfacher Code und die Tatsache, dass viele Elemente bereits vorinstalliert sind bedeutet, dass native Apps in den meisten Fällen eine optimale Geschwindigkeit und Leistung aufweisen.
  • Besser offline – native, mobile Apps funktionieren offline oftmals besser. Dies lässt sich darauf zurückführen, dass viele Elemente bereits vorgeladen sind. Beispielsweise eignen sich Medien wie Zeitschriften oder Zeitungen besser für die native Entwicklung, da nach dem Ladevorgang bei bestehender Internetverbindung kaum Probleme auftreten, wenn der Benutzer im Flugzeug oder in der U-Bahn offline geht, oder wenn eine mobile Internetverbindung eingeschränkt oder überhaupt nicht verfügbar ist.
  • Es ist einfacher, eine native App auf Google Play und im App Store autorisieren zu lassen.

Native, mobile Entwicklung – Cons

  • Für Android- und Apple-Geräte müssen zwei völlig unterschiedliche Apps mit unterschiedlicher Codebasis erstellt und gewartet werden.
  • Zwei unterschiedliche mobile Apps bedeutet, dass mehr Zeit und Geld in die Entwicklung und Wartung investiert werden muss. Dies verlangsamt auch die Markteinführungszeit. Wenn nur eine App für ein Betriebssystem erstellt wird, verlieren Entwickler den Marktanteil der iPhone- oder Android-Nutzer.

Plattformübergreifende, mobile Entwicklung

Plattformübergreifende Entwickler-Toolkits für mobile Apps wie Flutter und React Native kommen bereits heutzutage an die Leistung von nativen Lösungen heran. Die Vorteile von plattformübergreifenden, mobilen Anwendungen sind meist größer als die Nachteile.

Dies wird bestätigt, wenn man einen Blick auf die folgenden mobilen Anwendungen wirft, die alle plattformübergreifend erstellt wurden:

  • Gmail
  • Instagram
  • Facebook
  • Google Ads
  • Google Stadia
  • SpaceX Go
  • Skype
  • Slack
  • Uber

Plattformübergreifende, mobile Entwicklung – Pros

  • Kostengünstig – Es müssen nicht zwei verschiedene Apps erstellt und verwaltet werden, wodurch zwei separate Entwickler-Skill-Sets erforderlich wären.
  • Wiederverwendbare Komponenten – Bis zu 90% der Codebasis ist sowohl für Android- als auch für iOS-Plattformen identisch.
  • Leistung – Moderne, plattformübergreifende Toolkits wie React Native und Flutter haben nur noch wenig Unterschiede in puncto Leistung und Geschwindigkeit.
  • Markteinführungszeit – Da ein Großteil der Codebasis, die von der App auf Android- und iOS-Geräten verwendet wird, nahezu identisch ist, können neue Apps und Updates im Regelfall schneller veröffentlicht werden als bei der Entwicklung von 2 nativen Alternativen.

Plattformübergreifende, mobile Entwicklung – Cons

Komplexere Entwicklung und Integration – Während es viel weniger Zeit beansprucht, eine plattformübergreifende App als zwei native Apps zu entwickeln, dauert die Entwicklung einer plattformübergreifenden App länger im Vergleich zu nur einer nativen App. Hierbei muss sichergestellt werden, dass die gemeinsam genutzten 90% der Codebasis optimal an beide OS-Umgebungen angepasst werden.

Und die restlichen 10%, die sich unterscheiden, müssen ebenfalls gut ausgeführt werden, damit die App optimal in Android und iOS integriert werden kann, um Geschwindigkeits- und andere Leistungsprobleme zu vermeiden.

Offline-Leistung – Die Erstellung einer plattformübergreifenden App, die offline auch nativ funktioniert, stellt eine nicht zu unterschätzende Herausforderung dar.

App Store- und Google Play-Autorisierung – Der Autorisierungsprozess einer plattformübergreifenden Applikation in Google Play und Apple Store dauert länger. Und jedes neue Update der App muss ebenfalls autorisiert werden. Dies kann nicht selten zu Verzögerungen führen.

Flutter und React Native – die Unterschiede

Da wir die Gemeinsamkeiten beider Lösungen abgedeckt haben, können wir uns nun den Unterschieden von Flutter und React Native widmen.

Architektur – X-Compiled/Hybrid (Flutter) vs. JS Native (React Native)

Mobile Anwendungen, die mit Flutter entwickelt werden, gelten als Cross (X)-kompilierte Apps, was bedeutet, dass sie in einer Sprache erstellt wurden, um „nativ“ mit dem Betriebssystem – entweder Android oder iOS und der Hardware des mobilen Geräts – zu kommunizieren. Google startete Flutter als Antwort auf die Einschränkungen von React Native, wenn es um die native Kommunikation mit mobilen Geräten bei komplexeren Anwendungen geht.

„Flutters Widgets beinhalten alle wichtigen Plattformunterschiede wie Scrollen, Navigation, Icons und Fonts, und der Flutter-Code wird durch die Native Compilers von Darts zu nativem Arm-Maschinencode kompiliert.“

Mobile Anwendungen, die mit React Native erstellt wurden, werden dagegen als „JavaScript nativ“ bezeichnet. Im Gegensatz zu Flutter bedeutet JS nativ hier, dass React Native mit der Hardware eines mobilen Geräts über eine Brücke kommunizieren muss. Die in React Native entwickelten UI-Komponenten sind nativ in Android oder iOS, die Kommunikation mit der zugrunde liegenden Hardware wird jedoch nicht als „nativ“ bezeichnet.

Dies kann sich negativ auf die Leistung im Kontext komplexerer Anwendungen auswirken, insbesondere wenn die Effizienz der Kommunikation mit der Hardware eines Geräts von größerer Bedeutung ist.

Zusammenfassend lässt sich sagen, dass die Flux-Architektur von React Native eine JavaScript-Brücke verwendet, um die Kommunikation mit den nativen Modulen zu vereinfachen. Flutters Skia C++ Engine enthält dagegen alle erforderlichen Protokolle, Kompositionen und Kanäle, um die Kommunikation mit den nativen Modulen zu erleichtern – der Engine des Toolkits ist hierbei eine End-to-End-Lösung.

Für mehr Informationen zu Flutters Architektur lohnt sich ein Blick in das Github-Wiki. Dasselbe gilt für React Native.

Designmöglichkeiten, UX- und Komponentenbibliotheken

Es ist einfacher, eine App mit Flutter zu erstellen. Entwickler haben dagegen viel mehr Flexibilität und Design-Möglichkeiten mit React Native.

Da Flutter ein vollwertiges Toolkit für mobile Anwendungen und mit einer umfangreichen Komponentenbibliothek ausgestattet ist, die auf Googles Material Design Prinzipien beruht, kann die Anwendung bequem aus gebrauchsfertigen Widgets zusammengestellt werden.

Da es sich bei React Native um eine Bibliothek handelt, stehen den Entwicklern viel weniger einsatzbereite Widgets zur Verfügung und die Erstellung einer App beansprucht mehr Arbeit und Fachwissen. Dies wird jedoch durch eine nahezu unbegrenzte Flexibilität, um das App-Design anzupassen, wieder ausgeglichen.

Mehr Freiheit ist jedoch auch mit mehr Verantwortung verbunden. Flutter Apps müssen nämlich Googles Material Design Prinzipien folgen. Wenn es um UX geht, besteht wenig Platz für Fehler. Wer dagegen eine UX in React Native entwirft, ist von den Kompetenzen und Fähigkeiten des Entwicklerteams abhängig – und auf diese muss unbedingt Verlass sein.

Wenn es um alternative und originelle Designs geht, hat React Native die Nase vorn. Falls die Geschwindigkeit und Einfachheit Prioritäten darstellen und Sie bereit sind, sich Googles Material Design Prinzipien zu unterwerfen, während alle anderen Faktoren gleich sind, sollten Sie sich für Flutter entscheiden.

Lernkurve

Wenn Sie eine mobile App erstellen möchten, macht es nicht besonders viel Sinn, über die Lernkurve von React Native (und JavaScript) oder Flutter (und Dart) für Entwickler zu sprechen. Denn weder werden Sie persönlich, noch Ihre Inhouse-Entwickler, Software-Agenturen oder Freiberufler von Null anfangen, um die App zu erstellen. Stattdessen werden Entwickler eingestellt, die bereits Erfahrungen mit React Native oder Flutter mitbringen.

Die Lernkurve könnte jedoch dann von Bedeutung sein, wenn Sie bereits über Reactjs-Entwickler verfügen. React-Entwickler können schnell React Native erlernen, da die meisten der zugrunde liegenden Regeln gleich sind. Die Entwickler müssten nur lernen, Codes zu erstellen, die mit dem OS und der Hardware mobiler Geräte kommunizieren können.

Falls Ihre Organisation bereits über ein React-Entwicklungsteam und Standardanwendungen verfügt, wird es wahrscheinlich strategisch am sinnvollsten sein, sich für React Native anstelle von Flutter zu entscheiden, wenn es um die mobile Entwicklung geht. Dennoch wäre es immer noch nicht ratsam, die Entwicklung Ihrer mobilen App an React-Entwickler zu übergeben, die keinerlei Erfahrung mit React Native haben.

Dennoch können Sie hierdurch erfahrene React Native Entwickler unterstützen und React-Entwickler können ihre Fähigkeiten weiter ausbauen, wodurch der Tech-Stack des eigenen Entwicklerteams erweitert wird, was mehr Flexibilität bei zukünftigen Projekten schafft.

Für Junior-Entwickler ohne oder nur mit wenig Erfahrung in JavaScript, Dart, React Native oder Flutter, können beide Sprachen und Tool-Kits erlernt werden. Das Erlenen von React Native oder Flutter von Grund auf hat einen vergleichbaren Schwierigkeitsgrad.

Start-/Installationszeit

React Native wird über den Node Package Manager (NPM) installiert, wobei Pakete entweder lokal oder global installiert werden. Die Installation auf einem MacOS beinhaltet auch den HomeBrew-Paketmanager.

Flutter wird installiert, indem der plattformspezifische (z.B. Linux, Windows, MacOS) Binary von GitHub heruntergeladen wird. Bei der Installation auf einem MacOS wird die flutter.zip Datei heruntergeladen und als PATH-Variable hinzugefügt.

Auf den Begriff „Neither install“ sind bereits viele gestoßen, wenn es um die Installation von nativen Paketmanagern geht. Die Installation von Flutter ist etwas umständlicher auf MacOS, da der Binary zum Pfad hinzugefügt und aus dem Quellcode heruntergeladen werden muss. React Native kann dagegen über Paketmanager installiert werden und erfordert nicht das Herunterladen des Binarys aus dem Quellcode.

In einer perfekten Welt könnten beide Optionen ein wenig einfacher sein, wobei React Native in der Installation ein wenig leichter und schneller ist. Flutters Documentation- und CLI-Support für Setup und Konfiguration sind dagegen besser als bei React Native. Diese Faktoren sind jedoch so geringfügig, dass sie bei der Wahl von React Native vs. Flutter keine entscheidende Rolle spielen.

Entwickler-Produktivität

Wie schnell eine App mit einer bestimmten Technologie entwickelt werden kann, ist aufgrund der Markteinführungszeit und der Tatsache, dass gute Softwareentwickler teuer sind, ein nicht zu unterschätzender Faktor.

Flutter und React Native profitieren beide von einem Hot Reload Feature, was erheblich viel Zeit beim Testen von UI-Änderungen einsparen kann. In React Native können Entwickler einen Texteditor oder eine IDE ihrer Wahl verwenden. Da Dart eine weitaus weniger genutzte Programmiersprache als JavaScript ist, unterstützen viele Texteditoren und IDEs diese noch nicht. Ein leichter Nachteil für Flutter, jedoch noch lange nicht ausschlaggebend.

Unterstützung der Open-Source-Community

Als eine reifere Technologie hat React Native im Vergleich zu Flutter immer noch die Nase vorn, wenn es um Online-Ressourcen oder den Community-Support geht. Flutter holt jedoch schnell auf, sodass die öffentlich zugänglichen Ressourcen sowie die aktiven Gemeinschaften als Pluspunkt für beide gezählt werden können.

Testing-Framework und Support

Ein gutes Testing-Framework für Entwickler zur Erstellung von UI-, Modul- und Integrationstests zählt zu den Qualitätsmerkmalen, die ausgereifte Technologien mit stabiler Traktion auszeichnet. Als JavaScript-Bibliothek stellt React Native den Entwicklern einige Modultest-Frameworks zur Verfügung. Es besteht aber ein Mangel an offiziell unterstützten Integrations- und UI-Level-Test-Frameworks. Dafür gibt es jedoch einige gute Drittanbieter-Tools, die diese Lücke füllen. Appium und Detox sind zwei der beliebtesten.

Flutter verfügt über ein umfangreiches Portfolio aus Modul-, Widget- und Integrationstest-Funktionen. Flutter bietet auch eine starke Testdokumentation und eine sehr nützliche Widget-Prüffunktion an, die die Benutzeroberfläche beispielsweise durch Modultests prüft.

Alles in allem ist die Prüfung von Anwendungen über Flutter einfacher als bei React Native.

DevOps- und CI/CD-Support

Wenn Sie eine DevOps-Organisation sind oder einen weniger formalen DevOps-Ansatz für Entwicklungsprojekte verfolgen, zählen DevOps- und CI/CD-Unterstützung für Flutter und React Native zu den wichtigen Faktoren, wenn es um die Wahl der passenden Lösung geht.

Leider besteht ein Mangel an offiziellen Dokumentationen bei React Native, wenn es um die Einrichtung von CI/CD-Entwicklungspipelines geht. Dennoch gibt es auch hier viele Ressourcen von Drittanbietern, sodass das Setup kein großes Problem für einen erfahrenen DevOps-Architekten darstellen sollte. Nevercode, Codemagic und Bitrise bieten alle verschiedene Lösungen an.

Das reichhaltige Befehlszeilen-Interface von Flutter ermöglicht ein einfaches CI/CD-Setup. Bitrise, Codemagic und Nevercode unterstützen alle Flutter.

Zusammenfassung der technischen Qualitäten von React Native und Flutter

Zusammenfassend lässt sich sagen, dass sowohl React Native als auch Flutter hervorragende plattformübergreifende, mobile Entwicklungs-Toolkits sind. Beide haben ihre Stärken und kommen mit ihren eigenen Herausforderungen, die sich im großen Ganzen nichts nehmen.

Wenn es jedoch um spezifische Anwendungsbeispiele geht, hat Flutter einen leichten Vorteil, wenn eine Anwendung eine umfangreiche Kommunikation mit der darunter liegenden Hardware eines mobilen Geräts voraussetzt. Flutter ist zudem auch ein vollständigeres Toolkit, was so ziemlich alles bereitstellt, um eine mobile Anwendung zu entwickeln. Die umfangreiche Komponentenbibliothek, einsatzbereite Widgets und Material Design Prinzipien bedeuten, dass die Entwicklung schneller und einfacher vonstattengeht, mit nur begrenztem Spielraum für grobe UX-Ausrutscher.

React Native setzt dagegen stark auf Bibliotheken von Drittanbietern und Anwendungen werden aus kleineren Komponenten gebaut. Dies ermöglicht eine stärkere Flexibilität und kreativen Spielraum, insbesondere auf UX und Layout bezogen, bedeutet aber auch mehr Fehlerpotenzial und einen größeren Zeitaufwand.

Welcher der beiden Lösungsansätze die beste Passform für eine App darstellt, kann demnach von einem technologischen Standpunkt alleine aus nicht beantwortet werden. Vielmehr kommt es auf den Anwendungsbereich sowie den betriebswirtschaftlichen Nutzen an. Im Folgenden werfen wir daher einen Blick auf die kommerzielle Seite, die die Wahl zwischen Flutter und React Native beeinflussen kann.

React Native vs. Flutter – Wirtschaftsfaktoren

Wenn es zur Entscheidung des Tech-Stacks kommt, um eine neue Anwendung (mobil, Web, Desktop) zu erstellen, stehen Projektsponsoren vor 4 Hauptüberlegungen, die es abzuwägen gilt:

  • Technologische Passform für die spezifische Anwendung
  • Entwicklungszeit und -aufwand
  • Verfügbarkeit von Talenten
  • Zukunftsfähigkeit der Technologie

Wir haben uns bereits die ersten zwei Überlegungen angeschaut und Überlegung Nummer 4 zum Teil angeschnitten. Da die Größe des Talentpools einen entscheidenden Einfluss auf Punkt 2 und 4 der Geschäftsfallüberlegungen hat, gehen wir im Folgenden zuerst auf die Verfügbarkeit von Talenten ein.

Ist Flutter oder React Native populärer unter Entwicklern?

Wie beliebt eine bestimmte Entwicklungstechnologie (Programmiersprache, Framework/Bibliothek/Toolkit oder Tool) unter Entwicklern ist, kann auf verschiedenen Ebenen bewertet werden:

  • Zufriedenheit bei der Arbeit mit der Technologie.
  • Interesse, die Technologie zu erlernen.
  • Job-Markt – Nachfrage nach Experten.

Flutter vs. React Native – Zufriedenheitsgrad unter Entwicklern

Die StackOverFlow Entwicklerumfrage 2020 bietet einige interessante Einblicke in eine Vielzahl von Industrietrends. Die Umfrage macht deutlich, dass Entwickler, die sowohl Flutter als auch React Native nutzen, Flutter öfter gebrauchen (68,8% Flutter gegen 57,9% React Native) und dies auch in Zukunft beibehalten möchten. Seit 2020 ist die Popularität von Flutter höher als React Native unter den Entwicklern. Dies ist bereits eine wichtige Information für Projektsponsoren, da sich die Zufriedenheitsrate von Entwicklern positiv auf die Produktivität und den Verbleib bei der Firma auswirken kann. Des Weiteren beeinflusst dies auch die Verfügbarkeit von Talenten – eines der wichtigsten Themen im stark umkämpften Fachkräfte-Markt.

Während Flutter hier die Nase vorn hat, gilt es jedoch zu beachten, dass React Native auch weiterhin eine sehr beliebte Technologie darstellt.

Developer Satisfaction Rates With Flutter vs React Native From the StackOverFlow Developer Survey 2020

Flutter vs. React Native – Interesse, die Technologie zu erlernen

Ein weiterer wichtiger Faktor, den es bei der Wahl der richtigen Technologie zu berücksichtigen gilt, ist die Bereitschaft der Entwickler, die jeweilige Technologie zu erlernen. Die StackOverFlow-Umfrage gibt hierbei an, dass React Native einen kleinen Vorsprung gegenüber Flutter hat (14% gegen 10,7%).

Developer Interest In Learning Flutter vs React Native from the StackOverFlow Developer Survey 2020

Das Interesse, neue Technologien zu erlernen, kann von einer Reihe von Faktoren beeinflusst werden, einschließlich der Begeisterungsfähigkeit der Entwickler-Community, Begehrtheit auf dem Arbeitsmarkt sowie die Gehälter.

Flutter vs. React Native – Entwicklernachfrage

Ist die Nachfrage nach Entwicklern für Flutter oder React Native größer? Laut Zahlen vom Portal Statista hat React Native einen leichten Vorsprung, wenn es um die Anzahl von globalen Entwicklern geht, die mit dem jeweiligen Programm arbeiten (42% gegen 39%). Während die Verwendung von React Native in den Jahren 2019 und 2020 stabil geblieben ist, konnte Flutter eine beeindruckende Wachstumsrate von 30% verzeichnen.

Bei einer Lücke von weniger als 8% Gebrauchsrate zwischen beiden rivalisierenden Entwicklungstechnologien im Jahr 2020 könnte Flutter, falls die Wachstumsrate ähnlich stark anwächst, die Pole-Position in der kommerziellen Nutzung für sich bestreiten.

Plattformübergreifende mobile Frameworks, die von Softwareentwicklern weltweit im Jahr 2019 und 2020 verwendet werden

Cross-platform mobile frameworks used by software developers worldwide in 2019 and 2020

Quelle: Statista

Die Daten von Statista basieren auf den Antworten von fast 20.000 Entwicklern, wobei die genaue Methodik zur Erstellung dieser Mustergruppe nicht ganz deutlich ist. Ein Blick auf beliebte Jobportale (sowohl allgemeine als auch für IT-Spezialisten) malt jedoch ein ganz anderes Bild.

Auf dem Jobportal von StackOverFlow, das sich ausschließlich auf Entwickler- und IT-Funktionen konzentriert, gab es Anfang November 2020 nur 21 Einträge für Flutter gegen 649 für React Native. Hier klafft eine große Lücke, was darauf hinweisen kann, dass die geschäftliche Nachfrage nach React Native Spezialisten weitaus größer ist.

Demand for Flutter vs React Native Developers on StackOverFlow as of November 2020

Auf Monster.com, einem der weltweit größten allgemeinen Jobportale, fällt die Lücke ähnlich groß aus. Hier stehen 922 React Native Ausschreibungen nur 128 Ausschreibungen für Flutter-Entwickler gegenüber.

Demand for Flutter vs React Native Developers on Monster.com as of November 2020

Dasselbe Muster wiederholt sich auch auf LinkedIn, mit 457 Treffern für React Native in der Region San Francisco Bay. Dagegen gibt es nur 41 Stellenangebote für Flutter Entwickler – dementsprechend ist die Nachfrage nach Entwicklern für React Native um mehr als 1000% höher.

Daneben gibt es nur 367 Home-Office-Jobs für Flutter auf LinkedIn, im Vergleich zu 1.577 React Native Ausschreibungen – ein Unterschied von fast 330% zugunsten von React Native.

Aus den Jobportal-Anzeigen wird deutlich, dass die Methodik, die von Statista verwendet wurde, wenn es um das Verhältnis zwischen React Native und Flutter geht, nicht die Realität widerspiegelt.

Bezüglich der Gesamtnachfrage ist React Native der klare Gewinner. Könnte dies daran liegen, dass es hier mehr Entwickler gibt, was sich auf den Kostenfaktor auswirkt?

Flutter vs. React Native – Gehälter

Basierend auf unserer Erfahrung als Nearshore-Outsourcing-Agentur (Ukraine, Polen, Bulgarien) sind die Gehaltsvorstellungen bzgl. Flutter und React Native bei gleichen Positionen ähnlich angesiedelt.

Dies wird auch vom US-amerikanischen Jobportal Neuvoo bestätigt. Hier hat React Native mit 120.000 US-Dollar Median-Jahresgehalt einen nur geringen Vorsprung gegenüber Flutter mit 110.000 US-Dollar.

average salary levels for Flutter vs React Native developers 2020

Die Schlussfolgerung lautet, dass die Gehälter keinen großen Einfluss auf die betriebswirtschaftlichen Entscheidungen für die Wahl zwischen React Native und Flutter haben.

React Native ist in Betrieben immer noch beliebter als Flutter

Alle Beweise deuten darauf hin, dass Flutter einen leichten Vorteil in puncto Popularität unter den Entwicklern hat. Und wie wir bereits ausgeführt haben, lassen sich technologische Vor- und Nachteile nur dann ausmachen, wenn man diese im Kontext des jeweiligen Projekts betrachtet. Betriebswirtschaftlich hat React Native dennoch die Nase vorn: Organisationen, die Geld für plattformübergreifende, mobile Anwendungen ausgeben, favorisieren React Native.

Warum? Hier scheint es 2 Hauptgründe zu geben:

  • Es gibt mehr React Native Entwickler
  • Das Reactjs/React Native/JavaScript Ökosystem

Wenn es darum geht, wie einfach oder schwierig es ist, ein Team von Flutter Entwicklern mit relevanter Betriebserfahrung zusammenzustellen, hat React Native hier einen ganz klaren Vorteil.

Dieser Status-Quo wird durch das größere JavaScript/ReactJs/React Native Ökosystem unterstützt. Die Beliebtheit von Reactjs in der Webentwicklung und die Tatsache, dass viele Fähigkeiten und Kompetenzen zwischen React und React Native übertragbar sind, sowie der Aufstieg von JavaScript als Programmiersprache, geben auch hier React Native einen Vorteil, zumindest aus betrieblicher Sicht. Wenn es um die Anwendungsmöglichkeiten der beiden Lösungen geht, ist die Lücke weniger groß.

Flutter vs. React Native – das Urteil

Der geschäftliche Nutzfaktor ist bei der Wahl einer Technologie mindestens genauso einflussreich wie die technologische Passform an das spezifische Projekt, alle anderen Faktoren ausgeschlossen. Und das bedeutet, dass React Native als Gewinner unserer vergleichenden Analyse hervorgeht.

Ausgewählte Blogbeiträge