Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Overriding Feature Flag Manually #53

Closed
mustafashabib opened this issue Oct 29, 2020 · 14 comments
Closed

Overriding Feature Flag Manually #53

mustafashabib opened this issue Oct 29, 2020 · 14 comments

Comments

@mustafashabib
Copy link

mustafashabib commented Oct 29, 2020

Is your feature request related to a problem? Please describe.
I'd love to know how to manually override a feature flag using the useFlags hook to force certain variations for testing (headless browser for example) purposes

Describe the solution you'd like
Set a localStorage var or cookie and have the LD react client bias to using those values before checking with the LD service.

Describe alternatives you've considered
Creating our own useFlags hook that wraps the LD hook but which has this behavior.

@mustafashabib mustafashabib changed the title Overriding Feature Overriding Feature Flag Manually Oct 29, 2020
@bwoskow-ld
Copy link
Member

Hi @mustafashabib ,

Are you using jest? If so check out https://github.com/launchdarkly-labs/jest-launchdarkly-mock to manually set flag values in your tests.

@mustafashabib
Copy link
Author

Thanks @bwoskow-ld - that's definitely useful. We were thinking of how we might test this for cypress end to end tests (or even to manually override just for dev purposes while we're working through a new feature to force a specific variant).

Thanks

@bwoskow-ld
Copy link
Member

Is the jest-launchdarkly-mock library sufficient for your testing use case? Let me know if there's anything else or if I can close this ticket.

As for overriding values for development, our best practice is to have a unique LaunchDarkly environment per developer on your team. This way, each developer can use the LaunchDarkly UI to manage flags for their local environment without impacting any other developers or environments.

@bwoskow-ld
Copy link
Member

@mustafashabib I'm going to close this issue now. Let me know if there's anything else on the topic you want to add.

LaunchDarklyReleaseBot added a commit that referenced this issue Feb 18, 2022
* Initial commit

* Delete extraneous files from lib.

* Update initLDClient.test.ts

