Skip to content

Lower minimum Flutter SDK to 3.22.0 and Dart to 3.4.0#1704

Merged
rickvdl merged 1 commit into
mainfrom
rickvdl/lower-min-flutter-dart-version
Apr 1, 2026
Merged

Lower minimum Flutter SDK to 3.22.0 and Dart to 3.4.0#1704
rickvdl merged 1 commit into
mainfrom
rickvdl/lower-min-flutter-dart-version

Conversation

@rickvdl

@rickvdl rickvdl commented Apr 1, 2026

Copy link
Copy Markdown
Member

Summary

  • Lowers minimum Flutter SDK from 3.27.0 to 3.22.0 and Dart SDK from 3.6.0 to 3.4.0
  • As far as we know, there is no technical requirement for the higher minimum versions
  • CI min-version compatibility tests updated to run against Flutter 3.22.0

Test plan

  • CI test_main_sdk_min_version_compatibility passes with Flutter 3.22.0
  • CI test_ui_sdk_min_version_compatibility passes with Flutter 3.22.0
  • Existing tests pass on latest Flutter
  • flutter analyze lib passes
  • Tested offerings, paywalls and purchasing working

🤖 Generated with Claude Code


Note

Medium Risk
Moderate risk because it expands the supported toolchain and could surface incompatibilities with older Flutter/Dart versions despite passing CI. Changes are limited to version constraints, CI configuration, and documentation.

Overview
Lowers the minimum supported SDK versions to Flutter 3.22.0 and Dart 3.4.0 by updating the environment constraints in both pubspec.yaml files.

Updates CI’s minimum-version compatibility jobs to run against Flutter 3.22.0, and aligns developer documentation (AGENTS.md, DEVELOPMENT.md) with the new support policy.

Written by Cursor Bugbot for commit 3bf8e6c. This will update automatically on new commits. Configure here.

The minimum versions were raised to Flutter 3.27.0 / Dart 3.6.0 as part
of the v9.0.0 release, but neither the web support (package:web ^1.1.1
requires only Dart ^3.4.0) nor the freezed removal technically required
those versions. This lowers the floor to allow users on older Flutter
versions to use the SDK.

Changes:
- pubspec.yaml: sdk >=3.4.0, flutter >=3.22.0
- purchases_ui_flutter/pubspec.yaml: same
- .circleci/config.yml: min version CI jobs test against 3.22.0
- CLAUDE.md, AGENTS.md, DEVELOPMENT.md: updated version references

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Comment thread .circleci/config.yml
test:
description: "Run tests for Flutter"
docker:
- image: ghcr.io/cirruslabs/flutter:stable

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

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

These always run using flutter:stable instead of the min version we support, should we update these as well to keep them in sync?

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

I think this is intentional so we also test against the latest flutter version released. We could potentially add separate tests to run against the min version... But I think the min sdk versions that already exist are enough? Happy to chat more if you think we need those though!

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

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

Discussed over Slack; we'll expand these to cover both the latest and min version in a follow up PR

@rickvdl rickvdl marked this pull request as ready for review April 1, 2026 15:00
@rickvdl rickvdl requested a review from a team as a code owner April 1, 2026 15:00
@rickvdl rickvdl added pr:feat A new feature pr:force_minor Change should force a minor release and removed pr:other labels Apr 1, 2026

@tonidero tonidero left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Nice! Thanks for doing this!

@rickvdl rickvdl added pr:force_patch and removed pr:force_minor Change should force a minor release labels Apr 1, 2026
@rickvdl rickvdl merged commit d200c2c into main Apr 1, 2026
18 checks passed
@rickvdl rickvdl deleted the rickvdl/lower-min-flutter-dart-version branch April 1, 2026 16:50
RCGitBot added a commit that referenced this pull request Apr 1, 2026
**This is an automatic release.**

