Kuatsu Logo
← Zurück zum Blog
6. Januar 2024 7 Minuten Lesezeit

App-Entwicklung mit React Native: Vor- und Nachteile

React-Logo auf abstraktem Hintergrund

In den letzten Jahren hat sich im Bereich der App-Entwicklung viel getan. Passé sind die Tage, wo Apps zwingend separat für jedes zu unterstützende Betriebssystem entwickelt werden mussten. Hybride Apps sind der neue Trend. Aus gutem Grund: Die hybride Entwicklung spart Unmengen an Zeit, Kosten und anderen Ressourcen. Die absolute Mehrheit an Apps, die unsere App-Agentur verlässt, wird in React Native entwickelt. Viele Kunden fragen uns: Was ist das überhaupt, womit ihr meine App in einem Bruchteil der sonst üblichen Zeit umsetzen konntet? Wir geben Ihnen einen Überblick samt Vor- und Nachteilen.

React Native kurz erklärt

Achtung, hier wird es etwas technisch – wir halten uns der Verständlichkeit halber aber kurz. React Native ist ein Framework (quasi ein Baukasten) für die Entwicklung von hauptsächlich, aber nicht ausschließlich, Smartphone-Apps. Es basiert auf dem UI-Framework React und erweitert dieses, wie der Name verrät, um die Möglichkeit, native Apps für verschiedene Betriebssysteme zu entwickeln. Während "echte" native Apps direkt für ein bestimmtes Betriebssystem entwickelt werden, werden React Native Apps "universell" entwickelt. Der geschriebene Code wird dann in eine native iOS- bzw. Android-App eingepackt. Über eine sogenannte Bridge (Brücke), welche ebenfalls in der von React Native generierten nativen App enthalten ist, kann der eingepackte Code dann direkt mit dem Betriebssystem kommunizieren. So ist es möglich, Software- und Hardware-Funktionen nutzen zu können, auf die reine Web Apps zum Beispiel keinen Zugriff haben. UI-Elemente werden direkt über die native App gerendert und müssen nicht über die Brücke kommunizieren. Dadurch genießen React Native Apps eine herausragende Performance, welche sich vor nativen Apps nicht verstecken muss.

Wer verwendet React Native?

Die Chance ist hoch, dass auf Ihrem Smartphone mindestens eine App (eher weitaus mehr) installiert ist, die in React Native entwickelt wurde. React und React Native werden in erster Linie vom Internet-Riesen Meta entwickelt, haben beide jedoch eine unfassbar große Open-Source Community. Unter anderem die Apps von Facebook selbst, Amazon inkl. Kindle, Microsoft Office, Pinterest uvm. wurden in React Native entwickelt. Einen Überblick über weitere Apps können Sie im Showcase auf der Webseite von React Native sehen. Auch das ist jedoch nur ein winzig kleiner Auszug. Sie nutzen vermutlich mehr Apps, die in React Native entwickelt wurden, als Sie vielleicht denken – und werden den Unterschied zu nativen Apps nicht spüren können.

Der Turbo für Ihr App-Projekt

Der große Vorteil von React Native (wie im Übrigen auch von anderen, ähnlichen Frameworks wie Flutter) liegt somit darin, dass eine App nur einmal entwickelt werden muss. Was sich banal anhört, hat große Auswirkungen auf den zeitlichen Aufwand und das Budget. Der universelle React Native Code kann dann als native App für alle möglichen Betriebssysteme exportiert werden. In den meisten Fällen sind das iOS und Android. Es ist jedoch genauso möglich, mit React Native zum Beispiel Web Apps, Anwendungen für macOS und Windows, ja selbst den Apple TV zu entwickeln. Alles mit einer einzigen Codebasis. Zugegeben: Hier und da müssen geräte- und betriebssystemspezifische Anpassungen und Optimierungen vorgenommen werden. Nicht alles, was auf iOS reibungslos funktioniert, läuft auch auf Android direkt rund. Der Aufwand dafür ist im Vergleich zur Entwicklung zwei separater Apps für jedes Betriebssystem so marginal, dass er nahezu vollständig vernachlässigt werden kann.

Am Ende ist es damit also möglich, eine App für iOS, Android, macOS, Windows und das Web zum Preis und mit dem Zeitaufwand von einer App entwickeln zu lassen.

Open-Source und das Ökosystem