* Update withLDProvider.tsx (#18)

* update JS SDK dependency to 2.16.3

* use JS SDK 2.17.0

* improve tests to clarify which options we're passing in and which ones are added by the wrapper

* set wrapperName to react-client-sdk

* lint

* Update withLDProvider.test.tsx

* update JS SDK to 2.17.5 + a few dev dependency bumps (#21)

* downgrade typescript to 3.8.3 (#22)

* [Fixes for] Expose LDProvider as a standalone component (#31)

* remove startsWith usage (#23)

* Fix the broken build (#24)

* Expose ld provider (#40)

* Add tests for the LDProvider

* Add LDProvider component

* Add LDProvider to main export

* Update provider tests

* Remove unused EnhancedComponent

* Abstract function to generate react options

* add waitForUserToInitializeClient flag to Provider

* rename to LDProvider.tsx

* fix tests

* remove async from componentDidMount

* fixes from CR

* add test

* cleanup

* update types for componentDidUpdate

* await initLDClient

Co-authored-by: Nicholas Mitchell <nicholas@netlify.com>
Co-authored-by: Martin Heller <mheller@testo.de>

* update to JS SDK 2.18.0 (adds disableSyncEventPost) (#25)

* 45 fix providers to respect subscribed flags (#46)

* Fixed asyncWithLDProvider.tsx and provider.tsx so that they only provide flag changes for subscribed flags.

* Removed unused imports.

* Addressed PR feedback. Fixed linting errors.

Co-authored-by: Clay Embry <cembry@atlassian.com>

* targetflags simplified logic (#26)

* remove client-side ids from examples (#27)

* update JS SDK to 2.18.1

* Fixing camelCaseKeys export (#44)

* new js-common-sdk version (#30)

* adding alias functionality (#31)

* pin typedoc to unblock our releases (#32)

* Removed the guides link

* add inlineUsersToEvents to TypeScript defs by updating js-client-sdk (#33)

* debugging

* Fix linting errors

* [ch103643] Fix examples to use local sdk

* Remove unwanted changes.

* Update package.json

* Update yarn.lock

* Update lock files.

* Update package-lock.json

* Update package-lock.json

* Update package.json

* Update link-dev.sh

Co-authored-by: Ben Woskow <48036130+bwoskow-ld@users.noreply.github.com>

* Update link-dev.sh

* Update yarn.lock

* Add react 17 peer dep (#61)

* Update common JS SDK library to use fixes for debug event generation issues. (#36)

* HOC static hoisting (#71)

* Added a test for hoisting react statics in withLDProvider HOC

* Fixed linting errors

* Fixed more linting errors

* update example app deps (#38)

* Updated asyncWithLDProvider to fetch latest flag values when the Provider renders (#39)

* Updated asyncWithLDProvider to fetch latest flag values when the Provider renders

* Fixed linting

* Updates docs URLs

* fix: improve types of withLDProvider (#97)

* [sc-107070] Include src for sourcemaps to work

* [sc-127032] Omit deferInitialization from asyncWithLDProvider config

* Removed and ignored lock files.

* Update types.ts

* Update typescript version (#44)

* Update Makefile

* Update Makefile

* Deleting test-types.ts (#45)

* [sc-132394] Add typedoc for AsyncProviderConfig (#47)

Co-authored-by: Molly <molly.jones@launchdarkly.com>

* Pass in client (#105)

* [sc134057] Fix react sdk lint errors (#48)

* remove custom TypeDoc build, use Releaser's standard logic (#49)

* update js-client-sdk to 2.20.1 for localstorage error-handling fix and others

* export more public symbols from entry point

* [sc134364] Upgrade typescript, tslint and jest. (#50)

Co-authored-by: Eli Bishop <eli@launchdarkly.com>

* update js-client-sdk to 2.20.2 for sc-142333 fix (#53)

Co-authored-by: Yusinto Ngadiman <yusinto@gmail.com>
Co-authored-by: Ben Woskow <48036130+bwoskow-ld@users.noreply.github.com>
Co-authored-by: Eli Bishop <eli@launchdarkly.com>
Co-authored-by: LaunchDarklyCI <dev@launchdarkly.com>
Co-authored-by: Martin Heller <github@technopolis.de>
Co-authored-by: Ben Woskow <bwoskow@launchdarkly.com>
Co-authored-by: bezreyhan <bezreyhan@gmail.com>
Co-authored-by: Nicholas Mitchell <nicholas@netlify.com>
Co-authored-by: Martin Heller <mheller@testo.de>
Co-authored-by: clayembry <clayembry@yahoo.com>
Co-authored-by: Clay Embry <cembry@atlassian.com>
Co-authored-by: Jonathan Felchlin <jonathan@xgecko.com>
Co-authored-by: Mac Lockard <maclockard@gmail.com>
Co-authored-by: Gavin Whelan <gwhelan@launchdarkly.com>
Co-authored-by: Nathan Waddell <45477581+NathanWaddell121107@users.noreply.github.com>
Co-authored-by: Clifford Tawiah <ctawiah@launchdarkly.com>
Co-authored-by: Cliff Tawiah <82856282+ctawiah@users.noreply.github.com>
Co-authored-by: LaunchDarklyReleaseBot <launchdarklyreleasebot@launchdarkly.com>
Co-authored-by: Ember Stevens <ember.stevens@launchdarkly.com>
Co-authored-by: ember-stevens <79482775+ember-stevens@users.noreply.github.com>
Co-authored-by: Derek Sifford <dereksifford@gmail.com>
Co-authored-by: Jaz White <jwhite@launchdarkly.com>
Co-authored-by: Molly <molly.jones@launchdarkly.com>
Co-authored-by: Tim Lee <tim.lee@red-badger.com>
LaunchDarklyReleaseBot added a commit that referenced this issue Apr 15, 2022
* Initial commit

* Delete extraneous files from lib.

* Update initLDClient.test.ts

* Update withLDProvider.tsx (#18)

* update JS SDK dependency to 2.16.3

* use JS SDK 2.17.0

* improve tests to clarify which options we're passing in and which ones are added by the wrapper

* set wrapperName to react-client-sdk

* lint

* Update withLDProvider.test.tsx

* update JS SDK to 2.17.5 + a few dev dependency bumps (#21)

* downgrade typescript to 3.8.3 (#22)

* [Fixes for] Expose LDProvider as a standalone component (#31)

* remove startsWith usage (#23)

* Fix the broken build (#24)

* Expose ld provider (#40)

* Add tests for the LDProvider

* Add LDProvider component

* Add LDProvider to main export

* Update provider tests

* Remove unused EnhancedComponent

* Abstract function to generate react options

* add waitForUserToInitializeClient flag to Provider

* rename to LDProvider.tsx

* fix tests

* remove async from componentDidMount

* fixes from CR

* add test

* cleanup

* update types for componentDidUpdate

* await initLDClient

Co-authored-by: Nicholas Mitchell <nicholas@netlify.com>
Co-authored-by: Martin Heller <mheller@testo.de>

* update to JS SDK 2.18.0 (adds disableSyncEventPost) (#25)

* 45 fix providers to respect subscribed flags (#46)

* Fixed asyncWithLDProvider.tsx and provider.tsx so that they only provide flag changes for subscribed flags.

* Removed unused imports.

* Addressed PR feedback. Fixed linting errors.

Co-authored-by: Clay Embry <cembry@atlassian.com>

* targetflags simplified logic (#26)

* remove client-side ids from examples (#27)

* update JS SDK to 2.18.1

* Fixing camelCaseKeys export (#44)

* new js-common-sdk version (#30)

* adding alias functionality (#31)

* pin typedoc to unblock our releases (#32)

* Removed the guides link

* add inlineUsersToEvents to TypeScript defs by updating js-client-sdk (#33)

* debugging

* Fix linting errors

* [ch103643] Fix examples to use local sdk

* Remove unwanted changes.

* Update package.json

* Update yarn.lock

* Update lock files.

* Update package-lock.json

* Update package-lock.json

* Update package.json

* Update link-dev.sh

Co-authored-by: Ben Woskow <48036130+bwoskow-ld@users.noreply.github.com>

* Update link-dev.sh

* Update yarn.lock

* Add react 17 peer dep (#61)

* Update common JS SDK library to use fixes for debug event generation issues. (#36)

* HOC static hoisting (#71)

* Added a test for hoisting react statics in withLDProvider HOC

* Fixed linting errors

* Fixed more linting errors

* update example app deps (#38)

* Updated asyncWithLDProvider to fetch latest flag values when the Provider renders (#39)

* Updated asyncWithLDProvider to fetch latest flag values when the Provider renders

* Fixed linting

* Updates docs URLs

* fix: improve types of withLDProvider (#97)

* [sc-107070] Include src for sourcemaps to work

* [sc-127032] Omit deferInitialization from asyncWithLDProvider config

* Removed and ignored lock files.

* Update types.ts

* Update typescript version (#44)

* Update Makefile

* Update Makefile

* Deleting test-types.ts (#45)

* [sc-132394] Add typedoc for AsyncProviderConfig (#47)

Co-authored-by: Molly <molly.jones@launchdarkly.com>

* Pass in client (#105)

* [sc134057] Fix react sdk lint errors (#48)

* remove custom TypeDoc build, use Releaser's standard logic (#49)

* update js-client-sdk to 2.20.1 for localstorage error-handling fix and others

* export more public symbols from entry point

* [sc134364] Upgrade typescript, tslint and jest. (#50)

Co-authored-by: Eli Bishop <eli@launchdarkly.com>

* update js-client-sdk to 2.20.2 for sc-142333 fix (#53)

* First commit. TODO: migrate enzyme to rtl.

* Removed enzyme. Fixed prettier parentheses rule.

* Fixed broken snapshot tests. Removed unused imports.

* Update package.json

Co-authored-by: Yusinto Ngadiman <yusinto@gmail.com>
Co-authored-by: Ben Woskow <48036130+bwoskow-ld@users.noreply.github.com>
Co-authored-by: Eli Bishop <eli@launchdarkly.com>
Co-authored-by: LaunchDarklyCI <dev@launchdarkly.com>
Co-authored-by: Martin Heller <github@technopolis.de>
Co-authored-by: Ben Woskow <bwoskow@launchdarkly.com>
Co-authored-by: bezreyhan <bezreyhan@gmail.com>
Co-authored-by: Nicholas Mitchell <nicholas@netlify.com>
Co-authored-by: Martin Heller <mheller@testo.de>
Co-authored-by: clayembry <clayembry@yahoo.com>
Co-authored-by: Clay Embry <cembry@atlassian.com>
Co-authored-by: Jonathan Felchlin <jonathan@xgecko.com>
Co-authored-by: Mac Lockard <maclockard@gmail.com>
Co-authored-by: Gavin Whelan <gwhelan@launchdarkly.com>
Co-authored-by: Nathan Waddell <45477581+NathanWaddell121107@users.noreply.github.com>
Co-authored-by: Clifford Tawiah <ctawiah@launchdarkly.com>
Co-authored-by: Cliff Tawiah <82856282+ctawiah@users.noreply.github.com>
Co-authored-by: LaunchDarklyReleaseBot <launchdarklyreleasebot@launchdarkly.com>
Co-authored-by: Ember Stevens <ember.stevens@launchdarkly.com>
Co-authored-by: ember-stevens <79482775+ember-stevens@users.noreply.github.com>
Co-authored-by: Derek Sifford <dereksifford@gmail.com>
Co-authored-by: Jaz White <jwhite@launchdarkly.com>
Co-authored-by: Molly <molly.jones@launchdarkly.com>
Co-authored-by: Tim Lee <tim.lee@red-badger.com>
Co-authored-by: Louis Chan <91093020+louis-launchdarkly@users.noreply.github.com>
Co-authored-by: Louis Chan <lchan@launchdarkly.com>
LaunchDarklyReleaseBot added a commit that referenced this issue Apr 27, 2022
* Initial commit

* Delete extraneous files from lib.

* Update initLDClient.test.ts

* Update withLDProvider.tsx (#18)

* update JS SDK dependency to 2.16.3

* use JS SDK 2.17.0

* improve tests to clarify which options we're passing in and which ones are added by the wrapper

* set wrapperName to react-client-sdk

* lint

* Update withLDProvider.test.tsx

* update JS SDK to 2.17.5 + a few dev dependency bumps (#21)

* downgrade typescript to 3.8.3 (#22)

* [Fixes for] Expose LDProvider as a standalone component (#31)

* remove startsWith usage (#23)

* Fix the broken build (#24)

* Expose ld provider (#40)

* Add tests for the LDProvider

* Add LDProvider component

* Add LDProvider to main export

* Update provider tests

* Remove unused EnhancedComponent

* Abstract function to generate react options

* add waitForUserToInitializeClient flag to Provider

* rename to LDProvider.tsx

* fix tests

* remove async from componentDidMount

* fixes from CR

* add test

* cleanup

* update types for componentDidUpdate

* await initLDClient

Co-authored-by: Nicholas Mitchell <nicholas@netlify.com>
Co-authored-by: Martin Heller <mheller@testo.de>

* update to JS SDK 2.18.0 (adds disableSyncEventPost) (#25)

* 45 fix providers to respect subscribed flags (#46)

* Fixed asyncWithLDProvider.tsx and provider.tsx so that they only provide flag changes for subscribed flags.

* Removed unused imports.

* Addressed PR feedback. Fixed linting errors.

Co-authored-by: Clay Embry <cembry@atlassian.com>

* targetflags simplified logic (#26)

* remove client-side ids from examples (#27)

* update JS SDK to 2.18.1

* Fixing camelCaseKeys export (#44)

* new js-common-sdk version (#30)

* adding alias functionality (#31)

* pin typedoc to unblock our releases (#32)

* Removed the guides link

* add inlineUsersToEvents to TypeScript defs by updating js-client-sdk (#33)

* debugging

* Fix linting errors

* [ch103643] Fix examples to use local sdk

* Remove unwanted changes.

* Update package.json

* Update yarn.lock

* Update lock files.

* Update package-lock.json

* Update package-lock.json

* Update package.json

* Update link-dev.sh

Co-authored-by: Ben Woskow <48036130+bwoskow-ld@users.noreply.github.com>

* Update link-dev.sh

* Update yarn.lock

* Add react 17 peer dep (#61)

* Update common JS SDK library to use fixes for debug event generation issues. (#36)

* HOC static hoisting (#71)

* Added a test for hoisting react statics in withLDProvider HOC

* Fixed linting errors

* Fixed more linting errors

* update example app deps (#38)

* Updated asyncWithLDProvider to fetch latest flag values when the Provider renders (#39)

* Updated asyncWithLDProvider to fetch latest flag values when the Provider renders

* Fixed linting

* Updates docs URLs

* fix: improve types of withLDProvider (#97)

* [sc-107070] Include src for sourcemaps to work

* [sc-127032] Omit deferInitialization from asyncWithLDProvider config

* Removed and ignored lock files.

* Update types.ts

* Update typescript version (#44)

* Update Makefile

* Update Makefile

* Deleting test-types.ts (#45)

* [sc-132394] Add typedoc for AsyncProviderConfig (#47)

Co-authored-by: Molly <molly.jones@launchdarkly.com>

* Pass in client (#105)

* [sc134057] Fix react sdk lint errors (#48)

* remove custom TypeDoc build, use Releaser's standard logic (#49)

* update js-client-sdk to 2.20.1 for localstorage error-handling fix and others

* export more public symbols from entry point

* [sc134364] Upgrade typescript, tslint and jest. (#50)

Co-authored-by: Eli Bishop <eli@launchdarkly.com>

* update js-client-sdk to 2.20.2 for sc-142333 fix (#53)

* First commit. TODO: migrate enzyme to rtl.

* Removed enzyme. Fixed prettier parentheses rule.

* Fixed broken snapshot tests. Removed unused imports.

* Update package.json

* Update the version of the js-client-sdk

* Update patch version.

Co-authored-by: Yusinto Ngadiman <yusinto@gmail.com>
Co-authored-by: Ben Woskow <48036130+bwoskow-ld@users.noreply.github.com>
Co-authored-by: Eli Bishop <eli@launchdarkly.com>
Co-authored-by: LaunchDarklyCI <dev@launchdarkly.com>
Co-authored-by: Martin Heller <github@technopolis.de>
Co-authored-by: Ben Woskow <bwoskow@launchdarkly.com>
Co-authored-by: bezreyhan <bezreyhan@gmail.com>
Co-authored-by: Nicholas Mitchell <nicholas@netlify.com>
Co-authored-by: Martin Heller <mheller@testo.de>
Co-authored-by: clayembry <clayembry@yahoo.com>
Co-authored-by: Clay Embry <cembry@atlassian.com>
Co-authored-by: Jonathan Felchlin <jonathan@xgecko.com>
Co-authored-by: Mac Lockard <maclockard@gmail.com>
Co-authored-by: Gavin Whelan <gwhelan@launchdarkly.com>
Co-authored-by: Nathan Waddell <45477581+NathanWaddell121107@users.noreply.github.com>
Co-authored-by: Clifford Tawiah <ctawiah@launchdarkly.com>
Co-authored-by: Cliff Tawiah <82856282+ctawiah@users.noreply.github.com>
Co-authored-by: LaunchDarklyReleaseBot <launchdarklyreleasebot@launchdarkly.com>
Co-authored-by: Ember Stevens <ember.stevens@launchdarkly.com>
Co-authored-by: ember-stevens <79482775+ember-stevens@users.noreply.github.com>
Co-authored-by: Derek Sifford <dereksifford@gmail.com>
Co-authored-by: Jaz White <jwhite@launchdarkly.com>
Co-authored-by: Molly <molly.jones@launchdarkly.com>
Co-authored-by: Tim Lee <tim.lee@red-badger.com>
Co-authored-by: Louis Chan <91093020+louis-launchdarkly@users.noreply.github.com>
Co-authored-by: Louis Chan <lchan@launchdarkly.com>
Co-authored-by: Ryan Lamb <4955475+kinyoklion@users.noreply.github.com>
@nweajoseph
Copy link

nweajoseph commented Jul 1, 2022

Is the jest-launchdarkly-mock library sufficient for your testing use case? Let me know if there's anything else or if I can close this ticket.

As for overriding values for development, our best practice is to have a unique LaunchDarkly environment per developer on your team. This way, each developer can use the LaunchDarkly UI to manage flags for their local environment without impacting any other developers or environments.

this sounds cool, but in my workplace we have limited licenses. only 3 people have access to launchdarkly as users, so there's no way for all of us to use a unique environment to toggle flags arbitrarily during development. for us, some way to manually define the flag values would be ideal:

const ldProviderConfig: ProviderConfig = {
  clientSideID: process.env.LD_CLIENT_ID || '',
  user: ldAnonUser,
  options: {
    flags: {
      'flag-being-developed': true // this flag will always resolve to true in this client
      'flag-not-being-developed': false // this flag will always resolve to false in this client
    }
  },
}
const LDProvider = withLDProvider(ldProviderConfig)(App)

or something like that

@nweajoseph
Copy link

nweajoseph commented Jul 1, 2022

i originally tried to write my own context provider / wrapper that offered consumers some predefined static flag values and left the others alone, but i don't see any way to hook into withLDProvider that really allows that strategy

@mustafashabib
Copy link
Author

mustafashabib commented Jul 2, 2022

Here's what we ended up doing -- the ENABLE_LAUNCHDARKLY envvar is set on the env which our headless testing process has set to false, and we set localStorage values with any overrides we happen to be testing in the moment. This also lets us force a flag variant locally or in our other environments manually by doing something like

localStorage.setItem("override-flags", JSON.stringify({"myFlagName":  true}));
import type { LDFlagSet } from 'launchdarkly-js-sdk-common';
import { useFlags as useLDFlags } from 'launchdarkly-react-client-sdk';
import { useState } from 'react';
import { ENABLE_LAUNCHDARKLY } from '../constants/env';

const useFlags = (): LDFlagSet => {
    const getManualOverrides = (): LDFlagSet => {
        try {
            return JSON.parse(localStorage.getItem('override-flags') || '{}');
        } catch {
            return {};
        }
    };

    const [overrides, setOverrides] = useState(getManualOverrides());

    window.onstorage = (): void => {
        setOverrides(getManualOverrides());
    };

    const ldFlags = useLDFlags();

    if (ENABLE_LAUNCHDARKLY) {
        const mergedFlags = { ...ldFlags, ...(overrides as LDFlagSet) } as LDFlagSet;
        return mergedFlags;
    } else return overrides as LDFlagSet;
};

export default useFlags;

and now we just use this hook in place of the useFlags vended by the LD library.

@nweajoseph
Copy link

@mustafashabib oh i see that makes sense. you merge the static flag values after fetching the real ones.

@biggytech
Copy link

Would be ideal if we could to add some manual set flags into ProviderConfig. It is very handy for local development, for example.

@kellyrmilligan
Copy link

I think this should be re-opened. for larger teams, it is really nice to locally be able to toggle things off and on regardless of which env you're pointed to. would be nice to have something like react-query's dev tools to add flags manually and do a merge of sorts.

LaunchDarklyReleaseBot added a commit that referenced this issue Oct 5, 2022
* Initial commit

* Delete extraneous files from lib.

* Update initLDClient.test.ts

* Update withLDProvider.tsx (#18)

* update JS SDK dependency to 2.16.3

* use JS SDK 2.17.0

* improve tests to clarify which options we're passing in and which ones are added by the wrapper

* set wrapperName to react-client-sdk

* lint

* Update withLDProvider.test.tsx

* update JS SDK to 2.17.5 + a few dev dependency bumps (#21)

* downgrade typescript to 3.8.3 (#22)

* [Fixes for] Expose LDProvider as a standalone component (#31)

* remove startsWith usage (#23)

* Fix the broken build (#24)

* Expose ld provider (#40)

* Add tests for the LDProvider

* Add LDProvider component

* Add LDProvider to main export

* Update provider tests

* Remove unused EnhancedComponent

* Abstract function to generate react options

* add waitForUserToInitializeClient flag to Provider

* rename to LDProvider.tsx

* fix tests

* remove async from componentDidMount

* fixes from CR

* add test

* cleanup

* update types for componentDidUpdate

* await initLDClient

Co-authored-by: Nicholas Mitchell <nicholas@netlify.com>
Co-authored-by: Martin Heller <mheller@testo.de>

* update to JS SDK 2.18.0 (adds disableSyncEventPost) (#25)

* 45 fix providers to respect subscribed flags (#46)

* Fixed asyncWithLDProvider.tsx and provider.tsx so that they only provide flag changes for subscribed flags.

* Removed unused imports.

* Addressed PR feedback. Fixed linting errors.

Co-authored-by: Clay Embry <cembry@atlassian.com>

* targetflags simplified logic (#26)

* remove client-side ids from examples (#27)

* update JS SDK to 2.18.1

* Fixing camelCaseKeys export (#44)

* new js-common-sdk version (#30)

* adding alias functionality (#31)

* pin typedoc to unblock our releases (#32)

* Removed the guides link

* add inlineUsersToEvents to TypeScript defs by updating js-client-sdk (#33)

* debugging

* Fix linting errors

* [ch103643] Fix examples to use local sdk

* Remove unwanted changes.

* Update package.json

* Update yarn.lock

* Update lock files.

* Update package-lock.json

* Update package-lock.json

* Update package.json

* Update link-dev.sh

Co-authored-by: Ben Woskow <48036130+bwoskow-ld@users.noreply.github.com>

* Update link-dev.sh

* Update yarn.lock

* Add react 17 peer dep (#61)

* Update common JS SDK library to use fixes for debug event generation issues. (#36)

* HOC static hoisting (#71)

* Added a test for hoisting react statics in withLDProvider HOC

* Fixed linting errors

* Fixed more linting errors

* update example app deps (#38)

* Updated asyncWithLDProvider to fetch latest flag values when the Provider renders (#39)

* Updated asyncWithLDProvider to fetch latest flag values when the Provider renders

* Fixed linting

* Updates docs URLs

* fix: improve types of withLDProvider (#97)

* [sc-107070] Include src for sourcemaps to work

* [sc-127032] Omit deferInitialization from asyncWithLDProvider config

* Removed and ignored lock files.

* Update types.ts

* Update typescript version (#44)

* Update Makefile

* Update Makefile

* Deleting test-types.ts (#45)

* [sc-132394] Add typedoc for AsyncProviderConfig (#47)

Co-authored-by: Molly <molly.jones@launchdarkly.com>

* Pass in client (#105)

* [sc134057] Fix react sdk lint errors (#48)

* remove custom TypeDoc build, use Releaser's standard logic (#49)

* update js-client-sdk to 2.20.1 for localstorage error-handling fix and others

* export more public symbols from entry point

* [sc134364] Upgrade typescript, tslint and jest. (#50)

Co-authored-by: Eli Bishop <eli@launchdarkly.com>

* update js-client-sdk to 2.20.2 for sc-142333 fix (#53)

* First commit. TODO: migrate enzyme to rtl.

* Removed enzyme. Fixed prettier parentheses rule.

* Fixed broken snapshot tests. Removed unused imports.

* Update package.json

* Update the version of the js-client-sdk

* Update patch version.

* Rename master to main (#56)

* Set sendEventsOnlyForVariation by default

* Add jest-environment-jsdom as explicit dependency

* Fix TS error

* Add jest-environment-jsdom as explicit dependency

* Fix TS error

* Update tests

* Move wrapper options into base options obj

* Target ES6

* Add tests for camel case cases

* Remove vestigial package

* Make targetFlags doc more clear

* Add error hook and handler

* Revert changes to original docs

* Add context and flags proxy util

* Use flags proxy and update tests

* Fixup

* Fixup

* Don't call variation when initializing

* Add option and failing test

* Passing test

* Remove incorrect comment and fix typo

* Update proxy's get trap

* except after c

* Remove unproxied flags from context

* Restore ldClient dec and clean up camelization

* Update src/types.ts

Co-authored-by: Molly <molly.jones@launchdarkly.com>

* Fixup

* Handle symbols

* Add type constraint to withLDProvider

* Remove getter setter

* Remove error handler and fix bad merge

* Update snapshots

* Update releaser config

* Fixup

* Update version of js-client-sdk used. (#82)

Co-authored-by: Yusinto Ngadiman <yusinto@gmail.com>
Co-authored-by: Ben Woskow <48036130+bwoskow-ld@users.noreply.github.com>
Co-authored-by: Eli Bishop <eli@launchdarkly.com>
Co-authored-by: LaunchDarklyCI <dev@launchdarkly.com>
Co-authored-by: Martin Heller <github@technopolis.de>
Co-authored-by: Ben Woskow <bwoskow@launchdarkly.com>
Co-authored-by: bezreyhan <bezreyhan@gmail.com>
Co-authored-by: Nicholas Mitchell <nicholas@netlify.com>
Co-authored-by: Martin Heller <mheller@testo.de>
Co-authored-by: clayembry <clayembry@yahoo.com>
Co-authored-by: Clay Embry <cembry@atlassian.com>
Co-authored-by: Jonathan Felchlin <jonathan@xgecko.com>
Co-authored-by: Mac Lockard <maclockard@gmail.com>
Co-authored-by: Gavin Whelan <gwhelan@launchdarkly.com>
Co-authored-by: Nathan Waddell <45477581+NathanWaddell121107@users.noreply.github.com>
Co-authored-by: Clifford Tawiah <ctawiah@launchdarkly.com>
Co-authored-by: Cliff Tawiah <82856282+ctawiah@users.noreply.github.com>
Co-authored-by: LaunchDarklyReleaseBot <launchdarklyreleasebot@launchdarkly.com>
Co-authored-by: Ember Stevens <ember.stevens@launchdarkly.com>
Co-authored-by: ember-stevens <79482775+ember-stevens@users.noreply.github.com>
Co-authored-by: Derek Sifford <dereksifford@gmail.com>
Co-authored-by: Jaz White <jwhite@launchdarkly.com>
Co-authored-by: Molly <molly.jones@launchdarkly.com>
Co-authored-by: Tim Lee <tim.lee@red-badger.com>
Co-authored-by: Louis Chan <91093020+louis-launchdarkly@users.noreply.github.com>
Co-authored-by: Louis Chan <lchan@launchdarkly.com>
Co-authored-by: Ryan Lamb <4955475+kinyoklion@users.noreply.github.com>
Co-authored-by: Christie Williams <xie.williams@gmail.com>
@kellyrmilligan
Copy link

kellyrmilligan commented Oct 7, 2022

as fyi, my company added something similar to the above as well, but suited to our own needs. There is definitely a need for this IMO.

@mustafashabib 's initial code was a great start for my needs!

LaunchDarklyReleaseBot added a commit that referenced this issue Oct 18, 2022
* Initial commit

* Delete extraneous files from lib.

* Update initLDClient.test.ts

* Update withLDProvider.tsx (#18)

* update JS SDK dependency to 2.16.3

* use JS SDK 2.17.0

* improve tests to clarify which options we're passing in and which ones are added by the wrapper

* set wrapperName to react-client-sdk

* lint

* Update withLDProvider.test.tsx

* update JS SDK to 2.17.5 + a few dev dependency bumps (#21)

* downgrade typescript to 3.8.3 (#22)

* [Fixes for] Expose LDProvider as a standalone component (#31)

* remove startsWith usage (#23)

* Fix the broken build (#24)

* Expose ld provider (#40)

* Add tests for the LDProvider

* Add LDProvider component

* Add LDProvider to main export

* Update provider tests

* Remove unused EnhancedComponent

* Abstract function to generate react options

* add waitForUserToInitializeClient flag to Provider

* rename to LDProvider.tsx

* fix tests

* remove async from componentDidMount

* fixes from CR

* add test

* cleanup

* update types for componentDidUpdate

* await initLDClient

Co-authored-by: Nicholas Mitchell <nicholas@netlify.com>
Co-authored-by: Martin Heller <mheller@testo.de>

* update to JS SDK 2.18.0 (adds disableSyncEventPost) (#25)

* 45 fix providers to respect subscribed flags (#46)

* Fixed asyncWithLDProvider.tsx and provider.tsx so that they only provide flag changes for subscribed flags.

* Removed unused imports.

* Addressed PR feedback. Fixed linting errors.

Co-authored-by: Clay Embry <cembry@atlassian.com>

* targetflags simplified logic (#26)

* remove client-side ids from examples (#27)

* update JS SDK to 2.18.1

* Fixing camelCaseKeys export (#44)

* new js-common-sdk version (#30)

* adding alias functionality (#31)

* pin typedoc to unblock our releases (#32)

* Removed the guides link

* add inlineUsersToEvents to TypeScript defs by updating js-client-sdk (#33)

* debugging

* Fix linting errors

* [ch103643] Fix examples to use local sdk

* Remove unwanted changes.

* Update package.json

* Update yarn.lock

* Update lock files.

* Update package-lock.json

* Update package-lock.json

* Update package.json

* Update link-dev.sh

Co-authored-by: Ben Woskow <48036130+bwoskow-ld@users.noreply.github.com>

* Update link-dev.sh

* Update yarn.lock

* Add react 17 peer dep (#61)

* Update common JS SDK library to use fixes for debug event generation issues. (#36)

* HOC static hoisting (#71)

* Added a test for hoisting react statics in withLDProvider HOC

* Fixed linting errors

* Fixed more linting errors

* update example app deps (#38)

* Updated asyncWithLDProvider to fetch latest flag values when the Provider renders (#39)

* Updated asyncWithLDProvider to fetch latest flag values when the Provider renders

* Fixed linting

* Updates docs URLs

* fix: improve types of withLDProvider (#97)

* [sc-107070] Include src for sourcemaps to work

* [sc-127032] Omit deferInitialization from asyncWithLDProvider config

* Removed and ignored lock files.

* Update types.ts

* Update typescript version (#44)

* Update Makefile

* Update Makefile

* Deleting test-types.ts (#45)

* [sc-132394] Add typedoc for AsyncProviderConfig (#47)

Co-authored-by: Molly <molly.jones@launchdarkly.com>

* Pass in client (#105)

* [sc134057] Fix react sdk lint errors (#48)

* remove custom TypeDoc build, use Releaser's standard logic (#49)

* update js-client-sdk to 2.20.1 for localstorage error-handling fix and others

* export more public symbols from entry point

* [sc134364] Upgrade typescript, tslint and jest. (#50)

Co-authored-by: Eli Bishop <eli@launchdarkly.com>

* update js-client-sdk to 2.20.2 for sc-142333 fix (#53)

* First commit. TODO: migrate enzyme to rtl.

* Removed enzyme. Fixed prettier parentheses rule.

* Fixed broken snapshot tests. Removed unused imports.

* Update package.json

* Update the version of the js-client-sdk

* Update patch version.

* Rename master to main (#56)

* Set sendEventsOnlyForVariation by default

* Add jest-environment-jsdom as explicit dependency

* Fix TS error

* Add jest-environment-jsdom as explicit dependency

* Fix TS error

* Update tests

* Move wrapper options into base options obj

* Target ES6

* Add tests for camel case cases

* Remove vestigial package

* Make targetFlags doc more clear

* Add error hook and handler

* Revert changes to original docs

* Add context and flags proxy util

* Use flags proxy and update tests

* Fixup

* Fixup

* Don't call variation when initializing

* Add option and failing test

* Passing test

* Remove incorrect comment and fix typo

* Update proxy's get trap

* except after c

* Remove unproxied flags from context

* Restore ldClient dec and clean up camelization

* Update src/types.ts

Co-authored-by: Molly <molly.jones@launchdarkly.com>

* Fixup

* Handle symbols

* Add type constraint to withLDProvider

* Remove getter setter

* Remove error handler and fix bad merge

* Update snapshots

* Update releaser config

* Fixup

* Update version of js-client-sdk used. (#82)

* Upgrade js-client-sdk version to 2.24.0 (#83)

Co-authored-by: Yusinto Ngadiman <yusinto@gmail.com>
Co-authored-by: Ben Woskow <48036130+bwoskow-ld@users.noreply.github.com>
Co-authored-by: Eli Bishop <eli@launchdarkly.com>
Co-authored-by: LaunchDarklyCI <dev@launchdarkly.com>
Co-authored-by: Martin Heller <github@technopolis.de>
Co-authored-by: Ben Woskow <bwoskow@launchdarkly.com>
Co-authored-by: bezreyhan <bezreyhan@gmail.com>
Co-authored-by: Nicholas Mitchell <nicholas@netlify.com>
Co-authored-by: Martin Heller <mheller@testo.de>
Co-authored-by: clayembry <clayembry@yahoo.com>
Co-authored-by: Clay Embry <cembry@atlassian.com>
Co-authored-by: Jonathan Felchlin <jonathan@xgecko.com>
Co-authored-by: Mac Lockard <maclockard@gmail.com>
Co-authored-by: Gavin Whelan <gwhelan@launchdarkly.com>
Co-authored-by: Nathan Waddell <45477581+NathanWaddell121107@users.noreply.github.com>
Co-authored-by: Clifford Tawiah <ctawiah@launchdarkly.com>
Co-authored-by: Cliff Tawiah <82856282+ctawiah@users.noreply.github.com>
Co-authored-by: LaunchDarklyReleaseBot <launchdarklyreleasebot@launchdarkly.com>
Co-authored-by: Ember Stevens <ember.stevens@launchdarkly.com>
Co-authored-by: ember-stevens <79482775+ember-stevens@users.noreply.github.com>
Co-authored-by: Derek Sifford <dereksifford@gmail.com>
Co-authored-by: Jaz White <jwhite@launchdarkly.com>
Co-authored-by: Molly <molly.jones@launchdarkly.com>
Co-authored-by: Tim Lee <tim.lee@red-badger.com>
Co-authored-by: Louis Chan <91093020+louis-launchdarkly@users.noreply.github.com>
Co-authored-by: Louis Chan <lchan@launchdarkly.com>
Co-authored-by: Ryan Lamb <4955475+kinyoklion@users.noreply.github.com>
Co-authored-by: Christie Williams <xie.williams@gmail.com>
LaunchDarklyReleaseBot added a commit that referenced this issue Oct 21, 2022
* Initial commit

* Delete extraneous files from lib.

* Update initLDClient.test.ts

* Update withLDProvider.tsx (#18)

* update JS SDK dependency to 2.16.3

* use JS SDK 2.17.0

* improve tests to clarify which options we're passing in and which ones are added by the wrapper

* set wrapperName to react-client-sdk

* lint

* Update withLDProvider.test.tsx

* update JS SDK to 2.17.5 + a few dev dependency bumps (#21)

* downgrade typescript to 3.8.3 (#22)

* [Fixes for] Expose LDProvider as a standalone component (#31)

* remove startsWith usage (#23)

* Fix the broken build (#24)

* Expose ld provider (#40)

* Add tests for the LDProvider

* Add LDProvider component

* Add LDProvider to main export

* Update provider tests

* Remove unused EnhancedComponent

* Abstract function to generate react options

* add waitForUserToInitializeClient flag to Provider

* rename to LDProvider.tsx

* fix tests

* remove async from componentDidMount

* fixes from CR

* add test

* cleanup

* update types for componentDidUpdate

* await initLDClient

Co-authored-by: Nicholas Mitchell <nicholas@netlify.com>
Co-authored-by: Martin Heller <mheller@testo.de>

* update to JS SDK 2.18.0 (adds disableSyncEventPost) (#25)

* 45 fix providers to respect subscribed flags (#46)

* Fixed asyncWithLDProvider.tsx and provider.tsx so that they only provide flag changes for subscribed flags.

* Removed unused imports.

* Addressed PR feedback. Fixed linting errors.

Co-authored-by: Clay Embry <cembry@atlassian.com>

* targetflags simplified logic (#26)

* remove client-side ids from examples (#27)

* update JS SDK to 2.18.1

* Fixing camelCaseKeys export (#44)

* new js-common-sdk version (#30)

* adding alias functionality (#31)

* pin typedoc to unblock our releases (#32)

* Removed the guides link

* add inlineUsersToEvents to TypeScript defs by updating js-client-sdk (#33)

* debugging

* Fix linting errors

* [ch103643] Fix examples to use local sdk

* Remove unwanted changes.

* Update package.json

* Update yarn.lock

* Update lock files.

* Update package-lock.json

* Update package-lock.json

* Update package.json

* Update link-dev.sh

Co-authored-by: Ben Woskow <48036130+bwoskow-ld@users.noreply.github.com>

* Update link-dev.sh

* Update yarn.lock

* Add react 17 peer dep (#61)

* Update common JS SDK library to use fixes for debug event generation issues. (#36)

* HOC static hoisting (#71)

* Added a test for hoisting react statics in withLDProvider HOC

* Fixed linting errors

* Fixed more linting errors

* update example app deps (#38)

* Updated asyncWithLDProvider to fetch latest flag values when the Provider renders (#39)

* Updated asyncWithLDProvider to fetch latest flag values when the Provider renders

* Fixed linting

* Updates docs URLs

* fix: improve types of withLDProvider (#97)

* [sc-107070] Include src for sourcemaps to work

* [sc-127032] Omit deferInitialization from asyncWithLDProvider config

* Removed and ignored lock files.

* Update types.ts

* Update typescript version (#44)

* Update Makefile

* Update Makefile

* Deleting test-types.ts (#45)

* [sc-132394] Add typedoc for AsyncProviderConfig (#47)

Co-authored-by: Molly <molly.jones@launchdarkly.com>

* Pass in client (#105)

* [sc134057] Fix react sdk lint errors (#48)

* remove custom TypeDoc build, use Releaser's standard logic (#49)

* update js-client-sdk to 2.20.1 for localstorage error-handling fix and others

* export more public symbols from entry point

* [sc134364] Upgrade typescript, tslint and jest. (#50)

Co-authored-by: Eli Bishop <eli@launchdarkly.com>

* update js-client-sdk to 2.20.2 for sc-142333 fix (#53)

* First commit. TODO: migrate enzyme to rtl.

* Removed enzyme. Fixed prettier parentheses rule.

* Fixed broken snapshot tests. Removed unused imports.

* Update package.json

* Update the version of the js-client-sdk

* Update patch version.

* Rename master to main (#56)

* Set sendEventsOnlyForVariation by default

* Add jest-environment-jsdom as explicit dependency

* Fix TS error

* Add jest-environment-jsdom as explicit dependency

* Fix TS error

* Update tests

* Move wrapper options into base options obj

* Target ES6

* Add tests for camel case cases

* Remove vestigial package

* Make targetFlags doc more clear

* Add error hook and handler

* Revert changes to original docs

* Add context and flags proxy util

* Use flags proxy and update tests

* Fixup

* Fixup

* Don't call variation when initializing

* Add option and failing test

* Passing test

* Remove incorrect comment and fix typo

* Update proxy's get trap

* except after c

* Remove unproxied flags from context

* Restore ldClient dec and clean up camelization

* Update src/types.ts

Co-authored-by: Molly <molly.jones@launchdarkly.com>

* Fixup

* Handle symbols

* Add type constraint to withLDProvider

* Remove getter setter

* Remove error handler and fix bad merge

* Update snapshots

* Update releaser config

* Fixup

* Update version of js-client-sdk used. (#82)

* Upgrade js-client-sdk version to 2.24.0 (#83)

* Upgrade common to 2.24.2 (#84)

Co-authored-by: Yusinto Ngadiman <yusinto@gmail.com>
Co-authored-by: Ben Woskow <48036130+bwoskow-ld@users.noreply.github.com>
Co-authored-by: Eli Bishop <eli@launchdarkly.com>
Co-authored-by: LaunchDarklyCI <dev@launchdarkly.com>
Co-authored-by: Martin Heller <github@technopolis.de>
Co-authored-by: Ben Woskow <bwoskow@launchdarkly.com>
Co-authored-by: bezreyhan <bezreyhan@gmail.com>
Co-authored-by: Nicholas Mitchell <nicholas@netlify.com>
Co-authored-by: Martin Heller <mheller@testo.de>
Co-authored-by: clayembry <clayembry@yahoo.com>
Co-authored-by: Clay Embry <cembry@atlassian.com>
Co-authored-by: Jonathan Felchlin <jonathan@xgecko.com>
Co-authored-by: Mac Lockard <maclockard@gmail.com>
Co-authored-by: Gavin Whelan <gwhelan@launchdarkly.com>
Co-authored-by: Nathan Waddell <45477581+NathanWaddell121107@users.noreply.github.com>
Co-authored-by: Clifford Tawiah <ctawiah@launchdarkly.com>
Co-authored-by: Cliff Tawiah <82856282+ctawiah@users.noreply.github.com>
Co-authored-by: LaunchDarklyReleaseBot <launchdarklyreleasebot@launchdarkly.com>
Co-authored-by: Ember Stevens <ember.stevens@launchdarkly.com>
Co-authored-by: ember-stevens <79482775+ember-stevens@users.noreply.github.com>
Co-authored-by: Derek Sifford <dereksifford@gmail.com>
Co-authored-by: Jaz White <jwhite@launchdarkly.com>
Co-authored-by: Molly <molly.jones@launchdarkly.com>
Co-authored-by: Tim Lee <tim.lee@red-badger.com>
Co-authored-by: Louis Chan <91093020+louis-launchdarkly@users.noreply.github.com>
Co-authored-by: Louis Chan <lchan@launchdarkly.com>
Co-authored-by: Ryan Lamb <4955475+kinyoklion@users.noreply.github.com>
Co-authored-by: Christie Williams <xie.williams@gmail.com>
LaunchDarklyReleaseBot added a commit that referenced this issue Oct 28, 2022
* Initial commit

* Delete extraneous files from lib.

* Update initLDClient.test.ts

* Update withLDProvider.tsx (#18)

* update JS SDK dependency to 2.16.3

* use JS SDK 2.17.0

* improve tests to clarify which options we're passing in and which ones are added by the wrapper

* set wrapperName to react-client-sdk

* lint

* Update withLDProvider.test.tsx

* update JS SDK to 2.17.5 + a few dev dependency bumps (#21)

* downgrade typescript to 3.8.3 (#22)

* [Fixes for] Expose LDProvider as a standalone component (#31)

* remove startsWith usage (#23)

* Fix the broken build (#24)

* Expose ld provider (#40)

* Add tests for the LDProvider

* Add LDProvider component

* Add LDProvider to main export

* Update provider tests

* Remove unused EnhancedComponent

* Abstract function to generate react options

* add waitForUserToInitializeClient flag to Provider

* rename to LDProvider.tsx

* fix tests

* remove async from componentDidMount

* fixes from CR

* add test

* cleanup

* update types for componentDidUpdate

* await initLDClient

Co-authored-by: Nicholas Mitchell <nicholas@netlify.com>
Co-authored-by: Martin Heller <mheller@testo.de>

* update to JS SDK 2.18.0 (adds disableSyncEventPost) (#25)

* 45 fix providers to respect subscribed flags (#46)

* Fixed asyncWithLDProvider.tsx and provider.tsx so that they only provide flag changes for subscribed flags.

* Removed unused imports.

* Addressed PR feedback. Fixed linting errors.

Co-authored-by: Clay Embry <cembry@atlassian.com>

* targetflags simplified logic (#26)

* remove client-side ids from examples (#27)

* update JS SDK to 2.18.1

* Fixing camelCaseKeys export (#44)

* new js-common-sdk version (#30)

* adding alias functionality (#31)

* pin typedoc to unblock our releases (#32)

* Removed the guides link

* add inlineUsersToEvents to TypeScript defs by updating js-client-sdk (#33)

* debugging

* Fix linting errors

* [ch103643] Fix examples to use local sdk

* Remove unwanted changes.

* Update package.json

* Update yarn.lock

* Update lock files.

* Update package-lock.json

* Update package-lock.json

* Update package.json

* Update link-dev.sh

Co-authored-by: Ben Woskow <48036130+bwoskow-ld@users.noreply.github.com>

* Update link-dev.sh

* Update yarn.lock

* Add react 17 peer dep (#61)

* Update common JS SDK library to use fixes for debug event generation issues. (#36)

* HOC static hoisting (#71)

* Added a test for hoisting react statics in withLDProvider HOC

* Fixed linting errors

* Fixed more linting errors

* update example app deps (#38)

* Updated asyncWithLDProvider to fetch latest flag values when the Provider renders (#39)

* Updated asyncWithLDProvider to fetch latest flag values when the Provider renders

* Fixed linting

* Updates docs URLs

* fix: improve types of withLDProvider (#97)

* [sc-107070] Include src for sourcemaps to work

* [sc-127032] Omit deferInitialization from asyncWithLDProvider config

* Removed and ignored lock files.

* Update types.ts

* Update typescript version (#44)

* Update Makefile

* Update Makefile

* Deleting test-types.ts (#45)

* [sc-132394] Add typedoc for AsyncProviderConfig (#47)

Co-authored-by: Molly <molly.jones@launchdarkly.com>

* Pass in client (#105)

* [sc134057] Fix react sdk lint errors (#48)

* remove custom TypeDoc build, use Releaser's standard logic (#49)

* update js-client-sdk to 2.20.1 for localstorage error-handling fix and others

* export more public symbols from entry point

* [sc134364] Upgrade typescript, tslint and jest. (#50)

Co-authored-by: Eli Bishop <eli@launchdarkly.com>

* update js-client-sdk to 2.20.2 for sc-142333 fix (#53)

* First commit. TODO: migrate enzyme to rtl.

* Removed enzyme. Fixed prettier parentheses rule.

* Fixed broken snapshot tests. Removed unused imports.

* Update package.json

* Update the version of the js-client-sdk

* Update patch version.

* Rename master to main (#56)

* Set sendEventsOnlyForVariation by default

* Add jest-environment-jsdom as explicit dependency

* Fix TS error

* Add jest-environment-jsdom as explicit dependency

* Fix TS error

* Update tests

* Move wrapper options into base options obj

* Target ES6

* Add tests for camel case cases

* Remove vestigial package

* Make targetFlags doc more clear

* Add error hook and handler

* Revert changes to original docs

* Add context and flags proxy util

* Use flags proxy and update tests

* Fixup

* Fixup

* Don't call variation when initializing

* Add option and failing test

* Passing test

* Remove incorrect comment and fix typo

* Update proxy's get trap

* except after c

* Remove unproxied flags from context

* Restore ldClient dec and clean up camelization

* Update src/types.ts

Co-authored-by: Molly <molly.jones@launchdarkly.com>

* Fixup

* Handle symbols

* Add type constraint to withLDProvider

* Remove getter setter

* Remove error handler and fix bad merge

* Update snapshots

* Update releaser config

* Fixup

* Update version of js-client-sdk used. (#82)

* Upgrade js-client-sdk version to 2.24.0 (#83)

* Upgrade common to 2.24.2 (#84)

* Populate the context with the initial flag state and proxy. (#85)

Co-authored-by: Yusinto Ngadiman <yusinto@gmail.com>
Co-authored-by: Ben Woskow <48036130+bwoskow-ld@users.noreply.github.com>
Co-authored-by: Eli Bishop <eli@launchdarkly.com>
Co-authored-by: LaunchDarklyCI <dev@launchdarkly.com>
Co-authored-by: Martin Heller <github@technopolis.de>
Co-authored-by: Ben Woskow <bwoskow@launchdarkly.com>
Co-authored-by: bezreyhan <bezreyhan@gmail.com>
Co-authored-by: Nicholas Mitchell <nicholas@netlify.com>
Co-authored-by: Martin Heller <mheller@testo.de>
Co-authored-by: clayembry <clayembry@yahoo.com>
Co-authored-by: Clay Embry <cembry@atlassian.com>
Co-authored-by: Jonathan Felchlin <jonathan@xgecko.com>
Co-authored-by: Mac Lockard <maclockard@gmail.com>
Co-authored-by: Gavin Whelan <gwhelan@launchdarkly.com>
Co-authored-by: Nathan Waddell <45477581+NathanWaddell121107@users.noreply.github.com>
Co-authored-by: Clifford Tawiah <ctawiah@launchdarkly.com>
Co-authored-by: Cliff Tawiah <82856282+ctawiah@users.noreply.github.com>
Co-authored-by: LaunchDarklyReleaseBot <launchdarklyreleasebot@launchdarkly.com>
Co-authored-by: Ember Stevens <ember.stevens@launchdarkly.com>
Co-authored-by: ember-stevens <79482775+ember-stevens@users.noreply.github.com>
Co-authored-by: Derek Sifford <dereksifford@gmail.com>
Co-authored-by: Jaz White <jwhite@launchdarkly.com>
Co-authored-by: Molly <molly.jones@launchdarkly.com>
Co-authored-by: Tim Lee <tim.lee@red-badger.com>
Co-authored-by: Louis Chan <91093020+louis-launchdarkly@users.noreply.github.com>
Co-authored-by: Louis Chan <lchan@launchdarkly.com>
Co-authored-by: Ryan Lamb <4955475+kinyoklion@users.noreply.github.com>
Co-authored-by: Christie Williams <xie.williams@gmail.com>
LaunchDarklyReleaseBot added a commit that referenced this issue Dec 7, 2022
* Initial commit

* Delete extraneous files from lib.

* Update initLDClient.test.ts

* Update withLDProvider.tsx (#18)

* update JS SDK dependency to 2.16.3

* use JS SDK 2.17.0

* improve tests to clarify which options we're passing in and which ones are added by the wrapper

* set wrapperName to react-client-sdk

* lint

* Update withLDProvider.test.tsx

* update JS SDK to 2.17.5 + a few dev dependency bumps (#21)

* downgrade typescript to 3.8.3 (#22)

* [Fixes for] Expose LDProvider as a standalone component (#31)

* remove startsWith usage (#23)

* Fix the broken build (#24)

* Expose ld provider (#40)

* Add tests for the LDProvider

* Add LDProvider component

* Add LDProvider to main export

* Update provider tests

* Remove unused EnhancedComponent

* Abstract function to generate react options

* add waitForUserToInitializeClient flag to Provider

* rename to LDProvider.tsx

* fix tests

* remove async from componentDidMount

* fixes from CR

* add test

* cleanup

* update types for componentDidUpdate

* await initLDClient

Co-authored-by: Nicholas Mitchell <nicholas@netlify.com>
Co-authored-by: Martin Heller <mheller@testo.de>

* update to JS SDK 2.18.0 (adds disableSyncEventPost) (#25)

* 45 fix providers to respect subscribed flags (#46)

* Fixed asyncWithLDProvider.tsx and provider.tsx so that they only provide flag changes for subscribed flags.

* Removed unused imports.

* Addressed PR feedback. Fixed linting errors.

Co-authored-by: Clay Embry <cembry@atlassian.com>

* targetflags simplified logic (#26)

* remove client-side ids from examples (#27)

* update JS SDK to 2.18.1

* Fixing camelCaseKeys export (#44)

* new js-common-sdk version (#30)

* adding alias functionality (#31)

* pin typedoc to unblock our releases (#32)

* Removed the guides link

* add inlineUsersToEvents to TypeScript defs by updating js-client-sdk (#33)

* debugging

* Fix linting errors

* [ch103643] Fix examples to use local sdk

* Remove unwanted changes.

* Update package.json

* Update yarn.lock

* Update lock files.

* Update package-lock.json

* Update package-lock.json

* Update package.json

* Update link-dev.sh

Co-authored-by: Ben Woskow <48036130+bwoskow-ld@users.noreply.github.com>

* Update link-dev.sh

* Update yarn.lock

* Add react 17 peer dep (#61)

* Update common JS SDK library to use fixes for debug event generation issues. (#36)

* HOC static hoisting (#71)

* Added a test for hoisting react statics in withLDProvider HOC

* Fixed linting errors

* Fixed more linting errors

* update example app deps (#38)

* Updated asyncWithLDProvider to fetch latest flag values when the Provider renders (#39)

* Updated asyncWithLDProvider to fetch latest flag values when the Provider renders

* Fixed linting

* Updates docs URLs

* fix: improve types of withLDProvider (#97)

* [sc-107070] Include src for sourcemaps to work

* [sc-127032] Omit deferInitialization from asyncWithLDProvider config

* Removed and ignored lock files.

* Update types.ts

* Update typescript version (#44)

* Update Makefile

* Update Makefile

* Deleting test-types.ts (#45)

* [sc-132394] Add typedoc for AsyncProviderConfig (#47)

Co-authored-by: Molly <molly.jones@launchdarkly.com>

* Pass in client (#105)

* [sc134057] Fix react sdk lint errors (#48)

* remove custom TypeDoc build, use Releaser's standard logic (#49)

* update js-client-sdk to 2.20.1 for localstorage error-handling fix and others

* export more public symbols from entry point

* [sc134364] Upgrade typescript, tslint and jest. (#50)

Co-authored-by: Eli Bishop <eli@launchdarkly.com>

* update js-client-sdk to 2.20.2 for sc-142333 fix (#53)

* First commit. TODO: migrate enzyme to rtl.

* Removed enzyme. Fixed prettier parentheses rule.

* Fixed broken snapshot tests. Removed unused imports.

* Update package.json

* Update the version of the js-client-sdk

* Update patch version.

* Rename master to main (#56)

* Set sendEventsOnlyForVariation by default

* Add jest-environment-jsdom as explicit dependency

* Fix TS error

* Add jest-environment-jsdom as explicit dependency

* Fix TS error

* Update tests

* Move wrapper options into base options obj

* Target ES6

* Add tests for camel case cases

* Remove vestigial package

* Make targetFlags doc more clear

* Add error hook and handler

* Revert changes to original docs

* Add context and flags proxy util

* Use flags proxy and update tests

* Fixup

* Fixup

* Don't call variation when initializing

* Add option and failing test

* Passing test

* Remove incorrect comment and fix typo

* Update proxy's get trap

* except after c

* Remove unproxied flags from context

* Restore ldClient dec and clean up camelization

* Update src/types.ts

Co-authored-by: Molly <molly.jones@launchdarkly.com>

* Fixup

* Handle symbols

* Add type constraint to withLDProvider

* Remove getter setter

* Remove error handler and fix bad merge

* Update snapshots

* Update releaser config

* Fixup

* Update version of js-client-sdk used. (#82)

* Upgrade js-client-sdk version to 2.24.0 (#83)

* Upgrade common to 2.24.2 (#84)

* Populate the context with the initial flag state and proxy. (#85)

* [sc-178045] u2c changes for v3.0 release (#90)

* Update js sdk version to prerelease

* Renamed LDContext to ReactSdkContext

* Added context to provider config. Replaced LDUser with context in init client function. Deprecated user prop in provider config.

* Added getContextOrUser helper function. Replaced user props with getContextOrUser function.

* Update js sdk to v3 alpha 2 to fix messages error

* Replaced LDUser with LDContext. Added kind prop to test cases.

* Update circleci node image version

* Renamed wording "user" to "context". Added more test cases for provider.

* Added more unit tests to cover backwards compatibility and new context. Renamed user to context in test data and comments.

* Force async example to use js sdk alpha version

* Update package.json

* Add manual resolution for acorn to make webpack 4 work with optional chaining. Add context to init code.

* [sc-177377] Update js dep to alpha3

* Update alpha packages

* Removed redundant null coalescence. Added more unit tests for getContextOrUser.

* Update package.json

* Remove un-used import

* Minor comment fixes

* Removed unnecessary context arg in example init

* Update app.js

* Set default context kind to user

* Create CODEOWNERS

Co-authored-by: Yusinto Ngadiman <yus@launchdarkly.com>

* [sc-178466] Bugfix flags proxy errors when using native functions (#91)

* [sc-178466] Fix native function proxy errors

* Added unit tests.

* Fix ts any error

* Update getFlagsProxy.test.ts

Co-authored-by: Yusinto Ngadiman <yus@launchdarkly.com>

* Update package.json (#92)

Co-authored-by: Yusinto Ngadiman <yus@launchdarkly.com>

Co-authored-by: Yusinto Ngadiman <yusinto@gmail.com>
Co-authored-by: Ben Woskow <48036130+bwoskow-ld@users.noreply.github.com>
Co-authored-by: Eli Bishop <eli@launchdarkly.com>
Co-authored-by: LaunchDarklyCI <dev@launchdarkly.com>
Co-authored-by: Martin Heller <github@technopolis.de>
Co-authored-by: Ben Woskow <bwoskow@launchdarkly.com>
Co-authored-by: bezreyhan <bezreyhan@gmail.com>
Co-authored-by: Nicholas Mitchell <nicholas@netlify.com>
Co-authored-by: Martin Heller <mheller@testo.de>
Co-authored-by: clayembry <clayembry@yahoo.com>
Co-authored-by: Clay Embry <cembry@atlassian.com>
Co-authored-by: Jonathan Felchlin <jonathan@xgecko.com>
Co-authored-by: Mac Lockard <maclockard@gmail.com>
Co-authored-by: Gavin Whelan <gwhelan@launchdarkly.com>
Co-authored-by: Nathan Waddell <45477581+NathanWaddell121107@users.noreply.github.com>
Co-authored-by: Clifford Tawiah <ctawiah@launchdarkly.com>
Co-authored-by: Cliff Tawiah <82856282+ctawiah@users.noreply.github.com>
Co-authored-by: LaunchDarklyReleaseBot <launchdarklyreleasebot@launchdarkly.com>
Co-authored-by: Ember Stevens <ember.stevens@launchdarkly.com>
Co-authored-by: ember-stevens <79482775+ember-stevens@users.noreply.github.com>
Co-authored-by: Derek Sifford <dereksifford@gmail.com>
Co-authored-by: Jaz White <jwhite@launchdarkly.com>
Co-authored-by: Molly <molly.jones@launchdarkly.com>
Co-authored-by: Tim Lee <tim.lee@red-badger.com>
Co-authored-by: Louis Chan <91093020+louis-launchdarkly@users.noreply.github.com>
Co-authored-by: Louis Chan <lchan@launchdarkly.com>
Co-authored-by: Ryan Lamb <4955475+kinyoklion@users.noreply.github.com>
Co-authored-by: Christie Williams <xie.williams@gmail.com>
Co-authored-by: Yusinto Ngadiman <yus@launchdarkly.com>
LaunchDarklyReleaseBot added a commit that referenced this issue Dec 7, 2022
* Initial commit

* Delete extraneous files from lib.

* Update initLDClient.test.ts

* Update withLDProvider.tsx (#18)

* update JS SDK dependency to 2.16.3

* use JS SDK 2.17.0

* improve tests to clarify which options we're passing in and which ones are added by the wrapper

* set wrapperName to react-client-sdk

* lint

* Update withLDProvider.test.tsx

* update JS SDK to 2.17.5 + a few dev dependency bumps (#21)

* downgrade typescript to 3.8.3 (#22)

* [Fixes for] Expose LDProvider as a standalone component (#31)

* remove startsWith usage (#23)

* Fix the broken build (#24)

* Expose ld provider (#40)

* Add tests for the LDProvider

* Add LDProvider component

* Add LDProvider to main export

* Update provider tests

* Remove unused EnhancedComponent

* Abstract function to generate react options

* add waitForUserToInitializeClient flag to Provider

* rename to LDProvider.tsx

* fix tests

* remove async from componentDidMount

* fixes from CR

* add test

* cleanup

* update types for componentDidUpdate

* await initLDClient

Co-authored-by: Nicholas Mitchell <nicholas@netlify.com>
Co-authored-by: Martin Heller <mheller@testo.de>

* update to JS SDK 2.18.0 (adds disableSyncEventPost) (#25)

* 45 fix providers to respect subscribed flags (#46)

* Fixed asyncWithLDProvider.tsx and provider.tsx so that they only provide flag changes for subscribed flags.

* Removed unused imports.

* Addressed PR feedback. Fixed linting errors.

Co-authored-by: Clay Embry <cembry@atlassian.com>

* targetflags simplified logic (#26)

* remove client-side ids from examples (#27)

* update JS SDK to 2.18.1

* Fixing camelCaseKeys export (#44)

* new js-common-sdk version (#30)

* adding alias functionality (#31)

* pin typedoc to unblock our releases (#32)

* Removed the guides link

* add inlineUsersToEvents to TypeScript defs by updating js-client-sdk (#33)

* debugging

* Fix linting errors

* [ch103643] Fix examples to use local sdk

* Remove unwanted changes.

* Update package.json

* Update yarn.lock

* Update lock files.

* Update package-lock.json

* Update package-lock.json

* Update package.json

* Update link-dev.sh

Co-authored-by: Ben Woskow <48036130+bwoskow-ld@users.noreply.github.com>

* Update link-dev.sh

* Update yarn.lock

* Add react 17 peer dep (#61)

* Update common JS SDK library to use fixes for debug event generation issues. (#36)

* HOC static hoisting (#71)

* Added a test for hoisting react statics in withLDProvider HOC

* Fixed linting errors

* Fixed more linting errors

* update example app deps (#38)

* Updated asyncWithLDProvider to fetch latest flag values when the Provider renders (#39)

* Updated asyncWithLDProvider to fetch latest flag values when the Provider renders

* Fixed linting

* Updates docs URLs

* fix: improve types of withLDProvider (#97)

* [sc-107070] Include src for sourcemaps to work

* [sc-127032] Omit deferInitialization from asyncWithLDProvider config

* Removed and ignored lock files.

* Update types.ts

* Update typescript version (#44)

* Update Makefile

* Update Makefile

* Deleting test-types.ts (#45)

* [sc-132394] Add typedoc for AsyncProviderConfig (#47)

Co-authored-by: Molly <molly.jones@launchdarkly.com>

* Pass in client (#105)

* [sc134057] Fix react sdk lint errors (#48)

* remove custom TypeDoc build, use Releaser's standard logic (#49)

* update js-client-sdk to 2.20.1 for localstorage error-handling fix and others

* export more public symbols from entry point

* [sc134364] Upgrade typescript, tslint and jest. (#50)

Co-authored-by: Eli Bishop <eli@launchdarkly.com>

* update js-client-sdk to 2.20.2 for sc-142333 fix (#53)

* First commit. TODO: migrate enzyme to rtl.

* Removed enzyme. Fixed prettier parentheses rule.

* Fixed broken snapshot tests. Removed unused imports.

* Update package.json

* Update the version of the js-client-sdk

* Update patch version.

* Rename master to main (#56)

* Set sendEventsOnlyForVariation by default

* Add jest-environment-jsdom as explicit dependency

* Fix TS error

* Add jest-environment-jsdom as explicit dependency

* Fix TS error

* Update tests

* Move wrapper options into base options obj

* Target ES6

* Add tests for camel case cases

* Remove vestigial package

* Make targetFlags doc more clear

* Add error hook and handler

* Revert changes to original docs

* Add context and flags proxy util

* Use flags proxy and update tests

* Fixup

* Fixup

* Don't call variation when initializing

* Add option and failing test

* Passing test

* Remove incorrect comment and fix typo

* Update proxy's get trap

* except after c

* Remove unproxied flags from context

* Restore ldClient dec and clean up camelization

* Update src/types.ts

Co-authored-by: Molly <molly.jones@launchdarkly.com>

* Fixup

* Handle symbols

* Add type constraint to withLDProvider

* Remove getter setter

* Remove error handler and fix bad merge

* Update snapshots

* Update releaser config

* Fixup

* Update version of js-client-sdk used. (#82)

* Upgrade js-client-sdk version to 2.24.0 (#83)

* Upgrade common to 2.24.2 (#84)

* Populate the context with the initial flag state and proxy. (#85)

* [sc-178466] Bugfix flags proxy errors when using native functions (#91)

* [sc-178466] Fix native function proxy errors

* Added unit tests.

* Fix ts any error

* Update getFlagsProxy.test.ts

Co-authored-by: Yusinto Ngadiman <yus@launchdarkly.com>

* Update config.yml

Co-authored-by: Yusinto Ngadiman <yusinto@gmail.com>
Co-authored-by: Ben Woskow <48036130+bwoskow-ld@users.noreply.github.com>
Co-authored-by: Eli Bishop <eli@launchdarkly.com>
Co-authored-by: LaunchDarklyCI <dev@launchdarkly.com>
Co-authored-by: Martin Heller <github@technopolis.de>
Co-authored-by: Ben Woskow <bwoskow@launchdarkly.com>
Co-authored-by: bezreyhan <bezreyhan@gmail.com>
Co-authored-by: Nicholas Mitchell <nicholas@netlify.com>
Co-authored-by: Martin Heller <mheller@testo.de>
Co-authored-by: clayembry <clayembry@yahoo.com>
Co-authored-by: Clay Embry <cembry@atlassian.com>
Co-authored-by: Jonathan Felchlin <jonathan@xgecko.com>
Co-authored-by: Mac Lockard <maclockard@gmail.com>
Co-authored-by: Gavin Whelan <gwhelan@launchdarkly.com>
Co-authored-by: Nathan Waddell <45477581+NathanWaddell121107@users.noreply.github.com>
Co-authored-by: Clifford Tawiah <ctawiah@launchdarkly.com>
Co-authored-by: Cliff Tawiah <82856282+ctawiah@users.noreply.github.com>
Co-authored-by: LaunchDarklyReleaseBot <launchdarklyreleasebot@launchdarkly.com>
Co-authored-by: Ember Stevens <ember.stevens@launchdarkly.com>
Co-authored-by: ember-stevens <79482775+ember-stevens@users.noreply.github.com>
Co-authored-by: Derek Sifford <dereksifford@gmail.com>
Co-authored-by: Jaz White <jwhite@launchdarkly.com>
Co-authored-by: Molly <molly.jones@launchdarkly.com>
Co-authored-by: Tim Lee <tim.lee@red-badger.com>
Co-authored-by: Louis Chan <91093020+louis-launchdarkly@users.noreply.github.com>
Co-authored-by: Louis Chan <lchan@launchdarkly.com>
Co-authored-by: Ryan Lamb <4955475+kinyoklion@users.noreply.github.com>
Co-authored-by: Christie Williams <xie.williams@gmail.com>
Co-authored-by: Yusinto Ngadiman <yus@launchdarkly.com>
@kyin42
Copy link

kyin42 commented Jan 30, 2023

Just wanted to leave a note for anyone attempting to use a custom useFlags wrapper hook and who is using targeting/experiments, as far as I can tell wrapping useFlags removes the Proxy and will not send evaluation events anymore. I haven't figured out how to keep these events firing yet, so if you go this route maybe instead of returning flags return a function to fetch a flag. or as a shotgun approach turn sendEventsOnlyForVariation off which was turned on in https://github.com/launchdarkly/react-client-sdk/releases/tag/2.27.0 which makes sure all evaluations are sent.

As an reference my useFlags wrapper looks like this:

import type { LDFlagSet } from 'launchdarkly-js-sdk-common';
import { useFlags as useLDFlags } from 'launchdarkly-react-client-sdk';
import { isLocal } from '../config';

// This attempts to import ../flagOverrides.ts but uses a default {} if it doesn't exist
let flagOverrides: { default: Partial<LDFlagSet> } = { default: {} };
try {
  // eslint-disable-next-line global-require, import/no-unresolved, import/extensions
  flagOverrides = require('../flagOverrides');
} catch (ex) {
  // do nothing: use default empty flags
}

// a way to override flags for development until launchdarkly supports this https://github.com/launchdarkly/react-client-sdk/issues/53
// view flagOverrides.ts in the root directory for more information
const useFlags = () => {
  const ldFlags = useLDFlags();

  if (isLocal) {
    const mergedFlags = { ...ldFlags, ...flagOverrides.default };
    return mergedFlags;
  }
  return ldFlags;
};

export default useFlags;

But I'd image mustafashabib has the same issue with the proxy

@kevinfiol
Copy link

Surprising this feature is not included as part of the SDK. Thanks all for posting your solutions.

@Feshchenko
Copy link

Feshchenko commented Jun 14, 2023

@bwoskow-ld, hi.
I don't want to create a new issue but want to add another use case for merging flags from the ProviderConfig.
For example, I'm a QA and want to quickly disable/enable some flags wo/ going to admin system.
In our App we have a custom hook that merges query params flagsOn and flagsOff to flags from the useFlags.
It would be great to have an option in the LDProvider to merge flags values wo/ work arounds.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

8 participants