Skip to content

[Durable Objects] restructure docs around Diátaxis framework#28345

Draft
elithrar wants to merge 7 commits intoproductionfrom
diataxis-do-restructure
Draft

[Durable Objects] restructure docs around Diátaxis framework#28345
elithrar wants to merge 7 commits intoproductionfrom
diataxis-do-restructure

Conversation

@elithrar
Copy link
Collaborator

@elithrar elithrar commented Feb 14, 2026

Closes #28344

Structure (Diátaxis framework)

durable-objects/
├── index.mdx                              Overview (order 1)
├── get-started.mdx                        Get started (order 2)
│
├── concepts/                              Concepts — explanation (order 3)
│   ├── how-durable-objects-work.mdx       NEW — merged from what-are-durable-objects
│   │                                             + durable-object-lifecycle
│   │                                             + reference/in-memory-state
│   ├── storage-and-state.mdx              NEW
│   ├── calling-durable-objects.mdx        NEW
│   └── rules-of-durable-objects.mdx       MOVED from best-practices/ (content refreshed)
│
├── how-to/                                How-to guides — NEW section (order 4)
│   ├── access-storage.mdx                 ← best-practices/access-durable-objects-storage
│   ├── invoke-methods.mdx                 ← best-practices/create-durable-object-stubs-and-send-requests
│   ├── use-websockets.mdx                 ← best-practices/websockets
│   ├── handle-errors.mdx                  ← best-practices/error-handling
│   ├── use-alarms.mdx                     NEW — merged from api/alarms (how-to parts)
│   │                                             + examples/alarms-api
│   ├── configure-migrations.mdx           ← reference/durable-objects-migrations
│   ├── configure-data-location.mdx        ← reference/data-location
│   ├── use-environments.mdx               ← reference/environments
│   ├── test-durable-objects.mdx           ← examples/testing-with-durable-objects
│   └── gradual-deployments.mdx            external_link → Workers gradual deployments
│
├── api/                                   API reference (order 5, renamed from "Workers Binding API")
│   ├── base.mdx                           pcx_content_type fixed: concept → reference
│   ├── namespace.mdx                      "
│   ├── id.mdx                             "
│   ├── stub.mdx                           "
│   ├── state.mdx                          "
│   ├── sqlite-storage-api.mdx             "
│   ├── legacy-kv-storage-api.mdx          "
│   ├── alarms.mdx                         "
│   ├── container.mdx                      "
│   ├── webgpu.mdx                         unchanged (pcx_content_type: configuration)
│   ├── workers-rs.mdx                     external_link (unchanged)
│   └── rest-api.mdx                       external_link ← durable-objects-rest-api.mdx (root)
│
├── examples/                              Examples (order 6, was 8)
│   ├── build-a-counter.mdx                unchanged
│   ├── websocket-server.mdx               unchanged
│   ├── websocket-hibernation-server.mdx   unchanged
│   ├── durable-object-in-memory-state.mdx unchanged
│   ├── durable-object-ttl.mdx             unchanged
│   ├── reference-do-name-using-init.mdx   unchanged
│   ├── readable-stream.mdx                unchanged
│   ├── use-kv-from-durable-objects.mdx    unchanged
│   └── agents.mdx                         external_link (unchanged)
│
├── tutorials/                             Tutorials (order 9)
│   └── build-a-seat-booking-app.mdx       unchanged
│
├── observability/                         Observability (order 8, was 7)
│   ├── troubleshooting.mdx                unchanged
│   ├── metrics-and-analytics.mdx          fixed pre-existing <Steps> build error
│   └── data-studio.mdx                    unchanged
│
├── platform/                              Platform (order 9, was 12)
│   ├── pricing.mdx                        unchanged
│   ├── limits.mdx                         unchanged
│   ├── storage-options.mdx                external_link (unchanged)
│   ├── data-security.mdx                  ← reference/data-security
│   ├── faq.mdx                            ← reference/faq
│   ├── glossary.mdx                       ← reference/glossary
│   └── known-issues.mdx                   unchanged
│
├── demos.mdx                              unchanged (order 10)
├── video-tutorials.mdx                    unchanged (order 11)
└── release-notes.mdx                      unchanged (order 20)

DELETED sections: best-practices/, reference/

