- Page URL paths are now relative to src/pages. The old greedy
`.*/pages/` cut mapped src/pages/admin/pages/index.tsx to /index, so
every page under a nested `pages` directory collided with the home page
and was never bundled. SSR also tells API routes by URL path now.
- CommonJS `require("react…")` in client bundles (for example
use-sync-external-store/shim, pulled in by MUI) threw "Dynamic require
of "react" is not supported" in the browser. Those requires now go
through a small bundled ESM module that imports the external.
Co-Authored-By: Claude Opus 5.5 <[email protected]>
- Server functions can return not_found: true to render the 404 page
with status 404.
- Page components and window.__PAGE_PROPS__ (and HMR updates) only get
props, query, url and error. response_options, redirect, cache settings
and res_transform stay on the server, so cookies and private headers no
longer end up in the HTML. BunextPageProps is narrowed to match
(breaking for code that read server-only fields from component props).
- response_options headers go through a Headers object, so repeated
headers such as several Set-Cookie survive.
- Redirects: status_code wins over permanent; response_options headers
and res_transform apply to redirects too.
- Gzip for compressible text responses; compress: false to turn it off.
- Files the router matches but never bundles (.server.ts, __root,
excluded paths and directories) return 404 instead of looping through
dev rebuild retries.
- Missing public files return 404 rather than 403, so dotted page paths
like /users/john.doe fall through to pages again.
- importFresh detects rewrites within the filesystem's mtime granularity.
- README: self-hosted React (not esm.sh), snake_case option names, static
file serving, cache headers, the new options.
Co-Authored-By: Claude Opus 5.5 <[email protected]>
Client-only edits are sent to the browser right after the hydration build,
without re-running server functions; SSR rebuilds afterwards and props are
re-fetched only when a .server.ts output changed or after fullRebuild. Page
requests wait for an in-flight SSR rebuild. The SSR build no longer runs
Tailwind, the PostCSS processor is reused across rebuilds, and the watcher
debounce drops from 200ms to 50ms.
Co-Authored-By: Claude Opus 5.5 <[email protected]>