Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
31 commits
Select commit Hold shift + click to select a range
e81fd5f
Update platform_interface changelog
gthea Aug 14, 2025
d06b5af
Update splitio_android
gthea Aug 14, 2025
df2eba9
Update splitio_ios
gthea Aug 14, 2025
2a1cf24
Update splitio
gthea Aug 14, 2025
f411e28
Remove publish_to: none
gthea Aug 14, 2025
ec1a001
Platform to 2.0.0
gthea Aug 14, 2025
e4c7d99
Update splitio_ios to 1.0.0
gthea Aug 14, 2025
330ba62
Update splitio_ios to 1.0.0
gthea Aug 14, 2025
175d5f3
splitio to 1.0.0
gthea Aug 14, 2025
d18dd89
Merge pull request #153 from splitio/update-1.0.0-rc.1
gthea Aug 28, 2025
7a57c2a
Add splitio_web folder with basic scaffolding
EmilianoSanchez Dec 17, 2025
e4ab014
Add web platform to example
EmilianoSanchez Dec 17, 2025
ab0826d
Use local path for splitio_web dependency
EmilianoSanchez Dec 17, 2025
ab1b3c3
Merge pull request #155 from splitio/FME-11223-web-support-plugin-sca…
EmilianoSanchez Dec 17, 2025
505040d
Add SDK initialization and create factory instance with JS interop
EmilianoSanchez Dec 18, 2025
ead003b
Complete the mapping of SplitConfiguration (Flutter SDK config) to JS…
EmilianoSanchez Dec 22, 2025
bf7ab85
Linter
EmilianoSanchez Dec 22, 2025
4400f26
Remove code for unsupported configs
EmilianoSanchez Dec 22, 2025
da97415
Log warning for unsupported configs
EmilianoSanchez Dec 22, 2025
eb71ff5
Add tests
EmilianoSanchez Dec 22, 2025
c426299
Merge pull request #157 from splitio/FME-11223-web-support-factory-si…
EmilianoSanchez Dec 23, 2025
3f64157
Implement factory.client and client.getTreatment methods
EmilianoSanchez Dec 23, 2025
3d04068
Add test with evaluation options
EmilianoSanchez Dec 23, 2025
029e9f1
Rename parameter from `areAttributes` to `isAttributes` for consistency
EmilianoSanchez Dec 26, 2025
62797f9
Move conversion utils to production code, for reusability
EmilianoSanchez Dec 26, 2025
20155dd
Merge pull request #158 from splitio/FME-11223-web-support-configuration
EmilianoSanchez Dec 26, 2025
ab03300
Merge branch 'FME-11223-web-support_baseline' into FME-11223-web-supp…
EmilianoSanchez Dec 26, 2025
ef30e67
Merge branch 'FME-11223-web-support-unsupported-configs' into FME-112…
EmilianoSanchez Dec 26, 2025
3518c16
Merge pull request #159 from splitio/FME-11223-web-support-unsupporte…
EmilianoSanchez Dec 26, 2025
c420659
Add getClient method tests
EmilianoSanchez Dec 26, 2025
a8e51fb
Merge pull request #160 from splitio/FME-11223-web-support-client-eva…
EmilianoSanchez Dec 26, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 2 additions & 0 deletions .github/workflows/test.yml
Original file line number Diff line number Diff line change
Expand Up @@ -25,3 +25,5 @@ jobs:
run: cd splitio_android/; flutter test
- name: Run flutter splitio_ios test
run: cd splitio_ios/; flutter test
- name: Run flutter splitio_web test
run: cd splitio_web/; flutter test --platform=chrome
10 changes: 10 additions & 0 deletions splitio/CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,3 +1,13 @@
# 1.0.0 (Aug 14, 2025)
- Updated Android SDK to `5.3.1` & iOS SDK to `3.3.2`
- Added support for rule-based segments. These segments determine membership at runtime by evaluating their configured rules against the user attributes provided to the SDK.
- Added support for feature flag prerequisites. This allows customers to define dependency conditions between flags, which are evaluated before any allowlists or targeting rules.
- Added two new configuration options to control the behavior of the persisted rollout plan cache. Use `rolloutCacheConfiguration` in the config.
- Added a new optional argument to the client `getTreatment` methods to allow passing additional evaluation options, such as a map of properties to append to the generated impressions sent to Split backend. Read more in our docs.
- Added support for the new impressions tracking toggle available on feature flags, both respecting the setting and including the new field being returned on SplitView type objects. Read more in our docs.

