diff --git a/README.md b/README.md index 4f64b31..c2a1f4a 100644 --- a/README.md +++ b/README.md @@ -594,7 +594,7 @@ The React SDK supports server-side rendering (SSR). A pre-fetched datafile is re #### Per-request client -Create a client inside the component with a pre-fetched datafile. Use `useState` with a lazy initializer to create the instance once. On the server, use `createStaticProjectConfigManager` with `disposable: true` so the instance can be garbage collected without explicitly calling `close()`. On the client, use `createPollingProjectConfigManager` to keep the datafile up to date. +Create a client inside the component with a pre-fetched datafile. Use `useState` with a lazy initializer to create the instance once. Pass the datafile for immediate readiness during server rendering, and set `disposable: true` on the server so the instance can be garbage collected without explicitly calling `close()`. ```tsx 'use client'; @@ -602,7 +602,6 @@ Create a client inside the component with a pre-fetched datafile. Use `useState` import { useState } from 'react'; import { createInstance, - createStaticProjectConfigManager, createPollingProjectConfigManager, createBatchEventProcessor, OptimizelyProvider, @@ -615,13 +614,11 @@ export default function Page({ datafile, userId }) { const [optimizely] = useState(() => createInstance({ - projectConfigManager: isServerSide - ? createStaticProjectConfigManager({ datafile }) - : createPollingProjectConfigManager({ - sdkKey: process.env.NEXT_PUBLIC_OPTIMIZELY_SDK_KEY || '', - datafile, - }), - eventProcessor: isServerSide ? undefined : createBatchEventProcessor(), + projectConfigManager: createPollingProjectConfigManager({ + sdkKey: process.env.NEXT_PUBLIC_OPTIMIZELY_SDK_KEY || '', + datafile, + }), + eventProcessor: createBatchEventProcessor(), defaultDecideOptions: isServerSide ? [OptimizelyDecideOption.DISABLE_DECISION_EVENT] : [], disposable: isServerSide, }) diff --git a/docs/nextjs-integration.md b/docs/nextjs-integration.md index 086db67..2b4b7cd 100644 --- a/docs/nextjs-integration.md +++ b/docs/nextjs-integration.md @@ -97,7 +97,6 @@ Since `OptimizelyProvider` uses React Context (a client-side feature), it must b import { OptimizelyProvider, createInstance, - createStaticProjectConfigManager, createPollingProjectConfigManager, createBatchEventProcessor, OptimizelyDecideOption, @@ -109,13 +108,11 @@ export function OptimizelyClientProvider({ children, datafile }: { children: Rea const [optimizely] = useState(() => createInstance({ - projectConfigManager: isServerSide - ? createStaticProjectConfigManager({ datafile }) - : createPollingProjectConfigManager({ - sdkKey: process.env.NEXT_PUBLIC_OPTIMIZELY_SDK_KEY || '', - datafile, - }), - eventProcessor: isServerSide ? undefined : createBatchEventProcessor(), + projectConfigManager: createPollingProjectConfigManager({ + sdkKey: process.env.NEXT_PUBLIC_OPTIMIZELY_SDK_KEY || '', + datafile, + }), + eventProcessor: createBatchEventProcessor(), defaultDecideOptions: isServerSide ? [OptimizelyDecideOption.DISABLE_DECISION_EVENT] : [], disposable: isServerSide, })