Skip to content

Raise Flutter+iOS version requirements - #605

Open
ttypic wants to merge 2 commits into
mainfrom
update-flutter
Open

Raise Flutter+iOS version requirements#605
ttypic wants to merge 2 commits into
mainfrom
update-flutter

Conversation

@ttypic

@ttypic ttypic commented Sep 10, 2026

Copy link
Copy Markdown
Contributor

Minimum Flutter version set to 3.44 and iOS deployment target to 13.0 to align with new plugin requirements (UIScene APIs and SwiftPM) this is necessary changes for iOS, because of iOS requirments and CocoaPods EOL.

ttypic and others added 2 commits September 10, 2026 13:14
Two floors land in the same bump. The UIScene plugin APIs this SDK is about
to adopt -- the `FlutterSceneLifeCycleDelegate` protocol and
`FlutterPluginRegistrar.addSceneDelegate:` -- first shipped in Flutter 3.38,
and `UIScene` itself is iOS 13+. Flutter 3.44 then made Swift Package
Manager the default dependency manager rather than the opt-in experiment it
had been since 3.24, and that is the floor the upcoming CocoaPods -> SwiftPM
migration needs: below it a consumer would have to turn on an experimental
feature by hand just to build this plugin.

So raise the Flutter floor straight to 3.44 (Dart 3.12) rather than 3.38,
and pull the toolchain and CI up to 3.47.3, the current stable.

Because 3.44+ migrates an Xcode project to SwiftPM the first time it builds,
the example and test_integration apps pin `enable-swift-package-manager:
false` in their pubspecs for now. That keeps this commit a version bump and
lets the migration land as its own reviewable change, which drops those pins
along with the Podfiles.

Alongside the version bumps:

- Drop two lints the newer analyzer rejects: `package_api_docs`, which was
  removed, and `avoid_null_checks_in_equality_operators`, now deprecated.
  Drop the two redundant `!` assertions in `codec.dart` it also flags.
- Silence `prefer_initializing_formals`. Dart 3.13 extended it to private
  fields initialised from a named parameter, but `this._field` in a named
  parameter list is only legal under the off-by-default
  `private-named-parameters` experiment, so its seven reports have no fix.
- Silence `experimental_member_use` on the example app's deliberate use of
  the experimental `Push.reset`.
- Take the `build/`, `android/` and `ios/` analyzer excludes that
  `flutter pub get` now writes into `analysis_options.yaml` itself, rather
  than have the file churn on every fetch.
- Gitignore `ios/Flutter/ephemeral/`, which Flutter generates in both
  example projects.
- Regenerating the CocoaPods projects also drops stale Firebase, Toast and
  nanopb framework entries from the example's `project.pbxproj`; those pods
  are no longer in its Podfile.

Groundwork for #592 and #602.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
`dart format --set-exit-if-changed .` is a CI gate, and the formatter's
output changed with the SDK bump in the previous commit, so the whole tree
has to be reformatted. Kept as its own commit because it touches 134 files
and none of it is behavioural -- review it separately from, or skip it
alongside, the SwiftPM and UIScene work that follows.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
@coderabbitai

coderabbitai Bot commented Sep 10, 2026

Copy link
Copy Markdown

Important

Review skipped

Too many files!

This PR contains 158 files, which is 58 over the limit of 100.

To get a review, reduce the PR to 100 files or fewer by splitting it into smaller PRs or changing its base branch.

Upgrade to a paid plan to raise the limit.

This review couldn't start because sufficient usage credits or metered capacity aren't available. Add credits or update usage-based reviews in the billing tab, then retry.

⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Advanced

Run ID: 9e0c4aa0-8e9d-4009-abf2-92447d4941db

📥 Commits

Reviewing files that changed from the base of the PR and between 1537db2 and a54ce20.