# 1.0.0-rc.1 (Aug 14, 2025)

# 0.2.0 (Nov 6, 2024)
* Added support for targeting rules based on large segments.
* BREAKING CHANGE (for Split Proxy users):
Expand Down
71 changes: 47 additions & 24 deletions splitio/example/pubspec.lock
Original file line number Diff line number Diff line change
Expand Up @@ -75,30 +75,35 @@ packages:
description: flutter
source: sdk
version: "0.0.0"
flutter_web_plugins:
dependency: transitive
description: flutter
source: sdk
version: "0.0.0"
leak_tracker:
dependency: transitive
description:
name: leak_tracker
sha256: "6bb818ecbdffe216e81182c2f0714a2e62b593f4a4f13098713ff1685dfb6ab0"
sha256: "33e2e26bdd85a0112ec15400c8cbffea70d0f9c3407491f672a2fad47915e2de"
url: "https://pub.dev"
source: hosted
version: "10.0.9"
version: "11.0.2"
leak_tracker_flutter_testing:
dependency: transitive
description:
name: leak_tracker_flutter_testing
sha256: f8b613e7e6a13ec79cfdc0e97638fddb3ab848452eff057653abd3edba760573
sha256: "1dbc140bb5a23c75ea9c4811222756104fbcd1a27173f0c34ca01e16bea473c1"
url: "https://pub.dev"
source: hosted
version: "3.0.9"
version: "3.0.10"
leak_tracker_testing:
dependency: transitive
description:
name: leak_tracker_testing
sha256: "6ba465d5d76e67ddf503e1161d1f4a6bc42306f9d66ca1e8f079a47290fb06d3"
sha256: "8d5a2d49f4a66b49744b23b018848400d23e54caf9463f4eb20df3eb8acb2eb1"
url: "https://pub.dev"
source: hosted
version: "3.0.1"
version: "3.0.2"
lints:
dependency: transitive
description:
Expand Down Expand Up @@ -127,10 +132,10 @@ packages:
dependency: transitive
description:
name: meta
sha256: e3641ec5d63ebf0d9b41bd43201a66e3fc79a65db5f61fc181f04cd27aab950c
sha256: "23f08335362185a5ea2ad3a4e597f1375e78bce8a040df5c600c8d3552ef2394"
url: "https://pub.dev"
source: hosted
version: "1.16.0"
version: "1.17.0"
path:
dependency: transitive
description:
Expand Down Expand Up @@ -166,28 +171,38 @@ packages:
path: ".."
relative: true
source: path
version: "1.0.0-rc.1"
version: "1.0.0"
splitio_android:
dependency: transitive
description:
path: "../../splitio_android"
relative: true
source: path
version: "1.0.0-rc.1"
name: splitio_android
sha256: "344bf82de6694cffb8dd80a96ee734e31bb838d2b4693fb046e0fc98e31512ca"
url: "https://pub.dev"
source: hosted
version: "1.0.0"
splitio_ios:
dependency: transitive
description:
path: "../../splitio_ios"
relative: true
source: path
version: "1.0.0-rc.1"
name: splitio_ios
sha256: "1c078bc49bf7b30df6ca50accb6a9eecf592ec607e20e77b1c6ecdabc7a44dc9"
url: "https://pub.dev"
source: hosted
version: "1.0.0"
splitio_platform_interface:
dependency: transitive
description:
path: "../../splitio_platform_interface"
name: splitio_platform_interface
sha256: "8bcb1cab9f5fffb7b79cfeeaf6c80d82f8ede55c8d6ca7578ec78653f3f9e499"
url: "https://pub.dev"
source: hosted
version: "2.0.0"
splitio_web:
dependency: transitive
description:
path: "../../splitio_web"
relative: true
source: path
version: "2.0.0-rc.1"
version: "1.0.0"
stack_trace:
dependency: transitive
description:
Expand Down Expand Up @@ -224,18 +239,18 @@ packages:
dependency: transitive
description:
name: test_api
sha256: fb31f383e2ee25fbbfe06b40fe21e1e458d14080e3c67e7ba0acfde4df4e0bbd
sha256: ab2726c1a94d3176a45960b6234466ec367179b87dd74f1611adb1f3b5fb9d55
url: "https://pub.dev"
source: hosted
version: "0.7.4"
version: "0.7.7"
vector_math:
dependency: transitive
description:
name: vector_math
sha256: "80b3257d1492ce4d091729e3a67a60407d227c27241d6927be0130c98e741803"
sha256: d530bd74fea330e6e364cda7a85019c434070188383e1cd8d9777ee586914c5b
url: "https://pub.dev"
source: hosted
version: "2.1.4"
version: "2.2.0"
vm_service:
dependency: transitive
description:
Expand All @@ -244,6 +259,14 @@ packages:
url: "https://pub.dev"
source: hosted
version: "15.0.0"
web:
dependency: transitive
description:
name: web
sha256: "97da13628db363c635202ad97068d47c5b8aa555808e7a9411963c533b449b27"
url: "https://pub.dev"
source: hosted
version: "0.5.1"
sdks:
dart: ">=3.7.0-0 <4.0.0"
dart: ">=3.8.0-0 <4.0.0"
flutter: ">=3.18.0-18.0.pre.54"
Binary file added splitio/example/web/favicon.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added splitio/example/web/icons/Icon-192.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added splitio/example/web/icons/Icon-512.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added splitio/example/web/icons/Icon-maskable-192.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added splitio/example/web/icons/Icon-maskable-512.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
39 changes: 39 additions & 0 deletions splitio/example/web/index.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,39 @@
<!DOCTYPE html>
<html>
<head>
<!--
If you are serving your web app in a path other than the root, change the
href value below to reflect the base path you are serving from.

