diff --git a/MIGRATION.md b/MIGRATION.md index 561050e..98b27a0 100644 --- a/MIGRATION.md +++ b/MIGRATION.md @@ -569,7 +569,7 @@ Logging is **disabled by default** in v4. You must pass a `logger` to `createIns ### v4 -The `isServerSide` prop is removed. Instead, configure the client for SSR use: +The `isServerSide` prop is removed. Instead, configure the client for SSR use. 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'; @@ -577,7 +577,6 @@ The `isServerSide` prop is removed. Instead, configure the client for SSR use: import { useState } from 'react'; import { createInstance, - createStaticProjectConfigManager, createPollingProjectConfigManager, createBatchEventProcessor, OptimizelyProvider, @@ -589,13 +588,11 @@ function ExampleProvider({ children, datafile }) { 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/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, })