What Flutter Can’t Do: Limitations

Tom Gilder
Flutter Community
Published in
4 min readApr 19, 2019

When evaluating new technologies, I find details of what something can’t do even more useful than what it can, even if such lists can seem horribly negative.

Welcome to doom and gloom.

I’ve tried to avoid matters of opinion and things people don’t like (such as a lack of a markup language), just hard facts about what Flutter can’t currently do, and when it will hopefully be able to.

Note: article fully updated as of August 2020 for Flutter 1.20.

Directly Calling Native APIs from Dart

Flutter can interact with native platform APIs, but not directly. This differs from Xamarin and NativeScript where you can use all native APIs using the same language you write your app in, via language bindings.

NativeScript and Xamarin have direct access to platform APIs

What’s the impact?

For most common cases, very little. Someone will probably have done the work for you, and you can just use a plugin.

In more custom scenarios, you’ll have to write native Swift or Java/Kotlin code to interact with native APIs, using different IDEs, and communicate via platform channels.

Will this change?

Not anytime soon.

Native Platform Views

Flutter renders everything itself, using Skia. But sometimes you need to use native UI elements such as maps and web views. Flutter does support embedding these, but it’s in preview and there are quite a few issues.

What’s the impact?

Most common scenarios will work, but there are some remaining issues, including several issues on Android with keyboards and web views.

It’s worth taking a look through the most popular issues for the Google Maps plugin, webview plugin and platform views.

Will this change?

Yes. It’s getting better. From my experience you can always find a workaround for all the current issues.

Code Pushing

Code push allows developers to instantly push patches to their apps without going through the usual app store release process.

Bugs can be fixed without a new release, allowing a more web-like continuous development process. It’s supported by React Native, Cordova and Ionic. Flutter doesn’t support this.

Lack of code push is a deal-breaker for some

What’s the impact?

All updates for Flutter apps have to go through the standard app store release processes. This can sometimes take a few days for iOS.

Will this change?

Not anytime soon. Code Push has been postponed for now — see this post by Ian Hickson.

Vector graphics and animations

Flutter’s support for vector formats isn’t perfect, but it’s much better than it used to be. The SVG package mostly works, but occasionally has some issues and I’ve had to simplify files to make it work properly.

The SVG format is a complicated nightmare, which is almost impossible to fully support outside of a web browser, so that isn’t surprising.

Support for Lottie is now excellent, since Xavier Hainaux has done an amazing Dart port, and I’ve had no problems with it. Lottie allows designers to export animations from the industry-standard Adobe After Effects, which can then be directly imported into iOS and Android apps.

What’s the impact?

Some files don’t render correctly with the current plugins. One alternative is 2Dimension’s Flare, but most designers won’t be familiar with it.

Will this change?

Yes, slowly but surely all the plugins are getting better. I now use SVGs and Lottie without too many issues.

TVs, Watches and Cars

You can’t use Flutter to build apps for tvOS, watchOS, CarPlay or Android Auto. There’s some limited support for Wear OS (formerly Android Wear).

What’s the impact?

You’ll have to use native code or an alternative framework to target these platforms.

Will this change?

Possibly, but it’ll probably take a while, and I’m unconvinced Flutter will ever be a great choice for some of these platforms, especially Apple Watch.

For now there are issues tracking car support, and Wear OS support. Flutter now has support for Bitcode, which was formerly a big blocker to watchOS.

Fin

Phew. Hope that wasn’t too depressing. Don’t worry, nothing is perfect, and Flutter is still great.

To show how Flutter is improving, this article has previously listed several missing features such as password autofill that is now supports. Every release brings new features.

--

--

Tom Gilder
Flutter Community

Slightly obsessed with Flutter. I make the best apps around with lovely people at Codemate in Helsinki — codemate.com