In terms of key decisions to make when thinking about app development the first one is to decide on either hybrid or native app development. Both are very popular with some well known native apps like WhatsApp and Spotify and hybrid apps including the likes of Instagram and Uber. Both approaches also have their pros and cons and depending on the circumstances each can be the right one to pick. While that choice will probably require quite a bit of brainstorming and figuring out the goals and aims of the product, let's look at what lies ahead if you decide on hybrid development.
Flutter vs React Native
While not the only frameworks you can choose from, Flutter and React Native are the two leading platforms, so the simple decision is to turn to one of them. Both are created by tech giants, Facebook released React Native in March of 2015 and Google released Flutter in April of 2018. React Native is more widely adopted as it was released earlier, but Flutter has been gaining popularity and has recently taken the top spot becoming the most popular framework. Similarly for the size of both communities whether you’re going by Stack Overflow, GitHub or dev.to Flutter is catching up despite React Native having a 3 year head start. For a while it was basically a choice between an established tool and a fresh solution that’s gaining popularity, but now they’re just two major frameworks each with its own advantages.
The ins and outs
First let’s take a look at some technical aspects, not in some very detailed way but just to get an idea on what each of them aims to do best. Each framework differs quite a bit in how it is constructed and how it works and that in turn means either a bit of a learning curve or some digging for community made solutions:
- libraries/components: Flutter relies on built-in libraries, React Native relies on third party libraries. This again comes down to preference, one has more of a starter toolkit the other offers you a buffet of user provided solutions, which you’ll have to find and pick yourself.
Some key differences are already apparent, React Native is more of a customizable tool that you should fit to what you need and Flutter aims to be more of an out of the box tool which gets you everything you need right off the bat. To further drive that point let’s take a look at some details on ease of use.
- testing: React Native offers no built in testing functions, you’ll need third party apps like Appium or Jest. Flutter offers a number of features for testing units, widgets and integrations.
- performance: though this is a hotly debated topic, the basic fact is Flutter is faster and consistently runs at 60 frames per second. React Native does experience some issues and can be a bit slower, the best evidence for that is the existence of popular performance improving third party apps like Proguard.
- complex projects: React Native can be used even for more complex apps, but you’ll likely need to implement at least some bits of native development in relation to some kinks of the particular platforms. Flutter and its Dart are still fairly new and focus on simpler and faster development so they might lack what is needed for more complex or niche projects and using it for those wouldn't make much sense.
Community driven vs out-of-the-box