The path provided below has to start and end with a slash "/" in order for
it to work correctly.

For more details:
* https://developer.mozilla.org/en-US/docs/Web/HTML/Element/base

This is a placeholder for base href that will be replaced by the value of
the `--base-href` argument provided to `flutter build`.
-->
<base href="$FLUTTER_BASE_HREF">

<meta charset="UTF-8">
<meta content="IE=Edge" http-equiv="X-UA-Compatible">
<meta name="description" content="A new Flutter project.">

<!-- iOS meta tags & icons -->
<meta name="mobile-web-app-capable" content="yes">
<meta name="apple-mobile-web-app-status-bar-style" content="black">
<meta name="apple-mobile-web-app-title" content="splitio_example">
<link rel="apple-touch-icon" href="icons/Icon-192.png">

<!-- Favicon -->
<link rel="icon" type="image/png" href="favicon.png"/>

<title>splitio_example</title>
<link rel="manifest" href="manifest.json">
<!-- <script type="text/javascript" src="//cdn.split.io/sdk/split-browser-1.6.0.full.min.js"></script> -->
</head>
<body>
<script src="flutter_bootstrap.js" async></script>
</body>
</html>
35 changes: 35 additions & 0 deletions splitio/example/web/manifest.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
{
"name": "splitio_example",
"short_name": "splitio_example",
"start_url": ".",
"display": "standalone",
"background_color": "#0175C2",
"theme_color": "#0175C2",
"description": "A new Flutter project.",
"orientation": "portrait-primary",
"prefer_related_applications": false,
"icons": [
{
"src": "icons/Icon-192.png",
"sizes": "192x192",
"type": "image/png"
},
{
"src": "icons/Icon-512.png",
"sizes": "512x512",
"type": "image/png"
},
{
"src": "icons/Icon-maskable-192.png",
"sizes": "192x192",
"type": "image/png",
"purpose": "maskable"
},
{
"src": "icons/Icon-maskable-512.png",
"sizes": "512x512",
"type": "image/png",
"purpose": "maskable"
}
]
}
16 changes: 8 additions & 8 deletions splitio/pubspec.yaml
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
publish_to: none # TODO
name: splitio
description: Official plugin for split.io, the platform for controlled rollouts, which serves features to your users via feature flags to manage your complete customer experience.
version: 1.0.0-rc.1
version: 1.0.0
homepage: https://split.io/
repository: https://github.com/splitio/flutter-sdk-plugin/tree/main/splitio/

