Published using Google Docs
[PUBLIC] Flutter 2023 Strategy
Updated automatically every 5 minutes

Permanent link: https://flutter.dev/go/strategy-2023

This is a public-facing, slightly edited version of the Flutter 2023 strategy document published internally at Google.

Flutter 2023 Strategy

Statement of purpose

Flutter is an open source, portable UI framework that gives developers the superpower to build beautiful, high quality apps for any platform from a single codebase. It combines the productivity of a unified codebase and rapid iterative development with the performance and power of native compilation and hardware-accelerated rendering. Flutter builds on Dart, an industrial-strength multi-platform language which enables cornerstone Flutter features that include stateful hot reload; fast, iterative compilation to native and web; and a thriving package ecosystem.

Our mission has remained unchanged for several years, and we repeat it here:

Our mission is to build the most popular, highest-quality, and highest-productivity UI toolkit for developers

Over the last year, we have consolidated our lead as the most popular cross-platform application UI framework. One in five of all new mobile apps are now built with Flutter, and with the release of support for Windows, macOS and Linux as well as growing maturity on the Web and with embedded devices, we have the means to provide Google a flourishing ecosystem that accelerates the growth of businesses like Ads, Android, Play and Cloud.

We aspire for Flutter to produce top-quality apps without compromises on any platform. To do that, we will emphasize app quality and ease of transition across mobile, web, and desktop, reduce frictions in the developer experience, and build on-ramps for new developers to Google. As a result, we hope to shift perceptions of Flutter from being an excellent, no-compromise cross-platform UI framework to being an excellent, no-compromise UI framework, period.

State of the market

Flutter has reached a powerful position in the developer ecosystem, with a large and still growing developer base, high customer satisfaction, and a brand that is the most loved among all Google’s developer products.

As of January 2023, there are over 700,000 apps in the Play Store that are built with Flutter, and one in five new apps on the Play Store use Flutter, more than all other cross-platform frameworks put together. Flutter is picking up market share from other cross-platform frameworks, which are flat or declining over the last twelve months.

Turning to other platforms, 2022 saw the release of Windows, macOS and Linux platform support to the stable channel. Usage has been surprisingly robust. Ubuntu has contributed the Linux port, and are broadly using it for upcoming releases of their Linux distribution, including their installer and software distribution tooling. With an addressable market of 12.8m developers (SlashData) and resurgent macOS and Windows app stores, desktop provides opportunities for Google to bring many new developers to our ecosystem. Developers are also often using desktop as a way to write and test code without having to connect a mobile device, even if their final target is a different platform.

Flutter’s web support is perhaps the most immature, as it builds on leading-edge web technologies that are still not pervasively deployed. Unlike traditional web frameworks, Flutter looks beyond the DOM and JavaScript to a new generation of Canvas and WebAssembly based APIs. Our early releases suffered from slow startup performance and gaps in accessibility and web integration. The team has made substantial progress at addressing these impediments, and customers such as Rive, FlutterFlow, Formula 1 and Google FamilyLink are now using Flutter in production on the web. The web remains a tantalizing (but not fully realized) growth opportunity for Flutter, with a large developer base, a low-footprint install experience, and scope for raising the bar versus traditional approaches.

For all our success to date, it would be foolish to become complacent. As just a taste of the challenges that remain for us, over the coming years, we must:

Core planning principles

2023 strategy

In 2023, our north star objective remains the growth of active users. Even a beautifully designed framework or programming language is of limited use without an ecosystem that includes libraries, developer tooling, training and a pervasive developer community. Developers also benefit when they are part of a larger ecosystem: through career opportunities, networking with others, and services that are tailored to their needs. Conversely, ecosystems that are perceived to be stagnant tend to quickly find themselves in decline, as new developers choose offerings that seem to have more opportunity. Growth therefore remains an imperative for Flutter and Dart.

As we’ve said in previous years, developer experience is essential to customers choosing us, since there is no platform for which using Dart or Flutter is the default. (In contrast, for example, Swift and SwiftUI are the default solution for iOS development, Kotlin and Jetpack Compose are the default for Android development, HTML and JavaScript are the default for web development, etc.)

This makes the developer experience one of the most critical aspects of Dart and Flutter.

As it happens, Flutter and Dart are well positioned here, because we have long focused on the developer experience as a fundamental value. This gives our platform a competitive edge. Our 2023 investments focus on six sub-areas of developer experience that we believe are critical to building the most popular, highest-quality, and highest-productivity UI toolkit for developers. These areas are, in no particular order: performance, interoperability, portability, ecosystem, security, and fundamentals.

