Skip to content

v2 migration: duplicate solid-js copies break client-side routing with unclear router error #2286

Description

@jonkwheeler

Summary

After migrating a small site from SolidStart v1 / Vinxi to SolidStart v2 / Vite / Nitro, client-side navigation broke in a non-obvious way:

  • Clicking a route link updated the browser URL.
  • The rendered page stayed on the previous route.
  • The console error was:
TypeError: Cannot read properties of null (reading 'push')

Root cause

The app and @solidjs/start ended up with different copies of solid-js under pnpm:

  • app: solid-js@1.9.10
  • @solidjs/start@2.0.0: solid-js@1.9.14

That split Solid's reactive owner/context across module instances, so router context was null at runtime.

Workaround

Pin and force a single solid-js copy:

{
  "dependencies": {
    "solid-js": "^1.9.14"
  },
  "pnpm": {
    "overrides": {
      "solid-js": "^1.9.14"
    }
  }
}

After deduping, client-side navigation worked locally and on the Netlify deploy preview.

Request

Could SolidStart or Solid Router detect duplicate solid-js instances and surface a development-time error, or could the v2 migration guide call this out explicitly? The current runtime error does not point toward dependency duplication, which made this difficult to diagnose.

Environment

  • @solidjs/start: 2.0.0
  • @solidjs/router: 0.16.3
  • solid-js: 1.9.10 and 1.9.14 before dedupe
  • vite: 8.2.1
  • nitro: 3.0.260610-beta
  • pnpm: 10.33.4
  • Node: 24.19.0
  • Deployment: Netlify

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