Strengthening Flutter's core widgets

Quick Overview

Flutter is strengthening its core widgets by decoupling the Material and Cupertino design libraries from the core framework into separate pub.dev packages to enable faster design evolution, create a more durable framework, and better support the ecosystem of design libraries, with a three-phase plan leading to a fully decoupled era by late 2026.

Key Points: The core plan involves moving Material and Cupertino design libraries out of the core Flutter framework into separate pub.dev packages (flutter/packages) to achieve decoupling. This decoupling will result in faster design evolution, allowing Material and Cupertino to adopt new trends faster without being tied to the core framework release cycle. The change promises a more durable framework by reducing breaking changes from design updates, empowering contributors by simplifying contribution processes. The timeline is structured in three phases: Foundation and Alignment (Now - Dec 2025), Transition and Decoupling (Early 2026), and The Decoupled Era (Late 2026 and Beyond). Phase 1 (Now) involves investigating and consolidating core logic into a Widgets library and preparing the flutter/packages GitHub repo. Phase 2 (Early 2026) includes moving code to flutter/packages, publishing the new libraries, and deprecating the original Material and Cupertino libraries. Phase 3 (Late 2026 and Beyond) culminates in removing the original Material and Cupertino libraries entirely from the core framework.

Context: This presentation, titled "Flutter Flight Plans: Strengthening Flutter's core widgets," details the architectural plan to decouple the Material and Cupertino design systems from the main Flutter framework. The speaker, Justin McCandless, explains that this tight coupling has created trade-offs, such as slow adoption of design updates and limited support for external design libraries. The goal is to create a more modular and flexible system for UI development.

Detailed Analysis

The video outlines Flutter's plan to decouple Material and Cupertino design libraries from the core framework, moving them into separate packages on pub.dev. This separation addresses several tradeoffs associated with the current tight coupling, including design updates being limited by the framework release cycle, breaking changes with design updates, limited support for external design libraries, and a slow open-source contribution process. The benefits of decoupling include faster design evolution, a more durable framework with fewer breaking changes, better support for the ecosystem of design libraries (like allowing third-party developers to use raw widgets), and empowering the community by making contributions easier. The plan is divided into three phases: Foundation and Alignment (Now to Dec 2025), which focuses on consolidating core logic into a Widgets library and preparing the flutter/packages repo; Transition and Decoupling (Early 2026), where the new packages are published and the old ones deprecated; and The Decoupled Era (Late 2026 and Beyond), where the original libraries are fully removed from the framework. The speaker emphasizes that while some breaking changes are inevitable, they will be minimized with quick fixes where possible, and semantic versioning will allow developers to pin specific Material or Cupertino package versions independently of the core framework.

Raw markdown version of this recap