---
title: "Dev digest: Runtime Cache billing, Opus 4.8 fast mode ends"
description: "Web dev news for 25 Oct to 1 Nov 2026: Vercel bills Data Cache as Runtime Cache, Opus 4.8 fast mode ends on 30 Nov, Next.js 16.4 trims bundles with an agent."
canonical_url: "https://www.outofplace.space/blog/dev-digest-2026-11-01"
language: "en"
last_updated: "2026-11-01"
alternates:
  pl: "https://www.outofplace.space/pl/blog/nowosci-web-dev-2026-11-01.md"
---

# Dev digest: Runtime Cache billing, Opus 4.8 fast mode ends

> Web dev news for 25 Oct to 1 Nov 2026: Vercel bills Data Cache as Runtime Cache, Opus 4.8 fast mode ends on 30 Nov, Next.js 16.4 trims bundles with an agent.

Published 2026-11-01 · Category: AI for developers · Tags: Next.js, Caching, Claude, AI agents

This week's changes cost money or carry a deadline. Vercel [moves Data Cache into Runtime Cache](https://vercel.com/changelog/data-cache-is-moving-to-runtime-cache) and will bill the Next.js `fetch` cache and `unstable_cache` at its rates (Hobby teams move on 29 November 2026, Pro teams get a date), and Anthropic removes fast mode from Claude Opus 4.8 on 30 November 2026, while, per the [Claude release notes](https://platform.claude.com/docs/en/release-notes/overview), [fast mode on Claude Opus 5.5 left preview](https://www.outofplace.space/blog/dev-digest-2026-10-18) on 15 October. Before either date, check your cache writes in Vercel Observability and move fast-mode traffic to Claude Opus 5.5. The rest is good news: Next.js 16.4 gives your agent a skill that finds JavaScript to cut, the Claude API accepts 128 MB requests, and a new analytics API breaks spend down by model, key and the user or service account behind each request.

| Item                                 | Version or date          | What to do                                                       |
| ------------------------------------ | ------------------------ | ---------------------------------------------------------------- |
| Next.js bundle optimizer skill       | Next.js 16.4, 28 Oct     | Run it in report mode on your heaviest route                     |
| Data Cache moves to Runtime Cache    | 30 Oct; Hobby on 29 Nov  | Check cache writes in Observability before your date             |
| Runtime Cache read path and metrics  | 30 Oct                   | Don't rely on an invalidation being seen instantly               |
| Geist Serif                          | `geist` 1.9.0, 30 Oct    | Headlines only; import one variant                               |
| Fast mode on Claude Opus 4.8         | 30 Oct, removed 30 Nov   | Move fast requests to Opus 5.5 or drop `speed: "fast"`           |
| Usage and Cost Analytics API (beta)  | 29 Oct                   | Use it for new reports; keep alerts on the legacy API            |
| Messages API request size            | 28 Oct, 32 MB to 128 MB  | Check the limit of every fallback provider                       |

## Next.js

### Next.js 16.4 gives your agent a bundle optimizer