⛔ Files ignored due to path filters (5)
  • example/ios/Podfile.lock is excluded by !**/*.lock
  • example/pubspec.lock is excluded by !**/*.lock
  • pubspec.lock is excluded by !**/*.lock
  • test_integration/ios/Podfile.lock is excluded by !**/*.lock
  • test_integration/pubspec.lock is excluded by !**/*.lock
📒 Files selected for processing (158)
  • .github/workflows/check.yaml
  • .github/workflows/docs.yml
  • .github/workflows/flutter_example_app.yaml
  • .github/workflows/flutter_integration.yaml
  • .github/workflows/ios_unit_tests.yml
  • .tool-versions
  • PushNotifications.md
  • README.md
  • analysis_options.yaml
  • bin/codegen_context.dart
  • bin/templates/platformconstants.dart.dart
  • bin/templates/platformconstants.h.dart
  • bin/templates/platformconstants.java.dart
  • bin/templates/platformconstants.m.dart
  • example/ios/.gitignore
  • example/ios/Flutter/AppFrameworkInfo.plist
  • example/ios/Podfile
  • example/ios/Runner.xcodeproj/project.pbxproj
  • example/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme
  • example/ios/Runner/Info.plist
  • example/lib/app_provisioning.dart
  • example/lib/main.dart
  • example/lib/nested_realtime_events.dart
  • example/lib/op_state.dart
  • example/lib/push_notifications/android_push_notification_configuration.dart
  • example/lib/push_notifications/push_notification_handlers.dart
  • example/lib/push_notifications/push_notification_message_examples.dart
  • example/lib/push_notifications/push_notification_service.dart
  • example/lib/ui/ably_service.dart
  • example/lib/ui/api_key_service.dart
  • example/lib/ui/auth.dart
  • example/lib/ui/bool_stream_button.dart
  • example/lib/ui/paginated_result_viewer.dart
  • example/lib/ui/push_notifications/push_notifications_activation_sliver.dart
  • example/lib/ui/push_notifications/push_notifications_device_information.dart
  • example/lib/ui/push_notifications/push_notifications_ios_permissions_sliver.dart
  • example/lib/ui/push_notifications/push_notifications_publishing_sliver.dart
  • example/lib/ui/push_notifications/push_notifications_received_sliver.dart
  • example/lib/ui/push_notifications/push_notifications_sliver.dart
  • example/lib/ui/push_notifications/push_notifications_subscriptions_sliver.dart
  • example/lib/ui/push_notifications/push_realtime_client_received_sliver.dart
  • example/lib/ui/realtime_presence_sliver.dart
  • example/lib/ui/realtime_sliver.dart
  • example/lib/ui/rest_sliver.dart
  • example/lib/ui/system_details_sliver.dart
  • example/lib/ui/text_row.dart
  • example/lib/ui/utilities.dart
  • example/pubspec.yaml
  • ios/ably_flutter.podspec
  • lib/src/authentication/src/auth_options.dart
  • lib/src/authentication/src/client_options.dart
  • lib/src/authentication/src/token_details.dart
  • lib/src/authentication/src/token_request.dart
  • lib/src/crypto/src/crypto.dart
  • lib/src/error/src/ably_exception.dart
  • lib/src/error/src/error_info.dart
  • lib/src/logging/src/log_handler.dart
  • lib/src/message/src/delta_extras.dart
  • lib/src/message/src/message.dart
  • lib/src/message/src/message_data.dart
  • lib/src/message/src/message_extras.dart
  • lib/src/message/src/presence_message.dart
  • lib/src/platform/src/ably_event_message.dart
  • lib/src/platform/src/ably_message.dart
  • lib/src/platform/src/background_android_isolate_platform.dart
  • lib/src/platform/src/cipher_params_internal.dart
  • lib/src/platform/src/codec.dart
  • lib/src/platform/src/method_call_handler.dart
  • lib/src/platform/src/paginated_result.dart
  • lib/src/platform/src/platform.dart
  • lib/src/platform/src/platform_object.dart
  • lib/src/platform/src/push_notification_events_internal.dart
  • lib/src/platform/src/realtime/connection.dart
  • lib/src/platform/src/realtime/presence.dart
  • lib/src/platform/src/realtime/realtime.dart
  • lib/src/platform/src/realtime/realtime_channel.dart
  • lib/src/platform/src/rest/rest_channel.dart
  • lib/src/platform/src/rest/rest_presence.dart
  • lib/src/platform/src/streams_channel.dart
  • lib/src/push_notifications/src/admin/push_device_registrations.dart
  • lib/src/push_notifications/src/device_push_details.dart
  • lib/src/push_notifications/src/ios_notification_settings.dart
  • lib/src/push_notifications/src/local_device.dart
  • lib/src/push_notifications/src/notification.dart
  • lib/src/push_notifications/src/push.dart
  • lib/src/push_notifications/src/push_channel.dart
  • lib/src/push_notifications/src/push_channel_subscriptions.dart
  • lib/src/push_notifications/src/push_notification_events.dart
  • lib/src/push_notifications/src/remote_message.dart
  • lib/src/realtime/src/connection_state_change.dart
  • lib/src/realtime/src/realtime_auth.dart
  • lib/src/realtime/src/realtime_channel_options.dart
  • lib/src/realtime/src/realtime_history_params.dart
  • lib/src/rest/src/rest_auth.dart
  • lib/src/rest/src/rest_history_params.dart
  • lib/src/rest/src/rest_presence_params.dart
  • pubspec.yaml
  • test/ably_event_listener_test.dart
  • test/ably_flutter_plugin_test.dart
  • test/mock_method_call_manager.dart
  • test/models/message_test.dart
  • test/models/presence_message_test.dart
  • test/realtime/channel_test.dart
  • test/rest/channel_test.dart
  • test/rest/channels_test.dart
  • test_integration/ios/.gitignore
  • test_integration/ios/Flutter/AppFrameworkInfo.plist
  • test_integration/ios/Podfile
  • test_integration/ios/Runner.xcodeproj/project.pbxproj
  • test_integration/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme
  • test_integration/lib/app_provisioning.dart
  • test_integration/lib/config/test_factory.dart
  • test_integration/lib/driver_data_handler.dart
  • test_integration/lib/factory/error_handler.dart
  • test_integration/lib/factory/reporter.dart
  • test_integration/lib/test/basic_test.dart
  • test_integration/lib/test/crypto/crypto_ensure_supported_key_length_test.dart
  • test_integration/lib/test/crypto/crypto_get_default_params.dart
  • test_integration/lib/test/realtime/realtime_auth_client_id_test.dart
  • test_integration/lib/test/realtime/realtime_auth_url_test.dart
  • test_integration/lib/test/realtime/realtime_authorize_test.dart
  • test_integration/lib/test/realtime/realtime_encrypted_publish_test.dart
  • test_integration/lib/test/realtime/realtime_events_test.dart
  • test_integration/lib/test/realtime/realtime_history_with_auth_callback_test.dart
  • test_integration/lib/test/realtime/realtime_presence_enter_update_leave.dart
  • test_integration/lib/test/realtime/realtime_presence_get.dart
  • test_integration/lib/test/realtime/realtime_presence_subscribe.dart
  • test_integration/lib/test/realtime/realtime_publish_test.dart
  • test_integration/lib/test/realtime/realtime_publish_with_auth_callback_test.dart
  • test_integration/lib/test/realtime/realtime_subscribe.dart
  • test_integration/lib/test/rest/rest_auth_client_id_test.dart
  • test_integration/lib/test/rest/rest_authorize_test.dart
  • test_integration/lib/test/rest/rest_capability_test.dart
  • test_integration/lib/test/rest/rest_create_token_request_test.dart
  • test_integration/lib/test/rest/rest_encrypted_publish_test.dart
  • test_integration/lib/test/rest/rest_history_test.dart
  • test_integration/lib/test/rest/rest_history_with_auth_callback_test.dart
  • test_integration/lib/test/rest/rest_presence_get_test.dart
  • test_integration/lib/test/rest/rest_presence_history_test.dart
  • test_integration/lib/test/rest/rest_publish_test.dart
  • test_integration/lib/test/rest/rest_publish_with_auth_callback_test.dart
  • test_integration/lib/test/rest/rest_request_token_test.dart
  • test_integration/lib/test/rest/rest_time_test.dart
  • test_integration/lib/test_dispatcher.dart
  • test_integration/lib/utils/data.dart
  • test_integration/lib/utils/encoders.dart
  • test_integration/lib/utils/realtime.dart
  • test_integration/lib/utils/rest.dart
  • test_integration/pubspec.yaml
  • test_integration/test_driver/runner.dart
  • test_integration/test_driver/test_implementation/basic_platform_tests.dart
  • test_integration/test_driver/test_implementation/crypto_tests.dart
  • test_integration/test_driver/test_implementation/helper_tests.dart
  • test_integration/test_driver/test_implementation/realtime_tests.dart
  • test_integration/test_driver/test_implementation/rest_tests.dart
  • test_integration/test_driver/test_implementation/utils.dart
  • test_integration/test_driver/tests_abstract.dart
  • test_integration/test_driver/tests_config.dart

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.


Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Development

Successfully merging this pull request may close these issues.

1 participant