Skip to content
stroid
Docsapicreate store for request
Docs for v0.0.2 - current npm release. Reduce your code, reduce your stress - never your functionality.

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

ParameterTypeDescription
definitionT extends StoreDefinitionSame 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>
}