Skip to content

chore!: require Flutter 3.41 or later - #713

Merged
turnipdabeets merged 3 commits into
chore/v6-posthog-ios-4from
fix/flutter-341-floor
Nov 9, 2026
Merged

turnipdabeets merged 3 commits into
chore/v6-posthog-ios-4from
fix/flutter-341-floor

Conversation

@turnipdabeets

Copy link
Copy Markdown
Contributor

💡 Motivation and Context

Stacked on #637. 6.0's iOS/macOS Package.swift depends on ../FlutterFramework, which Flutter only generates from 3.41. With flutter: '>=3.27.0', apps on 3.27–3.40 resolve fine and then fail with an unclear SPM path error. Raising the pubspec floor to >=3.41.0 makes pub reject them up front.

  • posthog_flutter/pubspec.yaml: flutter: '>=3.41.0'. Dart sdk stays >=3.6.0 — nothing in Flutter 3.41 forces it up, and raising it would change the package's language version (formatter style, lints) for no resolution benefit, since Flutter 3.41 bundles a newer Dart anyway.
  • MIGRATION.md: the Flutter row now applies to every platform, and it says pub refuses to resolve on Flutter < 3.41, including Android-only apps.
  • v6 changeset: one Breaking line.

No CI lane pins a Flutter version older than 3.41 (all use channel: stable), and the example app already requires >=3.44.0.

💚 How did you test it?

flutter pub get and dart analyze in posthog_flutter on Flutter 3.44.1 (one pre-existing unnecessary_import info).

📝 Checklist

  • All commits are signed
  • I reviewed the submitted code.
  • I added tests to verify the changes.
  • I updated the docs if needed.
  • No breaking change or entry added to the changelog.

🤖 Agent context

Autonomy: Human-driven (agent-assisted)

Claude Code, from a pre-release review of the 6.0 integration PR.

🤖 Generated with Claude Code

The 6.0 Swift package depends on ../FlutterFramework, which Flutter
generates only from 3.41, so 3.27-3.40 failed with an unclear SPM path
error instead of a pub constraint.
@turnipdabeets turnipdabeets self-assigned this Nov 8, 2026
@github-actions

github-actions Bot commented Nov 8, 2026 •

Copy link
Copy Markdown
Contributor

posthog-flutter Compliance Report

Date: 2026-11-08T17:37:02.512125+00:00
Duration: 369604ms

✅ All Tests Passed!

232/232 tests passed


Capture_V1 Tests

✅ 105/105 tests passed

