Use and manage cozy feature flags. Flags can be toggled for a cozy instance, a context or globally. See the stack documentation on flags for more information.
- ✅ jQuery like API for getter/setter
- ✅ Devtool component to set/unset flags
npm install --save cozy-flags
# or yarn add cozy-flags
A CozyClient plugin is exported that
- initializes flags on client's login
- resets them on client's logout
import flag from 'cozy-flags'
client.registerPlugin(flag.plugin)
ℹ️ It will fetch server flags for consumption by the app
- either from DOM data (if
data-cozy={{ .CozyData }}
ordata-flags={{ .Flags }}
, on web - or by fetching data from the server (on mobile)
import flag from 'cozy-flags'
if (flag('my-feature')) {
enableMyFeature()
}
The FlagSwitcher
shows all flags in use and displays all
flags in use.
import flag from 'cozy-flags'
import FlagSwitcher from 'cozy-flags/dist/FlagSwitcher'
if (process.env.NODE_ENV !== 'production'
&& flag('switcher') === null) {
flag('switcher', true) // set default flag in dev mode
}
const App = () => {
return (
<div>
{ flag('switcher') && <FlagSwitcher /> }
<MyApp />
</div>
)
}
The FlagSwitcher
component helps toggling the flags.
It is possible to handle flags enabled at build time. Your app should just
provide a global __ENABLED_FLAGS__
array with flag names that should be
enabled. If such a global exists, cozy-flags
will iterate on the array and
enable all the flags it contains when it is imported.