125 wires and counting
$ status: archived — this briefing has stopped; the archive stays readable. browse live briefings →

$ status

wire 2026-09-10
stories 188

© 2026 RepoJournal Home Showcase Explore How it works Privacy

$ the-wire · showcase

Next.js routes CSP nonces into loading scripts, Turborepo trims config reads

By RepoJournal · Filed · About Vercel · Composed from the cited sources · methodology

Next.js now passes CSP nonces to script tags rendered for loading, error, and template files, closing a gap that left those chunks unnonced, while Turborepo landed four separate performance fixes across ESLint rule invocation, file tracing, glob watching, and turbo.json preloading.

The nonce fix lands in `createComponentStylesAndScripts`, which renders scripts for a segment's loading, error, and template files. Unlike `getLayerAssets`, it did not pass `ctx.nonce`, so script tags produced for those files shipped without the nonce even when a CSP nonce was configured [1]. This is a behavior change for anyone running a nonce-based `script-src`: those tags now carry the nonce and will execute under a policy that previously blocked them.

On the caching side, `use-cache` entries can now store RSC values containing client reference proxies [2]. Flight serializes each reference using the client module `id`, export `name`, client `chunk` list, and `async`, and decoding resolves the client module `id` through `rscModuleMapping` to find the corresponding RSC module; the client chunk list is not needed at decode time. In the same area, Turbopack fixed a require-handling regression where a Vue SFC compiler import failed with "Module not found: Can't resolve 'less'" [3], which the PR traces to two earlier changes around default parameter assignment and the `unknown | WellKnownFunction` type.

Turborepo ran a performance sweep across four separate code paths. The `no-undeclared-env-vars` ESLint rule is created once per source file and cached the `Project`, but every creation still scanned all workspaces for `turbo.json`/`turbo.jsonc` and MD5-hashed each config to validate the cache, so a warm cache still did O(source files x workspace configs) synchronous filesystem work; it now validates the cached project at most once [4]. File tracing gained memoized resolver inference per source directory for the duration of a single trace, replacing per-file filesystem probes and resolver construction that sibling files were repeating [5]. `invalidate_path_candidates` now collects matching entries instead of cloning the registration's entire `GlobSet` before and after every removal, which previously retained N^2 include entries under the shared state write lock [6]. And `RunBuilder::build` no longer preloads every workspace's turbo.json before resolving package scope: preloading now happens after scope resolution, scoped to what the engine will actually consult, so a run scoped to a single package no longer pays the whole-repository config walk [7].

On the eve side, workflow tool steps can now authorize: `ctx.getToken` and `ctx.requireAuth` used to throw inside workflow bodies, and steps only saw `process.env`. Both now work inside a "use step" helper that receives `ctx` as a direct argument. Sign-in ends the step attempt, the workflow parks on its own callback hook, and after the callback eve retries that step and continues the body, with tokens never entering durable history [8]. Queued sibling completions from the same parent turn are now batched into a single delivery rather than starting separate parent model turns, with failures, input requests, updates, user messages, and different cohorts kept as separate boundaries and no timer or wait for unfinished siblings [9].

Action items

References

  1. [1] Add CSP nonce to script tags of loading and template files (#98398) ↗ vercel/next.js
  2. [2] Support durable use-cache entries with client components ↗ vercel/next.js
  3. [3] Turbopack: fix require handling with alternative ↗ vercel/next.js
  4. [4] perf: Cache Turbo config reads across ESLint rule invocations (#13998) ↗ vercel/turborepo
  5. [5] perf: Reuse resolver inference during file tracing ↗ vercel/turborepo
  6. [6] perf: Coalesce glob-watcher invalidation snapshots ↗ vercel/turborepo
  7. [7] perf: Limit turbo.json preloading to required task scope (#13992) ↗ vercel/turborepo
  8. [8] feat(eve): authorize workflow tool steps ↗ vercel/eve
  9. [9] feat(eve): batch queued sibling completions and measure wake cost ↗ vercel/eve

Quick answers

What shipped in Vercel on September 10, 2026?
Next.js now passes CSP nonces to script tags rendered for loading, error, and template files, closing a gap that left those chunks unnonced, while Turborepo landed four separate performance fixes across ESLint rule invocation, file tracing, glob watching, and turbo.json preloading. In total, 91 commits, 91 pull requests, and 6 releases landed.
Who contributed to Vercel on September 10, 2026?
7 developers shipped this update, including Niklas Mischkulnig, icyJoseph, Josh Story, molebox, ruiconti, chadhietala, and Anthony Shew.
What were the notable Vercel updates?
Add CSP nonce to script tags of loading and template files (#98398), Support durable use-cache entries with client components, and Turbopack: fix require handling with alternative.