On 28 October 2026 the Next.js team published [Ship less JavaScript in Next.js with your AI agent](https://nextjs.org/blog/ship-less-javascript-with-ai): with Next.js 16.4 (stable since [16.4.0 on 7 October](https://github.com/vercel/next.js/releases/tag/v16.4.0)) you can add the `next-bundle-optimizer` agent skill with `npx skills add vercel/next.js --skill next-bundle-optimizer` and run `/next-bundle-optimizer` in your agent. It reads Turbopack's module graph from `next analyze` snapshots, finds large groups of modules and the few imports that pull them into the initial load, and checks the fix against your source. By default it only reports; `/next-bundle-optimizer fix` applies the changes and compares snapshots. It needs Turbopack, the default bundler since Next.js 16. For people, `next analyze` gained a page of the largest client routes, saved snapshots to diff, and a filter that leaves only the code of the initial render; `next analyze export` writes the graph as JSON. Vercel says the agent cut nearly 2 MB of compressed JavaScript across v0 and vercel.com.

Our take: the bug the post gives as its example is easy to miss in review: a component loaded with `lazy()` that still ships upfront because another module imports it statically. That is tedious for a person to trace and cheap for an agent. Start in report mode on your heaviest route, review each proposed import boundary like any pull request, and use the snapshot diff to show the saving. Moving logic to [React Server Components](https://www.outofplace.space/blog/react-server-components-explained), one of the fixes it suggests, is the change most worth the review.

## Vercel

### Data Cache moves to Runtime Cache, and its reads and writes get billed

Vercel's changelog of 30 October 2026 takes Data Cache out of beta and into Runtime Cache. Next.js `fetch` caching and `unstable_cache` switch over on every version without code changes. Teams created on or after 30 October use Runtime Cache already; existing Hobby teams migrate on 29 November 2026, Pro teams will be told their date, Enterprise hears from its account team. Reads and writes that were free become billed at Runtime Cache rates, from $0.40 per million read units and $4.00 per million write units. The [Runtime Cache docs](https://vercel.com/docs/caching/runtime-cache) define a unit as 8 KB and give the regional range up to $0.64 and $6.40. Hobby includes 1 million reads and 200,000 writes a month across the team; Pro pays from its $20 monthly credit, then on demand. Storage grows: on Pro each project and environment gets 8 times the old team-wide Data Cache pool, Enterprise 10 times its old storage. You can opt in early from the team's CDN settings, and billing starts when you do.

Our take: writes are where the bill comes from. A million writes of an 80 KB response are ten million write units, $40 at the lowest rate, so a `fetch` with a short `revalidate` on a large payload is the first thing to find in Observability. On Hobby the risk is different: the docs say Vercel pauses Runtime Cache for the rest of the period once you exceed the allotment, so after 29 November every cached `fetch` would hit your origin. This is about the platform, not the `use cache` directive; how Next.js keys and clears entries is in our [guide to `use cache` in Next.js](https://www.outofplace.space/blog/nextjs-use-cache).

### What else changed in Vercel's Runtime Cache

The [post on simplifying runtime caching](https://vercel.com/blog/simplifying-runtime-caching-on-vercel) of 30 October 2026 explains the merge and what shipped before it. Circuit breakers, on in every region since August, let reads check freshness against tag timestamps cached in memory when the cache service is slow; during the heaviest bursts in the largest region, p99 cache-service read latency fell to about a fifth at comparable traffic. The cost during that fallback, in Vercel's words: "a read can briefly treat recently invalidated data as fresh." Among Enterprise projects with frequent evictions, miss rates roughly halved within a day. The Runtime Cache view in Observability now has deployment markers, revalidation causes and write utilisation.

Our take: the stale read happens only in that fallback, when the cache service is slow, so most pages won't notice it. If a page must show a price or stock level right after you call `revalidateTag`, a slow moment can still serve the old value briefly; read that one value from the source. The new Observability fields are what you need for the migration above: revalidation causes show which tag drives your writes, deployment markers show whether a release changed it.

### Geist Serif joins the Geist family

On 30 October 2026 Vercel [introduced Geist Serif](https://vercel.com/blog/introducing-geist-serif), a high-contrast display serif for headlines and large sizes, with the same cap height (710) and x-height (530) as Geist Sans. It ships in [`geist` 1.9.0](https://registry.npmjs.org/geist), published on npm the same day under the SIL Open Font License. At launch there is one weight, Regular, in four shapes on an element shape axis: round dots, Square, Triangle and Heart; a variable font from Thin (100) to Black (900) is planned. It has 894 glyphs and covers 352 Latin-script languages. Each variant has its own entry point, such as `geist/font/serif/regular`.

Our take: one weight at display contrast means headings only, not body text. Import the single variant you use rather than the variable file of all shapes, and you add one font file to the page.

## Claude

### Fast mode on Claude Opus 4.8 ends on 30 November 2026

The Claude release notes of 30 October 2026 deprecate fast mode for Claude Opus 4.8; on 30 November 2026 a request to `claude-opus-4-8` with `speed: "fast"` starts returning an error. Per the [fast mode docs](https://platform.claude.com/docs/en/build-with-claude/fast-mode), fast mode gives up to 2.5 times the output tokens per second. On Opus 4.8 it is a research preview behind the `fast-mode-2026-02-01` beta header at $10 per million input tokens and $50 per million output; on Claude Opus 5.5 it is generally available, needs no header, has a default rate limit in the Start, Build and Scale tiers and costs $8 and $40.

Our take: search your code for `speed: "fast"` next to `claude-opus-4-8`; a request that fails on 30 November is worse than a slow one. Either move those calls to Opus 5.5 with [Anthropic's migration guide](https://platform.claude.com/docs/en/models/opus-5-5/migration-guide#migrating-from-claude-opus-4-8) and your own evals, or drop the parameter and stay on Opus 4.8 at standard speed.

### The Usage and Cost Analytics API arrives, the Usage and Cost API goes legacy

On 29 October 2026 Anthropic launched the [Usage and Cost Analytics API](https://platform.claude.com/docs/en/manage-claude/usage-cost-analytics-api) in beta (header `analytics-usage-cost-2026-08-24`): `/v1/organizations/analytics/usage` and `/v1/organizations/analytics/cost` report tokens, requests and cost for Claude Console and Claude Enterprise organisations, grouped and filtered by model, workspace, API key, the user or service account behind a request, service tier and speed. The same day the [Usage and Cost API](https://platform.claude.com/docs/en/manage-claude/usage-cost-api) became legacy, as did the `usage_report`, `cost_report`, `user_usage_report` and `user_cost_report` endpoints of the Claude Enterprise Analytics API; all remain supported, and no removal date is given. The new API's data typically refreshes within 4 hours and can take 24, against about 5 minutes on the old one; a request spans at most 31 days and starts no earlier than 1 January 2026.

Our take: no rush, since the legacy API stays supported with no removal date. Build new reports on the new API, which adds the user or service account behind each request, and move existing ones when you next touch them. Keep spend alerts on the legacy API: an alert that arrives a day late doesn't stop anything.

### The Messages API now takes requests up to 128 MB

Since 28 October 2026 the first-party Claude API accepts Messages and Token Counting requests of up to 128 MB, up from 32 MB, per the [request size limits](https://platform.claude.com/docs/en/api/overview#request-size-limits). Batches stay at 256 MB, the Files API at 500 MB, and Sessions, Agents and Environments at 32 MB. Other platforms didn't move: Claude Platform on AWS, Claude Models on Google Cloud (Anthropic managed) and Microsoft Foundry take 32 MB, Bedrock 20 MB and Claude Models on Google Cloud (Google managed) 30 MB. Above the limit you get a 413 `request_too_large`.

Our take: large PDFs and image sets can now go inline in one request, but only on the first-party API. If you fall back to Bedrock or Google Cloud when the Claude API is busy, a request between 32 and 128 MB that succeeds on the first try fails on the fallback with a 413. Check the size before you fail over, or upload large files once through the Files API and send the reference.

## Further reading

- [Vercel: Data Cache is moving to Runtime Cache](https://vercel.com/changelog/data-cache-is-moving-to-runtime-cache): Migration dates by plan, Runtime Cache rates and how to opt in early or switch caching off.

- [Claude release notes](https://platform.claude.com/docs/en/release-notes/overview): The entries of 28, 29 and 30 October 2026: 128 MB requests, the analytics API and the end of Opus 4.8 fast mode.

- [Next.js: Ship less JavaScript with your AI agent](https://nextjs.org/blog/ship-less-javascript-with-ai): The next-bundle-optimizer skill and the new next analyze tools in Next.js 16.4.
