The Wire · Showcase
NEXT.JS TEST CACHING LANDS, APP SHELLS PLUMBING SHIPS
By RepoJournal · Filed · About Vercel
Next.js cut test reruns by memoizing passing tests across workflow attempts, while experimental App Shell support starts wiring up the client-side prefetch pipeline.
The action cache for passing tests [1] is live in next.js, which means re-triggered CI runs skip tests that already passed on the first attempt. Sync writes to a flat file track the winners, so timeouts or cancellations don't waste compute on redundant passes. In parallel, the experimental.appShells feature flag [2] landed as pure plumbing: config field, zod schema, and `process.env.__NEXT_APP_SHELLS` define are in place, but nothing reads it yet. Subsequent PRs will wire the server and client behavior behind it. Both the Cache Components prerender semantics [3] and the corresponding test coverage [4] shipped to lock in fallback boundary behavior when `notFound()`, `forbidden()`, and `unauthorized()` recovery routes through Cache Components. The devlow-bench runner [5] now reports p50/p90/p99 percentiles instead of means, with Mann-Whitney p-values for cleaner signal, plus per-attempt buffering to isolate flaky page-load runs from the final stats. Across the AI desk, Vercel's SDK locked in serviceTier reads from both the Gemini response header [6] and the usageMetadata body [7], so streaming and non-streaming calls both surface the applied tier. CLI got a `--project` flag [8] for all major commands (build, deploy, pull, dev), enabling non-interactive CI and agent-driven workflows without prompts. Python functions now support runtime cache configuration [9], and blob commands speak OIDC [10] alongside the legacy token path. Workflow repo fixed trace viewer zoom clipping [12], reports corrupted event logs as a distinct error code [11], and forward-ported a stale wait replay race fix [13]. SDK bumped to 1.21.6 [14] with vcrRepository permission fields added to microfrontends and projects APIs.
One email a day. Unsubscribe in one click.
Keep up with Vercel in about 3 minutes a day: what actually shipped — the commits, pull requests, releases, and security advisories that matter.
One email a day. Unsubscribe in one click. Read a past issue →
Action items
- → Test and merge Next.js test caching into your CI, then redeploy workflow to see reruns skip vercel/next.js [plan]
- → Upgrade @vercel/blob to use OIDC auth if you're already running `vercel env pull` vercel/vercel [monitor]
- → Update SDK to 1.21.6 if you consume vcrRepository permission fields vercel/sdk [monitor]
References
- [1] use the action cache for passing tests (#93954) vercel/next.js
- [2] Add experimental.appShells feature flag (#93997) vercel/next.js
- [3] Prerender HTTP access fallbacks with Cache Components semantics ↗ vercel/next.js
- [4] [test] Prerendering HTTP access fallback pages with Cache Components ↗ vercel/next.js
- [5] devlow-bench: percentile-based comparison and run retries ↗ vercel/next.js
- [6] fix(google): read serviceTier from x-gemini-service-tier response header (#14937) vercel/ai
- [7] fix(google): read serviceTier from usageMetadata in stream + generate (#15488) vercel/ai
- [8] [cli] Add `--project` flag to `build`, `deploy`, `pull`, and `dev` ↗ vercel/vercel
- [9] [python] configure runtime cache for Python functions ↗ vercel/vercel
- [10] [cli] Support OIDC auth for blob commands ↗ vercel/vercel
- [11] Report corrupted event logs distinctly ↗ vercel/workflow
- [12] trace viewer bug fix + file cleanup ↗ vercel/workflow
- [13] [codex] Forward port stale wait replay fix ↗ vercel/workflow
- [14] chore: 🐝 Update SDK - Generate VERCEL 1.21.6 ↗ vercel/sdk