juice_flags 0.2.0
juice_flags: ^0.2.0 copied to clipboard
Feature flags / remote config as a Juice bloc, behind a swappable source seam with per-flag selective rebuilds.
Changelog #
All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
0.2.0 - 2026-08-12 #
Changed #
- Requires
juice ^1.6.0. - Declared concurrency for every event. Initialization and refresh are
droppable; fetched updates, failures, and override mutations aresequential. Overlapping refresh requests now share one remote fetch.
0.1.0 - 2026-05-28 #
Added #
- Initial release.
FlagsBloc— feature flags / remote config with per-flag selective rebuilds: a widget bound toFlagsGroups.flag('x')rebuilds only when that flag's value changes. A fetch diffs old vs new and emits only the changed flags' groups.FlagsSource— vendor seam (fetch()+ optionalchanges()stream), so Firebase Remote Config / LaunchDarkly / an endpoint / a local map are all just implementations. DefaultStaticFlagsSource(in-memory).- Layered resolution —
defaults < fetched < overrides; reads always resolve via typed accessorsboolFlag/stringFlag/intFlag/doubleFlag/json<T>. - Fail-loud, read-safe fetch — a failure surfaces in
state.error(logged), while reads keep falling back to last-known/defaults. - Local overrides —
setFlagOverride/clearFlagOverride(dev toggles). - Live updates — subscribes to
source.changes()when provided. - Rebuild groups —
flags:flag:<key>,flags:any,flags:status.