Commit Graph

1381 Commits

Author SHA1 Message Date
Jerry Zhao e99b8c6f54 refactor(project): unify directory detection into a shared findDir helper (#2162) 2026-06-18 21:43:11 +01:00
Jerry Zhao ef78685beb test(next-config): build the cacheHandler file:// fixture with pathToFileURL (#2163) 2026-06-18 21:39:37 +01:00
James Anderson c3ff14ec63 docs: add performance best practices (#2157)
* docs: add performance best practices

* Update AGENTS.md

Co-authored-by: Alexander Lichter <alichter@cloudflare.com>

---------

Co-authored-by: Alexander Lichter <alichter@cloudflare.com>
2026-06-18 21:32:32 +01:00
Jilles Soeters 8354b98d64 fix(init): ignore vinext output directory (#2160) 2026-06-18 21:26:05 +01:00
James Anderson 12f04d6d63 fix(app-router): block dangerous RSC redirect URLs (#2154)
* fix(app-router): block dangerous RSC redirect URLs

* refactor(app-router): reuse blocked navigation reporter

* style(app-router): format redirect guard import
2026-06-18 17:51:07 +00:00
James Anderson 44802b7dd6 fix(perf): stabilize stale pull request benchmarks (#2153) 2026-06-18 17:54:47 +01:00
Alexander Lichter 2fc9845ed3 fix(fonts): preload only requested google font subsets (#2152)
Co-authored-by: James Anderson <james@eli.cx>
2026-06-18 17:20:05 +01:00
MK (fengmk2) 6fff7bb88f chore: upgrade vite-plus to 0.2.1 (#2149)
v0.2.1 consumes upstream Vitest directly: the @voidzero-dev/vite-plus-test wrapper is removed and vitest now comes in transitively through vite-plus.

- catalog: vite-plus 0.1.24 -> 0.2.1, vite -> @voidzero-dev/vite-plus-core@0.2.1
- catalog: vitest -> upstream 4.1.9 (was the vite-plus-test alias), @vitest/coverage-istanbul 4.1.6 -> 4.1.9
- drop the vitest peerDependencyRules accommodations for the wrapper/old vitest
- decode Vitest's flatted blob format directly in scripts/lib/vitest-blob-timings.mjs (the removed wrapper bundled the parser this script previously reached into)
2026-06-18 16:37:34 +01:00
Alexander Lichter 9639c88231 perf(app-router): defer prerender endpoint & file metadata runtimes (#2150)
* perf(app-router): defer prerender endpoint runtime

* perf(app-router): defer file metadata runtimes
2026-06-18 16:30:03 +01:00
Nathan Nguyen 00f0a684e0 test(ppr): wait for fallback shell abort signal (#2072) 2026-06-18 15:07:56 +01:00
MaxtuneLee ef003c0ebe fix(server): q-value-aware Accept-Encoding negotiation (#2047)
* fix(server): implement q-value-aware Accept-Encoding negotiation and add tests

* docs(server): update comments for Accept-Encoding parsing to clarify q-value handling

* fix(server): enhance q-value handling in Accept-Encoding parsing and add tests

* fix(server): enhance q-value handling in Accept-Encoding parsing and add tests for isEncodingAccepted

* fix(tests): update negotiateEncoding tests to reflect zstd as highest preference in prod-server.ts

* fix(tests): update negotiateEncoding tests

* fix(tests): remove redundant test for explicit refusal overriding wildcard in negotiateEncoding

* fix(server): normalize encoding checks in isEncodingAccepted function

* refactor(server): extract accept-encoding helpers

* fix(tests): remove redundant zlib check and import HAS_ZSTD from accept-encoding module

* fix(server): honor Accept-Encoding quality weights

* fix(server): repair accept-encoding CI checks

* fix(server): harden content encoding negotiation

* fix(server): align encoding negotiation with Next.js

* refactor(server): remove unused encoding parse state

* fix(server): normalize empty vary headers

---------

Co-authored-by: James <james@eli.cx>
2026-06-18 14:07:05 +01:00
James Anderson 55d9a23860 fix(image): resolve aliased static imports (#2142) 2026-06-18 13:59:31 +01:00
James Anderson 91a445d08b fix(perf): publish fork pull request results (#2146) 2026-06-18 12:52:09 +00:00
James Anderson 1d6eb006f1 fix(perf): trace sandboxed benchmark processes (#2144)
* fix(perf): trace sandboxed benchmark processes

* fix(perf): preserve profiler cache under sudo

* fix(perf): expose profiler helpers under sudo

* chore(perf): format profiler environment

* fix(perf): expose privileged trace artifacts

* fix(perf): profile within benchmark sandbox

* fix(perf): isolate profiler home environment

* fix(perf): prepare kernel profiler access
2026-06-18 12:40:58 +01:00
James Anderson bb9a034021 feat(web): show fifty benchmark runs (#2143)
* feat(web): show fifty benchmark runs

* fix(perf): run nextjs benchmarks first
2026-06-18 12:04:57 +01:00
James Anderson e46e2dbb05 feat(web): add performance benchmark dashboard (#2131)
* feat(web): add performance benchmark dashboard

* fix(web): clean up benchmark dashboard exports

* fix(web): support benchmark runs without baselines

* fix(perf): support targeted main baseline runs

* fix(web): revalidate benchmark commit baselines

* feat(perf): improve vinext trace profiles

* fix(web): neutralize insignificant benchmark diffs

* fix(perf): replace existing benchmark runs

* fix(perf): expose vinext trace frames

* feat(perf): retain complete vinext trace detail

* feat(perf): filter flame graph categories

* fix(web): compact flame graph rows

* fix(perf): replace runs by commit identity

* fix(benchmarks): preserve complete performance traces

* fix(benchmarks): use commit time for performance runs

* fix(benchmarks): store performance profiles in R2

* fix(benchmarks): stream performance profiles to R2

* fix(benchmarks): decode raw performance profiles

* fix(benchmarks): show inclusive filtered profile time

* fix(benchmarks): resize filtered flame graphs

* fix(benchmarks): render narrow flame frames

* perf(benchmarks): bound flame graph detail

* ci(perf): split benchmark publication privileges

* fix(perf): harden benchmark publication

* fix(perf): initialize runner paths in job

* fix(perf): install through vite plus

* fix(perf): disable pnpm hooks during install

* fix(perf): select trusted harness ref

* fix(perf): resolve vite plus for isolated user

* fix(perf): grant isolated tool access

* fix(perf): share benchmark cache cleanup

* fix(perf): harden trace publication

* chore(perf): format migration snapshots

* feat(web): restore benchmarks navigation
2026-06-18 11:41:50 +01:00
github-actions[bot] 39ce2ba170 chore: version packages (#2113)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
vinext@0.1.5
2026-06-18 09:54:39 +00:00
James Anderson eeac5db0a3 fix(image): preserve unoptimized remote URLs (#2139)
* fix(image): preserve unoptimized remote URLs

* fix(image): honor overrideSrc when unoptimized
2026-06-18 10:49:42 +01:00
Jerry Zhao 0ca9513e01 test(optimize-imports): make barrel-resolution fixtures portable to Windows (#2132) 2026-06-18 10:20:40 +01:00
Jerry Zhao d077d67b79 refactor(instrumentation): drop redundant normalizePath on instrumentation-client path (#2130) 2026-06-18 00:33:30 +01:00
Jerry Zhao 9d31912773 test(type-of-window): test the cache-dir exclude filter with POSIX ids (#2129) 2026-06-18 00:33:17 +01:00
Jerry Zhao 33b24a27c9 refactor(instrumentation): resolve instrumentation hook files in forward-slash space (#2128) 2026-06-18 00:06:17 +01:00
Alexander Lichter 55b1417d22 perf(app-router): defer cache-only runtimes (#2126) 2026-06-18 00:05:31 +01:00
Alexander Lichter 01c3abbe38 perf(app-page-cache): reuse HTML ISR key during regeneration (#2127) 2026-06-18 00:04:30 +01:00
Jerry Zhao d98adce4bc fix(image-imports): normalize watchChange id so image cache invalidates on Windows (#2125) 2026-06-17 23:50:19 +01:00
Jerry Zhao a85170c74a fix(transforms): emit sourcemaps from strip-server-exports and remove-console (#2124) 2026-06-17 23:45:59 +01:00
Jerry Zhao 29248465c6 perf(app-page-cache): reuse the ISR cache key on the stale-regeneration path (#2123) 2026-06-17 23:39:11 +01:00
Jerry Zhao 19d8f04cbb perf(image-imports): hoist image-extension regex to module scope (#2122) 2026-06-17 21:51:49 +00:00
Alexander Lichter cc8d4d6dea perf(ssr): isolate open redirect detection (#2120)
* perf(ssr): isolate open redirect detection

* perf(ssr): isolate stream cleanup runtime

* Apply suggestions from code review

Co-authored-by: James Anderson <james@eli.cx>

* remove comments

---------

Co-authored-by: James Anderson <james@eli.cx>
2026-06-17 21:29:13 +00:00
Alexander Lichter c3ff8a7028 perf(dev): skip JSX transform for compiled runtime (#2121) 2026-06-17 22:13:21 +01:00
Alexander Lichter d2edaf80b5 perf(build): rely on plugin hook filters (#2119) 2026-06-17 19:13:42 +01:00
Alexander Lichter 2eb394f0a4 perf(dev): skip typeof window folding for prebundles (#2118)
* perf(dev): skip typeof window folding for prebundles

* perf(dev): move prebundle skip into hook filter

* test: provide cacheDir in resolved config mock

* fix(dev): handle reused typeof-window plugins

* refactor(dev): share cache directory normalization

---------

Co-authored-by: James <james@eli.cx>
2026-06-17 18:13:31 +00:00
Jerry Zhao 0ef6e10538 fix(middleware): match middleware taint ids by forward-slash on Windows (#2088) 2026-06-17 19:02:38 +01:00
Jerry Zhao 891e920bbd test(tsconfig-paths): remove temp dir after restoring cwd to avoid EPERM on Windows (#2092) 2026-06-17 18:44:07 +01:00
Jerry Zhao e8153d28d1 test(helpers): link fixture node_modules with a dir symlink, not a junction (#2091) 2026-06-17 18:43:51 +01:00
Jerry Zhao 6590586636 test(fixture-dev-server): wait for child exit by exit/signal code, not killed (#2090) 2026-06-17 18:43:35 +01:00
Jerry Zhao 54cb9e3a2f fix(build): normalize canonicalized module ids to forward slashes on Windows (#2089) 2026-06-17 18:43:20 +01:00
Jerry Zhao bfc090e231 test(oxlint-prefer-shared-utils): remove dir-symlink fixtures on Windows (#2087) 2026-06-17 18:41:53 +01:00
Jerry Zhao 4980b666b6 test(dev-stack-sourcemap): make fixtures portable to Windows (#2086) 2026-06-17 18:41:42 +01:00
Alexander Lichter 59a2de53a3 perf(app-router): defer action and route-handler runtimes (#2079)
* perf(app-router): defer action and route-handler runtimes

* perf(app-router): defer middleware runtime

* perf(rsc): isolate server navigation runtime

* perf(ssr): isolate bfcache identity runtime

* perf(ssr): avoid browser navigation runtime

* refactor(navigation): share server-safe primitives

* fix(ssr): track error boundary pathname in fallback shells

---------

Co-authored-by: James <james@eli.cx>
2026-06-17 17:41:25 +00:00
James Anderson 284cbb443e fix(css): keep module hashes stable with url assets (#2114)
* fix(css): keep module hashes stable with url assets

* fix(css): restore url assets in server output
2026-06-17 18:21:59 +01:00
Alexander Lichter 4fdf617004 perf(cache): isolate handler and request state (#2107)
* perf(cache): isolate handler and request state

* perf(rsc): isolate page cache key marker
2026-06-17 18:17:41 +01:00
James Anderson 144c30d47e fix(middleware): normalize trailing slash before matching (#2112)
* fix(middleware): normalize trailing slash before matching

* test(middleware): preserve unmatched API fixture

* fix(middleware): normalize matcher source slashes

* fix(middleware): normalize direct matcher inputs

* fix(middleware): preserve explicit slash matchers
2026-06-17 13:19:49 +01:00
Alexander Lichter 73d01f085e perf(build): filter compatibility transform hooks (#2103) 2026-06-17 12:32:42 +01:00
Alexander Lichter 56d7311994 perf(dev): externalize App Router request handler (#2108) 2026-06-17 11:55:48 +01:00
github-actions[bot] 58154448cf chore: version packages (#2046)
* chore: version packages

* Apply suggestion from @james-elicx

---------

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: James Anderson <james@eli.cx>
vinext@0.1.4
2026-06-16 14:45:52 +01:00
James Anderson 2f8b0ef78b fix(build): preserve lazy RSC framework chunks (#2074)
* fix(build): preserve lazy RSC framework chunks

* test(image): wait for completed watch output

* test(build): isolate RSC startup regression

* fix(build): preserve lazy framework chunks on Vite 7

* test(build): cover transitive framework reachability

* test(build): harden framework chunk regressions
2026-06-16 14:28:15 +01:00
James Anderson 06ffe4661c fix(middleware): fail closed for unsafe matchers (#2078) 2026-06-16 14:24:04 +01:00
Alexander Lichter 5495682f6a perf(rsc): prebundle static renderer entry (#2077) 2026-06-16 12:56:27 +00:00
Alexander Lichter f0e6be73f2 perf(dev): prune NODE_ENV during dependency optimization (#2075)
* perf(dev): fold NODE_ENV during dependency optimization

* fix(dev): preserve NODE_ENV optimizer defines

* test(dev): inspect optimized dependencies via metadata

* docs(dev): clarify dependency optimizer defines
2026-06-16 12:42:44 +00:00