Ein weiterer Punkt, mit dem React Native trumpfen kann, ist die dahinterstehende Gemeinschaft. Während React Native eine solide Basis bildet, gibt es unzählige Libraries von ehrenamtlichen Open-Source Entwicklern, mit welchen Apps noch schneller und effizienter umgesetzt werden können, ohne das Rad an jeder Ecke neu erfinden zu müssen. Die App benötigt eine Navigation mit einer Tabbar am unteren Bildschirmrand? Klar, hat schonmal jemand gelöst. Die App soll Zugriff auf Kamera und GPS haben? Allein dafür gibt es mehrere Hände voll frei zugänglicher Module.

Hier liegen jedoch gleichzeitig zwei gefährliche Fallen: Man könnte einerseits in Verlegenheit kommen, sich durch die Unmengen an Open-Source Libraries zu wühlen und die eigene App mit für den Nutzer völlig unrelevanten Funktionen und UI-Elementen voll kleistern. Nicht nur zehrt das an der Performanz der App, auch ist für den Nutzer dadurch nichts gewonnen und die App wird komplexer, als sie es sein müsste. Die viel größere Gefahr liegt jedoch in der Auswahl der zu verwendenden Module: Es muss beachtet werden, dass diese schlussendlich nur ehrenamtlich weiter entwickelt werden. Es hält einen Maintainer ("Betreuer") einer Open-Source Library nichts davon ab, die Weiterentwicklung von heute auf morgen einzustellen. Soll die eigene App aber weiterhin weiter entwickelt werden, bedeutet das in der Regel, dass das betroffene Modul ausgetauscht oder mit eigenem Code ersetzt werden muss. Dadurch ergibt sich zum Teil doppelte Arbeit. Es ist daher ungemein wichtig, eine erfahrene und auf React Native spezialisierte Agentur an der Hand zu haben, die sich mit dem Ökosystem rund um React Native auskennt und weiß, welche Module in welchem Umfang genutzt werden können, ohne sich langfristig unter Umständen selbst ein Bein zu stellen.

Expo – React Native auf Speed

Besonders hervorzuheben im Ökosystem von React Native ist Expo. Es gibt quasi keine App, die unsere Agentur verlässt, die nicht mindestens ein Modul von Expo verwendet, oder gar vollintegriert in das eigene Ökosystem von Expo ist. Expo ist ein Urgestein in der React Native Community und treibt die Weiterentwicklung dessen seit Jahren aktiv voran. Inzwischen ist ein komplett eigenes System aus Frameworks, Modulen und Tools entstanden, die die Arbeit mit React Native enorm vereinfachen. Auch hier gilt: Die App muss auf die Kamera zugreifen? Da gibt's ein Modul von Expo für. Zugriff auf den Nutzerstandort benötigt? Kein Problem, Expo hat da eine Library.

Lange Zeit hatte die Verwendung von Expo-Modulen jedoch den Nachteil, dass man sich dadurch selbst in das System von Expo "einsperrte" (Vendor Lock-in). Die Verwendung derer Module war nämlich nur möglich, wenn man auch die Toolkits von Expo verwendete, was wiederum zur Folge hatte, dass man die Toolkits von React Native selbst nicht mehr verwenden konnte. Auch konnte man, wenn man Expo verwendete, sehr viele Libraries von anderen Anbietern nicht mehr nutzen, was auch hieß, dass einige Software- und Hardware-Funktionen wie In-App Käufe überhaupt nicht implementiert werden konnten, wenn man auf Expo setzte. In eher unerfahrenen Kreisen von App-Entwicklern ist Expo daher immer noch etwas in Verruf. Das jedoch völlig grundlos: Spätestens seit November 2021 und dem Release der Expo Application Services (EAS) gibt es diesen Vendor Lock-in nämlich nicht mehr. Alle Expo-Module und selbst die Toolkits von Expo können problemlos verwendet werden, ohne sich dadurch selbst einzusperren. Auch die Verwendung von Libraries anderer Anbieter ist bei der gleichzeitigen Verwendung von Expo kein Problem mehr. Gleichzeitig ist das Kompilieren (also das Verpacken des Codes in eine lauffähige App) und Verteilen von React Native Apps dank Expo EAS um ein Vielfaches einfacher geworden. Heutzutage gilt: Alles, was in React Native umgesetzt werden kann, kann auch in Expo umgesetzt werden – dank der umfassenden Toolsets aber schneller, komfortabler und effizienter. Wer an einer etwas technischeren Erklärung von EAS Interesse hat, bekommt den Unterschied zum vorherigen Workflow in diesem Beitrag von Expo gut erklärt.

