createStoreForRequest
Creates an isolated store instance scoped to a single server request. Essential for SSR to prevent state leaking between requests.
Signature
function createStoreForRequest<T extends StoreDefinition>(
definition: T
): Store<T>Parameters
| Parameter | Type | Description |
|---|---|---|
| definition | T extends StoreDefinition | Same definition shape as createStore. Persistence and sync options are ignored in SSR. |
Note
createStoreForRequest is identical to createStore in API, but it creates a fresh instance every time it's called. This prevents state from one user's request leaking into another's.Example
app/page.tsx
import { createStoreForRequest, useStore } from 'stroid'
// Server Component
export default async function Page() {
const store = createStoreForRequest({
user: null as User | null,
preferences: { theme: 'dark' },
})
// Populate on the server
const user = await fetchUser()
setStore(store, { user })
return <ClientPage store={store} />
}
// Client Component
'use client'
function ClientPage({ store }) {
const user = useStore(store, s => s.user)
return <div>Hello, {user?.name}</div>
}