@lectra/ld-react-feature-flags
    TypeScript icon, indicating that this package has built-in type declarations

    1.1.0 • Public • Published

    ld-react-feature-flags

    Build Status NPM code style: prettier

    Integrate Launch Darkly in your React app in a breeze

    Install

    This project requires React 16.3.0 or later.

    To use ld-react-feature-flags with your React app, install it as a dependency:

    npm install @lectra/ld-react-feature-flags

    Getting Started

    FlagsProvider

    Wrap your root component with FlagsProvider to make LaunchDarkly client instance accessible to all children components thanks to React context.

    import { FlagsProvider } from '@lectra/ld-react-feature-flags';
    
    ReactDOM.render(
      <FlagsProvider user={user} clientkey="myClientKey" loadingComponent ={<div>please wait</div>}>
        <App />
      </FlagsProvider>,
      document.getElementById('root')
    );
    Prop Type Required Description
    user Object true User information
    clientkey String true Your LaunchDarkly secret key
    onFlagsChange function false Handler for flag change
    loadingComponent Component false Loading component / string

    Flags

    All Flags components get the ldClient instance thanks to the FlagsProvider component.

    To render a node or a component based on your flags, you must pass a flag props.

    The Flags component will ask to LaunchDarkly if the given flag is active or not, depending on you LaunchDarkly settings.

    You have the control on what will be rendered:

    • If the flag is active, you can wrapped the desired component to render as children to a Flag component or use a renderOn props.

    • If the flag isn't active, nothing will be rendered unless you pass a component as fallback by the fallbackRender props.

    Prop Type Required Description
    flag String true The flag to check
    children Element/Component false Return the component if the flag given by props is active
    renderOn Function false Return the given component if the flag is active
    fallbackRender Function false Return the given component if the flag is inactive

    with children props

    import { Flags } from '@lectra/ld-react-feature-flags';
    
    <Flags
      flag="beta-only"
    >
      <h4>for beta users</h4>
    </Flags>

    with renderOn props

    import { Flags } from '@lectra/ld-react-feature-flags';
    
    <Flags
      flag="beta-only"
      renderOn={flag => <h4>for beta users</h4>}
    />

    with renderOn props and fallbackRender props as fallback

    import { Flags } from '@lectra/ld-react-feature-flags';
    
    <Flags
      flag="beta-only"
      renderOn={flag => <h4>for beta users</h4>}
      fallbackRender={flag => (
        <h4>for regular users</h4>
      )}
    />

    with multivariant flag

    The flag given by props is a multivariant flag. See the LaunchDarkly doc for more details.

    If the flag is active, LD won't return a boolean value but instead a custom value. In our case a string that represents a color. We can use it directly to style our h1 title.

    import { Flags } from '@lectra/ld-react-feature-flags';
    
    <Flags
      flag="header-bg-color"
      renderOn={flag => {
        return (
          <h1 style={{ color: flag.headerBgColor }}>
            My awesome multivariant flag
          </h1>
        );
      }}
    />

    WithFlags

    Same as Flags components but in a Higher Order Component way.

    WithFlags([flag])([ComponentToRenderIfTrue][ComponentToRenderIfFalse])

    Arguments Type Required Description
    flag String true The flag to check
    ComponentToRenderIfTrue React Component true The React component to render if the flag is true or is a multivariant flag
    ComponentToRenderIfFalse React Component false The React component to render if the flag is false

    Component render based on flag value

    import { WithFlags } from '@lectra/ld-react-feature-flags';
    
    const HBeta = () => <h4>for beta users</h4>;
    const HeaderFeatureFlipped = WithFlags("beta-only")(HBeta)
    
    <HeaderFeatureFlipped></HeaderFeatureFlipped>

    Component render toggled on flag value

    import { WithFlags } from '@lectra/ld-react-feature-flags';
    
    const HBeta = () => <h4>for beta users</h4>;
    const HStandard = () => <h4>for standard users</h4>;
    const HeaderFeatureFlipped = WithFlags("beta-only")(HBeta, HStandard)
    
    <HeaderFeatureFlipped></HeaderFeatureFlipped>

    Component render with multivariant flag

    import { WithFlags } from '@lectra/ld-react-feature-flags';
    
    const HeaderWithColor = ({headerBgColor}) => (
        <h1 style={{ color: headerBgColor }}>
            My awesome multivariant flag
        </h1>);
    const HeaderFeatureFlippedWithColor = WithFlags("header-bg-color")(HeaderWithColor)
    
    <HeaderFeatureFlippedWithColor></HeaderFeatureFlippedWithColor>

    Example

    This project contains some examples that you could run.

    git clone https://github.com/lectra-tech/ld-react-feature-flags.git
    cd ld-react-feature-flags/example
    npm install
    npm start

    License

    MIT

    Install

    npm i @lectra/ld-react-feature-flags

    DownloadsWeekly Downloads

    17

    Version

    1.1.0

    License

    MIT

    Unpacked Size

    268 kB

    Total Files

    7

    Last publish

    Collaborators

    • rd.npmdeploy