View Details
Test Status Duration
Endpoint And Method.Targets V1 Endpoint ✅ 197ms
Endpoint And Method.Does Not Use Legacy Endpoints ✅ 120ms
Required Headers.Has Authorization Bearer Header ✅ 117ms
Required Headers.Has Content Type Json ✅ 119ms
Required Headers.Has Posthog Sdk Info Format ✅ 116ms
Required Headers.Has Posthog Attempt Header ✅ 116ms
Required Headers.Has Posthog Request Id ✅ 116ms
Required Headers.Has Posthog Request Timestamp ✅ 117ms
Required Headers.Has User Agent ✅ 117ms
Body Format.Body Has Created At And Batch ✅ 115ms
Body Format.No Api Key In Body ✅ 115ms
Body Format.No Sent At In Body ✅ 116ms
Event Format.Event Has Required Root Fields ✅ 115ms
Event Format.Event Uuid Is Valid ✅ 116ms
Event Format.Event Timestamp Is Rfc3339 ✅ 116ms
Event Format.Non Utc Event Timestamp Is Converted To Utc ✅ 114ms
Event Format.Distinct Id Is String ✅ 117ms
Event Format.Distinct Id At Root Not Properties ✅ 117ms
Event Format.Custom Properties Preserved ✅ 115ms
Event Format.Set Properties Preserved ✅ 118ms
Event Format.Set Once Properties Preserved ✅ 115ms
Event Format.Groups Properties Preserved ✅ 115ms
Event Format.Sdk Generates Uuid If Not Provided ✅ 115ms
Event Format.Event Has Required Root Fields Batch ✅ 119ms
Event Format.Event Uuid Is Valid Batch ✅ 119ms
Event Format.Event Timestamp Is Rfc3339 Batch ✅ 118ms
Event Format.Distinct Id Is String Batch ✅ 119ms
Event Format.Distinct Id At Root Not Properties Batch ✅ 121ms
Event Format.Custom Properties Preserved Batch ✅ 124ms
Event Format.Set Properties Preserved Batch ✅ 120ms
Event Format.Set Once Properties Preserved Batch ✅ 119ms
Event Format.Groups Properties Preserved Batch ✅ 119ms
Event Format.Sdk Generates Uuid If Not Provided Batch ✅ 119ms
Batch Behavior.Multiple Events In Single Batch ✅ 123ms
Batch Behavior.Batch Envelope Smoke ✅ 124ms
Batch Behavior.Flush With No Events Sends Nothing ✅ 107ms
Batch Behavior.Flush At Triggers Batch ✅ 1014ms
Batch Behavior.Created At Reflects Batch Creation Time ✅ 116ms
Deduplication.Generates Unique Uuids ✅ 123ms
Deduplication.Different Events Same Content Different Uuids ✅ 117ms
Deduplication.Preserves Uuid On Retry ✅ 5121ms
Deduplication.Preserves Timestamp On Retry ✅ 5121ms
Deduplication.Preserves Uuid And Timestamp On Batch Retry ✅ 5125ms
Deduplication.No Duplicate Events In Batch ✅ 123ms
Header Behavior On Retry.Attempt Header Starts At One ✅ 115ms
Header Behavior On Retry.Attempt Header Increments On Retry ✅ 10126ms
Header Behavior On Retry.Request Id Preserved On Retry ✅ 5120ms
Header Behavior On Retry.Different Requests Have Different Request Ids ✅ 2227ms
Header Behavior On Retry.Request Timestamp Changes On Retry ✅ 5122ms
Response Format Validation.Success Response Has Uuid Keyed Results ✅ 113ms
Response Format Validation.Success Response Has Ok For Each Event ✅ 117ms
Response Format Validation.Success No Retry After When All Ok ✅ 116ms
Response Format Validation.Success Retry After Present When Retry Events ✅ 117ms
Response Format Validation.Success No Retry After When Drop Only ✅ 118ms
Response Format Validation.Response Echoes Request Id ✅ 114ms
Retry Behavior.Retries On 408 ✅ 5117ms
Retry Behavior.Retries On 500 ✅ 5117ms
Retry Behavior.Retries On 503 ✅ 5119ms
Retry Behavior.Retries On 504 ✅ 5124ms
Retry Behavior.Retries On 404 ✅ 5122ms
Retry Behavior.Retries On 429 ✅ 5121ms
Retry Behavior.Retries On 502 ✅ 5122ms
Retry Behavior.Retryable Errors Have Retry After ✅ 2116ms
Retry Behavior.Respects Retry After On Retryable Error ✅ 8122ms
Retry Behavior.Does Not Retry On 400 ✅ 2117ms
Retry Behavior.Does Not Retry On 401 ✅ 2116ms
Retry Behavior.Does Not Retry On 402 ✅ 2117ms
Retry Behavior.Does Not Retry On 413 ✅ 2117ms
Retry Behavior.Does Not Retry On 415 ✅ 2117ms
Retry Behavior.Non Retryable Errors Have No Retry After ✅ 2116ms
Retry Behavior.Implements Backoff ✅ 12126ms
Partial Batch Handling.Handles 200 Full Success ✅ 2116ms
Partial Batch Handling.Handles 200 With All Ok ✅ 3121ms
Partial Batch Handling.Does Not Retry Dropped Events ✅ 3119ms
Partial Batch Handling.Does Not Retry Warning Events ✅ 3125ms
Partial Batch Handling.Prunes Ok Events On Partial Retry ✅ 5122ms
Partial Batch Handling.Prunes Dropped Events On Partial Retry ✅ 5121ms
Partial Batch Handling.Retries Only Retry Events From Partial ✅ 5123ms
Partial Batch Handling.Partial Retry Preserves Uuids ✅ 5121ms
Partial Batch Handling.Partial Retry Attempt Header Increments ✅ 5121ms
Partial Batch Handling.Partial Retry Request Id Preserved ✅ 5121ms
Partial Batch Handling.Respects Retry After On Partial ✅ 5117ms
Partial Batch Handling.Unknown Result Treated As Terminal ✅ 3119ms
Partial Batch Handling.Mixed Ok Drop Warning No Retry ✅ 3123ms
Compression.Sends Gzip Content Encoding ✅ 116ms
Compression.No Content Encoding When Disabled ✅ 113ms
Compression.Compressed Body Is Decompressible ✅ 113ms
Error Handling.Does Not Retry On Unknown 4Xx ✅ 2116ms
Event Options.Cookieless Mode Override ✅ 113ms
Event Options.Disable Skew Correction Override ✅ 113ms
Event Options.Process Person Profile Override ✅ 113ms
Event Options.Product Tour Id Override ✅ 115ms
Event Options.Unset Options Omitted ✅ 113ms
Event Options.Options Override In Batch ✅ 117ms
Event Options.Unknown Option Passes Through ✅ 113ms
Event Options.Option Value Is Not Converted ✅ 113ms
Event Options.Lenient Bool Option Values Are Not Converted ✅ 114ms
Event Options.Option Wins Over Legacy Property ✅ 113ms
Event Options.Legacy Property Fills Unset Option ✅ 112ms
Event Options.Null Option Falls Back To Legacy Property ✅ 112ms
Property Layers.Caller Property Beats Registered Property ✅ 113ms
Property Layers.Before Send Runs Last ✅ 113ms
Fail Open.Empty Api Key Sends Nothing ✅ 1109ms
Fail Open.Personal Api Key Sends Nothing ✅ 1109ms
Geoip And Historical Migration.Historical Migration Absent By Default ✅ 113ms

