From 8813e5be379f731aa614c7b359ea1c18a5a99118 Mon Sep 17 00:00:00 2001 From: James Hartig Date: Mon, 27 Nov 2023 03:54:44 -0600 Subject: [PATCH] fix: fallback for startTransition for React <18 (#152) Fixes #151 --- src/FlagProvider.tsx | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/src/FlagProvider.tsx b/src/FlagProvider.tsx index 573d269..e586f58 100644 --- a/src/FlagProvider.tsx +++ b/src/FlagProvider.tsx @@ -19,6 +19,11 @@ const offlineConfig: IConfig = { clientKey: 'not-used', }; +// save startTransition as var to avoid webpack analysis (https://github.com/webpack/webpack/issues/14814) +const _startTransition = 'startTransition'; +// fallback for React <18 which doesn't support startTransition +const startTransition = React[_startTransition] || (fn => fn()); + const FlagProvider: React.FC> = ({ config: customConfig, children, @@ -48,7 +53,7 @@ const FlagProvider: React.FC> = ({ } const errorCallback = (e: any) => { - React.startTransition(() => { + startTransition(() => { setFlagsError(currentError => currentError || e); }); }; @@ -57,7 +62,7 @@ const FlagProvider: React.FC> = ({ const readyCallback = () => { // wait for flags to resolve after useFlag gets the same event timeout = setTimeout(() => { - React.startTransition(() => { + startTransition(() => { setFlagsReady(true); }); }, 0);