Ein Gastartikel von Erik Behrends, Autor des Buchs „React Native“.
Wer eine App für Smartphones entwickeln möchte, sieht sich mit vielen Fragen konfrontiert. Und ganz zentral ist diese: Soll die App zuerst für Android-Geräte oder zuerst für iPhones entwickelt werden? Zwar ist der Marktanteil von Android höher als der von iOS, aber nur wenn die App auf beiden Plattformen läuft, werden potenziell alle Nutzer erreicht.
Wenn nun für Android und iOS entwickelt werden soll, erfordern die herkömmlichen Ansätze von Google und Apple zwei Entwicklerteams und getrennten Code. Beide Teams sind auf die jeweils unterschiedlichen Aspekte spezialisiert, denn es kommen mit Java (oder Kotlin) für Android und Swift für iOS nicht nur verschiedene Programmiersprachen, sondern auch jeweils eigene APIs und Werkzeuge zum Einsatz. Also liegt es nahe, die App plattformübergreifend zu entwickeln, um den Aufwand zu minimieren.
Doch welches Framework soll dazu gewählt werden?
Mit React Native steht seit 2015 ein solides Open Source-Projekt für die plattformübergreifende Entwicklung nativer Apps zur Verfügung. Von Facebook vorgestellt, wird es mittlerweile von einigen namhaften Unternehmen weiterentwickelt und für beliebte Apps eingesetzt, wie zum Beispiel für Airbnb, Skype, Tesla und Instagram (hier zum offiziellen Showcase). Dieser Artikel nennt acht Gründe, warum das Framework React Native einen attraktiven Ansatz zur App-Entwicklung darstellt.
1. Eine Codebasis – nicht nur für Android und iOS
Okay, dies setzen wir natürlich für ein plattformübergreifendes Framework voraus. Apps, die für Android und iOS mit React Native programmiert werden, können zum Großteil auf den gleichen Code zurückgreifen und parallel entwickelt werden. Falls – beispielsweise wegen der unterschiedlichen UI-Guidelines beider Plattformen – erforderlich, kann spezifischer Code für Android bzw. iOS nahtlos umgesetzt werden. Und weil in JavaScript programmiert wird, lassen sich Teile der Geschäftslogik ohne spezifischen Code für die App in Webprojekten wiederverwenden.
2. Attraktiv und solide durch JavaScript und React
In React Native wird mit JavaScript programmiert, wodurch das Framework unter anderem für Webentwickler relativ leicht zugänglich ist, denn sie müssen keine neue Programmiersprache erlernen. Zusätzlich profitiert React Native vom deklarativen Programmiermodell in React, das einen eleganten und produktiven Ansatz zur Erstellung von Benutzeroberflächen bietet. Gerade dieser Vorteil ist ein Grund für die wachsende Popularität von React Native in den letzten Jahren. Mit mehr als 60.000 Sternen liegt React Native in den Top 15 der beliebten Projekte auf github. Und wer bereits Webprojekte mit React umgesetzt hat, wird schnell und ohne große Mühen in die App-Entwicklung mit React Native einsteigen können.
3. Echte native Apps
React Native erzeugt performante Apps mit nativen UI-Elementen für Android und iOS. Ein Button wird jeweils wie erwartet als echter Button in der iOS-App und in der Android-Version dargestellt. Dies ist ein großer Vorteil gegenüber hybriden Frameworks wie etwa Cordova und Ionic, deren Anwendungscode in einem WebView ausgeführt wird. UI-Elemente werden dort mit HTML und CSS lediglich nachgebildet, was sich negativ auf das Erscheinungsbild der App auswirken kann. React Native ermöglicht auch flüssige Animationen – ein Umstand, der in einer App für gute gute User Experience sorgt.
4. Hohe Produktivität durch schnelle Reaktionszeiten
Ändert man bislang den Code einer nativen App, muss diese jedes Mal erneut kompiliert werden. Bevor also auf dem Smartphone getestet werden kann, vergehen für eine Android-App mindestens einige Sekunden und in einem iOS-Projekt oftmals sogar deutlich mehr Zeit (von den häufig berichteten Abstürzen von XCode ganz zu schweigen). Den meisten Programmierern ist sicherlich bewusst, dass sich dies negativ auf ihre Produktivität auswirken und eine Belastungsprobe für ihre Gelassenheit darstellen kann. Hingegen wird bei der Programmierung mit React Native jede Änderung am Code fast augenblicklich in der App sichtbar – dank Features wie Live Reload und Hot Reloading.
5. Aktives Umfeld mit vielen Erweiterungen und Werkzeugen
React Native wird von vielen Entwicklern und mehreren Unternehmen aktiv weiterentwickelt. Es stehen viele nützliche Erweiterungen und Bibliotheken zur Verfügung, die beispielsweise UI-Komponenten implementieren, die nicht direkt von React Native angeboten werden. Hervorzuheben ist hierbei das Start-up Expo, das einige nützliche quelloffene Werkzeuge für React Native bereithält. Um nur ein Beispiel zu nennen: Die Expo-App ermöglicht es in Kombination mit React Native, native Apps für das iPhone ohne Apple-Rechner zu entwickeln. Außerdem steht Entwicklern im Prinzip jede Hilfsbibliothek aus dem riesigen Open Source-Umfeld von JavaScript bzw. Node.js zur Verfügung.
6. Weitere Plattformen neben Android und iOS
Oben habe ich bereits erwähnt, dass sich Teile des JavaScript-Codes auch für Webprojekte verwenden lassen. Es gibt jedoch zusätzliche Plattformen, für die Apps mit React Native entwickelt werden können. Dazu gehören z. B. Apple TV und Microsofts Universal Windows Platform. Architektur und Funktionsweise von React und React Native erlauben es sogar, Anwendungen im zukunftsträchtigen Bereich der virtuellen Realität umzusetzen (siehe React VR). Und das Projekt React Native Web ermöglicht es, App-Komponenten in Webanwendungen einzubinden, wovon unter anderem Twitter Gebrauch macht.
7. Nativer Code kann eingebettet werden
In React Native kann einerseits nativer Code für Android und iOS eingebettet werden, sodass sich native Bestandteile anderer Projekte oder Bibliotheken wiederverwenden lassen. Umgekehrt ist es möglich, React Native in App-Projekten einzusetzen, die bisher mit den herkömmlichen Ansätzen von Google bzw. Apple entwickelt wurden. Somit ist es möglich, neue Funktionalitäten in diesen Projekten prototypisch und plattformübergreifend mit React Native umzusetzen und dadurch die Entwicklung parallel für Android und iOS fortzuführen.
8. Einfacher Einstieg mit Expo Snack
Das Werkzeug Expo Snack lässt prototypische Apps direkt im Browser entwickeln! Mit diesem fantastischen Tool können Apps demonstriert oder bestimmte Funktionalitäten auszuprobiert werden. Insbesondere muss nichts installiert werden, um erste Erfahrungen mit React Native zu sammeln. Ich empfehle dieses interaktive Tutorial zu React Native – erstellen Sie dort in fünf Minuten Ihre erste App. Leichter wird der Einstieg in die App-Entwicklung bestimmt nicht!
Wahrscheinlich ist React Native das einzige Framework für die plattformübergreifende Entwicklung nativer Apps, das solch eine Fülle von Möglichkeiten und Funktionen bietet. Es gibt aber auch Einschränkungen bei dem Framework, die es zu beachten gilt.
Manche Rahmenbedingungen erfordern nativen Code
Es kann Situationen geben, in denen es nicht möglich ist, bestimmte Funktionalitäten einer App mit React Native umzusetzen. Dies könnte ein besonderes Bedienelement sein, für das es (noch) keine Komponente im Framework gibt. Auch decken die APIs von React Native nicht alle Gerätefunktionen ab, sodass etwa bestimmte Sensordaten nicht abgefragt werden können. In diesen Fällen kann zwar nativer Code eingebettet werden, aber es bedeutet auch, dass mindestens ein Teammitglied sich mit den nativen Aspekten der App-Entwicklung auskennen sollte. Dieses Wissen wird zusätzlich relevant, wenn tiefer liegende Fehler im Code einer App untersucht werden müssen, falls künftig Abwärtskompatibilität sichergestellt werden muss und wenn die App in den App-Stores veröffentlicht werden soll.
Das Framework hat noch keine stabile Version erreicht
Auch knapp drei Jahre seit seiner Einführung befindet sich React Native in aktiver Entwicklung mit monatlichen Veröffentlichungen neuer Versionen. Dabei kommt es gelegentlich zu Änderungen am Framework, wodurch APIs sich ändern oder sogar entfernt werden. Dennoch kann React Native bereits jetzt ohne große Risiken für App-Projekte eingesetzt werden — viele namhaften Unternehmen liefern bereits den Beweis.
Erik Behrends ist Professor für Informatik an der DHBW Lörrach (Duale Hochschule Baden-Württemberg). Dort befasst er sich hauptsächlich mit Themen der praktischen Softwareentwicklung. Auf Twitter ist er unter @behrends zu finden.
2 Kommentare