CCloud Releases
Home
Following

Cloud Releases

Service catalogues and updates come from each provider's public product listing and announcements.

Explore

  • Home
  • Latest updates
  • Following

About

  • About
  • Contact
  • Privacy Policy
  • Terms of Use

Providers

  • Amazon Web Services
  • Microsoft Azure
  • Google Cloud
  • Cloudflare

Not affiliated with any cloud provider. Product names and logos belong to their owners.

  1. Providers
  2. ›Cloudflare
  3. ›Durable Objects
  4. ›Update

Feature•Jul 4, 2026

Declare Durable Object class lifecycle with `exports`

Durable ObjectsCloudflare · Developer platform

A new declarative exports field in your Wrangler configuration file replaces the imperative migrations array for managing Durable Object class lifecycle. Instead of writing an ordered list of migration steps with unique tags, you declare each Durable Object class your Worker exports and Cloudflare compares that against what's already deployed to determine what Durable Object state needs to be created, renamed, or deleted.

With legacy migrations, renaming ChatRoom to Room requires retaining both tagged steps:

Before — legacy migrations

{ "migrations": [ { "tag": "v1", "new_sqlite_classes": ["ChatRoom"] }, { "tag": "v2", "renamed_classes": [{ "from": "ChatRoom", "to": "Room" }], }, ], }

With exports, you instead declare Room as the current class and mark ChatRoom as renamed:

After — declarative exports

{ "exports": { "ChatRoom": { "type": "durable-object", "state": "renamed", "renamed_to": "Room", }, "Room": { "type": "durable-object", "storage": "sqlite" }, }, }

Each entry is keyed by class name. The state field carries the lifecycle (created by default — a live class — plus tombstone states deleted, renamed, and transferred, and the expecting-transfer receiving state for cross-Worker transfers).

Key improvements over the legacy migrations array:

  • No migration tags. The current exports map is the source of truth — there is no historical chain of v1, v2, v3 entries to maintain.
  • Structured deployment output. Wrangler reports when it creates, updates, deletes, renames, or transfers Durable Object classes. It also identifies stale configuration entries that are safe to remove. Deployments with no changes or notices do not print this output.
  • Zero-downtime rename and transfer patterns are first-class. Tombstones may coexist with the source class still in code, enabling a three-deploy rename and a four-deploy cross-Worker transfer without runtime errors during the rollout window.
  • Cross-Worker safety. When you delete or rename a class, Cloudflare lists every other Worker in your account whose bindings still reference the namespace, so you can redeploy them before the change goes live.

Existing Workers using the legacy migrations array continue to work unchanged. To move to exports, refer to the migration guide. exports and migrations are mutually exclusive within a single Worker.

For the full reference, refer to Durable Object class exports.

Read the original announcement↗

More from Durable Objects

All Durable Objects updates →
  1. Pending I/O operations allow Durable Objects to continue long-running work without a connected client

    Durable Objects remain active while handling a request from a connected client. This change applies when no client is connected, such as when an agent continues a submitted job after its client disconnects.

    Durable Objects•Feature•Oct 1, 2026
  2. Durable Object name search now supports 128 characters

    Durable Object name searches in the Cloudflare dashboard now accept up to 128 characters, up from 20.

    Durable Objects•Feature•Sep 23, 2026
  3. Workers traces now automatically include JavaScript RPC session spans

    Workers traces can now follow JavaScript RPC calls across Worker boundaries and into Durable Objects. Previously, a trace stopped at the caller's RPC boundary.

    Durable Objects•Feature•Sep 17, 2026
  4. Durable Objects can use up to ten Dynamic Workers concurrently

    Durable Objects can have up to ten distinct Dynamic Workers with in-flight requests, increased from four. This limit applies across all concurrent requests to the same Durable Object because they share an input/output (I/O) context.

    Durable Objects•Feature•Aug 28, 2026
  5. Prevent Durable Object alarm retries when using `ctx.abort()`

    By default, an alarm interrupted by ctx.abort() retries after the Durable Object resets. Pass { retryAlarm: false } when the alarm should stop instead:

    Durable Objects•Feature•Aug 25, 2026