-
Notifications
You must be signed in to change notification settings - Fork 0
Home
kirich1409 edited this page May 18, 2026
·
2 revisions
Featured is a Kotlin Multiplatform configuration management library for Android, iOS (via SKIE), and JVM. It provides a type-safe, reactive feature flag system with swappable local and remote providers, declared through a Gradle DSL that generates all boilerplate at build time.
-
Type-safe flags. Every flag has a declared type (
Boolean,Int, …) and a default value. The Gradle plugin generates typed accessor extensions onConfigValues— no string keys, no unchecked casts. -
Dead-code elimination in release builds. A flag declared with
default = falsemakes every code path behind its generated accessor unreachable at release time. The Gradle plugin emits R8-assumevaluesrules (Android/JVM) and an xcconfig file withDISABLE_<FLAG>Swift compilation conditions (iOS) so the respective compilers physically strip the disabled branches from the binary. -
Reactive by default. Every flag value is observable via
Flow. Compose and SwiftUI integrations are included. - Multiple providers. Swap between DataStore, SharedPreferences, Firebase Remote Config, or a custom provider without changing flag-reading code.
- Debug UI included. A ready-made Compose screen lets QA and developers override flags at runtime in debug builds.
- Getting Started — install, declare one flag, read it
- Installation — full artifact list for Android, iOS, and JVM
-
Declaring Flags — the
featured { localFlags { } }DSL and generated code - Reading Flags (Kotlin) — one-shot, reactive, Compose, override/reset
- iOS Usage — Swift API via SKIE
- Providers — all built-in providers plus custom provider interface
- Release Optimization — overview and links to platform details
-
Android — R8 DCE —
-assumevaluesgeneration and verification -
iOS — xcconfig DCE — xcconfig generation, Xcode setup,
#if !DISABLE_…
-
Multi-Module Setup — plugin per module,
scanAllLocalFlags, sharedConfigValues - Configuration Cache — CC support status and known gaps
- Best Practices — flag lifecycle, naming, testing, anti-patterns
- Known Limitations — current gaps and workarounds
-
Debug UI —
featured-registryandfeatured-debug-ui - Sample App — running the sample with DataStore, SharedPreferences, or Firebase