Caching is usually introduced to reduce database queries, avoid repeated API calls, and make applications respond faster. For developers hosting Next.js applications on Vercel, Data Cache has been a convenient way to reuse fetched data without managing a separate caching service.
That arrangement is changing.
On October 30, 2026, Vercel announced that Data Cache is moving into Runtime Cache. Existing Next.js applications using fetch caching or unstable_cache do not need to change their code. However, the billing model changes because cache reads and writes that were previously unbilled will become chargeable after migration.
This is an important change for applications with frequent cache operations. A project may have been using caching for months without seeing separate read and write charges. After migration, the same application can generate additional usage costs even though its code has not changed.
Before moving to Runtime Cache, developers should understand how the new pricing works, which operations contribute to usage, and where unnecessary cache activity can be reduced.
Why Vercel Is Moving Data Cache Into Runtime Cache
Data Cache was originally introduced to support data caching in the Next.js App Router. It allows applications to store fetched or computed data and reuse it across requests.
For example, an ecommerce application may retrieve product information from an external API. Instead of making the same request every time a visitor opens a product page, the application can reuse cached product data until it needs to be refreshed.
Runtime Cache was introduced as a broader caching service that can also be used outside Next.js. Developers can access it through the getCache API from the @vercel/functions package.
It supports caching across functions, routing middleware, and builds within the same region. Next.js also uses Runtime Cache for the remote cache option available through use cache.
Previously, these APIs used different caching services:
- Next.js fetch caching used Data Cache.
- unstable_cache used Data Cache.
- getCache used Runtime Cache.
- use cache: remote used Runtime Cache.
Vercel is consolidating these capabilities into one service. This gives developers a common storage allocation, usage view, and billing model instead of managing separate cache products.
The change also brings larger storage allocations for paid plans. Pro projects receive separate allocations for each project and environment, with eight times the space of the previous team-wide Data Cache pool. Enterprise projects receive ten times their previous Data Cache storage.
The additional capacity is useful, but it does not mean cache operations are free.
What Changes in the Pricing Model?
The main financial change is that Data Cache reads and writes become billable at Runtime Cache rates after migration.
Vercel has published starting prices of:
| Operation | Starting price |
|---|
| Runtime Cache reads | $0.40 per million read units |
| Runtime Cache writes | $4.00 per million write units |
These are starting rates, not universal prices. The actual rate depends on the region where the function runs.
The difference between reads and writes is important. A million write units cost ten times as much as a million read units at the starting rates.
This does not mean every application will see a tenfold increase in its hosting bill. The impact depends on how much data the application caches, how frequently entries are read or rewritten, and which regions handle the requests.
Developers should also distinguish cache operation charges from other Vercel resources. Function execution, data transfer, and CDN requests are separate usage categories. Runtime Cache pricing does not replace those charges.
Understand the Hobby, Pro, and Enterprise Allowances
The effect of migration depends on the Vercel plan.
Hobby teams receive the following monthly Runtime Cache allowance across all projects:
| Resource | Monthly included usage |
|---|
| Read units | 1 million |
| Write units | 200,000 |
If a Hobby team exceeds its included Runtime Cache allowance, Vercel pauses Runtime Cache for the remainder of the billing period rather than charging for additional usage.
For Pro teams, Runtime Cache usage draws from the monthly $20 infrastructure credit. Usage beyond the available credit is billed at the applicable regional rates.
Enterprise customers should contact their Vercel account team for pricing and migration details.
This distinction matters when estimating costs. A Hobby application with moderate cache activity may remain within its included allowance, while a Pro application with high write volume can consume infrastructure credit more quickly.
The allowances are team-level for Hobby, not separate allowances for every project. A team running several applications should calculate their combined usage.
Calculate the Potential Cache Cost
Consider a Next.js application that generates the following monthly usage after migration:
- 12 million read units.
- 2 million write units.
Using the starting rates published by Vercel, the estimated cost would be:
Read cost:
12 million × $0.40 per million = $4.80
Write cost:
2 million × $4.00 per million = $8.00
Estimated Runtime Cache operation cost:
$4.80 + $8.00 = $12.80
This is an illustrative calculation using the lowest published starting rates. It does not include other Vercel resources, and the actual amount may be higher depending on the execution region.
The calculation also shows why looking only at the number of cache operations is not enough. The write volume contributes a larger share of the cost in this example, even though there are fewer writes than reads.
A useful estimate should therefore separate read and write usage instead of combining them into one total.
Find Out How Much Your Application Currently Uses
Before changing caching behavior, inspect the existing Data Cache usage.
Vercel provides cache usage information through the Observability section of the dashboard. Review the project's Data Cache metrics and look at the number of reads and writes over a representative period.
Do not estimate monthly costs from a single day of unusually high or low traffic. A better approach is to examine several weeks of usage and identify recurring patterns.
For example, a content website may generate a large number of cache writes whenever a publishing workflow updates articles. An ecommerce application may generate repeated writes because product information is revalidated too frequently.
The dashboard can help identify whether the application is read-heavy or write-heavy. That information is more useful than simply looking at the total number of cached entries.
Also review the usage of individual projects. A team-wide total can hide one application that produces most of the cache activity.
Why Some Applications Generate Too Many Cache Writes
High cache usage does not always mean an application has heavy traffic. Sometimes the caching strategy itself creates unnecessary operations.
Consider a product catalogue with thousands of items. If the application caches each product independently and uses a short revalidation period, frequently accessed products may be refreshed more often than necessary.
Another example is a website with a large number of long-tail URLs. Many pages may be requested only once or twice. Caching their data can generate writes without producing enough future reads to justify the storage operation.
These patterns are worth investigating before migration.
Short revalidation periods
A short revalidation interval can cause frequently requested data to be refreshed repeatedly.
For example, an application that refreshes product information every few seconds may create unnecessary writes if the underlying data changes only once every several minutes.
Choose a revalidation period based on how frequently the source data actually changes.
High-cardinality cache entries
High-cardinality caching occurs when an application creates many different cache entries for slightly different inputs.
Search pages are a common example. If every search phrase creates a separate cached result, many entries may receive only one request.
Caching every possible search result is not always beneficial. For low-frequency queries, fetching directly from the source may be more economical.
Repeated writes for unchanged data
An application may refresh a cached value even when the source data has not changed.
If the application can detect meaningful changes before writing new values, it may reduce unnecessary writes.
The correct implementation depends on the framework's caching API and the application's consistency requirements. Avoid adding complicated comparison logic where the cost of checking for changes is higher than the cache operation itself.
Review the Existing Next.js Caching Code
The migration does not require changing existing fetch caching or unstable_cache calls. Vercel handles the transition to Runtime Cache without requiring application code changes.
For example, an application may currently use:
async function getProducts() {
const response = await fetch(
"https://api.example.com/products",
{
next: {
revalidate: 300
}
}
);
if (!response.ok) {
throw new Error("Unable to retrieve products");
}
return response.json();
}
This example caches the fetched response according to the configured revalidation period.
A project using unstable_cache might have code like this:
import { unstable_cache } from "next/cache";
export const getProductDetails = unstable_cache(
async (productId: string) => {
return database.product.findUnique({
where: {
id: productId
}
});
},
["product-details"],
{
revalidate: 300
}
);
These existing APIs continue to work through the migration. Developers should not rewrite working caching code simply to make it use Runtime Cache.
However, the migration is a good opportunity to review whether every cached operation is still necessary.
Also remember that unstable_cache is an existing API. Teams adopting newer Next.js caching features should follow the documentation for their installed framework version rather than treating every caching API as interchangeable.
Should You Disable Data Cache to Avoid the New Charges?
Vercel provides an option to disable fetch and unstable_cache caching through CDN settings.
At first glance, disabling caching may appear to be a simple way to avoid Runtime Cache charges. However, it changes how the application retrieves data.
Without the cache, requests that previously reused stored data may reach the original API or database more frequently.
That can introduce other costs:
- Increased database queries.
- More external API requests.
- Longer response times.
- Higher function execution usage.
- Additional load on backend services.
It also does not prevent the team's migration to Runtime Cache.
For an application that relies heavily on cached data, disabling caching without measuring the impact can make the overall infrastructure more expensive.
A better decision is to identify unnecessary cache activity and optimize it. Disable caching only for data that does not benefit from reuse, such as highly unique search queries or values that must always be fetched fresh.
What Developers Should Check Before Migration
A practical review should cover both application behavior and billing.
Start with the following checks:
- Open the Vercel dashboard and review Data Cache usage in Observability.
- Compare read and write volumes across projects.
- Identify functions that generate frequent cache writes.
- Review short revalidation intervals and high-cardinality cache entries.
- Check whether cached data is reused often enough to justify the writes.
- Estimate costs using the region-specific Runtime Cache rates.
- Review the migration date communicated by Vercel.
- Monitor Runtime Cache usage after the migration.
Vercel also provides an optimization guide and an option to use Vercel Agent from the Runtime Cache dashboard. These can help identify inefficient caching patterns.
Do not make several caching changes at once without measuring their effects. Changing revalidation periods, removing cache entries, and disabling caching together makes it difficult to determine which change improved or worsened usage.
When Does the Migration Happen?
Vercel announced the migration on October 30, 2026.
Teams created on or after that date use Runtime Cache by default.
For existing teams, the migration schedule depends on the plan:
- Hobby teams are scheduled to migrate on November 29, 2026.
- Pro teams will receive notification of their migration date and when billing changes take effect.
- Enterprise teams will receive migration details through their account team.
Existing Hobby and Pro teams can also opt in early through their team's CDN settings. However, Runtime Cache pricing applies as soon as they opt in.
This is worth remembering when testing the new service. Opting in early is not simply a technical preview with the old billing behavior.
Conclusion
Vercel's move from Data Cache to Runtime Cache does not require existing Next.js applications to rewrite their caching code. The important change is how cache operations are measured and billed.
Read and write operations that were previously unbilled will become chargeable after migration. Because writes are more expensive than reads, applications with frequent revalidation or large numbers of short-lived cache entries should review their usage before the change takes effect.
Start by examining the actual usage in Vercel Observability, identifying unnecessary writes, and estimating costs using the correct regional rates. Avoid disabling caching without considering the additional load on databases and external APIs.
Caching should improve application performance, but it should also have a clear purpose. The migration is a good opportunity to check whether the application is storing data that users actually reuse or simply generating cache activity without meaningful benefit.
Join the conversation! Your thoughts help the community grow.