Capture_Ai_V1 Tests

✅ 110/110 tests passed

View Details
Test Status Duration
Endpoint And Method.Targets V1 Endpoint ✅ 113ms
Endpoint And Method.Does Not Use Legacy Endpoints ✅ 112ms
Endpoint And Method.Capture Does Not Reroute Ai Named Events ✅ 114ms
Endpoint And Method.Capture Ai Does Not Reroute Non Ai Events ✅ 112ms
Lane Isolation.Failing Ai Lane Does Not Delay Analytics ✅ 5126ms
Required Headers.Has Authorization Bearer Header ✅ 114ms
Required Headers.Has Content Type Json ✅ 113ms
Required Headers.Has Posthog Sdk Info Format ✅ 112ms
Required Headers.Has Posthog Attempt Header ✅ 113ms
Required Headers.Has Posthog Request Id ✅ 113ms
Required Headers.Has Posthog Request Timestamp ✅ 113ms
Required Headers.Has User Agent ✅ 113ms
Body Format.Body Has Created At And Batch ✅ 113ms
Body Format.No Api Key In Body ✅ 113ms
Body Format.No Sent At In Body ✅ 112ms
Event Format.Event Has Required Root Fields ✅ 112ms
Event Format.Event Uuid Is Valid ✅ 112ms
Event Format.Event Timestamp Is Rfc3339 ✅ 112ms
Event Format.Non Utc Event Timestamp Is Converted To Utc ✅ 113ms
Event Format.Distinct Id Is String ✅ 112ms
Event Format.Distinct Id At Root Not Properties ✅ 112ms
Event Format.Custom Properties Preserved ✅ 112ms
Event Format.Set Properties Preserved ✅ 112ms
Event Format.Set Once Properties Preserved ✅ 112ms
Event Format.Groups Properties Preserved ✅ 113ms
Event Format.Sdk Generates Uuid If Not Provided ✅ 112ms
Event Format.Event Has Required Root Fields Batch ✅ 116ms
Event Format.Event Uuid Is Valid Batch ✅ 116ms
Event Format.Event Timestamp Is Rfc3339 Batch ✅ 115ms
Event Format.Distinct Id Is String Batch ✅ 117ms
Event Format.Distinct Id At Root Not Properties Batch ✅ 115ms
Event Format.Custom Properties Preserved Batch ✅ 116ms
Event Format.Set Properties Preserved Batch ✅ 116ms
Event Format.Set Once Properties Preserved Batch ✅ 116ms
Event Format.Groups Properties Preserved Batch ✅ 116ms
Event Format.Sdk Generates Uuid If Not Provided Batch ✅ 116ms
Batch Behavior.Multiple Events In Single Batch ✅ 120ms
Batch Behavior.Batch Envelope Smoke ✅ 118ms
Batch Behavior.Flush At Triggers Batch ✅ 1011ms
Batch Behavior.Created At Reflects Batch Creation Time ✅ 113ms
Deduplication.Generates Unique Uuids ✅ 120ms
Deduplication.Different Events Same Content Different Uuids ✅ 115ms
Deduplication.Preserves Uuid On Retry ✅ 5118ms
Deduplication.Preserves Timestamp On Retry ✅ 5118ms
Deduplication.Preserves Uuid And Timestamp On Batch Retry ✅ 5120ms
Deduplication.No Duplicate Events In Batch ✅ 121ms
Header Behavior On Retry.Attempt Header Starts At One ✅ 114ms
Header Behavior On Retry.Attempt Header Increments On Retry ✅ 10118ms
Header Behavior On Retry.Request Id Preserved On Retry ✅ 5118ms
Header Behavior On Retry.Different Requests Have Different Request Ids ✅ 2225ms
Header Behavior On Retry.Request Timestamp Changes On Retry ✅ 5119ms
Response Format Validation.Success Response Has Uuid Keyed Results ✅ 113ms
Response Format Validation.Success Response Has Ok For Each Event ✅ 116ms
Response Format Validation.Success No Retry After When All Ok ✅ 115ms
Response Format Validation.Success Retry After Present When Retry Events ✅ 115ms
Response Format Validation.Success No Retry After When Drop Only ✅ 115ms
Response Format Validation.Response Echoes Request Id ✅ 112ms
Retry Behavior.Retries On 408 ✅ 5118ms
Retry Behavior.Retries On 500 ✅ 5119ms
Retry Behavior.Retries On 503 ✅ 5119ms
Retry Behavior.Retries On 504 ✅ 5119ms
Retry Behavior.Retries On 404 ✅ 5114ms
Retry Behavior.Retries On 429 ✅ 5119ms
Retry Behavior.Retries On 502 ✅ 5119ms
Retry Behavior.Retryable Errors Have Retry After ✅ 2116ms
Retry Behavior.Respects Retry After On Retryable Error ✅ 8122ms
Retry Behavior.Does Not Retry On 400 ✅ 2117ms
Retry Behavior.Does Not Retry On 401 ✅ 2116ms
Retry Behavior.Does Not Retry On 402 ✅ 2116ms
Retry Behavior.Does Not Retry On 413 ✅ 2116ms
Retry Behavior.Does Not Retry On 415 ✅ 2116ms
Retry Behavior.Non Retryable Errors Have No Retry After ✅ 2116ms
Retry Behavior.Implements Backoff ✅ 12123ms
Partial Batch Handling.Handles 200 Full Success ✅ 2114ms
Partial Batch Handling.Handles 200 With All Ok ✅ 3120ms
Partial Batch Handling.Does Not Retry Dropped Events ✅ 3119ms
Partial Batch Handling.Does Not Retry Warning Events ✅ 3118ms
Partial Batch Handling.Prunes Ok Events On Partial Retry ✅ 5121ms
Partial Batch Handling.Prunes Dropped Events On Partial Retry ✅ 5127ms
Partial Batch Handling.Retries Only Retry Events From Partial ✅ 5122ms
Partial Batch Handling.Partial Retry Preserves Uuids ✅ 5121ms
Partial Batch Handling.Partial Retry Attempt Header Increments ✅ 5118ms
Partial Batch Handling.Partial Retry Request Id Preserved ✅ 5121ms
Partial Batch Handling.Respects Retry After On Partial ✅ 5119ms
Partial Batch Handling.Unknown Result Treated As Terminal ✅ 3119ms
Partial Batch Handling.Mixed Ok Drop Warning No Retry ✅ 3122ms
Compression.Sends Gzip Content Encoding ✅ 114ms
Compression.No Content Encoding When Disabled ✅ 112ms
Compression.Compressed Body Is Decompressible ✅ 113ms
Error Handling.Does Not Retry On Unknown 4Xx ✅ 2115ms
Event Options.Cookieless Mode Override ✅ 114ms
Event Options.Disable Skew Correction Override ✅ 112ms
Event Options.Process Person Profile Override ✅ 112ms
Event Options.Product Tour Id Override ✅ 113ms
Event Options.Unset Options Omitted ✅ 112ms
Event Options.Options Override In Batch ✅ 116ms
Event Options.Unknown Option Passes Through ✅ 114ms
Event Options.Option Value Is Not Converted ✅ 112ms
Event Options.Lenient Bool Option Values Are Not Converted ✅ 112ms
Event Options.Option Wins Over Legacy Property ✅ 113ms
Event Options.Legacy Property Fills Unset Option ✅ 112ms
Event Options.Null Option Falls Back To Legacy Property ✅ 112ms
Event Size.Event Over Ceiling Is Not Sent ✅ 4033ms
Event Size.Over Ceiling Drop Is Reported Or Logged Without Content ✅ 2177ms
Event Size.Batches Close Before Byte Target ✅ 6102ms
Geoip And Historical Migration.Historical Migration Absent By Default ✅ 115ms
Property Layers.Caller Property Beats Registered Property ✅ 112ms
Property Layers.Before Send Runs Last ✅ 112ms
Fail Open.Empty Api Key Sends Nothing ✅ 1111ms
Fail Open.Personal Api Key Sends Nothing ✅ 1110ms

