Skip to content

version 1.0.1 breaks server-side rendering for nanostores atoms in nextjs #41

@lunarW1TCH

Description

@lunarW1TCH

In version 1.0.0 when messages are called on the server useStore hook returns the object populated with default values. In version 1.0.1 it returns undefined.

'use client';

const NavigationPanel = (): React.ReactNode => {
  const t = useStore($messages); // undefined during initial server-side render
  // ...
}

// this example uses `@nanostores/i18n` but the issue is universal to any nanostores atom
export const $messages = i18n('root/nav', {
  title: 'Title'
});

Current behavior breaks all pre-rendering. next@16.0.10

Uncaught Error: Switched to client rendering because the server rendering errored:

Cannot read properties of undefined (reading 'title')
react-dom-client.development.js:11329:17
    updateSuspenseComponent react-dom-client.development.js:11329
    beginWork react-dom-client.development.js:12449
    runWithFiberInDEV react-dom-client.development.js:987
    performUnitOfWork react-dom-client.development.js:18995
    workLoopSync react-dom-client.development.js:18823
    renderRootSync react-dom-client.development.js:18804
    performWorkOnRoot react-dom-client.development.js:17833
    performWorkOnRootViaSchedulerTask react-dom-client.development.js:20382
    performWorkUntilDeadline scheduler.development.js:45
    (Async: EventHandlerNonNull)
    <anonymous> scheduler.development.js:223
    <anonymous> scheduler.development.js:364
    instantiateModule dev-base.ts:244
    runModuleExecutionHooks dev-base.ts:278
    instantiateModule dev-base.ts:238
    getOrInstantiateModuleFromParent dev-base.ts:162
    commonJsRequire runtime-utils.ts:389
    <anonymous> index.js:6
    instantiateModule dev-base.ts:244
    runModuleExecutionHooks dev-base.ts:278
    instantiateModule dev-base.ts:238
    getOrInstantiateModuleFromParent dev-base.ts:162
    commonJsRequire runtime-utils.ts:389
    <anonymous> react-dom-client.development.js:26276
    <anonymous> react-dom-client.development.js:30584
    instantiateModule dev-base.ts:244
    runModuleExecutionHooks dev-base.ts:278
    instantiateModule dev-base.ts:238
    getOrInstantiateModuleFromParent dev-base.ts:162
    commonJsRequire runtime-utils.ts:389
    <anonymous> client.js:37
    instantiateModule dev-base.ts:244
    runModuleExecutionHooks dev-base.ts:278
    instantiateModule dev-base.ts:238
    getOrInstantiateModuleFromParent dev-base.ts:162
    commonJsRequire runtime-utils.ts:389
    <anonymous> app-index.tsx:2
    instantiateModule dev-base.ts:244
    runModuleExecutionHooks dev-base.ts:278
    instantiateModule dev-base.ts:238
    getOrInstantiateModuleFromParent dev-base.ts:162
    commonJsRequire runtime-utils.ts:389
    <anonymous> app-next-turbopack.ts:11
    appBootstrap app-bootstrap.ts:79
    loadScriptsInSequence app-bootstrap.ts:23
    appBootstrap app-bootstrap.ts:61
    <anonymous> app-next-turbopack.ts:10
    instantiateModule dev-base.ts:244
    runModuleExecutionHooks dev-base.ts:278
    instantiateModule dev-base.ts:238
    getOrInstantiateRuntimeModule dev-base.ts:128
    registerChunk runtime-backend-dom.ts:57
    AsyncFunctionNext self-hosted:780
    (Async: async)
    registerChunk dev-base.ts:1149
    forEach self-hosted:145
    NextJS 2

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions