-
Notifications
You must be signed in to change notification settings - Fork 29.7k
Deprecate Objective-C plugin template #174003
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Conversation
There was a problem hiding this 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 effectively marks the Objective-C plugin template as deprecated by updating help texts and adding warnings. The changes are well-aligned with the goal of phasing out this option. I've identified one area for improvement in the tests to ensure that the deprecated path remains covered until it's fully removed.
jmagman
left a comment
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This is missing the actual change to disallow (exit with failure) when the flag is used:
flutter/packages/flutter_tools/lib/src/commands/create.dart
Lines 336 to 351 in 3340cae
| } else if (argResults!.wasParsed('ios-language')) { | |
| if (generateMethodChannelsPlugin) { | |
| globals.printWarning( | |
| 'The "ios-language" option is deprecated and will be removed in a future Flutter release.', | |
| ); | |
| if (stringArg('ios-language') == 'objc') { | |
| globals.printWarning( | |
| 'Please comment in https://github.com/flutter/flutter/issues/169683 describing your use-case for using Objective-C instead of Swift.', | |
| ); | |
| } | |
| } else { | |
| throwToolExit( | |
| 'The "ios-language" option is only supported for "--template=plugin".', | |
| exitCode: 2, | |
| ); | |
| } |
} else if (argResults!.wasParsed('ios-language')) {
throwToolExit(
'The "ios-language" option is deprecated. Swift is the only available option for new Flutter projects.',
exitCode: 2,
);
}
packages/flutter_tools/test/commands.shard/hermetic/create_usage_test.dart
Outdated
Show resolved
Hide resolved
jmagman
left a comment
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Also remove commandCreateIosLanguage from custom_dimensions and anywhere else it's used. The test was removed, but not the logic in the code.
| commandCreateIosLanguage, // cd17 |
See #163153 for an example of another case of that being removed.
In other places in this review I suggested removing comments like defaults to Swift since ios-language is deprecated since that information won't be relevant to future viewers of this code. You'll notice in custom_dimensions there are some hints like that though, example:
| obsolete1, // cd48 (was fastReassemble) |
That's because it's explaining why cd48 is missing from a list of sequential dimension numbers, so say a future developer doesn't try to plug a new value into cd48
Eventually (in a few releases) we can also remove this from unified_analytics
https://github.com/dart-lang/tools/blob/24707e094cd761178eb76e725ce17f51e22fd442/pkgs/unified_analytics/lib/src/event.dart#L282-L283
packages/flutter_tools/test/integration.shard/swift_package_manager_create_plugin_test.dart
Show resolved
Hide resolved
packages/flutter_tools/test/integration.shard/swift_package_manager_test.dart
Show resolved
Hide resolved
packages/flutter_tools/test/commands.shard/permeable/create_test.dart
Outdated
Show resolved
Hide resolved
packages/flutter_tools/test/commands.shard/permeable/create_test.dart
Outdated
Show resolved
Hide resolved
233bb3d to
8dca82c
Compare
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Really close, one minor test comment!
jmagman
left a comment
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Thanks for tracking all this down, LGTM!
Pull Request is not mergeable
flutter/flutter@29a238d...8d0b31d 2025-09-16 [email protected] Roll Packages from fcd5f68 to 0255ac9 (2 revisions) (flutter/flutter#175427) 2025-09-16 [email protected] Adds a11y section locale support for iOS (flutter/flutter#175005) 2025-09-16 [email protected] Roll Skia from 4e9c86d4a6d9 to 7d160bbf9403 (3 revisions) (flutter/flutter#175404) 2025-09-16 [email protected] [native_assets] Find more `CCompilerConfig` on Linux (flutter/flutter#175323) 2025-09-16 [email protected] Roll Dart SDK from 50e61e5bff51 to 700de52f29a9 (3 revisions) (flutter/flutter#175395) 2025-09-16 [email protected] Fix default overlay color in `TabBar` (flutter/flutter#175270) 2025-09-16 [email protected] Migrate to widget state (flutter/flutter#175242) 2025-09-16 [email protected] Roll Skia from 01b0ede33ae9 to 4e9c86d4a6d9 (1 revision) (flutter/flutter#175387) 2025-09-15 [email protected] Merge the engine README into the README of the old buildroot. (flutter/flutter#175384) 2025-09-15 [email protected] Marks Mac_ios microbenchmarks_ios to be unflaky (flutter/flutter#171146) 2025-09-15 [email protected] Deprecate Objective-C plugin template (flutter/flutter#174003) 2025-09-15 [email protected] Add a gn --ccache argument (flutter/flutter#174621) 2025-09-15 [email protected] Update `build.gradle` to remove deprecation warning in `flutter\engine\src\flutter\shell\platform\android` (flutter/flutter#175305) 2025-09-15 [email protected] Show cursor after swipe only if TextField has focus (flutter/flutter#175044) 2025-09-15 [email protected] Roll Skia from f950263bb3d4 to 01b0ede33ae9 (7 revisions) (flutter/flutter#175373) 2025-09-15 [email protected] Update Chromium sysroot to pick up RISC-V support. (flutter/flutter#173671) 2025-09-15 [email protected] Set Gemini Code Assist `include_drafts` to false (flutter/flutter#175098) 2025-09-15 [email protected] Roll Packages from 15e7e89 to fcd5f68 (3 revisions) (flutter/flutter#175366) 2025-09-15 [email protected] Remove 'v' Open DevTools from help on web in profile/release mode (flutter/flutter#172829) 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 Please CC [email protected],[email protected] on the revert to ensure that a human is aware of the problem. To file a bug in Packages: 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
This PR marks the `--ios-language objc` flag as deprecated for plugin creation. It introduces a warning message in the `flutter create` tool when the flag is used, but **does not** remove the functionality at this time. This is the first step towards its eventual removal. ## Context As discussed in the issue, usage metrics show that Objective-C is used in less than 4% of newly created plugins. To streamline the tool and align with modern iOS development practices (i.e., Swift), we are beginning the process of phasing out this option **Changes:** - Adds a deprecation warning to the CLI when the `objc` flag is used. - Updates the `--help` text to reflect the deprecation. - Removes obsolete tests for Objective-C plugin creation and usage tracking. ## Testing I have validated these changes by: 1. Manually running `flutter-dev create` with the `objc` flag to confirm the new deprecation warning appears. 2. Verifying that creating a plugin without the --ios-language flag does **not** trigger the warning. 3. Running the tests in the `test/commands.shard` to ensure no regressions were introduced. 4. CI will validate the changes to the devicelab tests. Fixes flutter#169683 ## Pre-launch Checklist - [X] I read the [Contributor Guide] and followed the process outlined there for submitting PRs. - [X] I read the [Tree Hygiene] wiki page, which explains my responsibilities. - [X] I read and followed the [Flutter Style Guide], including [Features we expect every widget to implement]. - [X] I signed the [CLA]. - [X] I listed at least one issue that this PR fixes in the description above. - [] I updated/added relevant documentation (doc comments with `///`). - [] I added new tests to check the change I am making, or this PR is [test-exempt]. - [] I followed the [breaking change policy] and added [Data Driven Fixes] where supported. - [X] All existing and new tests are passing. 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](https://developers.google.com/gemini-code-assist/docs/review-github-code). 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. <!-- Links --> [Contributor Guide]: https://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md#overview [Tree Hygiene]: https://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md [test-exempt]: https://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md#tests [Flutter Style Guide]: https://github.com/flutter/flutter/blob/main/docs/contributing/Style-guide-for-Flutter-repo.md [Features we expect every widget to implement]: https://github.com/flutter/flutter/blob/main/docs/contributing/Style-guide-for-Flutter-repo.md#features-we-expect-every-widget-to-implement [CLA]: https://cla.developers.google.com/ [flutter/tests]: https://github.com/flutter/tests [breaking change policy]: https://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md#handling-breaking-changes [Discord]: https://github.com/flutter/flutter/blob/main/docs/contributing/Chat.md [Data Driven Fixes]: https://github.com/flutter/flutter/blob/main/docs/contributing/Data-driven-Fixes.md
This PR marks the `--ios-language objc` flag as deprecated for plugin creation. It introduces a warning message in the `flutter create` tool when the flag is used, but **does not** remove the functionality at this time. This is the first step towards its eventual removal. ## Context As discussed in the issue, usage metrics show that Objective-C is used in less than 4% of newly created plugins. To streamline the tool and align with modern iOS development practices (i.e., Swift), we are beginning the process of phasing out this option **Changes:** - Adds a deprecation warning to the CLI when the `objc` flag is used. - Updates the `--help` text to reflect the deprecation. - Removes obsolete tests for Objective-C plugin creation and usage tracking. ## Testing I have validated these changes by: 1. Manually running `flutter-dev create` with the `objc` flag to confirm the new deprecation warning appears. 2. Verifying that creating a plugin without the --ios-language flag does **not** trigger the warning. 3. Running the tests in the `test/commands.shard` to ensure no regressions were introduced. 4. CI will validate the changes to the devicelab tests. Fixes flutter#169683 ## Pre-launch Checklist - [X] I read the [Contributor Guide] and followed the process outlined there for submitting PRs. - [X] I read the [Tree Hygiene] wiki page, which explains my responsibilities. - [X] I read and followed the [Flutter Style Guide], including [Features we expect every widget to implement]. - [X] I signed the [CLA]. - [X] I listed at least one issue that this PR fixes in the description above. - [] I updated/added relevant documentation (doc comments with `///`). - [] I added new tests to check the change I am making, or this PR is [test-exempt]. - [] I followed the [breaking change policy] and added [Data Driven Fixes] where supported. - [X] All existing and new tests are passing. 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](https://developers.google.com/gemini-code-assist/docs/review-github-code). 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. <!-- Links --> [Contributor Guide]: https://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md#overview [Tree Hygiene]: https://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md [test-exempt]: https://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md#tests [Flutter Style Guide]: https://github.com/flutter/flutter/blob/main/docs/contributing/Style-guide-for-Flutter-repo.md [Features we expect every widget to implement]: https://github.com/flutter/flutter/blob/main/docs/contributing/Style-guide-for-Flutter-repo.md#features-we-expect-every-widget-to-implement [CLA]: https://cla.developers.google.com/ [flutter/tests]: https://github.com/flutter/tests [breaking change policy]: https://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md#handling-breaking-changes [Discord]: https://github.com/flutter/flutter/blob/main/docs/contributing/Chat.md [Data Driven Fixes]: https://github.com/flutter/flutter/blob/main/docs/contributing/Data-driven-Fixes.md
This PR marks the `--ios-language objc` flag as deprecated for plugin creation. It introduces a warning message in the `flutter create` tool when the flag is used, but **does not** remove the functionality at this time. This is the first step towards its eventual removal. ## Context As discussed in the issue, usage metrics show that Objective-C is used in less than 4% of newly created plugins. To streamline the tool and align with modern iOS development practices (i.e., Swift), we are beginning the process of phasing out this option **Changes:** - Adds a deprecation warning to the CLI when the `objc` flag is used. - Updates the `--help` text to reflect the deprecation. - Removes obsolete tests for Objective-C plugin creation and usage tracking. ## Testing I have validated these changes by: 1. Manually running `flutter-dev create` with the `objc` flag to confirm the new deprecation warning appears. 2. Verifying that creating a plugin without the --ios-language flag does **not** trigger the warning. 3. Running the tests in the `test/commands.shard` to ensure no regressions were introduced. 4. CI will validate the changes to the devicelab tests. Fixes flutter#169683 ## Pre-launch Checklist - [X] I read the [Contributor Guide] and followed the process outlined there for submitting PRs. - [X] I read the [Tree Hygiene] wiki page, which explains my responsibilities. - [X] I read and followed the [Flutter Style Guide], including [Features we expect every widget to implement]. - [X] I signed the [CLA]. - [X] I listed at least one issue that this PR fixes in the description above. - [] I updated/added relevant documentation (doc comments with `///`). - [] I added new tests to check the change I am making, or this PR is [test-exempt]. - [] I followed the [breaking change policy] and added [Data Driven Fixes] where supported. - [X] All existing and new tests are passing. 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](https://developers.google.com/gemini-code-assist/docs/review-github-code). 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. <!-- Links --> [Contributor Guide]: https://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md#overview [Tree Hygiene]: https://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md [test-exempt]: https://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md#tests [Flutter Style Guide]: https://github.com/flutter/flutter/blob/main/docs/contributing/Style-guide-for-Flutter-repo.md [Features we expect every widget to implement]: https://github.com/flutter/flutter/blob/main/docs/contributing/Style-guide-for-Flutter-repo.md#features-we-expect-every-widget-to-implement [CLA]: https://cla.developers.google.com/ [flutter/tests]: https://github.com/flutter/tests [breaking change policy]: https://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md#handling-breaking-changes [Discord]: https://github.com/flutter/flutter/blob/main/docs/contributing/Chat.md [Data Driven Fixes]: https://github.com/flutter/flutter/blob/main/docs/contributing/Data-driven-Fixes.md
This PR marks the `--ios-language objc` flag as deprecated for plugin creation. It introduces a warning message in the `flutter create` tool when the flag is used, but **does not** remove the functionality at this time. This is the first step towards its eventual removal. ## Context As discussed in the issue, usage metrics show that Objective-C is used in less than 4% of newly created plugins. To streamline the tool and align with modern iOS development practices (i.e., Swift), we are beginning the process of phasing out this option **Changes:** - Adds a deprecation warning to the CLI when the `objc` flag is used. - Updates the `--help` text to reflect the deprecation. - Removes obsolete tests for Objective-C plugin creation and usage tracking. ## Testing I have validated these changes by: 1. Manually running `flutter-dev create` with the `objc` flag to confirm the new deprecation warning appears. 2. Verifying that creating a plugin without the --ios-language flag does **not** trigger the warning. 3. Running the tests in the `test/commands.shard` to ensure no regressions were introduced. 4. CI will validate the changes to the devicelab tests. Fixes flutter#169683 ## Pre-launch Checklist - [X] I read the [Contributor Guide] and followed the process outlined there for submitting PRs. - [X] I read the [Tree Hygiene] wiki page, which explains my responsibilities. - [X] I read and followed the [Flutter Style Guide], including [Features we expect every widget to implement]. - [X] I signed the [CLA]. - [X] I listed at least one issue that this PR fixes in the description above. - [] I updated/added relevant documentation (doc comments with `///`). - [] I added new tests to check the change I am making, or this PR is [test-exempt]. - [] I followed the [breaking change policy] and added [Data Driven Fixes] where supported. - [X] All existing and new tests are passing. 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](https://developers.google.com/gemini-code-assist/docs/review-github-code). 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. <!-- Links --> [Contributor Guide]: https://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md#overview [Tree Hygiene]: https://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md [test-exempt]: https://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md#tests [Flutter Style Guide]: https://github.com/flutter/flutter/blob/main/docs/contributing/Style-guide-for-Flutter-repo.md [Features we expect every widget to implement]: https://github.com/flutter/flutter/blob/main/docs/contributing/Style-guide-for-Flutter-repo.md#features-we-expect-every-widget-to-implement [CLA]: https://cla.developers.google.com/ [flutter/tests]: https://github.com/flutter/tests [breaking change policy]: https://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md#handling-breaking-changes [Discord]: https://github.com/flutter/flutter/blob/main/docs/contributing/Chat.md [Data Driven Fixes]: https://github.com/flutter/flutter/blob/main/docs/contributing/Data-driven-Fixes.md
This PR marks the
--ios-language objcflag as deprecated for plugin creation. It introduces a warning message in theflutter createtool when the flag is used, but does not remove the functionality at this time. This is the first step towards its eventual removal.Context
As discussed in the issue, usage metrics show that Objective-C is used in less than 4% of newly created plugins. To streamline the tool and align with modern iOS development practices (i.e., Swift), we are beginning the process of phasing out this option
Changes:
objcflag is used.--helptext to reflect the deprecation.Testing
I have validated these changes by:
flutter-dev createwith theobjcflag to confirm the new deprecation warning appears.test/commands.shardto ensure no regressions were introduced.Fixes #169683
Pre-launch 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-assistbot 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.