solidstart-hydration-guard
SolidStart hydration guard: keep SSR/CSR output identical, gate browser-only APIs, use stable IDs, align Suspense/resource fallbacks, and use clientOnly/onMount for client-only UI.
Best use case
solidstart-hydration-guard is best used when you need a repeatable AI agent workflow instead of a one-off prompt.
SolidStart hydration guard: keep SSR/CSR output identical, gate browser-only APIs, use stable IDs, align Suspense/resource fallbacks, and use clientOnly/onMount for client-only UI.
Teams using solidstart-hydration-guard should expect a more consistent output, faster repeated execution, less prompt rewriting.
When to use this skill
- You want a reusable workflow that can be run more than once with consistent structure.
When not to use this skill
- You only need a quick one-off answer and do not need a reusable workflow.
- You cannot install or maintain the underlying files, dependencies, or repository context.
Installation
Claude Code / Cursor / Codex
Manual Installation
- Download SKILL.md from GitHub
- Place it in
.claude/skills/solidstart-hydration-guard/SKILL.mdinside your project - Restart your AI agent — it will auto-discover the skill
How solidstart-hydration-guard Compares
| Feature / Agent | solidstart-hydration-guard | Standard Approach |
|---|---|---|
| Platform Support | Not specified | Limited / Varies |
| Context Awareness | High | Baseline |
| Installation Complexity | Unknown | N/A |
Frequently Asked Questions
What does this skill do?
SolidStart hydration guard: keep SSR/CSR output identical, gate browser-only APIs, use stable IDs, align Suspense/resource fallbacks, and use clientOnly/onMount for client-only UI.
Where can I find the source code?
You can find the source code on GitHub using the link provided at the top of the page.
SKILL.md Source
# SolidStart Hydration Guard ## SSR/CSR Symmetry - No browser-only globals during SSR: guard `window`, `document`, `localStorage`, `matchMedia`, `ResizeObserver` with `if (!isServer)` or `typeof window !== "undefined"`. - Keep server HTML stable: avoid `Math.random()`, `Date.now()` in render; use `createUniqueId()` or values passed from server data. - Ensure Suspense fallbacks are the same server/client; don’t branch on browser checks for fallback. - Avoid rendering different markup based on `isServer` unless the client version is wrapped in `clientOnly` or `<NoHydration>`. ## Stable IDs & Data - For IDs, use `createUniqueId()` inside components, or pass stable IDs from server data/props. - Call `createUniqueId()` the same number of times on server and client; don’t gate it behind `isServer` or `<NoHydration>`. - Only pass JSON-serializable data from server fetchers; avoid class instances/functions. ## Resources & Suspense - For `createResource`/router `createAsync`, keep `initialValue` consistent between server and client. - Prefer `ssrLoadFrom: "server"` when you need the server-rendered HTML to match hydration; `"initial"` will re-fetch on the client. - Use `onHydrated` to inspect resource values during hydration when debugging. - Resources inside non-hydrating sections are not serialized; wrap client-needed data in `<Hydration>` or pass it through props. - Use `deferStream` only when you can set headers/status before flush; otherwise keep data in initial render to avoid mismatch. ## Client-Only UI - Wrap client-only components with `clientOnly` and provide a SSR-safe fallback. - For browser-only effects (e.g., viewport size), run inside `onMount` or `createEffect` gated by `!isServer`. - Effects do not run during the initial client hydration, so they cannot fix initial mismatches. - `<Portal>` is client-only with hydration disabled; use it for overlays that should not hydrate. - `<NoHydration>` skips hydration for its subtree; use `<Hydration>` to resume for interactive islands when needed. ## Streaming & Headers - When streaming (`renderToStream`), set `HttpHeader`/`HttpStatusCode` before first flush; hydrate assumes status/headers are fixed. ## Router Integration - Wrap `<FileRoutes />` with `<Suspense>` in the Router root to avoid hydration errors. - Keep route `preload` functions pure; SSR runs them and resumes on the client during hydration. ## Document & Script Setup - Include `<HydrationScript />` once (SolidStart injects it via the document `assets` slot). ## Debug Checklist - Verify Router root uses `<Suspense>` and that fallbacks match server/client. - Check for non-deterministic render output (`Math.random()`, `Date.now()`). - Confirm `createUniqueId()` call counts are identical on server/client. - Validate query args and server data are JSON-serializable. - If you must render different client UI, isolate it with `clientOnly`, `<NoHydration>`, or `<Portal>`. ## Quick Checks - Are all browser APIs guarded? - Are IDs and fallbacks stable between server and client? - Are Suspense boundaries identical on both sides?
Related Skills
solidstart-entrypoints
SolidStart entrypoints: app.tsx for isomorphic root, entry-client.tsx for browser initialization, entry-server.tsx for SSR setup, app.config.ts for build configuration.
infra-guardian
OpenClaw Agent Infrastructure Guardian — keep your agent's infrastructure alive. Process lifecycle management with detached execution, auto-restart on failure. Cron scheduler health monitoring (per-job detection, auto-recovery). Direct Telegram/messaging alerts independent of OpenClaw. System-level watchdog that runs from crontab, not OpenClaw cron. Use when launching background processes, monitoring cron job health, or when things keep dying silently.
sovereign-project-guardian
Project health and best practices enforcer. Checks security, quality, documentation, CI/CD, and dependencies. Produces a letter grade (A-F) with actionable fixes.
solidstart-websocket
SolidStart WebSocket: experimental WebSocket endpoints, connection handling, message events, real-time communication, bidirectional data flow.
solidstart-api-routes
SolidStart API routes: export GET/POST/PATCH/DELETE functions, handle APIEvent with request/params/fetch, GraphQL and tRPC integration, session management.
fullstack-guardian
Use when implementing features across frontend and backend, building APIs with UI, or creating end-to-end data flows. Invoke for feature implementation, API development, UI building, cross-stack work.
architecture-guardian
Review architecture decisions and code changes against documented architecture principles. Use this skill before implementing new features or refactoring existing code to ensure compliance with layer boundaries, separation of concerns, and design patterns. Should be invoked when user requests "architecture review" or before making significant changes.
arch-guard
進行代碼重構或新增模組時觸發。確保程式碼符合 Clean Architecture + DDD + CQRS 的層次關係,防止架構腐化。
solidstart-optimistic-ui
SolidStart optimistic UI: use useSubmissions to show pending data immediately, combine server data with pending submissions, filter by pending state, handle rollback on errors.
fluxguard-automation
Automate Fluxguard tasks via Rube MCP (Composio). Always search tools first for current schemas.
design-system-guard
Validate UI screens against Lucid Labs design system rules. Use after implementing UI components to verify adherence to brand colors, typography, layout patterns, and service board logic.
agentguard
GoPlus AgentGuard — AI agent security guard. Automatically blocks dangerous commands, prevents data leaks, and protects secrets. Use when reviewing third-party code, auditing skills, checking for vulnerabilities, evaluating action safety, or viewing security logs.