Expand All @@ -16,16 +15,17 @@ flutter:
default_package: splitio_android
ios:
default_package: splitio_ios
web:
default_package: splitio_web

dependencies:
flutter:
sdk: flutter
splitio_android: # ^1.0.0-rc.1
path: ../splitio_android
splitio_ios: # ^1.0.0-rc.1
path: ../splitio_ios
splitio_platform_interface: # ^2.0.0-rc.1
path: ../splitio_platform_interface
splitio_android: ^1.0.0
splitio_ios: ^1.0.0
splitio_web: # ^1.0.0
path: ../splitio_web # @TODO remove when splitio_web is published
splitio_platform_interface: ^2.0.0
dev_dependencies:
flutter_test:
sdk: flutter
Expand Down
5 changes: 5 additions & 0 deletions splitio_android/CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,3 +1,8 @@
# 1.0.0 (Aug 14, 2025)
- Updated Android SDK to `5.3.1`.

# 1.0.0-rc.1 (Aug 14, 2025)

# 0.2.0 (Nov 6, 2024)
* Updated Android SDK to `5.0.0`

Expand Down
5 changes: 2 additions & 3 deletions splitio_android/pubspec.yaml
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
name: splitio_android
description: The official Android implementation of splitio Flutter plugin.
repository: https://github.com/splitio/flutter-sdk-plugin/tree/main/splitio_android
version: 1.0.0-rc.1
version: 1.0.0

environment:
sdk: ">=2.16.2 <4.0.0"
Expand All @@ -19,8 +19,7 @@ flutter:
dependencies:
flutter:
sdk: flutter
splitio_platform_interface: # ^2.0.0-rc.1
path: ../splitio_platform_interface
splitio_platform_interface: ^2.0.0

dev_dependencies:
flutter_test:
Expand Down
5 changes: 5 additions & 0 deletions splitio_ios/CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,3 +1,8 @@
# 1.0.0 (Aug 14, 2025)
- iOS SDK to `3.3.2`

# 1.0.0-rc.1 (Aug 14, 2025)

# 0.2.0 (Nov 6, 2024)
* Updated iOS SDK to `3.0.0`

Expand Down
5 changes: 2 additions & 3 deletions splitio_ios/pubspec.yaml
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
name: splitio_ios
description: The official iOS implementation of splitio Flutter plugin.
repository: https://github.com/splitio/flutter-sdk-plugin/tree/main/splitio_ios
version: 1.0.0-rc.1
version: 1.0.0

environment:
sdk: ">=2.16.2 <4.0.0"
Expand All @@ -18,8 +18,7 @@ flutter:
dependencies:
flutter:
sdk: flutter
splitio_platform_interface: # ^2.0.0-rc.1
path: ../splitio_platform_interface
splitio_platform_interface: ^2.0.0

dev_dependencies:
flutter_test:
Expand Down
4 changes: 4 additions & 0 deletions splitio_platform_interface/CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,3 +1,7 @@
# 2.0.0 (Aug 14, 2025)

# 2.0.0-rc.1 (Aug 14, 2025)

# 1.5.0 (Oct 18, 2024)
* Added certificate pinning functionality. This feature allows you to pin a certificate to the SDK, ensuring that the SDK only communicates with servers that present this certificate. Read more in our documentation.

