Skip to content

[Bug?]: Dev: browser tab hangs & renderer crashes after ~7-8 reloads of a page that imports many (~150+) ES modules #2149

@apudiu

Description

@apudiu

Duplicates

  • I have searched the existing issues

Latest version

  • I have tested the latest version

Current behavior 😯

In dev, a page that statically imports a few hundred ES modules makes the browser tab hang and then the renderer crash (DevTools: "Render process gone") after only ~7-8 reloads of the same tab. It reproduces with trivial, dependency-free modules, so the trigger is the number of modules per page, not any particular library. Reproduced on SolidStart 1.3.2 (Vinxi 0.5.11) and 2.0.0-alpha.2 (@solidjs/vite-plugin-nitro-2 0.1.0).

Expected behavior 🤔

Reloading a dev page any number of times should not hang or crash the browser; each navigation should release the previous document's modules.

Steps to reproduce 🕹

Repo: https://github.com/apudiu/solidstart-reload-hang

git clone https://github.com/apudiu/solidstart-reload-hang
cd solidstart-reload-hang
bun install
bun run dev          # generates 160 trivial modules, then starts the dev server
  1. Open http://localhost:3000 in Google Chrome.
  2. Reload (Ctrl/Cmd+R) repeatedly in the same tab, letting each load finish ? about 8 times.
  3. Around the 7th-8th reload the tab stops rendering: spinner / blank page, the Network panel shows every module request stuck at pending (0 B, never resolves), and shortly after the renderer crashes ? the page goes unresponsive and DevTools reports "Render process gone".
  4. Opening the same URL in a new tab works ? only the repeatedly-reloaded tab dies.

Tune the count to see the threshold:

MODULES=50  bun run dev   # ~50 modules  -> survives 15+ reloads
MODULES=160 bun run dev   # ~160 modules -> dies at ~7 reloads (default)

The 160 modules are trivial one-liners (export default () => <span/>) generated by scripts/generate-modules.mjs and rendered in src/routes/index.tsx via import.meta.glob.

We hit this originally in a real app, not by contriving a module count: a single import from an in-house Kobalte-based UI barrel (index.ts full of export *) transitively pulled the whole kit (~18 components + Kobalte/corvu/solid-sonner), which in dev is served as ~150 small ESM modules ? so a plain login page was ~150 modules. Real dev apps routinely serve 300-1000+ modules per page, so ~160 is on the low end.

Actual

The tab hangs and the renderer crashes; how soon scales with the page's module count (160 ? ~7 reloads; 50 ? survives 15+). This points to per-tab state accumulating across same-origin reloads that isn't released on navigation. During the hang the dev server stays healthy ? curl / returns 200 in milliseconds and a fresh tab loads normally ? so it's the browser renderer, not the server.

Context 🔦

What we've ruled out

  • Not a specific library ? reproduces with trivial, zero-dependency modules; not barrel files specifically.
  • Not the SolidStart major version ? both v1 (1.3.2 / vinxi) and v2-alpha (2.0.0-alpha.2 / nitro-2).
  • Not solid-js version/duplication ? reproduced with a single solid-js@1.9.13 and with mixed 1.9.12/1.9.13.
  • Not DevTools ? hangs with DevTools open and closed.
  • Not reload speed ? hangs on slow (full-load) and fast reloads.
  • Not the dev server ? it stays responsive throughout; a fresh tab loads fine.
  • Not the host file-watcher limit ? reproduced with fs.inotify.max_user_watches at both 65,536 and 524,288 (no ENOSPC).

Notes

This may originate in the Vite/Vinxi dev module-serving layer, or be a Chromium renderer behavior with very many native-ESM modules + repeated same-origin reloads ? filing here because it reproduces cleanly in the SolidStart dev server out of the box. Happy to re-test against plain Vite or provide a CDP-automated reproducer if useful.

Your environment 🌎

`@solidjs/start` : 1.3.2 (also reproduced on 2.0.0-alpha.2)
`vinxi` : 0.5.11 (v1); v2-alpha uses `@solidjs/vite-plugin-nitro-2` 0.1.0
Vite 6.x under Vinxi (v1) / 7.x (v2-alpha)
`solid-js` : 1.9.13
`@solidjs/router` : 0.15.4
Node : 24
OS / Browser : Linux / Google Chrome 148

Metadata

Metadata

Assignees

No one assigned

    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