The Durable Object Container API lets your Durable Object coordinate container compute with persistent storage, alarms, and request handling. Access it as this.ctx.container inside a Durable Object with a container binding. When migrating from the Container class, replace its helpers with application code where needed.
Before changing code, identify which helpers your application uses. Some helpers require application code to preserve their existing behavior. For an API comparison, refer to Choose an API.
You can migrate the implementation without replacing the Durable Object. Keep the Worker name, exported class name, binding, container image, and existing migration tags unchanged. Changing the TypeScript base class does not require a new Durable Object migration.
The Container class extends DurableObject. Replace its inherited lifecycle and routing helpers with application code that uses ctx.container.
- In your Worker, change the class to extend
DurableObjectfromcloudflare:workers. Keep the exported class name to retain its existing container definition and Durable Object binding. Do not add a new Durable Object migration solely because you changed the base class. Refer to Wrangler configuration. - Replace
start()calls withctx.container.start(). Replacestop()calls withsignal()ordestroy(), as appropriate. Do not assumestart()waits for a port to become ready. - Replace
defaultPort,containerFetch(), and automaticfetch()routing withgetTcpPort(port).fetch()and your own request routing. Check port readiness before forwarding requests. - Replace
sleepAfterwithsetInactivityTimeout(). Replace lifecycle hooks andschedule()with application code,monitor(), and Durable Object alarms where appropriate. - Test startup, concurrent requests, readiness, idle shutdown, alarm delivery, storage continuity, and recovery after a container restart. A container can be temporarily unavailable after
stop()ordestroy(). Retry allocation before checking port readiness. Then remove@cloudflare/containersonly if no other code imports it.
Keep the same image in the containers section of your Wrangler configuration unless you intend to change the container application itself. The direct API still runs the image associated with its Durable Object class.
For process handling and output, refer to Execute commands and the exec() reference.