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
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions