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

$ status

wire 2026-09-12
stories 175

© 2026 RepoJournal Home Showcase Explore How it works Privacy

$ the-wire · showcase

Cached Navigations stop leaking stale timestamps, Next.js drops dead CI

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

Next.js fixed a production renderer gap where Cached Navigations reused the previous request's uncached timestamps as static page content, while Vercel's workflow runtime tackled fan-out queue serialization and broken step stream writes.

Next.js patched a correctness bug in Cached Navigations where a repeat visit returned the *previous* response's `Date.now()` value while the new response was still pending, affecting both dynamic RSC responses and the RSC payload embedded in the initial HTML [1]. The cause: the production renderer left synchronous IO untracked on the assumption the build had already caught it, and a private cache exposed the gap when the static prerender suspended at the cache call. Separately, `useDrag` in devtools listened for `pointermove` and `pointerup` but not `pointercancel`, so a browser-cancelled gesture never invoked `cancel()` and the state machine stayed stuck at `{ state: 'drag' }` [2]. Two CI cleanups also landed: the Turbopack test manifest pipeline is gone because the manifest is no longer used for skipping tests and had stopped updating automatically [3], and the `Test examples` workflow was removed because its pinned Playwright image (v1.35.1) cannot launch against the version the repo now requires (v1.61.0) [4].

In vercel/workflow, the team addressed a latency tax on fan-out dispatch: a `Promise.all` fan-out previously paid roughly N/8 serialized round trips on time-to-first-step because publishes rode the shared undici agent (8 connections, HTTP/1.1, `pipelining: 1`) and `handleSuspension` was awaited in full before the first inline step body ran [5]. Step executor writes also stopped sending a slot snapshot, since the executor has no log to merge the returned event page into and previously discarded everything but the highest position [6]. A separate fix drains released step stream writers before completion, closing a race where `step_completed` ran the overall stream operation against a 500ms budget and a slow PUT could continue under `waitUntil` while the next step read a stale tail [7].

On vercel/eve, child task progress no longer wakes the parent through a separate model-facing `task_update` tool; clients now follow the child session stream, and the tool, its injected instructions, and its local and remote delivery paths were removed [8]. Tracing improved on three fronts: OpenTelemetry GenAI client spans now cover `search_memory` and `upsert_memory` [9], model input tracing no longer records messages twice (the legacy `ai.prompt.messages` path recursively enumerated binary attachments before enforcing the 32 KB limit, producing the memory growth in #3272) [10], and authored workflow tools now specialize to `invoke_workflow <tool>` spans after a nested `ctx.agent()` call proves GenAI composition [11].

On vercel/ai, `@ai-sdk/otel` fixed two attribution gaps: fallback generations were attributed to the failed primary provider because `gen_ai.provider.name` was initialized on start but never updated from the end event [12], and error spans dropped provider HTTP status codes because the span error recorder never inspected `APICallError.statusCode` or `RetryError.lastError` [13]. The Anthropic provider also accepted `prefixMismatchBehavior: 'error'` for Fable 5.1 thinking binding controls and began exposing input transformations in Anthropic metadata for generated, streamed, and batch responses [14].

Action items

References

  1. [1] Prevent synchronous IO from entering Cached Navigations ↗ vercel/next.js
  2. [2] fix(devtools): handle pointercancel when dragging the indicator (#98506) ↗ vercel/next.js
  3. [3] [ci] Remove Turbopack test manifest pipeline (#98507) ↗ vercel/next.js
  4. [4] [ci] Remove the broken Test examples workflow and its test suite (#98517) ↗ vercel/next.js
  5. [5] perf(world-vercel): batch a fan-out's step-execution queue publishes (#3838) ↗ vercel/workflow
  6. [6] [core] Stop sending a slot snapshot on step executor writes (#4096) ↗ vercel/workflow
  7. [7] Drain released step stream writers before completion ↗ vercel/workflow
  8. [8] refactor(eve): remove child task_update progress callbacks ↗ vercel/eve
  9. [9] feat(eve): trace memory operations ↗ vercel/eve
  10. [10] fix(eve): use GenAI input messages for traces ↗ vercel/eve
  11. [11] feat(eve): trace workflow tool invocations ↗ vercel/eve
  12. [12] fix: OpenTelemetry fallback spans retain the failed primary provider attribution (#20648) ↗ vercel/ai
  13. [13] fix: preserve provider HTTP status codes in OpenTelemetry error spans (#20645) ↗ vercel/ai
  14. [14] feat(anthropic): expand preserved thinking support to cover `prefix_mismatch_behavior: 'error'` (#20624) ↗ vercel/ai

Quick answers

What shipped in Vercel on September 12, 2026?
Next.js fixed a production renderer gap where Cached Navigations reused the previous request's uncached timestamps as static page content, while Vercel's workflow runtime tackled fan-out queue serialization and broken step stream writes. In total, 74 commits, 83 pull requests, and 18 releases landed.
Who contributed to Vercel on September 12, 2026?
11 developers shipped this update, including Sebastian "Sebbie" Silbermann, Joseph, unstubbable, Pranay Prakash, alangenfeld, NathanColosimo, Rui, and chadhietala, and 3 more.
What were the notable Vercel updates?
Prevent synchronous IO from entering Cached Navigations, fix(devtools): handle pointercancel when dragging the indicator (#98506), and [ci] Remove Turbopack test manifest pipeline (#98507).