Access Durable Object name via `ctx.id.name`
When your Worker accesses a Durable Object via idFromName() or getByName(), the same name is now available on ctx.id.name inside the object — no need to pass it through method arguments or persist it in storage. This brings the runtime behavior in line with the Workers runtime types.
This is especially useful for alarms, where there is no calling client to pass the name as an argument. When an alarm handler runs, ctx.id.name will hold the same name the object was originally accessed with.
import { DurableObject } from "cloudflare:workers";
export class ChatRoom extends DurableObject { async getRoomName() { // ctx.id.name returns the name passed to getByName() or idFromName() return this.ctx.id.name; }}
// Workerexport default { async fetch(request, env) { const stub = env.CHAT_ROOM.getByName("general"); const roomName = await stub.getRoomName(); return new Response(`Welcome to ${roomName}!`); },};ctx.id.name is undefined in the following cases:
- For Durable Objects created with
newUniqueId(). - When accessed via
idFromString(), even if the ID was originally created from a name. - For names longer than 1,024 bytes.
This works the same way in local development with wrangler dev as it does in production. Run npm update wrangler to ensure you are on a version with this support.
For more information, refer to the Durable Object ID documentation.