Flutter Unbundles Material and Cupertino: What the Code Freeze Means for Developers

Introduction

In a significant step toward a more modular Flutter framework, the team has officially frozen all contributions to the Material and Cupertino libraries within the main flutter/flutter repository as of April 7th. This freeze marks the first major milestone in a long-planned decoupling effort. These beloved design libraries will soon be re-released as standalone packages on pub.dev: material_ui and cupertino_ui.

Flutter Unbundles Material and Cupertino: What the Code Freeze Means for Developers

What Is Happening?

For years, Material and Cupertino have been tightly integrated into the Flutter framework itself. While convenient, this monolithic approach made it harder to ship updates independently and added unnecessary weight for developers who only use one design language. The new plan extracts both libraries into their own packages, managed under the flutter/packages repository. Once the code freeze is in effect, no further changes will be accepted in flutter/flutter for these libraries. All future development will happen exclusively in the new package repositories after they are published.

The first major release of these packages will be version 1.0.0, and they will be accompanied by a seamless migration path for all Flutter users.

Impact on Flutter Developers

The freeze and subsequent transition affect different groups of developers in different ways. If you only write apps or plugins and never touch the Material or Cupertino source code directly, you can breathe easy—for now. If you are an active contributor to these libraries or have open issues or pull requests, read on.

For App and Plugin Developers

If you simply use Material or Cupertino in your Flutter apps and have no need to modify the libraries themselves, you do not need to take any action at this moment. The freeze does not affect your existing code. However, after the Flutter 3.44 stable release, the new packages will be published, and you will eventually need to migrate. The old code inside the framework will be deprecated in the stable release following 3.44 and deleted some time after that. When the time comes, the Flutter team will provide detailed migration instructions and tooling to make the process as smooth as possible.

For Active Contributors to Material/Cupertino

If you have open pull requests (PRs) touching Material or Cupertino in flutter/flutter, don't worry—your PRs will remain open, and reviewers will continue to provide feedback as usual. Once the new packages are published, you will receive guidance on how to port your changes to the flutter/packages repository. Your contribution will then be released as part of a future material_ui or cupertino_ui update.

For new and existing issues related to these libraries, they will stay in the flutter/flutter issue tracker. The Flutter team prefers a unified issue tracker for all packages, even those hosted in separate repositories, to keep things simple and centralized. So you can continue filing issues there as usual.

Timeline and Migration Path

  1. April 7th – Code Freeze: All contributions to Material and Cupertino in flutter/flutter are frozen.
  2. After Flutter 3.44 stable release: The material_ui and cupertino_ui packages are published on pub.dev.
  3. Following stable release after 3.44: The old Material and Cupertino code inside the framework is deprecated.
  4. Some time later: The legacy code is removed entirely.

Developers who wish to migrate will first need to update their Flutter SDK to version 3.44 or higher on any release channel (stable, beta, or dev). Once they have done that, they will have a frozen copy of the libraries that matches the initial package release. This ensures that even if they upgrade the SDK further, the API they rely on remains stable.

Why the Freeze Is Necessary

The decision to freeze the code now might seem abrupt, but it serves a critical purpose. When the 1.0.0 versions of material_ui and cupertino_ui launch, the team wants every Flutter developer—regardless of which release channel they come from—to be able to migrate with minimal friction. To achieve that, the code in the framework and the code in the new packages must be identical at the moment of migration. By freezing the framework libraries one stable release cycle ahead, the team can copy that exact code to the new packages, eliminating any risk of breaking changes between the two locations.

This approach also means that developers who upgrade their Flutter SDK to 3.44+ will always have a compatible version of the libraries, even if they later update to a newer SDK that still contains the deprecated code. The frozen copy inside the SDK will match the first package release exactly.

Next Steps and What to Expect

As the process unfolds, the Flutter team will provide:

For now, if you have any open issues or PRs related to Material or Cupertino, keep them open. The team is still committed to reviewing and eventually landing those contributions through the new package system. The decoupling of these libraries is a major architectural improvement for Flutter, promising faster iteration cycles, smaller framework bundles, and clearer separation of concerns.

Stay tuned for the announcement of the new packages on pub.dev, and watch the impact section above if you want to know exactly how this affects you. The Flutter ecosystem is evolving, and this freeze is the first step toward a more flexible and sustainable future.

Recommended

Discover More

Breaking Free from the Fork: Meta's Strategy for Modernizing WebRTC Across 50+ Use CaseskibetNew Privacy Proxy Shields Enterprise Data from AI Chatbot Exfiltrationwvipwvipnbetvl88nbet85winSupply Chain Attacks Target PyTorch Lightning and Intercom-client: Credential Theft Campaign Unveiled85win5 Crucial Insights into Using AI Agent Teams to Boost Developer ProductivitykibetHow to Build a .NET AI Orchestration Library: A Step-by-Step Guidevl88