coproduct 1.0.0
coproduct: ^1.0.0 copied to clipboard
Flutter SDK for Coproduct, a feature management and experimentation platform.
1.0.0 - 2026-09-30 #
First stable release of the Coproduct Flutter SDK. It downloads your feature flags, evaluates targeting on the device, and serves values synchronously.
It needs Flutter 3.38.1 or later (Dart 3.10), iOS 15.0 or later, and Android 7.0 (API 24) or later. The package ships prebuilt native libraries, so your app builds without a Rust toolchain. iOS simulator builds work on both Apple Silicon and Intel Macs.
- Reading flags.
getBool,getString,getInt,getNumber, andgetJsonreturn a value straight away and never throw. The SDK saves the flags it downloads, so after the first launchinitializereturns without waiting for the network, and a flag it has never seen returns your default value. - Reacting to changes.
observeBool,observeString,observeInt,observeNumber, andobserveJsonreturn aFlagObservation, aValueListenablethat updates when new flags arrive or the identity or attributes change.CoproductFlagBuilderbuilds a widget from a flag and manages that lifecycle for you, andCoproductScopecarries the client down the widget tree. - Identity and attributes.
identify,setContext,updateAttributes,removeAttributes, andsignOutchange who is being targeted, and every flag re-evaluates on the device with no network request. Before sign-in the SDK uses an anonymous identifier kept in secure storage. - Automatic attributes. The SDK fills in
platform,os_version,app_version,app_build,locale,timezone,device_type,network_type,first_seen_at, andsession_countwith no code from you.network_typeupdates when the connection changes. A value that is not ready wheninitializereturns is applied when it arrives, and observations re-emit. - Testing.
package:coproduct/testing.dartprovidesCoproductTestHarness, a realCoproductClientbacked by values a widget test sets directly, with no SDK key, no network, and no native library. - Errors. Exceptions the SDK throws implement
CoproductException. They are thrown for mistakes in your code, or whenCoproduct.shutdowninterruptsinitialize, never for network problems. A missing platform plugin or an unreadable session record is reported throughFlutterError.onErrorinstead. No error includes your SDK key or any part of a key the SDK rejected. - Privacy. The package ships an Apple privacy manifest declaring its use of
UserDefaultsand of file timestamps for its flag cache. On Android it declaresACCESS_NETWORK_STATE, a normal permission granted at install with no prompt. The README's privacy section lists what is stored on the device and what is sent to Coproduct.
This release does not include multi-flag reads, evaluation details, or experiment tracking, and it does not record which variation a user saw.