Flutter's Major Milestone: Material and Cupertino Libraries Decoupled from Framework
By ✦ min read
<h2>Introduction: A New Chapter for Flutter's Design Libraries</h2><p>Flutter has reached a significant turning point in its evolution. The foundational Material and Cupertino libraries, long integral to the framework's core, are now frozen and set to transition into standalone packages. This move, effective from April 7th, represents the first major milestone in a carefully orchestrated plan to decouple these design systems from the <strong>flutter/flutter</strong> repository.</p><figure style="margin:20px 0"><img src="https://picsum.photos/seed/2204825293/800/450" alt="Flutter's Major Milestone: Material and Cupertino Libraries Decoupled from Framework" style="width:100%;height:auto;border-radius:8px" loading="lazy"><figcaption style="font-size:12px;color:#666;margin-top:5px"></figcaption></figure><p>The ultimate goal is to re-release these libraries as the <em>material_ui</em> and <em>cupertino_ui</em> packages on <strong>pub.dev</strong>. This shift promises greater flexibility and faster iteration for both the Flutter team and the community. Let’s break down what this means for you and how the migration will unfold.</p><h2 id="impact-on-developers">Impact on Regular Flutter Developers</h2><h3>If You Build Apps or Plugins (But Don’t Contribute to the Libraries Themselves)</h3><p>For the vast majority of Flutter developers—those who use the Material and Cupertino libraries but don’t actively contribute to their code—the immediate effects are minimal. You can safely continue developing without any changes to your workflow for now. However, a future migration will be required after the <strong>3.44 stable release</strong>.</p><ul><li><strong>Current behavior:</strong> No action needed. Your apps will continue to work as before.</li><li><strong>After 3.44 stable:</strong> The new <em>material_ui</em> and <em>cupertino_ui</em> packages will be published. Developers will eventually need to migrate to these packages as the old in-framework code becomes deprecated and later removed.</li><li><strong>Deprecation timeline:</strong> Deprecation warnings will appear in the stable release following 3.44, with removal scheduled for a subsequent release. Detailed migration instructions will be provided when the time comes.</li></ul><h2 id="for-contributors">What About Active Contributors?</h2><p>If you have open pull requests (PRs) or plan to submit changes to Material or Cupertino, here’s what you should know.</p><h3>Handling Open PRs</h3><p>Development on these libraries is not halting; it’s simply shifting. All open PRs that touch Material or Cupertino will remain open in <strong>flutter/flutter</strong>. Reviewers will continue providing feedback as usual. Once the new packages are released, the team will offer guidance on porting these PRs to the <strong>flutter/packages</strong> repository. Your changes will eventually ship as part of a new version of <em>material_ui</em> or <em>cupertino_ui</em>.</p><h3>Issues and Bug Reports</h3><p>Existing and new issues related to Material and Cupertino will stay in the <strong>flutter/flutter</strong> issue tracker. This unified approach matches the workflow used for other packages in the <em>flutter/packages</em> repository, ensuring continuity and clarity.</p><h2 id="why-freeze-now">Why Freeze the Code Now?</h2><p>The decision to freeze the Material and Cupertino libraries ahead of the package release is driven by a critical need: ensuring a seamless migration experience. When version 1.0.0 of <em>material_ui</em> and <em>cupertino_ui</em> lands, developers migrating from any Flutter release channel must face minimal risk of breaking changes.</p><p>To achieve this, the team is freezing the code one stable release cycle before the packages go live. This frozen version is then copied directly into the new packages. As a result, the code in <strong>flutter/flutter</strong> and the upcoming packages will be identical, eliminating discrepancies.</p><p>For developers, the first step is straightforward: upgrade your Flutter SDK to version <strong>3.44 or later</strong> on any channel. This ensures you have the frozen version of Material and Cupertino. Even if you later upgrade the SDK further, that frozen copy remains stable, smoothing the eventual transition to the new packages.</p><h2>Looking Ahead: What to Expect</h2><p>The code freeze is just the beginning. Following the 3.44 stable release, the <em>material_ui</em> and <em>cupertino_ui</em> packages will become available. From there, the framework will gradually deprecate the old in-repo libraries. The Flutter team will provide detailed migration guides and tooling to make the switch as painless as possible.</p><p>This architectural change aligns with Flutter’s broader strategy of modularization, enabling faster, independent updates to design components. For contributors, it opens new opportunities to shape these packages outside the core framework. For everyday developers, it means a more stable and predictable upgrade path.</p><p>Stay tuned for further announcements, and prepare to welcome <em>material_ui</em> and <em>cupertino_ui</em> to your projects.</p>
Tags: