Last 12 weeks · 109 commits
6 of 6 standards met
Duplicates [x] I have searched the existing issues Latest version [x] I have tested the latest version Current behavior 😯 When a page (mainly a streaming one) is initially loaded and navigated out of during hyration, it will cause a hydration warning on the new page, which is caught by the ErrorBoundary, triggering a double render (#2297). Expected behavior 🤔 Not sure what should be the goal behavior, but most likely discarding the pending hydration process would be ideal? Steps to reproduce 🕹 Here's a page you can add in apps/tests: Context 🔦 Related to #2297 Your environment 🌎
The bug With the dev overlay enabled (the default), the first client-side navigation after any SSR page load in dev leaves the previous page's DOM on screen — both routes render at once. Easy to hit as: home → about → back → refresh → click a link. makes it disappear, which is how it was tracked down. Root cause renders a `Portalinsert()container._$hostnullinsert()onMountsharedConfig.contextHydration MismatchsharedConfig.contextrender()document.bodyDOMContentLoadedloading@jridgewell/trace-mapping@solidjs/startUncaught (in promise) SyntaxError: ... does not provide an export named 'default'@jridgewell/resolve-urioptimizeDeps.include: ["@solidjs/start > @jridgewell/trace-mapping"]optimizeDepscreateAsync`-under-hydration phantom-marker behavior looks like a solid-js/dom-expressions core issue worth an upstream fix; this PR removes the dev overlay's exposure to it. 🤖 Generated with Claude Code
Duplicates [x] I have searched the existing issues Latest version [x] I have tested the latest version Current behavior 😯 _No response_ Expected behavior 🤔 _No response_ Steps to reproduce 🕹 do exactly what's in the video: https://github.com/user-attachments/assets/94d33e7e-09e7-4846-a799-4f2b6385bb25 Context 🔦 _No response_ Your environment 🌎
Current behavior When a file has a file-level directive and exports a function wrapped in or , the export is silently dropped from the client bundle: Expected behavior The export should be preserved on the client with the inner function replaced by an RPC stub: Root cause (client mode, ) calls for each export to generate RPC stubs. only returns a binding when the variable's is directly a function expression: only matches . When is — a — returns , so is never added to . Then at : Suggested fix Option A (targeted): When returns for a init, fall back to the function-level transform: traverse the arguments for nested functions, replace them with , and include the modified declaration in the output. This generalizes to any HOF wrapper (, , , custom wrappers), not just . Option B (cleaner): Transform the import site instead of the module — when the client bundle imports a named export from a module, inline the RPC stub at the call site so the server module never enters the client bundle at all (similar to how React Server Components handles server actions). Environment OS: Windows 11 Node: v26.2.0 pnpm: 11.8.0 @solidjs/start: 2.0.0-rc.7 Some of the content was generated by AI.
What runs on the first dev request and emitted a event for every existing route file it discovered. The fs-watcher's debounced handlers then invalidated (ssr) / d (client) the manifest ~200ms later — after the manifest had already been served — pushing a spurious HMR update that re-imported , 's , and the user's as fresh -stamped module instances while hydration was still in flight. This PR keeps the events quiet during the initial scan. Edits, additions, and removals of route files after the scan still emit as before. Symptoms Depending on where the update landed relative to hydration, dev sessions intermittently saw: two pages rendered simultaneously (#2297) client-side navigation updating the URL but not the content / handlers never firing (the handler lives in the stale module instance while the DOM belongs to the new one) The race is nondeterministic twice over: server-side, if the debounced handler fires before the manifest module exists in the graph, the event degrades to a harmless sent to zero connected clients — so cold starts only misbehaved ~50% of the time; client-side, damage depends on whether the HMR update lands before or after hydration completes, so heavier apps fail much more often than small ones. This matches an A/B on a real site where 16/20 cold dev runs broke client-side navigation. Verification Against the published with this change patched into , driving cold dev starts with Playwright (fresh + fresh server per run): before: 3/6 cold loads received a spurious push ~420ms after the first request, with the browser re-importing and after: 0/6, across repeated batches editing an existing route file still hot-updates just that module; adding a new route file still reloads the manifest and the new route navigates correctly and the fs-routes unit tests (28) pass. 🤖 Generated with Claude Code
Repository: solidjs/solid-start. Description: SolidStart, the Solid app framework Stars: 5914, Forks: 425. Primary language: TypeScript. Languages: TypeScript (88.5%), CSS (9.5%), JavaScript (1.9%). License: MIT. Homepage: https://docs.solidjs.com/solid-start/v2/ Topics: file-system-routing, fine-grained-reactivity, meta-framework, sdk, signals, solid-js, solidjs, solidstart, spa, ssr. Latest release: @solidjs/start@2.0.4 (22h ago). Open PRs: 1, open issues: 32. Last activity: 22h ago. Community health: 87%. Top contributors: ryansolid, nksaraf, nsarafpure, birkskyum, lxsmnsyc, atilafassina, github-actions[bot], ghalle, brenelz, Brendonovich and others.