Content movements

  • best-practices/* dissolved — 4 how-to pages moved to how-to/, rules page moved to concepts/ (content refreshed with updated examples)
  • reference/* dissolved — 3 how-to pages moved to how-to/, 3 reference pages moved to platform/, 1 explanation page (in-memory-state) merged into concepts/how-durable-objects-work
  • examples/testing-with-durable-objectshow-to/test-durable-objects (it is a how-to, not an example)
  • examples/alarms-api content merged into new how-to/use-alarms
  • concepts/what-are-durable-objects + concepts/durable-object-lifecycle + reference/in-memory-state merged into new concepts/how-durable-objects-work
  • durable-objects-rest-api.mdx moved into api/rest-api.mdx (now an external_link redirect to the API docs)
  • All 9 API pages: pcx_content_type changed from concept to reference
  • All internal links updated across 48+ files (including partials, changelogs, workers docs, agents docs)
  • All new code examples are TypeScript-first using TypeScriptExample, with typed DurableObject<Env>, RPC methods, and this.ctx.storage
  • 21 new redirects added, 13 existing redirects updated to point to new destinations
  • Fixed pre-existing <Steps> build error in observability/metrics-and-analytics

Redirects

All old paths have 301 redirects in public/__redirects:

Old path New path
/durable-objects/best-practices/ /durable-objects/how-to/
/durable-objects/best-practices/access-durable-objects-storage/ /durable-objects/how-to/access-storage/
/durable-objects/best-practices/create-durable-object-stubs-and-send-requests/ /durable-objects/how-to/invoke-methods/
/durable-objects/best-practices/websockets/ /durable-objects/how-to/use-websockets/
/durable-objects/best-practices/error-handling/ /durable-objects/how-to/handle-errors/
/durable-objects/best-practices/rules-of-durable-objects/ /durable-objects/concepts/rules-of-durable-objects/
/durable-objects/reference/ /durable-objects/concepts/
/durable-objects/reference/durable-objects-migrations/ /durable-objects/how-to/configure-migrations/
/durable-objects/reference/data-location/ /durable-objects/how-to/configure-data-location/
/durable-objects/reference/environments/ /durable-objects/how-to/use-environments/
/durable-objects/reference/in-memory-state/ /durable-objects/concepts/how-durable-objects-work/
/durable-objects/reference/data-security/ /durable-objects/platform/data-security/
/durable-objects/reference/faq/ /durable-objects/platform/faq/
/durable-objects/reference/glossary/ /durable-objects/platform/glossary/
/durable-objects/reference/durable-object-gradual-deployments/ /durable-objects/how-to/gradual-deployments/
/durable-objects/concepts/what-are-durable-objects/ /durable-objects/concepts/how-durable-objects-work/
/durable-objects/concepts/durable-object-lifecycle/ /durable-objects/concepts/how-durable-objects-work/
/durable-objects/examples/testing-with-durable-objects/ /durable-objects/how-to/test-durable-objects/
/durable-objects/examples/alarms-api/ /durable-objects/how-to/use-alarms/
/durable-objects/durable-objects-rest-api/ /durable-objects/api/rest-api/

Drift from original PR description

The following items differ from the original PR description tree:

  1. rules-of-durable-objects.mdx content was refreshed, not "unchanged" as originally stated — the diff shows 343 additions / 326 deletions
  2. api/rest-api.mdx is an external_link stub, not a moved content page — it redirects to /api/resources/durable_objects/
  3. how-to/gradual-deployments.mdx is an external_link stub, not a moved content page — it redirects to the Workers gradual deployments page
  4. api/webgpu.mdx retains pcx_content_type: configuration, not changed to reference like the other 9 API pages
  5. tutorials/ sidebar order is 9 (not mentioned in original) — same as platform/ (order 9), which means they rely on alphabetical tiebreaking
  6. api/base.mdx and api/container.mdx both have sidebar.order: 1 — potential ordering collision
  7. examples/ has 9 files (7 examples + 1 index + 1 external_link), not just the "unchanged minus alarms-api, testing" described — the original description omitted listing reference-do-name-using-init.mdx, readable-stream.mdx, agents.mdx
  8. observability/ sidebar order is 8 — the original description said "was 7" but the actual previous order was also 7, making the change 7→8 (confirmed correct)
  9. Stale redirect: /durable-objects/what-are-durable-objects/ still points to /durable-objects/concepts/what-are-durable-objects/ (line 585) which itself redirects to /durable-objects/concepts/how-durable-objects-work/ — this is a redirect chain, not a direct redirect

Notes

  • tutorials/ (order 9) and platform/ (order 9) share the same sidebar order — platform sorts after tutorials alphabetically
  • api/base.mdx and api/container.mdx both have sidebar.order: 1 — container may need its own order
  • gradual-deployments.mdx and rest-api.mdx are external_link stubs, not standalone content pages
  • webgpu.mdx retains pcx_content_type: configuration (not changed to reference like the other API pages)

Stats

  • 94 files changed across the repo
  • 2,215 additions / 1,938 deletions
  • 55 MDX files in the final durable-objects/ tree
  • Touches: durable-objects, workers, agents, containers, browser-rendering, data-localization, queues, sandbox, reference-architecture, workflows, partials, changelogs, release-notes, glossary, redirects

@github-actions github-actions bot added product:workers Related to Workers product product:queues Cloudflare Queues: https://developers.cloudflare.com/queues product:data-localization product:reference-architecture product:browser-rendering product:durable-objects Durable Objects: https://developers.cloudflare.com/workers/learning/using-durable-objects/ product:changelog product:agents Build and deploy AI-powered Agents on Cloudflare that can act autonomously. product:containers product:sandbox size/xl labels Feb 14, 2026
@github-actions
Copy link
Contributor

This PR requires additional review attention because it affects the following areas:

Redirects

This PR changes current filenames or deletes current files. Make sure you have redirects set up to cover the following paths:

  • /durable-objects/durable-objects-rest-api/
  • /durable-objects/concepts/durable-object-lifecycle/
  • /durable-objects/best-practices/rules-of-durable-objects/
  • /durable-objects/concepts/what-are-durable-objects/
  • /durable-objects/examples/alarms-api/
  • /durable-objects/best-practices/access-durable-objects-storage/
  • /durable-objects/reference/data-location/
  • /durable-objects/reference/durable-objects-migrations/
  • /durable-objects/reference/durable-object-gradual-deployments/
  • /durable-objects/best-practices/error-handling/
  • /durable-objects/best-practices/
  • /durable-objects/best-practices/create-durable-object-stubs-and-send-requests/
  • /durable-objects/examples/testing-with-durable-objects/
  • /durable-objects/reference/environments/
  • /durable-objects/best-practices/websockets/
  • /durable-objects/reference/data-security/
  • /durable-objects/reference/faq/
  • /durable-objects/reference/glossary/
  • /durable-objects/reference/in-memory-state/
  • /durable-objects/reference/

Partials

This PR updates partial files, which are pieces of content used across multiple files in our Render component.

@github-actions
Copy link
Contributor

This pull request requires reviews from CODEOWNERS as it changes files that match the following patterns:

Pattern Owners
/public/__redirects @cloudflare/content-engineering, @cloudflare/pcx-technical-writing
/src/content/changelog/ @cloudflare/pm-changelogs, @cloudflare/pcx-technical-writing
/src/content/docs/agents/ @irvinebroque, @rita3ko, @elithrar, @thomasgauvin, @threepointone, @whoiskatrin, @cloudflare/pcx-technical-writing, @cloudflare/ai-agents, @cloudflare/dev-plat-leads
/src/content/docs/browser-rendering/ @mchenco, @cloudflare/pcx-technical-writing, @celso, @kathayl, @ToriLindsay
/src/content/docs/containers/ @mikenomitch, @th0m, @cloudflare/pcx-technical-writing, @cloudflare/cloudchamber
/src/content/docs/data-localization/ @soheiokamoto, @angelampcosta, @cloudflare/pcx-technical-writing
/src/content/docs/durable-objects/ @elithrar, @vy-ton, @joshthoward, @oxyjun, @lambrospetrou, @mikenomitch, @cloudflare/pcx-technical-writing
/src/content/docs/queues/ @elithrar, @jonesphillip, @harshil1712, @mia303, @cloudflare/pcx-technical-writing
/src/content/docs/reference-architecture/ @securitypedant, @cloudflare/pcx-technical-writing
/src/content/docs/sandbox/ @whoiskatrin, @ghostwriternr, @cloudflare/pcx-technical-writing, @cloudflare/ai-agents
/src/content/docs/workers/ @cloudflare/workers-docs, @GregBrimble, @irvinebroque, @mikenomitch, @korinne, @WalshyDev, @cloudflare/deploy-config, @cloudflare/pcx-technical-writing, @cloudflare/wrangler, @mattietk, @cloudflare/dev-plat-leads
/src/content/docs/workers/wrangler/ @cloudflare/wrangler, @irvinebroque, @cloudflare/pcx-technical-writing
* @cloudflare/pcx-technical-writing
/src/content/partials/d1/ @elithrar, @rozenmd, @vy-ton, @joshthoward, @oxyjun, @harshil1712, @cloudflare/pcx-technical-writing
/src/content/partials/durable-objects/ @elithrar, @rita3ko, @irvinebroque, @vy-ton, @cloudflare/pcx-technical-writing
/src/content/release-notes/durable-objects.yaml @elithrar, @vy-ton, @joshthoward, @oxyjun, @cloudflare/pcx-technical-writing
/src/content/release-notes/workers.yaml @cloudflare/workers-docs, @GregBrimble, @WalshyDev, @aninibread, @cloudflare/deploy-config, @cloudflare/pcx-technical-writing, @irvinebroque, @mikenomitch, @mattietk

@elithrar elithrar force-pushed the diataxis-do-restructure branch from 61c33db to 3dd50ef Compare February 14, 2026 18:43
@github-actions
Copy link
Contributor

Preview URL: https://2e418549.preview.developers.cloudflare.com
Preview Branch URL: https://diataxis-do-restructure.preview.developers.cloudflare.com

Files with changes (up to 15)

Original Link Updated Link
https://developers.cloudflare.com/durable-objects/concepts/rules-of-durable-objects/ https://diataxis-do-restructure.preview.developers.cloudflare.com/durable-objects/concepts/rules-of-durable-objects/
https://developers.cloudflare.com/durable-objects/how-to/test-durable-objects/ https://diataxis-do-restructure.preview.developers.cloudflare.com/durable-objects/how-to/test-durable-objects/
https://developers.cloudflare.com/workers/wrangler/configuration/ https://diataxis-do-restructure.preview.developers.cloudflare.com/workers/wrangler/configuration/
https://developers.cloudflare.com/durable-objects/how-to/use-alarms/ https://diataxis-do-restructure.preview.developers.cloudflare.com/durable-objects/how-to/use-alarms/
https://developers.cloudflare.com/durable-objects/concepts/how-durable-objects-work/ https://diataxis-do-restructure.preview.developers.cloudflare.com/durable-objects/concepts/how-durable-objects-work/
https://developers.cloudflare.com/durable-objects/examples/alarms-api/ https://diataxis-do-restructure.preview.developers.cloudflare.com/durable-objects/examples/alarms-api/
https://developers.cloudflare.com/workers/runtime-apis/bindings/service-bindings/rpc/ https://diataxis-do-restructure.preview.developers.cloudflare.com/workers/runtime-apis/bindings/service-bindings/rpc/
https://developers.cloudflare.com/workers/examples/websockets/ https://diataxis-do-restructure.preview.developers.cloudflare.com/workers/examples/websockets/
https://developers.cloudflare.com/durable-objects/concepts/what-are-durable-objects/ https://diataxis-do-restructure.preview.developers.cloudflare.com/durable-objects/concepts/what-are-durable-objects/
https://developers.cloudflare.com/workers/runtime-apis/websockets/ https://diataxis-do-restructure.preview.developers.cloudflare.com/workers/runtime-apis/websockets/
https://developers.cloudflare.com/durable-objects/examples/websocket-hibernation-server/ https://diataxis-do-restructure.preview.developers.cloudflare.com/durable-objects/examples/websocket-hibernation-server/
https://developers.cloudflare.com/durable-objects/api/alarms/ https://diataxis-do-restructure.preview.developers.cloudflare.com/durable-objects/api/alarms/
https://developers.cloudflare.com/durable-objects/concepts/durable-object-lifecycle/ https://diataxis-do-restructure.preview.developers.cloudflare.com/durable-objects/concepts/durable-object-lifecycle/
https://developers.cloudflare.com/queues/examples/use-queues-with-durable-objects/ https://diataxis-do-restructure.preview.developers.cloudflare.com/queues/examples/use-queues-with-durable-objects/
https://developers.cloudflare.com/durable-objects/examples/websocket-server/ https://diataxis-do-restructure.preview.developers.cloudflare.com/durable-objects/examples/websocket-server/

@github-actions
Copy link
Contributor

CI run failed: build logs

@elithrar
Copy link
Collaborator Author

/bonk fix it

validating links 
Error: 4 [ERROR] ✗ Found 1 invalid link in 1 file.
19:04:04 ▶ workflows/build/rules-of-workflows/
19:04:04   └─ /durable-objects/best-practices/rules-of-durable-objects/ - invalid link

Error: 4 [ERROR] [starlight-links-validator-integration] An unhandled error occurred while running the "astro:build:done" hook
[AstroUserError] Links validation failed.
  Hint:
    See the error report above for more informations.
    
    If you believe this is a bug, please file an issue at https://github.com/HiDeoo/starlight-links-validator/issues/new/choose
  Location:
    /home/runner/work/cloudflare-docs/cloudflare-docs/node_modules/starlight-links-validator/index.ts:78:9
  Stack trace:
    at throwPluginError (/home/runner/work/cloudflare-docs/cloudflare-docs/node_modules/starlight-links-validator/index.ts:78:9)
    at hookFn (file:///home/runner/work/cloudflare-docs/cloudflare-docs/node_modules/astro/dist/integrations/hooks.js:54:21)
    at runHookInternal (file:///home/runner/work/cloudflare-docs/cloudflare-docs/node_modules/astro/dist/integrations/hooks.js:51:11)
    at async AstroBuilder.build (file:///home/runner/work/cloudflare-docs/cloudflare-docs/node_modules/astro/dist/core/build/index.js:164:5)
    at async build (file:///home/runner/work/cloudflare-docs/cloudflare-docs/node_modules/astro/dist/core/build/index.js:45:3)
Error: Process completed with exit code 1.

Co-authored-by: elithrar <elithrar@users.noreply.github.com>
@ask-bonk
Copy link
Contributor

ask-bonk bot commented Feb 14, 2026

Fixed. The link in src/content/docs/workflows/build/rules-of-workflows.mdx:636 was pointing to the old path /durable-objects/best-practices/rules-of-durable-objects/ and is now updated to /durable-objects/concepts/rules-of-durable-objects/.

github run

@elithrar
Copy link
Collaborator Author

/bonk update the PR description with the latest changes to this structure.

Highlight any drift in your comment.

@ask-bonk
Copy link
Contributor

ask-bonk bot commented Feb 15, 2026

Updated PR #28345 description with the audited structure. Here is the drift I found between the original description and the actual files on the branch:

  1. rules-of-durable-objects.mdx was refreshed (343 adds / 326 deletes), not "unchanged" as claimed
  2. api/rest-api.mdx is an external_link stub redirecting to the API docs, not a moved content page
  3. how-to/gradual-deployments.mdx is also an external_link stub, not moved content
  4. api/webgpu.mdx kept pcx_content_type: configuration — it was not changed to reference like the other 9 API pages
  5. api/base.mdx and api/container.mdx both have sidebar.order: 1 — ordering collision
  6. tutorials/ and platform/ both have sidebar.order: 9 — relies on alphabetical tiebreaking
  7. examples/ listing was incomplete — omitted reference-do-name-using-init.mdx, readable-stream.mdx, and agents.mdx
  8. Redirect chain: /durable-objects/what-are-durable-objects/concepts/what-are-durable-objects/concepts/how-durable-objects-work/ (two hops instead of one)

The new PR description includes the full tree with sidebar orders, a redirect table, and all drift items highlighted in their own section.

github run

@cloudflare cloudflare deleted a comment from Trish1980 Feb 16, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

product:agents Build and deploy AI-powered Agents on Cloudflare that can act autonomously. product:browser-rendering product:changelog product:containers product:data-localization product:durable-objects Durable Objects: https://developers.cloudflare.com/workers/learning/using-durable-objects/ product:queues Cloudflare Queues: https://developers.cloudflare.com/queues product:reference-architecture product:sandbox product:workers Related to Workers product size/xl

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Restructure Durable Objects docs around Diátaxis framework