What Flutter Can’t Do: Limitations

Tom Gilder
Apr 19, 2019 · 4 min read

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.

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.

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.

Flutter Community

Articles and Stories from the Flutter Community

Medium is an open platform where 170 million readers come to find insightful and dynamic thinking. Here, expert and undiscovered voices alike dive into the heart of any topic and bring new ideas to the surface. Learn more

Follow the writers, publications, and topics that matter to you, and you’ll see them on your homepage and in your inbox. Explore

If you have a story to tell, knowledge to share, or a perspective to offer — welcome home. It’s easy and free to post your thinking on any topic. Write on Medium

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store