docs: clarify options prop requirement for Pages Router SSR with serverState
I maintainer di solito rispondono entro 1 giorno
Nessuno ha ancora preso questa issue.
Valutazione
- Difficoltà
- 2/5
- Tempo stimato
- 1-3 ore
- Idoneità per principianti
- 55/100
- Tipo di issue
- Documentazione
- Chiarezza
- Specificata chiaramente
- Stato di attività
- Ferma
- Stack tecnologico
- next.js, typescript
- Ambito
- documentation
Direzione di ricerca
Inizia dalla documentazione di Pages Router SSR all’URL collegato, quindi leggi le righe 8-13 e 35-54 di react.tsx per confermare il contratto di inizializzazione di FlagsmithProvider. Aggiorna l’esempio e la nota esplicativa in modo da coprire serverState, la prop options, preventFetch e la conseguenza di manual-init; il completamento è definito dai criteri di accettazione elencati.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Descrizione
Description
Problem
The current Next.js Pages Router SSR documentation example shows how to use serverState but doesn't mention that the options prop is required for automatic client-side initialization.
This leads to a common issue where developers following the docs experience:
useFlagsmithLoading()stuck on{ isLoading: true, isFetching: true }- Loading states never updating
- Confusion about why hooks don't work as expected
Root Cause
The FlagsmithProvider component has an intentional design contract:
// From react.tsx type definition
options?: Parameters<IFlagsmith['init']>[0] // Initialisation options, if you do not provide this you will have to call init manually
- Without
options: Users must callflagsmith.init()manually - With
options: Component automatically callsinit()on mount
This design is intentional but not documented in the Pages Router example.
Current Documentation Gap
The current example shows:
<FlagsmithProvider
flagsmith={flagsmithRef.current}
serverState={flagsmithState}
>
<Component {...pageProps} />
</FlagsmithProvider>
Issue: This works for rendering flags, but hooks like useFlagsmithLoading() will be stuck because init() was never called to register callbacks.
What Needs to Be Documented
The documentation should clearly explain:
- The
optionsprop is required for automatic client-side initialization - When using
serverState, you should passoptions={{ preventFetch: true }} - Why
preventFetch: trueis recommended (avoids duplicate API calls, uses server-side flags) - What happens without
options(hooks won't work, manualinit()required)
Suggested Fix
Update the Pages Router documentation example to:
- Include
options={{ preventFetch: true }}in the code example - Add a callout/note explaining why it's needed for hooks to work
- Explain the consequence of omitting it (stuck loading states)
Note: The code already has a comment in the type definition (react.tsx:10), but the documentation doesn't reflect this requirement.
Additional Context
User Impact
This affects developers:
- Following the Pages Router SSR documentation
- Using
useFlagsmithLoading()or other hooks - New to Flagsmith (not familiar with the initialization contract)
Customer Report
A customer recently reported this exact issue:
- Using Next.js 15 Pages Router
- Following the docs exactly as written
useFlagsmithLoading()stuck on loading state- Adding
options={{ preventFetch: true }}immediately fixed it
Reproduction
I've created a minimal reproduction project that demonstrates:
- The issue when
optionsis omitted - The fix when
options={{ preventFetch: true }}is added
Acceptance Criteria
- Pages Router example updated to include
options={{ preventFetch: true }} - Clear note/callout added explaining why
optionsis required - Documentation explains what happens without the
optionsprop
Related Code
- Component type definition:
react.tsx:8-13 - Initialization logic:
react.tsx:35-54
- Lingua principale
- TypeScript
- Stelle
- 67
- Fork
- 47
- Merge medio
- 2h 26m
- PR unite (30g)
- 2
Preparare l'ambiente
- Nessun Dockerfile né file Docker Compose
- Ha un modello di pull request
- Nessuna guida per i contributori
Come iniziare
- Leggi tutta la issue e poi la guida ai contributi del progetto.
- Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
- Fai un fork del repository e lavora su un branch.
- Apri una pull request che faccia riferimento al numero della issue.
Altre issue di Flagsmith/flagsmith-js-client
-
Dependency DashboardAperta
Difficoltà 1/5 Meno di un'ora Idoneità per principianti 20/100
Flagsmith/flagsmith-js-client#435 ·
I maintainer di solito rispondono entro 1 giorno
-
Move module-scope Emitter in react.tsx into the ProviderForse già presa @EngineerOnTravel l’ha presa 70 giorni fa. Apertabug good first issue
Difficoltà 3/5 1-2 giorni Idoneità per principianti 58/100
Flagsmith/flagsmith-js-client#391 · 1 commento ·
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 4/5 3-5 giorni Idoneità per principianti 35/100
Flagsmith/flagsmith-js-client#330 ·
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 4/5 3-5 giorni Idoneità per principianti 38/100
Flagsmith/flagsmith-js-client#329 · 1 commento ·
I maintainer di solito rispondono entro 1 giorno
-
Standardize SDK init errorsAperta
Difficoltà 4/5 3-5 giorni Idoneità per principianti 35/100
Flagsmith/flagsmith-js-client#324 · 2 commenti ·
I maintainer di solito rispondono entro 1 giorno
Tutte le issue di Flagsmith/flagsmith-js-client
Issue simili
-
New icon: `filter-clear`Apertacalcite-ui-icons enhancement impact - p3 - not time sensitive needs triage
Difficoltà 2/5 1-3 ore Idoneità per principianti 67/100
Esri/calcite-design-system#15467 ·
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 78/100
diegosouzapw/OmniRoute#18390 ·
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 65/100
-
Difficoltà 1/5 1-3 ore Idoneità per principianti 86/100
guilhermerodz/input-otp#157 · 1 commento ·
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 82/100
davidjerleke/embla-carousel#1414 ·
I maintainer di solito rispondono entro 4 giorni