- 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]>
Set it with `dist_dir` in bunext.config.ts or `--dist-dir` on any CLI
command (precedence: --dist-dir > BUNEXT_DIST_DIR > dist_dir > .bunext).
setupDistDir() resolves it in the CLI's preAction hook and at the start
of bunextInit(), so custom servers get the config value too.
- Read dist-derived paths from grabDirNames() inside functions instead of
at import time; a guard test enforces this.
- Derive the client asset URL prefix from the dist dir instead of
hard-coding /.bunext.
- Make the dev watcher ignore rules and probe follow the dist dir.
- Validate the dir: inside the project root, outside src/, public/ and
node_modules/, URL-safe characters only.
Co-Authored-By: Claude Opus 5.5 <[email protected]>
- Move page cache out of the publicly served .bunext/public dir and hash cache keys
- Skip caching credentialed requests, non-2xx and Set-Cookie responses; cap entries
- Enforce API body size limit while reading; keep req body readable for handlers
- Hide error messages from clients in production
- Escape inline script JSON; strip cookies from HMR payloads
- Only trust X-Forwarded-Proto with trust_proxy config
- Fix console race in SSR, dotted page paths, middleware rewrites,
excluded path status, encoded static file names, symlinked dirs
- Upgrade vulnerable deps, remove micromatch, pin bun versions, delete dead code
Co-Authored-By: Claude Opus 5.5 <[email protected]>