If you’re having an app developed, you’ll need to decide between native app development and cross-platform app development with tools like Flutter or React Native.
Which you choose will depend on the features and functionality planned for your app, and your team’s long-term vision for the software. When you hire Big Fish we help you through this decision.
Before I dive in, a quick caveat that this article is written for the folks on the business side of things, not the developers . There are already lots of great articles about Flutter that are geared towards developers, and include all the nitty gritty technical details that this article won’t weigh you down with.
What is Native vs Cross-Platform App Development?
Native App Development
In very concise terms, native app development means writing unique source code for each platform being supported. A native iOS app works only on iPhones and iPads. A native Android app works only on Android smartphones and tablets.
Native app development is powerful, and it’s the approach we’ve always recommended for complex, enterprise-grade mobile applications.
Cross-Platform App Development
If you need both an iOS and Android app, there is an alternative to native app development and that is cross-platform app development.
Cross-platform development, through tools like Flutter, enables developers to write the source code once and compile it into an app for iOS and Android.
It sounds like a no-brainer, but there are trade offs when taking this approach. If the tradeoffs, and I’ll discuss those below, are not applicable to your project, cross-platform development will dramatically decrease your design, development and ongoing maintenance costs (and time!) over having two separate native mobile apps.
Flutter isn’t the only option for cross-platform app development, but it’s the one we support at Big Fish. Though we’ve worked with Xamarin and React Native (two other cross-platform options), our confidence in them is lower.
So let’s dive into our thoughts on Flutter for cross-platform app development. I’ll also cover the top scenarios when cross-platform development may not be a good fit.
A Brief History of Flutter
Flutter is a software development kit created by Google and released to the public in 2017. It is used to build cross-platform applications for iOS, Android, Windows, Mac, Linux and the web. In this article I’ll be focusing on Flutter as a toolkit for building mobile apps for iOS and Android.
Flutter apps are written in Dart, a programming language that was also developed by Google. Dart was first released in 2013 and is designed to support large, complex projects. In fact, Google, eBay, Capital One and BMW are all using Flutter and Dart.
Our Evaluation of Flutter for Cross-Platform App Development
As a software development company for hire, our clients trust us to make recommendations related to their software and chosen tech. We are very choosey about the frameworks, libraries and SDKs that we support and recommend.
Being an early adopter sounds great, but when it comes to the underlying technology your software is built on, we want to ensure it’s proven, well-supported and stable.
We feel confident that Flutter is all these things. Here are a few factors we looked at to determine that.
Do we expect Flutter to have longevity?
Yes, for a variety of reasons we are confident that Flutter has a long future ahead of it. The first is that Google is behind Flutter and actively using it and Dart across their enterprise applications. There is also a tremendous and growing amount of developer uptake in the technology which I’ll expound on below.
Is Flutter well-established and stable?
Yes, they get our check mark here as well. Google is releasing updates to Flutter every quarter, including lots of documentation for developers, and Flutter has been out of beta since December of 2018.
Is Flutter popular among developers?
It’s important that the tech you build your software on has a lot of developers and companies using it. If the tech is nascent and the developers are scarce, this will create a variety of obvious challenges.
Flutter is winning here. According to a 2021 developer survey by Statista, Flutter is the most popular cross-platform mobile framework used by developers (42% of developers).
Way back in April of 2020, Tim Sneath of Google announced that over half a million developers were already using Flutter every month.
Flutter versus Native Mobile App Development
Now let’s dive into some scenarios in which Flutter and cross-platform app development in general may not be a great fit.
In these cases we recommend either seriously considering native app development, or tweaking your expectations accordingly. 🙂
Cross-platform development may not be a good fit if…
You want two separate looks for your app – one that is very iOS-centric for iOS, and another that is very Android-centric for Android. Similarly, if you want to match the typical platform controls as closely as possible.
This is all possible with Flutter, but will require your developers to write a lot of custom code for each platform, which starts to negate the benefits of taking a cross-platform approach.
If you’re Ok with your Android and iOS apps looking about the same, then this won’t be an issue.
You need heavy access to platform features that Flutter doesn’t support. This probably won’t be an issue for many of you because Flutter already supports A LOT of platform services; such as geolocation, camera, GoogleFit, AppleHealthKit, file picker and so on.
Developing apps natively gives you access to all platform features out of the box. Developing cross-platform limits what you’ll have access to. That said, if your Flutter developers know how to write native code, they can manually write the code for something that Flutter doesn’t provide yet.
You need a lot of custom controls or plugins. Flutter provides many widgets and controls out of the box and allows you to customize them to some extent, but sometimes you find yourself in need of something that Flutter simply doesn’t provide. If this happens your developers will need to write the native code (i.e. Swift, Kotlin, Java) for these controls from scratch.
If this is going to be required on a regular basis, the benefits of a single code base diminish and the limitations become more painful.
You want to push the boundaries of what the platform considers permissible. For example, iOS and Android have restrictions around tracking a user’s location in the background. There are ways you can skirt the boundaries of these restrictions in native code, but skirting the boundaries in cross-platform tools will be a bigger if not impossible challenge.
You expect to want to do a lot of bleeding edge things. We do not recommend cross-platform app development in this case. Stick to native app development if you need to be bleeding edge or continuous early adopters of new platform features.
You want to run ads other than Google Ads in your app. Check your ad platform first to ensure they support Flutter.
Your app is a game. Flutter is weak in the gaming front. It shines when used for line-of-business apps. There are better frameworks, such as Unity, that are designed for cross-platform game development.
Take these as considerations. Cross-platform app development has come a long way over the last decade and even large corporations are using it to build powerful apps.
Even if you have to intermingle custom-written code for each platform now, the benefits of not having to write and maintain two separate code bases for everything can outweigh that. Plus, this will only get better with time.
Let’s Talk About Corporate Apps That Use Flutter
Before diving in head first, it’s reassuring to know that other large companies are using the tech that you’re considering. Here are some examples of corporate apps that were developed with Flutter and Dart.
The My BMW app was developed 100% with Flutter and launched earlier in 2021. I recommend reading the impressive press release about their launch. “The BMW Group’s Flutter software development team is one of the largest in the world after Google’s own.”
eBay Motors is powered by Flutter! The app allows customers to shop for parts and accessories, buy and sell vehicles, and connect with other car enthusiasts in the community. The eBay Motors app has a 4.8 rating on the App Store and has been rated over 26,000 times!
Nubank is the largest digital bank in the world by number of customers (over 40 million). In 2013 they started out developing their mobile banking apps natively for iOS and Android. They later began to experiment with cross-platform technology (React Native and Flutter), and have since decided to use Flutter as their primary tech for mobile development. Millions of people use the Nubank app today.
The MGM Resorts app is powered by Flutter and Dart. Guests can use the app to check in, unlock their room door, reserve a table, buy tickets to shows and more! These are complex features and it’s done with Flutter.
Final Thoughts on Flutter for Cross-Platform App Development
The future looks great for Flutter. Google has invested a lot in it and Dart – and while that certainly doesn’t mean it’s a guarantee, everything we see points to Flutter being here to stay for the foreseeable future.
Even native app development doesn’t come with a forever guarantee. Apple evolved from Objective-C to Swift as their primary programming language for iOS apps a few years ago; and Google switched from Java to Kotlin.
With technology, change is one thing you can count on.
Interested in hiring a USA-based Flutter app development company?
Reach out to the Big Fish team today! Request a call so we can see if your project may be a good fit, and we’ll explain the next steps of working together.