A note: given the unclear macroeconomic situation and resourcing, our velocity may be slower than originally anticipated. The direction remains unchanged, but we may not complete all this work in 2023.

1. Performance

Performance is one of the biggest perceived hurdles for any cross-platform framework to overcome, and indeed has been a pitfall for other cross-platform UI frameworks, which have traded performance for portability. We do not plan to make the same trade-off, both because of the technical characteristics of our solution (compile to machine code) and because we have made this a high priority from the beginning.

We need to continue to scale our platform for the future. On mobile, our early investments in Impeller are paying off with vastly more fluid results as evidenced by Wonderous. We need to complete this work so that it is ready for broad adoption on both iOS and Android. On the web, we are midway through a large rearchitecture to target WebAssembly, support multi-threaded rendering, and reduce downloaded payload sizes to dramatically improve load time and runtime performance.

Performance is not merely about pushing pixels, of course. It includes generating high-quality machine code. Or, like with the new two-way scrolling API, designing features that lead customers by default to high performance outcomes. For Google products using Dart, such as Ads, it’s also critical that it can support very large codebases extending to millions of lines of code.

Performance also includes improving the edit/compile/debug cycle, providing tooling to help developers diagnose issues, and improving the performance of that tooling itself (for example optimizing Dart's static analyzer).

2. Interoperability

For Flutter to meet the needs of professional developers, we must make it easier to integrate with existing apps and platforms. While clearly there’s a balance where disruptive innovation must not pull outdated technical limitations forward, we can do more to reduce the impedance to adopting Flutter:

This work is shared across multiple parts of the project: the Dart language, runtimes, and libraries, the Flutter engine and Flutter framework itself, and our package ecosystem.

3. Portability

For Flutter to be the best way to paint UI on any platform, both Flutter and Dart need to continue to support a broad range of processor architectures, instruction sets and platforms. Our customers tell us clearly that this is a key part of the promise they are buying when they bet on Flutter, and so we will continue to invest here.

Our primary target in 2023 is WebAssembly, specifically the emerging work around support for garbage collected languages known as WasmGC. While WasmGC is not yet supported by any major browser, when complete Dart will have a binary target for the web in addition to desktop and mobile platforms.

We are also working on supporting new processor architectures. Desktop-class operating systems are increasingly moving to ARM, and we therefore need to support ARM for those operating systems. In addition, RISC-V is an emerging platform that we will continue to investigate so we can support Flutter and Dart in embedded scenarios as well as future potential use in Android.

Portability also extends to the UI. While we have historically provided some features to help developers create applications that automatically adapt to the user's device, more efforts in this direction will simplify the task of writing applications with Flutter.

4. Ecosystem

Flutter itself is only a part of the overall solution, and we must surround the core engine and libraries with support from Google or the industry if we are to offer developers a cohesive full-stack experience. In 2022, we explored the use of vertical toolkits to help drive adoption with the launch of a casual game toolkit. This relatively small investment on our part has scaled well, driving broader energy and investment from others. Notably, Flame is becoming a mature offering for 2D games, offering constructs like sprites and particle effects, sound, physics, and collision detection that build on the core Flutter framework. As of November 2022, there are over 15,000 games published to the Play Store using Flutter, which represents 59% growth over the last twelve months.

In 2023, we will release a second vertical toolkit focused on news, developed by a partner and co-funded by and in partnership with the Google News Initiative. This toolkit offers a mobile alternative to AMP, providing news publishers with an application template that implements common features (onboarding, content feed, article pages, paywalls, ads, notifications), informed by research from the Google News team.

We will also continue to build partnerships with others who are investing in tooling to support Flutter and Dart in 2023. This includes design tools like Supernova, Figma, Widgetbook and Rive, as well as low-code and cloud-based development tooling including FlutterFlow, Codemagic, Zapp and Codelessly. We will collaborate with GitHub, Realm, Canonical, Linaro and others to ensure that we participate and connect with the broader ecosystem.

5. Security

One area of growing concern is security, with many examples of sophisticated actors probing for vulnerabilities. Other open source projects like npm have been targeted, and with Flutter’s popularity, there is no reason to assume that we are not also an active target.

In 2023, we will continue to increase the robustness of our build system, with code signing enabled for all public releases that we produce, and reproducible builds. We will measure this by tracking our continued progress towards compliance with SLSA-4 standards. We will also continue to work on tooling to support developers in building secure applications, for example providing provenance attestations or providing a structured approach to documenting vulnerabilities in packages.

A related topic of concern is the analytics data that we collect. In 2023, we plan to complete our work to unify and clarify our instrumentation across Flutter and Dart, making it more obvious what data we collect and publishing anonymized, aggregated data for the community at large. In doing so, we aim to increase trust and build confidence in Flutter and Dart as open source projects.

6. Fundamentals

In addition to these active areas of developer growth, we also need to continue to take care of the fundamentals. This includes documentation, engineering velocity, UI fidelity, addressing technical debt, and responding to customer issues.

Documentation is a good example of how all these fundamentals play out. Flutter and Dart developers regularly call out our documentation as a major strength; it is comprehensive, integrated in the source code, and tested automatically with every build. Yet it is badly fragmented, and split across too many different sites, each with its own infrastructure and discrete search. We need to make progress both by investing in content (refining existing content, adding more samples, etc.), investing in platforms like dartdoc that increase our velocity, and dealing with long-standing infra debt and customer issues.

More broadly, our issue backlog continues to grow. We crossed 10,000 open issues in 2022, and customers continue to open issues faster than we close them. Aside from any internal velocity challenges, this has two effects: it cools customer interest, as they fear that our product may be more buggy than competitors (regardless of whether this is a fair metric), and it leads to dissatisfaction, as customers often feel that reported bugs don’t get sufficiently rapid responses. We need to invest more heavily in polishing the features we already have.

Maximizing Flutter and Dart’s value to Google

The value of our products to Google isn’t fully delivered with a large, happy developer base. We are accountable to our shareholders and leadership to build a broader ecosystem for Google as a whole, building success for other products as well as our own.

Flutter, Dart, and internal customers

Supporting usage of Flutter and Dart in Google is an important part of our work and we have a team dedicated to this task. While we don’t expect to see wholesale conversion of Google apps to Flutter (as app rewrites are disruptive and expensive), we choose to support adoption by Google teams for a number of reasons:

  1. They’re a proof point for Flutter and Dart: if Google engineers aren’t able to build high-quality experiences with our software, we certainly can’t expect third-party customers to do so. (Conversely, we can iterate much faster on improvements with an internal customer and codebase.)
  2. They help us demonstrate a good return on investment for the millions of dollars Google invests in our products: if we make each of the thousands of developers building with Dart inside Google even 10% more productive, we’ve already paid for ourselves.
  3. Having customers whose code we can inspect and test helps us build a better product and learn more about real-world usage of our framework, libraries and language.
  4. Many Google products need Flutter, Dart, or a solution very like it to be successful at their own goals.

For 2023, our work here will continue to hinge on helping teams be successful with Flutter and Dart. Part of this work is reactive, implementing features that are requested by large internal teams (e.g. scaling compilation of large apps, supporting internal plugins and integrations, and internal standards for accessibility and performance). We also aim to broaden Flutter's ability on the web to provide UI-rich features embedded inside existing internal web applications using other frameworks such as Angular, allowing teams to leverage Flutter within an existing solution where it makes sense.

Flutter as an on-ramp for Google

Flutter serves Google in that a large satisfied customer base is more likely to be receptive towards other Google messages and products, and more likely to adopt and deploy other Google technologies. Yet we have to be extremely careful not to lose sight of what makes us successful. Our heart is as an open source project that is sponsored by Google, rather than exclusively owned by Google. Our contributors come from many different companies, including our competitors; our stewardship needs to be open to others’ success as much as our own. This essence has proved beneficial; indeed, the scale of these contributions mean that Google's investment in Flutter is lower than it would need to be to get equivalent results if it was a closed-source project.

How do we bridge this tension? By starting with what makes customers successful. We refuse to fall into the trap of creating customer-hostile choices for short-term gain. Instead, we give customers great paths to success with Google. As some specific examples:

Roadmap

As in previous years, we’re planning to deliver stable releases on a roughly quarterly basis, delivering on the goals expressed above.

Our first moment is Flutter Forward, in January 2023, which will sow the seeds for the investments we’ll make through the remainder of the year. We’ll demonstrate early progress against each of the areas above, giving customers the incentive to buy not just our “today” but also our “tomorrow”.

We will continue to ship beta releases on a monthly basis, with the expectation that these will become the “fast” channel for developers who prefer earlier access to features with a more rapid cadence. As Flutter matures, we’ll shift our focus over 2023 away from stable releases as the primary vehicle for announcing new features and towards beta releases as the proving ground, as Chrome does. This will incentivize early adopters to use the beta releases and reduce the impetus for teams to ship features on a date-driven basis.