When developing a mobile app, it’s pretty much a given that you will eventually need to support the two major platforms: iOS and Android. Developing for both platforms can be a challenge because:
- Development costs are almost double due to having to develop with two completely different frameworks and codebases
- Testing and QA – You need to test every feature in both platforms
- Different UI is required since iOS and Android have different design philosophies
- Problems keeping things in sync – When you add features to one, sometimes it takes time to add the same features to the other so unless you can finish both at the same time you are waiting on the other platform to release, or you have to live with the two not having feature parity
- The required development skills for each platform are different – Android is written in either Kotlin (our favorite), or Java while iOS is written in either Swift (our favorite) or Objective C. This means you need to engage developers with different backgrounds to code both platforms, or one with experience in both
What can be done about this?
In the past, we’ve used cross-platform tools like Adobe PhoneGap / Cordova, Xamarin, etc. While these are useful, we’ve recently started using Google’s new Flutter framework that uses the Dart programming language.
This is a great article that explains why Flutter is such a great framework for cross-platform development even though it doesn’t use native platform widgets: https://medium.com/flutter-io/why-flutter-doesnt-use-oem-widgets-94746e812510 .
Basically, it compiles to low level code, and it doesn’t use a webview or native UI elements like others; instead it uses Skia which means it’s using OpenGL.
Why do we like Flutter?
- Code once run anywhere
- Familiar Language and Layout
- Rapid Development
- Stateful Hot Reloading
- UI Flexibility
- Native Like Performance
- Small Deploy Size
- Eventual Support for Desktop and Web
Flutter had it’s 1.0 release in December 2018, and as of today, we’ve already successfully used it in 4 apps for our clients, including projects that required a lot of underlying hardware control such as Bluetooth interfacing with hardware devices.
Not Always the Right Choice
Having said that, Flutter may not always be the right choice depending on the app project. We carefully consult with each client to determine their requirements, and what kind of user experience they want with a project and we make sure we always use the right tool for the job.
We think Flutter is a great addition to the space but it may not always be the best choice, and we still do a lot of native iOS and native Android development and have a lot of expertise with those platforms. The great part about Flutter is you can still use all the native API’s or write native code in combination with Flutter for a unified user experience and faster development.