Wie zukunftssicher ist React Native?

Bei all den Vorteilen fragen Sie sich vielleicht, ob das Ganze denn zukunftssicher ist. Am Ende ist React Native schließlich nur eine weitere Ebene Ihrer App, die womöglich irgendwann einmal wegfallen könnte. Auch hier trumpft React Native mit dem starken Rückhalt durch die Open-Source Gemeinde. Selbst wenn sich Meta einmal dazu entschließen sollte, React Native nicht weiter zu entwickeln, ist die Chance enorm hoch, dass ein anderes Entwickler-Team diese Rolle übernimmt. Es sind inzwischen zahlreiche Geschäftsmodelle rund um React Native entstanden, nicht zuletzt auch die oben genannten Expo Application Services, weshalb auch eine Menge Geld im System hängt. Es ist daher nahezu ausgeschlossen, dass React Native von heute auf morgen verschwindet bzw. nicht mehr weiter entwickelt wird. Und allein der Gedanke, dass Meta die Lust verliert, React Native weiter zu entwickeln, ist ziemlich fernab: Am Ende hat wohl auch Meta kaum Lust, einen großen Teil ihrer eigenen Apps, die selbst auf React Native basieren, komplett neu zu bauen. Mit einer App, die in React Native entwickelt wurde, setzen Sie also auf eine zukunftssichere Option, die Entwicklung Ihrer App nicht nur schneller und effizienter, sondern auch kostengünstiger macht.

Nachteile und Limitationen

Nachdem wir in diesem Artikel bislang von React Native geschwärmt haben, ist es nur fair, auch Nachteile aufzuzeigen, und wo eine native App vielleicht die sinnvollere Option ist. Eines vorab: Wenn Sie einen Entwickler beauftragen, der Ihnen von React Native abrät, weil man damit Funktion X oder Y nicht umsetzen könne, weil dies nur mit einer nativen App möglich sei, hat dieser leider ein grundlegendes Fehlverständnis von React Native. React Native ist wie am Anfang dieses Artikels beschrieben nicht nur eine hübsch verpackte Web App. Selbst wenn es mal kein fertiges Modul für eine bestimmte Funktion geben sollte, ist es möglich, diese Funktion nativ für die gewünschten Betriebssysteme zu entwickeln und den nativen Code dann über die Bridge mit dem universellen Hybrid-Code kommunizieren zu lassen. Es muss also nach wie vor keine komplett eigene App für jedes Betriebssystem entwickelt werden, sondern es muss nur die gewünschte Funktion an sich separat entwickelt werden. Die Geschäftslogik, die auf dieser nativen Funktion basiert, befindet sich dann im universellen Code, der nur einmal zu entwickeln ist. Damit das möglich ist, bedarf es aber zwingend einem Entwickler bzw. einer Agentur, die sich tiefgreifend mit React Native auskennt und auf die Entwicklung damit spezialisiert ist. Ein eher unerfahrener Entwickler wird nämlich nur auf quelloffene Module setzen können, nicht aber sein eigenes, natives Modul entwickeln können, falls es mal keine vorgefertigte Lösung gibt. Dadurch wird er Ihnen schnell dazu raten, einfach die ganze App nativ zu entwickeln. Ein teurer Fehler.

Nichtsdestotrotz gibt es auch Situationen, in denen eine native App doch mehr Sinn macht. Diese sind jedoch so selten, dass wir sie unserer Agenturhistorie an zwei Händen abzählen können. Hauptsächlich geht es in diesen Situationen um die benötigte Performanz der App. Ist diese auf Höchstleistung angewiesen, fällt React Native aus dem Raster. Die Chance ist jedoch hoch, dass Sie denken, Ihre App benötige mehr Performanz, als tatsächlich notwendig. Eine Geschwindigkeit, die React Native nicht mehr bieten kann, wird eigentlich nur von Apps benötigt, die komplexe 3D-Visualisierungen, Augmented Reality, Videobearbeitungen oder Ähnliches können sollen, sowie von 3D-basierten Videospielen. Wir beraten Sie dazu im Hinblick auf Ihr App-Projekt gerne in einem unverbindlichen Erstgespräch.