Feature_Flags Tests

✅ 17/17 tests passed

View Details
Test Status Duration
Request Payload.Request With Person Properties Device Id ✅ 18ms
Request Payload.Flags Request Uses V2 Query Param ✅ 13ms
Request Payload.Flags Request Hits Flags Path Not Decide ✅ 10ms
Request Payload.Flags Request Omits Authorization Header ✅ 11ms
Request Payload.Token In Flags Body Matches Init ✅ 10ms
Request Payload.Groups Round Trip ✅ 14ms
Request Payload.Groups Default To Empty Object ✅ 11ms
Request Payload.Disable Geoip False Propagates As Geoip Disable False ✅ 10ms
Request Payload.Disable Geoip Omitted Defaults To False ✅ 10ms
Request Payload.Flag Keys To Evaluate Contains Only Requested Key ✅ 10ms
Request Lifecycle.No Flags Request On Init Alone ✅ 5ms
Request Lifecycle.No Flags Request On Normal Capture ✅ 111ms
Request Lifecycle.Two Flag Calls Produce Two Remote Requests ✅ 16ms
Request Lifecycle.Mock Response Value Is Returned To Caller ✅ 11ms
Retry Behavior.Retries Flags On 502 ✅ 315ms
Retry Behavior.Retries Flags On 504 ✅ 315ms
Side Effect Events.Get Feature Flag Captures Feature Flag Called Event ✅ 116ms

@turnipdabeets
turnipdabeets marked this pull request as ready for review November 8, 2026 17:30
@turnipdabeets
turnipdabeets requested a review from a team as a code owner November 8, 2026 17:30

@marandaneto marandaneto left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

The code looks good; no qualifying findings. Verdict: correct.

@turnipdabeets
turnipdabeets merged commit 0a163d7 into chore/v6-posthog-ios-4 Nov 9, 2026
20 of 23 checks passed
@turnipdabeets
turnipdabeets deleted the fix/flutter-341-floor branch November 9, 2026 14:27
@turnipdabeets turnipdabeets mentioned this pull request Nov 9, 2026
6 of 17 tasks
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants