You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
[Bug?]: Client Only component displayed in app.tsx causes hydration errors聽#1452
Wait for 1 second and notice a hydration mismatch error
If you set the variable perform_hydration_error to false then you shall see the hydration error disappear
This is because setting perform_hydration_error to false prevents the matching route in index.tsx from suspending
Context 馃敠
I am a maintainer of TanStack Solid Query. I found this error because I wanted to create the hackernews demo using SolidStart and SolidQuery. Adding the SolidQueryDevtools that are only supposed to run on the client was breaking the app. Any ideas here would be greatly appreciated 馃檹
Ok I see it. Another variation of the top-level fragment bug. This is similar problem to portals. Wrapping your component in a <div> is a workaround but I will see what I can do here.
Retested the same pattern with @solidjs/start@2.0.0 and solid-js@1.9.15. It is still reproducible: a top-level fragment containing a clientOnly sibling followed by a route subtree that suspends produces Hydration Mismatch. Unable to find DOM nodes for hydration key and clears the rendered app.
Removing the suspension avoids the mismatch, consistent with the original report. Solid 1.9.15 therefore does not resolve this issue.
I reduced this to the built-in clientOnly helper plus a plain createResource, published the reproduction, and filed the remaining hydration bug upstream:
The mismatch still requires the same combination: an app-level top-level fragment, the client-only sibling, and a suspending route subtree. Replacing the fragment with a <div> or making the route synchronous prevents it. The repro also disables the SolidStart dev overlay as a control.
I also confirmed it on the 1.x branch (solid-js 1.9.17), which the original report was against. A top-level fragment with a clientOnly sibling and a suspending route gives the same hydration mismatch. A synchronous route, or a <div> in place of the fragment, does not.
Activity
ryansolid commentedon May 3, 2024
Ok I see it. Another variation of the top-level fragment bug. This is similar problem to portals. Wrapping your component in a
<div>is a workaround but I will see what I can do here.birkskyum commentedon Aug 17, 2026
Retested the same pattern with
@solidjs/start@2.0.0andsolid-js@1.9.15. It is still reproducible: a top-level fragment containing aclientOnlysibling followed by a route subtree that suspends producesHydration Mismatch. Unable to find DOM nodes for hydration keyand clears the rendered app.Removing the suspension avoids the mismatch, consistent with the original report. Solid 1.9.15 therefore does not resolve this issue.
birkskyum commentedon Aug 17, 2026
I reduced this to the built-in
clientOnlyhelper plus a plaincreateResource, published the reproduction, and filed the remaining hydration bug upstream:The mismatch still requires the same combination: an app-level top-level fragment, the client-only sibling, and a suspending route subtree. Replacing the fragment with a
<div>or making the route synchronous prevents it. The repro also disables the SolidStart dev overlay as a control.lxsmnsyc commentedon Oct 13, 2026
A status note, since the upstream issue changed state:
nextruntime). Both SolidStart 1.x and 2.0 run onsolid-js1.9, which has no fix, so this still affects every released SolidStart.1.xbranch (solid-js1.9.17), which the original report was against. A top-level fragment with aclientOnlysibling and a suspending route gives the same hydration mismatch. A synchronous route, or a<div>in place of the fragment, does not.The
<div>workaround from above still applies.