close
Skip to content

Design pillar: SSR-safe by construction (no module-top-level window access) #2

@productdevbook

Description

@productdevbook

ahize must import cleanly in any SSR environment (Next.js App Router, Nuxt 3, Remix, SvelteKit, Astro) without touching `window`/`document` at module scope. Every public method is a no-op when non-browser.

Evidence

Contract

  1. No `window`/`document` references at module scope. Always behind `isBrowser()` guard.
  2. `delete` only through `Reflect.deleteProperty` on a narrowed reference.
  3. Build with `verbatimModuleSyntax: true` + `isolatedModules: true` — already configured.
  4. CI matrix must include: Next.js 14 + App Router, Next.js 15, Nuxt 3, Remix, SvelteKit, Astro, Cloudflare Workers.
  5. Add `ahize/server` stub entry so SSR bundles never tree-pull any DOM code.

Metadata

Metadata

Assignees

No one assigned

    Labels

    competitor-analysisDerived from OSS competitor issue patternsdesign-pillarCore design decisionsssrSSR / hydration / Next.js / Nuxt

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions