Skip to content

[cupertino_ui] Add cupertino_ui package#11042

Merged
auto-submit[bot] merged 10 commits intoflutter:mainfrom
Piinks:cupertino_ui
Feb 18, 2026
Merged

[cupertino_ui] Add cupertino_ui package#11042
auto-submit[bot] merged 10 commits intoflutter:mainfrom
Piinks:cupertino_ui

Conversation

@Piinks
Copy link
Contributor

@Piinks Piinks commented Feb 17, 2026

Creates the cupertino_ui package in preparation for decoupling.
Once published, this will be marked as unlisted (to be done in pub.dev dashboard) until the primary code move from the framework takes place.

  • The cupertino package will also be marked discontinued and pointed to this one.

Pre-Review Checklist

If you need help, consider asking for advice on the #hackers-new channel on Discord.

Note: The Flutter team is currently trialing the use of Gemini Code Assist for GitHub. Comments from the gemini-code-assist bot should not be taken as authoritative feedback from the Flutter team. If you find its comments useful you can update your code accordingly, but if you are unsure or disagree with the feedback, please feel free to wait for a Flutter team member's review for guidance on which automated comments should be addressed.

Footnotes

  1. Regular contributors who have demonstrated familiarity with the repository guidelines only need to comment if the PR is not auto-exempted by repo tooling. 2 3

Copy link

@gemini-code-assist gemini-code-assist bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Code Review

This pull request introduces the cupertino_ui package, which aims to decouple the Cupertino widget library from the Flutter framework. The changes include setting up the basic package structure, pubspec.yaml, CHANGELOG.md, README.md, and a minimal test. The README.md clearly explains the purpose of the package and its future direction. The pubspec.yaml correctly defines dependencies and environment. The .gitignore and .metadata files are standard for a Flutter package. The AUTHORS and LICENSE files are also correctly included. Overall, the changes are well-structured and align with the stated goal of creating a standalone Cupertino package.

@@ -0,0 +1,3 @@
## 0.0.1

* Initial setup - coming soon!

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

medium

The CHANGELOG entry "Initial setup - coming soon!" is a bit informal. While this is an initial setup, it's good practice to have a more descriptive entry, even for the first version. Consider something like "Initial release of the cupertino_ui package, decoupling Cupertino widgets from the Flutter framework." This aligns with the repository's CHANGELOG style guidelines.

Suggested change
* Initial setup - coming soon!
* Initial release of the `cupertino_ui` package, decoupling Cupertino widgets from the Flutter framework.
References
  1. Code should follow the relevant style guides, and use the correct auto-formatter, for each language, as described in the repository contributing guide's Style section. PR descriptions should include the Pre-Review Checklist from the PR template, with all of the steps completed. This includes updating CHANGELOG.md to add a description of the change, following repository CHANGELOG style. (link)

Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I would agree with Gemini here; unlike the README, we won't edit this, so having something that sounds like a placeholder will feel weird later.


