Vite · VITE0018

Avoid browser globals in Vite SSR entries

Flags browser global in SSR entry in Vite SSR code before it leaks into runtime behavior.
VITE0018vite-doctor/vitessrerrorNo fix
vite/ssr/no-browser-global-in-ssr-entrysrc/rule-packs/vite/rules/ssr.ts Upstream docs

Run this rule

pnpm vite-doctor . --framework vite --rules vite/ssr/no-browser-global-in-ssr-entry

Why it matters

Server-rendered markup must match the first client render. Browser-only state, time, randomness, or hash-sensitive URLs can create hydration mismatches.

Remove browser global in SSR entry, or move it to the Vite runtime/API that owns that behavior.

Example

Avoid browser globals in SSR entry

Before

export function render() {
  return window.location.href
}

After

export function render(url: string) {
  return url
}
Copyright © 2026