Storage Updates & Release Notes
94 updates curated from 1 source by the Releasebot Team. Last updated: Jul 21, 2026
- Jul 20, 2026
- Date parsed from source:Jul 20, 2026
- First seen by Releasebot:Jul 21, 2026
View total SQLite storage for Durable Object namespaces
Storage adds a Total storage chart for SQLite-backed Durable Object namespaces in the Cloudflare dashboard.
You can now monitor the total SQLite storage used by a Durable Object namespace over time in the Cloudflare dashboard. The new Total storage chart shows the maximum storage reported during each hour. This helps you identify storage growth, validate data cleanup, and investigate unexpected usage.
The chart appears only for SQLite-backed Durable Object namespaces. It does not appear for namespaces that use the legacy key-value storage backend. Viewing storage for individual Durable Objects by ID or name is not supported.
For more information, refer to Metrics and analytics.
Original source - Jul 15, 2026
- Date parsed from source:Jul 15, 2026
- First seen by Releasebot:Jul 15, 2026
Subscribe to Email Sending events with Queues
Storage adds Email Sending events for Queue subscriptions, letting users receive outbound transactional email lifecycle updates on a queue. It supports delivered, deferred, bounced, failed, rejected, and complained events for domain-scoped tracking and suppression or retry workflows.
You can now subscribe to Email Sending events through Queues event subscriptions and receive outbound transactional email lifecycle events on a queue. Each subscription is scoped to one sending domain — either the zone apex, such as example.com, or a verified sending subdomain, such as send.example.com.
Six event types are published: message.delivered, message.deferred, message.bounced, message.failed, message.rejected, and message.complained. Use them to track deliverability, react to bounces and complaints, and drive suppression or retry logic. Email Routing events are not published on this source.
Each event includes the message details, delivery status, and SMTP response:
{ "type": "cf.email.sending.message.delivered", "source": { "type": "email.sending", "zoneId": "023e105f4ecef8ad9ca31a8372d0c353", "domain": "example.com" }, "payload": { "messageId": "0101018f7d0c4d9a-msg-deadbeef", "recipient": "[email protected]", "terminal": true, "delivery": { "status": "delivered", "smtpStatusCode": "250" } } }Refer to Event subscriptions to see all event types and example payloads.
Original source All of your release notes in one feed
Join Releasebot and get updates from Cloudflare and hundreds of other software products.
- Jul 15, 2026
- Date parsed from source:Jul 15, 2026
- First seen by Releasebot:Jul 15, 2026
Deprecate legacy Workers KV namespace API routes
Storage deprecates the legacy Workers KV API routes and points users to the new /storage/kv/namespaces/ endpoints. The replacement routes are interchangeable, with the same requests and responses, and integrations should migrate before the October 15, 2026 cutoff.
The legacy Workers KV API routes under
/accounts/{account_id}/workers/namespaces/*are deprecated as of July 15, 2026, and will stop working on October 15, 2026. Migrate to the documented Workers KV API routes under/accounts/{account_id}/storage/kv/namespaces/*before that date.The legacy and replacement routes are interchangeable. They accept the same request parameters and return the same response payloads. To migrate, update the URL path from
/workers/namespaces/to/storage/kv/namespaces/.What you need to do
Update any integration that calls a route under
/accounts/{account_id}/workers/namespaces/to use the equivalent route under/accounts/{account_id}/storage/kv/namespaces/. The migration is a direct URL path substitution — request parameters and response payloads are identical:- GET and POST
/accounts/{account_id}/workers/namespaces→ GET and POST/accounts/{account_id}/storage/kv/namespaces - GET , PUT , and DELETE
/accounts/{account_id}/workers/namespaces/{namespace_id}→ GET , PUT , and DELETE/accounts/{account_id}/storage/kv/namespaces/{namespace_id} - GET
/accounts/{account_id}/workers/namespaces/{namespace_id}/keys→ GET/accounts/{account_id}/storage/kv/namespaces/{namespace_id}/keys - GET
/accounts/{account_id}/workers/namespaces/{namespace_id}/metadata/{key_name}→ GET/accounts/{account_id}/storage/kv/namespaces/{namespace_id}/metadata/{key_name} - GET , PUT , and DELETE
/accounts/{account_id}/workers/namespaces/{namespace_id}/values/{key_name}→ GET , PUT , and DELETE/accounts/{account_id}/storage/kv/namespaces/{namespace_id}/values/{key_name}
For more information about the deprecation timeline, refer to API deprecations.
Original source - Jul 13, 2026
- Date parsed from source:Jul 13, 2026
- First seen by Releasebot:Jul 13, 2026
R2 Data Catalog now supports read-only API tokens
Storage adds read-only API token support in R2 Data Catalog, letting query engines and clients use least-privilege access for reads while write actions still require read-write tokens.
R2 Data Catalog now accepts read-only API tokens, so query engines and clients that only read data no longer need a read-write token. Previously, every catalog operation required an Admin Read & Write token, which meant read-only clients were granted more access than they needed.
You can now authenticate your Iceberg engine based on your workload:
- Read-only operations (such as listing namespaces, loading tables, and querying data) work with an Admin Read only token (R2 Data Catalog read and R2 storage read).
- Write operations (such as creating or dropping tables and committing transactions) continue to require an Admin Read & Write token.
This lets you follow the principle of least privilege — for example, using a read-write token for the pipeline that writes to your tables and read-only tokens for engines like R2 SQL, DuckDB, or PyIceberg that query them.
Note that credentials vended by the catalog inherit the R2 storage permissions of the token used to authenticate. To ensure read-only access to your underlying data, scope the R2 storage permission to read-only as well.
For details on choosing and creating the right token, refer to Authenticate your Iceberg engine.
Original source - Jul 13, 2026
- Date parsed from source:Jul 13, 2026
- First seen by Releasebot:Jul 13, 2026
R2 Data Catalog compaction now optimizes manifest files
Storage adds automatic manifest optimization in R2 Data Catalog compaction, rewriting and clustering Iceberg manifest files to reduce metadata overhead and speed query planning with no configuration changes.
R2 Data Catalog, a managed Apache Iceberg catalog built into R2, now automatically optimizes manifest files as part of compaction.
Manifest files track the data files that make up an Iceberg table. As a table accumulates many small or fragmented manifests, query engines must read more metadata during query planning, which slows down queries even before any data is scanned.
When compaction runs, R2 Data Catalog now rewrites and clusters manifest files by partition as a best-effort pre-step. This consolidates fragmented manifests, reduces the number of manifests a query engine must open, and lowers metadata I/O overhead. Tables that are already well-clustered are skipped, so the operation only runs when it provides a benefit.
This happens automatically for tables with compaction enabled — no configuration changes are required.
For more information, refer to Table maintenance.
Original source Similar to Storage with recent updates:
- ChatGPT updates195 release notes · Latest Jul 23, 2026
- Cloudflare AI updates121 release notes · Latest Jul 23, 2026
- Claude Code updates404 release notes · Latest Jul 24, 2026
- Gemini updates359 release notes · Latest Jul 22, 2026
- Claude updates118 release notes · Latest Jul 24, 2026
- Codex updates205 release notes · Latest Jul 23, 2026
- Jul 9, 2026
- Date parsed from source:Jul 9, 2026
- First seen by Releasebot:Jul 11, 2026
- Modified by Releasebot:Jul 13, 2026
New Durable Object namespaces must use the SQLite storage backend
Storage now requires SQLite-backed Durable Objects for new namespaces on affected accounts, ending new key-value backed creations. The update keeps feature parity with the KV API while adding SQL queries and point-in-time recovery, and points users to new_sqlite_classes migrations.
If your account does not already have a key-value (KV) backed Durable Object namespace, you can no longer create new ones. New Durable Object namespaces must use the SQLite storage backend, which has been recommended for all new Durable Objects since it became generally available in 2024.
Create a new class with a new_sqlite_classes migration:
{ "$schema": "./node_modules/wrangler/config-schema.json", "migrations": [ { "tag": "v1", "new_sqlite_classes": [ "MyDurableObject" ] } ] }SQLite-backed Durable Objects have feature parity with the key-value backend — including the key-value storage API — and additionally support relational SQL queries and point-in-time recovery to restore an object's storage to any point in the past 30 days.
If you attempt to create a new key-value backed namespace (a new_classes migration) on an affected account, the deployment fails with the following error:
Creating new key-value backed Durable Object namespaces is no longer supported on this account. Please create a namespace using a
new_sqlite_classesmigration instead.This change only affects accounts that are not already using the key-value storage backend. Accounts with at least one existing key-value backed namespace can still create new ones for now, and the Workers Free plan has only ever supported SQLite-backed Durable Objects. It is part of a broader move toward SQLite as the single storage backend for Durable Objects, ahead of a future migration path for existing key-value backed objects.
For more information, refer to Durable Objects migrations.
Original source - Jul 7, 2026
- Date parsed from source:Jul 7, 2026
- First seen by Releasebot:Jul 7, 2026
R2 Data Catalog warns before you delete data manually
Storage adds new safeguards for R2 Data Catalog, warning users in the dashboard and Wrangler before manual deletes that could leave a catalog-enabled bucket in an invalid state.
Dashboard
R2 Data Catalog is a managed Apache Iceberg ↗ catalog built directly into your R2 bucket. Iceberg tracks your data through a tree of metadata files, so every insert, update, and delete must go through a catalog transaction. Manually adding, modifying, or deleting objects outside the catalog can leave pointers referencing files that no longer exist, corrupting the table into an inconsistent state that is difficult to recover from.
To help prevent this, the R2 dashboard and Wrangler now warn you when you attempt a manual delete operation on a Data Catalog-enabled bucket.
When you try to delete objects from a bucket that has R2 Data Catalog enabled, the dashboard displays a warning explaining that the operation could leave the catalog in an invalid state, with a link to the documentation for deleting data correctly. You can cancel the operation or choose to proceed anyway.
Wrangler
Wrangler now checks whether a bucket is Data Catalog-enabled before running a delete and warns you before continuing:
Data Catalog is enabled for this bucket. Proceeding may leave the data catalog in an invalid state. Continue?To learn how to safely manage and delete data in your tables, refer to the R2 Data Catalog documentation.
Original source - Jul 1, 2026
- Date parsed from source:Jul 1, 2026
- First seen by Releasebot:Jul 3, 2026
Reduced end-to-end latency for vector changes
Storage improves Vectorize WAL throughput, cutting vector change latency so inserts, upserts, and deletes become queryable much faster. Median latency drops under 30 seconds and p99 under 2 minutes for fresher search, recommendation, and RAG results.
We have greatly improved the throughput of the Vectorize write-ahead log (WAL) ↗. As a result, we have significantly reduced the end-to-end latency for a vector change to become queryable: median latency has dropped from 2 minutes to under 30 seconds, and p99 latency from 5 minutes to under 2 minutes.
This means inserts, upserts, and deletes are reflected in query results faster, improving the freshness of semantic search, recommendation, and retrieval-augmented generation (RAG) workloads. You do not need to change your code or configuration to benefit from this improvement.
For more information, refer to the Vectorize documentation.
Original source - Jun 30, 2026
- Date parsed from source:Jun 30, 2026
- First seen by Releasebot:Jul 3, 2026
Track memory usage for Workers and Durable Objects in the dashboard
Storage adds a new Memory Usage chart in the Workers Metrics tab, showing Workers and Durable Objects memory across invocations with percentile breakdowns. It helps track trends, spot regressions, and right-size usage against the 128 MB limit.
You can now monitor how much memory your Workers and Durable Objects consume across invocations with the new Memory Usage chart in the Workers Metrics tab, broken down by P50, P90, P99, and P999 percentiles.
Memory usage measures the V8 isolate memory at the time of each invocation, subject to the 128 MB per-isolate limit — a single isolate can handle many concurrent requests and shares memory across them.
Use the Memory Usage chart to:
- Track memory trends — Spot gradual increases that may indicate a memory leak before they cause Exceeded Memory errors.
- Correlate with deployments — Deployment markers on the chart help you identify whether a new version introduced a memory regression.
- Right-size your Worker — Understand your baseline memory footprint and how much headroom you have before hitting the 128 MB limit.
For Durable Objects, memory usage reflects the in-memory state an object holds (class properties, caches, active WebSocket connections), which persists across invocations until the object is hibernated or evicted. This state is not preserved across eviction, hibernation, or a crash, so persist anything important to storage.
To view memory usage, open the Metrics tab for your Worker ↗ or Durable Object namespace ↗. For Durable Objects, you can filter by DO ID or name to drill down into memory usage for a specific object. You can also query memory usage programmatically via the GraphQL Analytics API using the workersInvocationsAdaptive dataset — the quantiles.memoryUsageBytesP50 through quantiles.memoryUsageBytesP999 fields return percentile values in bytes.
For local memory debugging, you can also profile memory with DevTools to take heap snapshots and identify specific objects causing high memory usage.
Original source - Jun 26, 2026
- Date parsed from source:Jun 26, 2026
- First seen by Releasebot:Jun 27, 2026
New `us` jurisdiction for Durable Objects
Storage adds US jurisdiction support for Durable Objects, keeping compute and data residency within the United States while still allowing access from anywhere in the world.
Durable Objects now supports a us jurisdiction, letting you create Durable Objects that only run and store data within the United States. Use the us jurisdiction when you need to keep a Durable Object's compute and storage inside the United States to meet data residency requirements.
Create a namespace restricted to the us jurisdiction the same way as any other jurisdiction:
// Worker export default { async fetch(request, env) { const usSubnamespace = env.MY_DURABLE_OBJECT.jurisdiction("us"); const stub = usSubnamespace.getByName("general"); return stub.fetch(request); }, };Workers may still access Durable Objects constrained to the us jurisdiction from anywhere in the world. The jurisdiction constraint only controls where the Durable Object itself runs and persists data.
For the full list of supported jurisdictions, refer to Data location — Restrict Durable Objects to a jurisdiction.
Original source - Jun 25, 2026
- Date parsed from source:Jun 25, 2026
- First seen by Releasebot:Jun 30, 2026
Test Durable Object eviction with new cloudflare:test helpers
Storage adds Durable Object eviction test helpers in cloudflare/vitest-pool-workers.
The @cloudflare/vitest-pool-workers package now includes evictDurableObject and evictAllDurableObjects test helpers, exported from cloudflare:test.
These helpers let you test how a Durable Object behaves across evictions, simulating the production lifecycle where an idle Durable Object can be evicted from memory.
For more context, refer to Lifecycle of a Durable Object.
These helpers are available in @cloudflare/[email protected] and later.
Learn more in the Test APIs reference and the Testing Durable Objects guide.
Original source - Jun 19, 2026
- Date parsed from source:Jun 19, 2026
- First seen by Releasebot:Jun 20, 2026
- Modified by Releasebot:Jun 23, 2026
Outbound connections keep Durable Objects alive
Storage adds longer-lived Durable Objects that stay active for outbound connect() and outbound WebSocket connections, helping streaming LLM and agent workloads avoid eviction mid-stream while standard inactivity rules still apply after connections close.
Durable Objects now remain alive for the duration of active outbound connections created via connect() or an outbound WebSocket. Previously, a Durable Object would be evicted after 70-140 seconds of no incoming traffic, even if the object had an open outbound connection, which is a common pattern when streaming responses from a large language model (LLM) over TCP or an outbound WebSocket.
With this change, each active outbound connection prevents eviction. Once all outbound connections close, the standard 70-140 second inactivity window applies before the Durable Object is evicted.
If you are building agents on Cloudflare, this is especially relevant. An agent that streams tokens from an LLM while calling models, or that performs long-running tasks over an outbound connection, now stays alive for the duration of that connection instead of being evicted mid-stream.
Limits
- Each outbound connection keeps the Durable Object alive for a maximum of 15 minutes. After 15 minutes, the connection stops preventing eviction (the connection itself continues operating), and the standard eviction rules resume.
- The Durable Object's existing per-account instance limits still apply.
For more information, refer to Lifecycle of a Durable Object.
Original source - Jun 19, 2026
- Date parsed from source:Jun 19, 2026
- First seen by Releasebot:Jun 19, 2026
New Asia-Pacific location hints: apac-ne and apac-se
Storage adds two finer-grained Asia-Pacific location hints for Durable Objects, apac-ne and apac-se, to improve placement for Japan/Korea or Singapore/Indonesia traffic while keeping apac for broader regional use.
Durable Objects now supports two new location hints for Asia-Pacific: apac-ne (Northeast Asia-Pacific) and apac-se (Southeast Asia-Pacific). Use apac-ne or apac-se when you want finer-grained placement within Asia-Pacific rather than the broader apac hint.
Use the new hints the same way as any other locationHint :
// Northeast Asia-Pacific (Japan, Korea, etc.) const stubNE = env.MY_DURABLE_OBJECT.get(id, { locationHint: "apac-ne" }); // Southeast Asia-Pacific (Singapore, Indonesia, etc.) const stubSE = env.MY_DURABLE_OBJECT.get(id, { locationHint: "apac-se" });If your users are spread across all of Asia-Pacific, the existing apac hint remains the right choice. Only reach for apac-ne or apac-se when your traffic is clearly concentrated in one sub-region and you want to minimize round-trip time to that audience. The default behavior and what we generally recommended is not adding a location hint unless absolutely needed, this will create the Durable Object as close to the initializing request as possible to reduce latency.
As with all location hints, these are best-effort suggestions. Cloudflare will place the Durable Object in a nearby data center, not necessarily the exact hinted location.
For the full list of supported hints, refer to Data location — Provide a location hint.
Original source - Jun 12, 2026
- Date parsed from source:Jun 12, 2026
- First seen by Releasebot:Jun 16, 2026
- Modified by Releasebot:Jun 23, 2026
Filter Durable Objects metrics by object ID or name
Storage adds Durable Objects Metrics tab filtering in the Cloudflare dashboard, letting users narrow charts to a single object by ID or name. The update makes it easier to debug high-traffic objects, error spikes, and unexpected storage usage.
You can now filter the Metrics tab for a Durable Objects namespace by an individual Durable Object's ID or name in the Cloudflare dashboard. Previously, metrics charts only showed aggregate, namespace-level data, making it difficult to isolate the behavior of a specific object.
Go to Durable Objects
Start typing an ID or name into the filter and select a match from the autocomplete dropdown. The autocomplete only shows objects with invocations during the selected time range, so an object that does not appear has not been invoked in that window. This does not necessarily mean the object has been deleted. Every chart on the page updates to reflect only the selected object. This makes it easier to identify and investigate a single Durable Object when debugging a high-traffic object, an error spike, or unexpected storage usage. Clear the filter to return to namespace-level metrics.
Metrics are powered by the GraphQL Analytics API, so standard analytics behavior such as ingestion delay and sampling applies.
For more information, refer to Metrics and analytics.
Original source - Jun 4, 2026
- Date parsed from source:Jun 4, 2026
- First seen by Releasebot:Jun 5, 2026
- Modified by Releasebot:Jun 19, 2026
Billable usage and budget alerts now in product sidebars
Storage adds billable usage views and inline budget alerts across product overview pages for pay-as-you-go customers, with a new sidebar widget for current spend and billing-cycle details that matches invoice data.
Pay-as-you-go customers can now view billable usage and create budget alerts directly from the product overview pages for Workers & Pages, D1, R2, Workers KV, Queues, Vectorize, Durable Objects, and Containers. A new sidebar widget shows current-period spend and the billing cycle date range, alongside a button to create a budget alert.
The widget pulls from the same data as the Billable Usage dashboard and aligns to your billing cycle (or the current day on Free plans), so the numbers match your invoice. Enterprise contract accounts are not yet supported.
Billable usage widget in the Durable Objects product sidebar showing current-period spend and a breakdown by service
Selecting Create budget alert opens the budget alert flow inline so you can set a dollar threshold in the same place you are reviewing usage. Budget alerts apply to your total account-level spend across all products, not just the product page you create them from.
For more information, refer to the Usage-based billing documentation.
Original source
Curated by the Releasebot team
Releasebot is an aggregator of official product update announcements from hundreds of software vendors and thousands of sources.
Our editorial process involves the manual review and audit of release notes procured with the help of automated systems.