void main() {
testWidgets('Cupertino library is exported', (WidgetTester tester) async {
await tester.pumpWidget(const CupertinoApp());

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

medium

The current test only verifies that CupertinoApp can be pumped. While this confirms the export, it doesn't provide much functional test coverage for the cupertino_ui package itself. As this package will contain a collection of widgets, it would be beneficial to add more comprehensive tests for at least a few key Cupertino widgets to ensure they are correctly exported and function as expected. This aligns with the best practices for testing plugin packages.

References
  1. Code should be tested. Changes to plugin packages, which include code written in C, C++, Java, Kotlin, Objective-C, or Swift, should have appropriate tests as described in the plugin test guidance. (link)

Copy link
Contributor

@justinmc justinmc left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM 👍. Very exciting.

@stuartmorgan-g
Copy link
Collaborator

The tool tests were an out-of-band tree breakage at the end of last week; the fix landed today, so you'll need to merge in main.

Copy link
Collaborator

@stuartmorgan-g stuartmorgan-g left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

  • Is it intentional that there's no example app, or will that come later?
  • Per the CI failure, this will need a main README entry.

description: The Flutter Cupertino Design Library
version: 0.0.1
repository: https://github.com/flutter/packages/tree/main/packages/cupertino_ui
issue_tracker: https://github.com/flutter/flutter/issues?q=state%3Aopen%20label%3A%22f%3A%20cupertino%22
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The check is failing because it's expecting "is:open"; it looks like GitHub switched to "state:open" at some point as the standard query, so feel free to relax the tooling check to accept either. (Or change the tool and mass-change the repo with a version/changelog override if that's easier).

description: The Flutter Cupertino Design Library
version: 0.0.1
repository: https://github.com/flutter/packages/tree/main/packages/cupertino_ui
issue_tracker: https://github.com/flutter/flutter/issues?q=state%3Aopen%20label%3A%22f%3A%20cupertino%22
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Won't we want the package to use p: cupertino? The way our labels are defined is that package, framework, engine, and tool describe the areas of the codebase the issues are about, and then the p:/f:/e:/t: labels are subdivisions of those. Given that, I would expect this package to be triaged as package p: cupertino team-framework.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yes, I just haven't changed the label yet in flutter/flutter to avoid confusion since this package will not be accepting PRs yet, and the source of truth is still flutter/flutter right now. I figured once we made the move, I would update f: cupertino to p: cupertino in a bullk update.

@@ -0,0 +1,3 @@
## 0.0.1

* Initial setup - coming soon!
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I would agree with Gemini here; unlike the README, we won't edit this, so having something that sounds like a placeholder will feel weird later.

@Piinks
Copy link
Contributor Author

Piinks commented Feb 17, 2026

Is it intentional that there's no example app, or will that come later?

Yes, there is no example app yet. We are planning on moving examples/api/lib/material over as part of decoupling that will serve as examples and embed in the API docs.

@Piinks
Copy link
Contributor Author

Piinks commented Feb 17, 2026

The CI! It passes! 🥳

Copy link
Collaborator

@stuartmorgan-g stuartmorgan-g left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM

@Piinks Piinks added the autosubmit Merge PR when tree becomes green via auto submit App label Feb 18, 2026
@auto-submit auto-submit bot merged commit ff7dff5 into flutter:main Feb 18, 2026
81 checks passed
stuartmorgan-g added a commit that referenced this pull request Feb 18, 2026
#11042 was missing a `:`,
causing label jobs to fail in CI.
engine-flutter-autoroll added a commit to engine-flutter-autoroll/flutter that referenced this pull request Feb 19, 2026
github-merge-queue bot pushed a commit to flutter/flutter that referenced this pull request Feb 19, 2026
flutter/packages@59f905c...9da22bf

2026-02-19 [email protected] [cupertino_ui, material_ui] Fix capitalization
in README section headers (flutter/packages#11058)
2026-02-18 [email protected] Manual roll Flutter from
6e4a481 to c023e5b (17 revisions) (flutter/packages#11060)
2026-02-18 [email protected] [vector_graphics_compiler] support
percentage units SVG shape attributes (flutter/packages#10577)
2026-02-18 [email protected] [local_auth] Convert example app to
Swift (flutter/packages#11003)
2026-02-18 [email protected] [ci] Fix syntax error in auto-labeler
(flutter/packages#11052)
2026-02-18 [email protected] Refactor Github Action per
b/485167538 (flutter/packages#11051)
2026-02-18 [email protected] [material_ui] Add material_ui package
(flutter/packages#11043)
2026-02-18 [email protected] [cupertino_ui] Add cupertino_ui package
(flutter/packages#11042)

If this roll has caused a breakage, revert this CL and stop the roller
using the controls here:
https://autoroll.skia.org/r/flutter-packages-flutter-autoroll
Please CC [email protected] on the revert to ensure that a
human
is aware of the problem.

To file a bug in Flutter:
https://github.com/flutter/flutter/issues/new/choose

To report a problem with the AutoRoller itself, please file a bug:
https://issues.skia.org/issues/new?component=1389291&template=1850622

Documentation for the AutoRoller is here:
https://skia.googlesource.com/buildbot/+doc/main/autoroll/README.md
ahmedsameha1 pushed a commit to ahmedsameha1/flutter that referenced this pull request Feb 27, 2026
…r#182611)

flutter/packages@59f905c...9da22bf

2026-02-19 [email protected] [cupertino_ui, material_ui] Fix capitalization
in README section headers (flutter/packages#11058)
2026-02-18 [email protected] Manual roll Flutter from
6e4a481 to c023e5b (17 revisions) (flutter/packages#11060)
2026-02-18 [email protected] [vector_graphics_compiler] support
percentage units SVG shape attributes (flutter/packages#10577)
2026-02-18 [email protected] [local_auth] Convert example app to
Swift (flutter/packages#11003)
2026-02-18 [email protected] [ci] Fix syntax error in auto-labeler
(flutter/packages#11052)
2026-02-18 [email protected] Refactor Github Action per
b/485167538 (flutter/packages#11051)
2026-02-18 [email protected] [material_ui] Add material_ui package
(flutter/packages#11043)
2026-02-18 [email protected] [cupertino_ui] Add cupertino_ui package
(flutter/packages#11042)

If this roll has caused a breakage, revert this CL and stop the roller
using the controls here:
https://autoroll.skia.org/r/flutter-packages-flutter-autoroll
Please CC [email protected] on the revert to ensure that a
human
is aware of the problem.

To file a bug in Flutter:
https://github.com/flutter/flutter/issues/new/choose

To report a problem with the AutoRoller itself, please file a bug:
https://issues.skia.org/issues/new?component=1389291&template=1850622

Documentation for the AutoRoller is here:
https://skia.googlesource.com/buildbot/+doc/main/autoroll/README.md
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

autosubmit Merge PR when tree becomes green via auto submit App p: cupertino_ui

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants