fix: support solid-js 2.0.0-rc.20 without server writes#5

open1
main
p7gg:fix/solid-rc20-server-write
opened11d agobyGGabriel Silva

Summary

Quoin 0.6.0 pins its Solid peers to 2.0.0-rc.18. Consumers on 2.0.0-rc.20 get a duplicate @solidjs/signals install, and rendering an uncontrolled controlled-state root such as <Dialog.Root> emits Solid's SERVER_WRITE diagnostic because createControlledState seeds its internal signal through the setter during render.

This PR:

  • Seeds the internal controlled-state signal at creation. The value is stored in a small { value } wrapper so a function value is not mistaken for a lazy computed signal.
  • Skips client-only registration and measurement writes during SSR for labels, field controls, mount transitions, tooltip triggers, avatar cleanup, slider thumb maps, tabs, and toolbar maps.
  • Keeps Field SSR associations intact by having the labelable provider read its registration maps directly on the server instead of writing a signal there.
  • Adds an SSR regression test for an uncontrolled <Dialog.Root>.
  • Runs the SSR suite with --conditions development, where Solid emits SERVER_WRITE.
  • Tests against solid-js@2.0.0-rc.20 and widens the peer range to >=2.0.0-rc.18 <3.0.0.

Validation

  • bun run typecheck
  • bun test: 1934 pass, 148 skip, 0 fail
  • bun run test:ssr: 40 pass, 0 fail
  • bun run test:hydration: 12 pass, 0 fail

The SSR suite produces no SERVER_WRITE diagnostics under rc.20 with development conditions. No public component API changes.

Added 1 commit

  • fix: support solid-js 2.0.0-rc.20 without server writes88027c2