diff --git a/.changeset/v6-posthog-ios-4.md b/.changeset/v6-posthog-ios-4.md index 4d71fd3d..e3c36b28 100644 --- a/.changeset/v6-posthog-ios-4.md +++ b/.changeset/v6-posthog-ios-4.md @@ -4,7 +4,7 @@ - **Breaking:** bump minimum iOS deployment target from 13.0 to 15.0 and macOS from 10.15 to 11.0, and require Xcode 26, adopting `posthog-ios` 4.x - **Breaking:** remove `PostHogConfig.apiKey` and the `com.posthog.posthog.API_KEY` manifest/Info.plist key — use `projectToken` and `com.posthog.posthog.PROJECT_TOKEN` -- **Breaking:** remove `Posthog().getFeatureFlagPayload()` — use `getFeatureFlagResult(key, sendEvent: false)` and read `payload` +- **Breaking:** remove `Posthog().getFeatureFlagPayload()` — use `getFeatureFlagResult(key, sendFeatureFlagEvent: false)` and read `payload` - **Breaking:** remove the `PostHogSessionReplayConfig.debouncerDelay` setter — use `PostHogSessionReplayConfig.throttleDelay` - **Breaking:** remove `PostHogDataMode.cellular` — use `PostHogDataMode.any`, which it always behaved like - Declare Android `minSdkVersion` 23 to match `posthog-android`, which has required it since 3.39.0. Apps on minSdk 21 or 22 already could not build with this plugin, so nothing changes for them diff --git a/.changeset/v6-send-feature-flag-event-param.md b/.changeset/v6-send-feature-flag-event-param.md new file mode 100644 index 00000000..677d86fb --- /dev/null +++ b/.changeset/v6-send-feature-flag-event-param.md @@ -0,0 +1,5 @@ +--- +"posthog_flutter": major +--- + +- **Breaking:** `getFeatureFlagResult(sendEvent:)` is now `getFeatureFlagResult(sendFeatureFlagEvent:)`, matching `PostHogConfig.sendFeatureFlagEvent` and the native SDKs diff --git a/api/posthog_flutter.api.json b/api/posthog_flutter.api.json index 459d349e..cf8b6a68 100644 --- a/api/posthog_flutter.api.json +++ b/api/posthog_flutter.api.json @@ -897,7 +897,7 @@ "isExperimental": false, "isNamed": true, "isRequired": false, - "name": "sendEvent", + "name": "sendFeatureFlagEvent", "relativePath": "lib/src/posthog_flutter_platform_interface.dart", "typeName": "bool" } @@ -1858,7 +1858,7 @@ "isExperimental": false, "isNamed": true, "isRequired": false, - "name": "sendEvent", + "name": "sendFeatureFlagEvent", "relativePath": "lib/src/posthog_flutter_platform_interface.dart", "typeName": "bool" } @@ -4704,7 +4704,7 @@ "isExperimental": false, "isNamed": true, "isRequired": false, - "name": "sendEvent", + "name": "sendFeatureFlagEvent", "relativePath": "lib/src/posthog.dart", "typeName": "bool" } diff --git a/posthog_flutter/lib/posthog_flutter_web.dart b/posthog_flutter/lib/posthog_flutter_web.dart index 0c718f0e..9692a22a 100644 --- a/posthog_flutter/lib/posthog_flutter_web.dart +++ b/posthog_flutter/lib/posthog_flutter_web.dart @@ -406,10 +406,11 @@ class PosthogFlutterWeb extends PosthogFlutterPlatformInterface { @override Future getFeatureFlagResult({ required String key, - bool sendEvent = true, + bool sendFeatureFlagEvent = true, }) async { final result = await handleWebMethodCall( - MethodCall('getFeatureFlagResult', {'key': key, 'sendEvent': sendEvent}), + MethodCall('getFeatureFlagResult', + {'key': key, 'sendEvent': sendFeatureFlagEvent}), ); // Web SDK returns: { key, enabled, variant, payload } diff --git a/posthog_flutter/lib/src/posthog.dart b/posthog_flutter/lib/src/posthog.dart index 847cbcec..f796d148 100644 --- a/posthog_flutter/lib/src/posthog.dart +++ b/posthog_flutter/lib/src/posthog.dart @@ -720,9 +720,9 @@ class Posthog { /// This is the canonical method for getting feature flag data. /// Returns `null` if the flag does not exist or cannot be loaded. /// - /// Set [sendEvent] to `false` to suppress the `$feature_flag_called` event. - /// This is useful when you only need the payload and do not want to emit the - /// event. + /// Set [sendFeatureFlagEvent] to `false` to suppress the + /// `$feature_flag_called` event. This is useful when you only need the + /// payload and do not want to emit the event. /// /// **Example:** /// ```dart @@ -734,9 +734,10 @@ class Posthog { /// ``` Future getFeatureFlagResult( String key, { - bool sendEvent = true, + bool sendFeatureFlagEvent = true, }) => - _posthog.getFeatureFlagResult(key: key, sendEvent: sendEvent); + _posthog.getFeatureFlagResult( + key: key, sendFeatureFlagEvent: sendFeatureFlagEvent); /// Flushes queued events immediately where supported by the platform. /// diff --git a/posthog_flutter/lib/src/posthog_flutter_io.dart b/posthog_flutter/lib/src/posthog_flutter_io.dart index 50f0ba19..b8f64150 100644 --- a/posthog_flutter/lib/src/posthog_flutter_io.dart +++ b/posthog_flutter/lib/src/posthog_flutter_io.dart @@ -670,7 +670,7 @@ class PosthogFlutterIO extends PosthogFlutterPlatformInterface { @override Future getFeatureFlagResult({ required String key, - bool sendEvent = true, + bool sendFeatureFlagEvent = true, }) async { if (!isSupportedPlatform()) { return null; @@ -679,7 +679,7 @@ class PosthogFlutterIO extends PosthogFlutterPlatformInterface { try { final result = await _methodChannel.invokeMethod('getFeatureFlagResult', { 'key': key, - 'sendEvent': sendEvent, + 'sendEvent': sendFeatureFlagEvent, }); // Native returns: { key, enabled, variant, payload } diff --git a/posthog_flutter/lib/src/posthog_flutter_platform_interface.dart b/posthog_flutter/lib/src/posthog_flutter_platform_interface.dart index 4c865355..703b390e 100644 --- a/posthog_flutter/lib/src/posthog_flutter_platform_interface.dart +++ b/posthog_flutter/lib/src/posthog_flutter_platform_interface.dart @@ -206,7 +206,7 @@ abstract class PosthogFlutterPlatformInterface extends PlatformInterface { Future getFeatureFlagResult({ required String key, - bool sendEvent = true, + bool sendFeatureFlagEvent = true, }) { throw UnimplementedError( 'getFeatureFlagResult() has not been implemented.', diff --git a/posthog_flutter/test/posthog_flutter_io_test.dart b/posthog_flutter/test/posthog_flutter_io_test.dart index f243ada8..44fa91d8 100644 --- a/posthog_flutter/test/posthog_flutter_io_test.dart +++ b/posthog_flutter/test/posthog_flutter_io_test.dart @@ -66,7 +66,7 @@ void main() { }; }); final result = await posthogFlutterIO.getFeatureFlagResult( - key: 'flag', sendEvent: false); + key: 'flag', sendFeatureFlagEvent: false); expect(result, isNotNull); expect(result!.key, 'flag'); expect(result.enabled, enabled); diff --git a/posthog_flutter/test/posthog_flutter_platform_interface_fake.dart b/posthog_flutter/test/posthog_flutter_platform_interface_fake.dart index 2fad6e75..08c68d23 100644 --- a/posthog_flutter/test/posthog_flutter_platform_interface_fake.dart +++ b/posthog_flutter/test/posthog_flutter_platform_interface_fake.dart @@ -259,9 +259,10 @@ class PosthogFlutterPlatformFake extends PosthogFlutterPlatformInterface { @override Future getFeatureFlagResult({ required String key, - bool sendEvent = true, + bool sendFeatureFlagEvent = true, }) async { - getFeatureFlagResultCalls.add({'key': key, 'sendEvent': sendEvent}); + getFeatureFlagResultCalls + .add({'key': key, 'sendFeatureFlagEvent': sendFeatureFlagEvent}); return featureFlagResult; } diff --git a/posthog_flutter/test/posthog_test.dart b/posthog_flutter/test/posthog_test.dart index fcec7dcf..59874c98 100644 --- a/posthog_flutter/test/posthog_test.dart +++ b/posthog_flutter/test/posthog_test.dart @@ -375,7 +375,7 @@ void main() { final result = await Posthog().getFeatureFlagResult('non-existent'); expect(result, isNull); expect(fakePlatformInterface.getFeatureFlagResultCalls, [ - {'key': 'non-existent', 'sendEvent': true} + {'key': 'non-existent', 'sendFeatureFlagEvent': true} ]); }); @@ -390,24 +390,26 @@ void main() { expect( await Posthog().getFeatureFlagResult('variant-flag'), same(expected)); expect(fakePlatformInterface.getFeatureFlagResultCalls, [ - {'key': 'variant-flag', 'sendEvent': true} + {'key': 'variant-flag', 'sendFeatureFlagEvent': true} ]); }); - test('passes sendEvent=true by default', () async { + test('passes sendFeatureFlagEvent=true by default', () async { await Posthog().getFeatureFlagResult('test'); expect( - fakePlatformInterface.getFeatureFlagResultCalls.last['sendEvent'], + fakePlatformInterface + .getFeatureFlagResultCalls.last['sendFeatureFlagEvent'], isTrue, ); }); - test('passes sendEvent=false when specified', () async { - await Posthog().getFeatureFlagResult('test', sendEvent: false); + test('passes sendFeatureFlagEvent=false when specified', () async { + await Posthog().getFeatureFlagResult('test', sendFeatureFlagEvent: false); expect( - fakePlatformInterface.getFeatureFlagResultCalls.last['sendEvent'], + fakePlatformInterface + .getFeatureFlagResultCalls.last['sendFeatureFlagEvent'], isFalse, ); });