## RevenueCat SDK
### ✨ New Features
* Lower minimum Flutter SDK to 3.22.0 and Dart to 3.4.0 (#1704) via Rick
(@rickvdl)
### 📦 Dependency Updates
* [AUTOMATIC BUMP] Updates purchases-hybrid-common to 17.54.0 (#1703)
via RevenueCat Git Bot (@RCGitBot)
* [Android
9.28.1](https://github.com/RevenueCat/purchases-android/releases/tag/9.28.1)
* [Android
9.28.0](https://github.com/RevenueCat/purchases-android/releases/tag/9.28.0)
* [iOS
5.67.0](https://github.com/RevenueCat/purchases-ios/releases/tag/5.67.0)

### 🔄 Other Changes
* Bump fastlane-plugin-revenuecat_internal from `9a6911b` to `f11fe40`
(#1701) via dependabot[bot] (@dependabot[bot])
* security: pin GitHub Actions to SHA hashes (#1697) via Alfonso
Embid-Desmet (@alfondotnet)
* Bump activesupport from 7.2.3 to 7.2.3.1 (#1696) via dependabot[bot]
(@dependabot[bot])
* Merge release PR after deploy (#1694) via Antonio Pallares
(@ajpallares)
* Require PR approval before release tagging (#1693) via Antonio
Pallares (@ajpallares)

<!-- CURSOR_SUMMARY -->
---

> [!NOTE]
> **Low Risk**
> Primarily a coordinated version/release bump across Flutter, Android,
iOS/macOS, and web with updated dependency versions and minimum SDK
constraints; no functional logic changes beyond version metadata.
> 
> **Overview**
> Bumps the Flutter SDK release from `9.15.1` to `9.16.0` across package
metadata (`.version`, `pubspec.yaml`, podspecs, Gradle files) and
updates the embedded plugin version constants for Android/iOS/web.
> 
> Updates release documentation (`CHANGELOG-LATEST.md`, `CHANGELOG.md`,
`VERSIONS.md`) to include the `9.16.0` notes, including the lowered
minimum Flutter/Dart requirements and the `purchases-hybrid-common` bump
to `17.54.0` (with corresponding native iOS/Android version references).
Also updates `purchases_ui_flutter` to depend on `purchases_flutter
^9.16.0`.
> 
> <sup>Written by [Cursor
Bugbot](https://cursor.com/dashboard?tab=bugbot) for commit
c93cfb2. This will update automatically
on new commits. Configure
[here](https://cursor.com/dashboard?tab=bugbot).</sup>
<!-- /CURSOR_SUMMARY -->
rickvdl added a commit that referenced this pull request Apr 2, 2026
…1707)

Follow-up to #1704 which lowers the minimum Flutter SDK to 3.22.0.

## Summary

Parameterize CI lint and test jobs to run against both `flutter:stable`
and the minimum supported Flutter version (3.22.0). Replaces the old
`test_main_sdk_min_version_compatibility` and
`test_ui_sdk_min_version_compatibility` jobs which only verified
dependency resolution.

| Job | Flutter | What it does |
|-----|---------|-------------|
| `lint-test` | stable | analyze + test root SDK |
| `lint-test-min-version` | 3.22.0 | analyze + test root SDK |
| `lint-test-ui` | stable | analyze + test UI SDK |
| `lint-test-ui-min-version` | 3.22.0 | analyze + test UI SDK |
| `lint-sample-apps` | stable | resolve deps for example apps +
api_tester |

## Test plan
- [x] All CI jobs pass
- [x] Min version jobs correctly use Flutter 3.22.0
- [x] Update required job list

<!-- CURSOR_SUMMARY -->
---

> [!NOTE]
> **Low Risk**
> Low risk: CI-only changes that adjust which CircleCI jobs run and
which Flutter Docker images they use; main risk is longer runtimes or
unexpected CI failures due to running tests on Flutter 3.22.0.
> 
> **Overview**
> Updates CircleCI to run **lint + unit tests** for both
`purchases_flutter` and `purchases_ui_flutter` against `flutter:stable`
and the minimum supported Flutter version (`3.22.0`) via parameterized
`lint-test` and `lint-test-ui` jobs.
> 
> Replaces the old min-version compatibility jobs (which only resolved
dependencies) with a new `lint-sample-apps` job for dependency
resolution of sample apps/`api_tester`, and simplifies jobs by removing
the unused `build-flutter-project` command and using
`flutter-get-dependencies` directly in integration test steps.
> 
> <sup>Written by [Cursor
Bugbot](https://cursor.com/dashboard?tab=bugbot) for commit
ff2b112. This will update automatically
on new commits. Configure
[here](https://cursor.com/dashboard?tab=bugbot).</sup>
<!-- /CURSOR_SUMMARY -->
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants