What are the Best Hybrid App Frameworks in 2019?
Flutter, Ionic, React Native, NativeScript: which is best?
Building and developing native apps for your mobile device has always been a big challenge. While native development gives you more control and better management, it struggles with native SDKs, IDEs, and Apple-specific requirements to produce your new app. Developing hybrid apps have always been the developer’s dream…one project to support them all as Sauron would say!
In this piece, I want to explore the pros and cons of each approach.
Brief Background History
I started developing hybrid apps many years ago. I’m an iOS developer and I have good friends and collaborators doing Android developing, but the dream of developing an entire app with a single, hybrid, cross-platform approach has always charmed me.
It was open war and I passed years exploring these possibilities to transform the native approach into something easier, while in fact studying and applying iOS native technologies. Hybrid apps were not so good — they never were. Even if Cordova and other tools were giving support to native features the UI struggled with flickering, unresponsiveness, sometimes even freezing anomalies. Performance and user experience have never been good enough for me (and to my customers). Some frameworks tried to handle the UI in various shapes, from jQuery mobile (basically a posting of the legacy web-oriented jQuery) to Sencha Mobile and OnsenUI (which tried to improve UI performances with modest results).
But then something happened — the mobile market shuffled the cards on the table until many vendors and brands actually disappeared from the scene. Even Microsoft left the market, after trying to form a promising partnership with Nokia and Lumia devices.
It’s time to see what might be useful for hybrid app development in 2019.
Ionic: The Popular One
Ionic was released many years ago and conceived to be the best framework to create hybrid apps. The goal was to build an Angular based system to blow out all those jQuery mobile frameworks and define a modern approach to mobile hybrid apps.
Ionic is considered the most popular framework today, with more than 38k Git stars and a lot of contributors, providing almost any kind of plugin to perform and include any native feature, from haptic feedback to Facebook integration to in-app purchases and a lot more.
Ionic 4 was recently released, including a restyled UI Interface and a redefined system to handle the internal routing. Unfortunately, the 4th release didn’t have expected success due to poor documentation (some links don’t work even today) and the Cordova-based approach to some features, which needs to be redefined, since some plugins are no longer supported.
Ionic is today betting on enterprise support and pro services — helping developers to integrate the correct way specific features and providing special plugins supported by the Ionic community.
- It’s Angular based
- Uses a lot of Angular concepts, so you don’t have to spend hours mastering the framework. For some occasions, you only need to understand how UI components work and that’s easy!
- It’s popular.
- Provides Pro features (see pricing).
- Has got a livereload system and a nice app to preview your application directly on devices.
- Good performance on UI. Sometimes bad when you use a lot of modules, even approaching lazy loading methods.
- It’s Cordova based and sometimes too limited in the free version for professional requirements.
- The latest version is confusing, I still use the v3 on some recent projects.
React Native: The Professional One
React Native is a Facebook framework integrating the React approach to mobile requirements. If you know React, using React native will make you happy and smile all day.
However, I tried React Native some months ago and didn’t really get it. To me it looked like a powerful framework, but only if you spend a lot of time on it. It’s not because of the reactive pattern, it’s more to do with the limited features of the UI and native features, which sometimes force you to spend time coding.
Many professional apps are made using React Native: Facebook, Instagram, and many other popular ones, which proves that React Native is powerful and high-performing if you have a team of experts and professional developers. Not to say that the other frameworks don’t need expertise, but if you ask me to make a great app for a little startup using React Native I’d probably hesitate.
- It’s React — if you like it you can’t miss it
- Powerful, in some cases more than the others. It’s rendered with native code.
- There are a lot of social plugins to display feeds, grid pictures and stuff like that.
- The learning curve could be very slow
- After months of releases, we’re still at v0.6. Developers don’t like to use tools not versioned as «stable» or definitive
Flutter: The «Hyped» One
Everyone likes Google. After years of coding, I still don’t know why but people seem to be charmed by Google technologies. Well, this is Google’s solution to making hybrid mobile apps with a framework.
I’ve seen Flutter on many occasions and it’s fast becoming popular. I prefer an integrated tool to Angular for fast compiling and executing code on an emulator. I also like the extensions for visual studio that are available. Flutter doesn’t have a long history. Potentially it could become the first-class framework, but it might need more time. Today there’s great demand for greater support of native features and integration, so I’m curious what will happen in the future. The final thing that needs mentioning is that Flutter is based on the Dart language. This is surely a technology that Google needs to push, but this seems to discourage the Flutter approach.
- Provides very good and fast tools to work, build and run our app
- Brand new and people love Google, so its potential is perhaps higher than other frameworks.
- It performs great, technically.
- Limited support on some features, needs time to improve.
Nativescript: The New One
Nativescript is the disturbing man in the corner. In the course of hours recently spent looking for the definitive framework to create hybrid apps (which I didn’t find in the end) I saw Nativescript and was fascinated. I really like some of its features, while I hate others.
Nativescript gives you powers to code your app using angular or Vue, locally and even with an online IDE: a very good idea. Moreover, Nativescript has decent support for native features and UI features, providing good templates and plugins.
Nativescript could be a great framework but I hated its tools to debug, run and work with. The CLI is a bit tricky and when has finished compiling gives you a QR code. There’s an app you have to install on your device to scan the code…OK. Then you need another app to run your app! And where the app crashed for the first time due to doodling and experimenting snippets and parts of code, the apps seem to stick, forcing you to do all again. I definitely missed the simple Ionic and Flutter livereload!
- Cool website and clear docs.
- Uses Angular or Vue — you choose which.
- It’s performing.
- Bad tools to work with.
- Very limited support to bugs and stackoverflow questions. Needs to be more popular.
Conclusions and Final Considerations
If you’re looking for the secret weapon and you want to get out of the native approach I have some bad news for you: my opinion is that it simply doesn’t exist. Today the native approach with Swift and Kotlin is still much better.
But if you don’t want to learn both or your team is made of few developers and you’re not yet skilled in coding web technologies you can try these. The way to get comfortable with these is totally personal and related to your skills and methodology. Then, even if spending hours trying all these frameworks may look boring, you can find a good ally.
Today I use hybrid frameworks to code simple apps any time I don’t need extreme performance and when requirements and budgets are limited. I think that hybrid could still improve a lot. Let’s see who will win the fight!