Expand Down
8 changes: 4 additions & 4 deletions splitio_platform_interface/lib/split_configuration.dart
Original file line number Diff line number Diff line change
Expand Up @@ -21,15 +21,15 @@ class SplitConfiguration {
///
/// [eventFlushInterval] When using .track, how often the events queue is flushed to Split servers.
///
/// [eventsPerPush] Maximum size of the batch to push events.
/// [eventsPerPush] Maximum size of the batch to push events. Not supported in Web.
///
/// [trafficType] The default traffic type for events tracked using the track method. If not specified, every track call should specify a traffic type.
///
/// [enableDebug] (Deprecated; use logLevel instead) If true, the SDK will log debug messages to the console.
///
/// [streamingEnabled] Boolean flag to enable the streaming service as default synchronization mechanism when in foreground. In the event of an issue with streaming, the SDK will fallback to the polling mechanism. If false, the SDK will poll for changes as usual without attempting to use streaming.
///
/// [persistentAttributesEnabled] Enables saving attributes on persistent cache which is loaded as part of the SDK_READY_FROM_CACHE flow. All functions that mutate the stored attributes map affect the persistent cache.
/// [persistentAttributesEnabled] Enables saving attributes on persistent cache which is loaded as part of the SDK_READY_FROM_CACHE flow. All functions that mutate the stored attributes map affect the persistent cache. Not supported in Web.
///
/// [impressionListener] Enables impression listener. If true, generated impressions will be streamed in the impressionsStream() method of Splitio.
///
Expand All @@ -41,13 +41,13 @@ class SplitConfiguration {
///
/// [userConsent] User consent status used to control the tracking of events and impressions. Possible values are [UserConsent.granted], [UserConsent.declined], and [UserConsent.unknown].
///
/// [encryptionEnabled] If set to true, the local database contents is encrypted. Defaults to false.
/// [encryptionEnabled] If set to true, the local database contents is encrypted. Defaults to false. Not supported in Web.
///
/// [logLevel] Enables logging according to the level specified. Options are [SplitLogLevel.verbose], [SplitLogLevel.none], [SplitLogLevel.debug], [SplitLogLevel.info], [SplitLogLevel.warning], and [SplitLogLevel.error].
///
/// [readyTimeout] Maximum amount of time in seconds to wait before firing the SDK_READY_TIMED_OUT event. Defaults to 10 seconds.
///
/// [certificatePinningConfiguration] Certificate pinning configuration. Pins need to have the format of a base64 SHA-256 or base64 SHA-1 hashes of the SPKI (ex.: "sha256/7HIpactkIAq2Y49orFOOQKurWxmmSFZhBCoQYcRhJ3Y=").
/// [certificatePinningConfiguration] Certificate pinning configuration. Pins need to have the format of a base64 SHA-256 or base64 SHA-1 hashes of the SPKI (ex.: "sha256/7HIpactkIAq2Y49orFOOQKurWxmmSFZhBCoQYcRhJ3Y="). Not supported in Web.
SplitConfiguration({
int? featuresRefreshRate,
int? segmentsRefreshRate,
Expand Down
2 changes: 1 addition & 1 deletion splitio_platform_interface/lib/split_view.dart
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,7 @@ class SplitView {
this.impressionsDisabled = false,
this.prerequisites = const <Prerequisite>{}]);

static SplitView? fromEntry(Map<dynamic, dynamic?>? entry) {
static SplitView? fromEntry(Map<dynamic, dynamic>? entry) {
if (entry == null || entry.isEmpty) {
return null;
}
Expand Down
2 changes: 1 addition & 1 deletion splitio_platform_interface/pubspec.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@ name: splitio_platform_interface
description: A common platform interface for the splitio plugin.
# NOTE: We strongly prefer non-breaking changes, even at the expense of a
# less-clean API. See https://flutter.dev/go/platform-interface-breaking-changes
version: 2.0.0-rc.1
version: 2.0.0
repository: https://github.com/splitio/flutter-sdk-plugin/tree/main/splitio_platform_interface

environment:
Expand Down
Loading