Over five years ago we began using Flutter to build mobile apps. While we have always had a glowing opinion of the app development framework, our love of Flutter has only grown over time. Flutter has proven to be a worthwhile choice for our clients, especially those who need to get to market quickly on a startup budget.
Traditionally, the decision to build a mobile app has really been two decisions: to build a native Android app and a native iOS app. U.S. market share of smartphone users is about evenly split between Android and iOS, so it typically makes sense to build for both platforms when targeting U.S. smartphone users.
Native apps and cross-platform apps
Prior to Flutter, the best solution for a great mobile app on Android and iOS was to build two separate “native” apps. Native apps are written in the programming language of the platform they are targeting: Kotlin for Android, and Swift for iOS. Since Android and iOS use different native languages, native app developers have to write two separate code bases to bring their apps to both platforms. That means every single feature in the app has to be built twice.
Flutter and other cross-platform app development frameworks enable developers to write a single code base that works on both Android and iOS. Flutter accomplishes this feat by compiling your single code base into native code for each platform. This makes Flutter app performance indistinguishable from a native app. The advantage to cross-platform apps is that you only have to write your app features once to support every platform.
Drawbacks of native apps
While native apps have great performance, deciding to build native apps has its drawbacks. Primarily, native apps are more expensive to build than a cross-platform app. As you must build two native apps to support Android and iOS, your development costs are effectively twice that of a cross-platform app.
It may also take longer to bring a native app to market, as many companies wish to simultaneously release their app on both platforms. This is especially true when running a national marketing campaign: you want all mobile users to have access to your app at the same time. Coordinating releases with two native apps means building comparable features on both platforms, and ensuring both apps are ready for a predetermined launch date. Your development team’s ability to coordinate release schedules may depend on the availability of native developers that can support both of your apps.
The duplicated effort doesn’t end with your initial release, either. Two native apps means twice the effort to maintain and update your app. Bugs found on one platform may not be present on the other, and the two code bases will deviate over time. Customer support may require specific instructions for handling issues on each platform. New feature development will also require twice the effort to support both platforms. What began as two identical native apps may eventually feel like two entirely different apps with different capabilities.
The crux of all of the above problems is that native apps require two separate code bases to support Android and iOS. With Flutter, those two code bases are replaced by a single code base that is shared across both platforms. While you may still need to make some platform-specific adjustments—which Flutter supports, by the way!—you can build most of your app with a single code base.
This single code base translates into cost savings throughout the life of your mobile app. Initially, you can build your app for both platforms, minimizing development time and saving money. On average, we’ve found that a Flutter app saves our clients nearly 50% on initial development costs when compared to building native Android and iOS apps.
Your Flutter app’s single code base means that you can also maintain and update your app with less effort. Customer support is simplified, as you only have one set of instructions for troubleshooting issues. New feature development is also simplified, as you only need to build new features once to support both Android and iOS.
Extending Flutter’s capabilities
We expect our clients to continue benefiting from Flutter as the development community around the framework grows. Our own open source libraries add Flutter support to Rollbar, Mux, and Critic. We’ve even made contributions to the Flutter framework itself, including a recent addition to support Scribble handwriting on iPadOS.
While Flutter already has all of the capabilities needed for most of our clients’ apps, adding new capabilities is a straightforward process. Flutter supports native extensions, meaning there is no limitation to what we can build with the framework.
Some of our favorite Flutter apps
Artful Agenda is a digital planner that works like paper. Stickers, annotations, and drawing capabilities in Artful Agenda bring the best parts of paper to a stylish Internet-connected digital planner that works on any device.
Flutter enabled us to build a smooth, responsive mobile digital planner experience that performs well on any modern mobile device. The Artful Agenda mobile app is available for Android, iOS, and iPadOS.
CardNow is a gift card management service that sends you blank physical gift cards you can load as needed. CardNow came to us with an existing app. However, the code base was complex, fragile, and did not function as expected.
Our mobile app developers built a new production-ready Flutter app for CardNow in one month. Flutter’s highly performant UI components combined with our years of Flutter experience gave CardNow the frictionless mobile user experience they were seeking.
It’s Your Birthday!
It’s Your Birthday! (IYB) is a platform for creating fun and meaningful birthday videos for your friends and family. IYB began their startup journey with another development agency. The other agency spent over two years building their API and native mobile apps, never releasing to the app store.
After we helped IYB get their existing app on track, we began envisioning a new mobile app experience for their users. Together, we redesigned IYB from the ground up to make birthday video creation more enjoyable and intuitive. We used Flutter to build the updated app for Android and iOS.
Our future with Flutter app development
Cross-platform development goes beyond mobile apps. We have begun adopting Flutter for desktop and web apps as well.
Over half of all web traffic now comes from mobile device users. This means that most web applications will benefit from being mobile-friendly: mobile support makes your web app more attractive to half of all potential visitors. A single Flutter-developed app offers an affordable, high-quality user experience across all of your user’s devices, in mobile app stores and beyond.