Skip to content

Conversation

@dinasaur404
Copy link
Contributor

Summary

Major restructure and content improvements for Workers for Platforms documentation.

Content changes

  • Rewrote overview page with clearer explanation of when to use Workers for Platforms, features, and starter templates (VibeSDK, Worker Publisher Template)
  • Rewrote "How Workers for Platforms works" page with improved architecture explanation, including dispatch namespaces, dynamic dispatch Workers, user Workers, and outbound Workers
  • Created new "Platform examples" page with API and SDK examples for deploying Workers programmatically, including:
    • Deploy a user Worker
    • Deploy with bindings and tags
    • Deploy with static assets
    • List Workers in a namespace
    • Delete Workers by tag
  • Updated "Configure Workers for Platforms" page to be dashboard-first with clearer steps
  • Updated dynamic dispatch Worker page with more routing examples and "Add platform functionality" section
  • Updated tags page with dashboard instructions

Structure changes

  • Moved how-workers-for-platforms-works.mdx from reference/ to top level (appears after overview)
  • Moved bindings.mdx from get-started/ to configuration/
  • Moved limits.mdx, pricing.mdx, worker-isolation.mdx from platform/ to reference/
  • Removed redundant platform/ folder
  • Removed redundant demos.mdx (replaced by platform-examples)
  • Removed redundant user-workers.mdx (covered in configuration and platform-examples)
  • Hidden index pages in sidebar for get-started, configuration, and reference sections

Link updates

  • Updated all internal links to reflect new page locations
  • Updated links in Workers docs, reference architecture docs

@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:

  • /cloudflare-for-platforms/workers-for-platforms/get-started/bindings/
  • /cloudflare-for-platforms/workers-for-platforms/demos/
  • /cloudflare-for-platforms/workers-for-platforms/get-started/user-workers/
  • /cloudflare-for-platforms/workers-for-platforms/platform/
  • /cloudflare-for-platforms/workers-for-platforms/reference/how-workers-for-platforms-works/
  • /cloudflare-for-platforms/workers-for-platforms/platform/limits/
  • /cloudflare-for-platforms/workers-for-platforms/platform/pricing/
  • /cloudflare-for-platforms/workers-for-platforms/platform/worker-isolation/

@github-actions
Copy link
Contributor

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

Pattern Owners
/src/content/docs/cloudflare-for-platforms/workers-for-platforms/ @irvinebroque, @dinasaur404, @cloudflare/deploy-config, @cloudflare/pcx-technical-writing
/src/content/docs/reference-architecture/ @securitypedant, @cloudflare/pcx-technical-writing
/src/content/docs/workers/ @cloudflare/workers-docs, @GregBrimble, @irvinebroque, @mikenomitch, @korinne, @WalshyDev, @cloudflare/deploy-config, @cloudflare/pcx-technical-writing, @cloudflare/wrangler, @cloudflare/workers-runtime-1, @mattietk
/src/content/docs/workers/wrangler/ @cloudflare/wrangler, @irvinebroque, @cloudflare/pcx-technical-writing, @cloudflare/workers-runtime-1

@github-actions
Copy link
Contributor

Preview URL: https://da23e787.preview.developers.cloudflare.com
Preview Branch URL: https://wfp-docs-improvements.preview.developers.cloudflare.com

Files with changes (up to 15)

Original Link Updated Link
https://developers.cloudflare.com/cloudflare-for-platforms/workers-for-platforms/platform-examples/ https://wfp-docs-improvements.preview.developers.cloudflare.com/cloudflare-for-platforms/workers-for-platforms/platform-examples/
https://developers.cloudflare.com/cloudflare-for-platforms/workers-for-platforms/get-started/dynamic-dispatch/ https://wfp-docs-improvements.preview.developers.cloudflare.com/cloudflare-for-platforms/workers-for-platforms/get-started/dynamic-dispatch/
https://developers.cloudflare.com/cloudflare-for-platforms/workers-for-platforms/get-started/configuration/ https://wfp-docs-improvements.preview.developers.cloudflare.com/cloudflare-for-platforms/workers-for-platforms/get-started/configuration/
https://developers.cloudflare.com/cloudflare-for-platforms/workers-for-platforms/ https://wfp-docs-improvements.preview.developers.cloudflare.com/cloudflare-for-platforms/workers-for-platforms/
https://developers.cloudflare.com/cloudflare-for-platforms/workers-for-platforms/how-workers-for-platforms-works/ https://wfp-docs-improvements.preview.developers.cloudflare.com/cloudflare-for-platforms/workers-for-platforms/how-workers-for-platforms-works/
https://developers.cloudflare.com/cloudflare-for-platforms/workers-for-platforms/reference/how-workers-for-platforms-works/ https://wfp-docs-improvements.preview.developers.cloudflare.com/cloudflare-for-platforms/workers-for-platforms/reference/how-workers-for-platforms-works/
https://developers.cloudflare.com/cloudflare-for-platforms/workers-for-platforms/configuration/tags/ https://wfp-docs-improvements.preview.developers.cloudflare.com/cloudflare-for-platforms/workers-for-platforms/configuration/tags/
https://developers.cloudflare.com/cloudflare-for-platforms/workers-for-platforms/configuration/custom-limits/ https://wfp-docs-improvements.preview.developers.cloudflare.com/cloudflare-for-platforms/workers-for-platforms/configuration/custom-limits/
https://developers.cloudflare.com/cloudflare-for-platforms/workers-for-platforms/get-started/user-workers/ https://wfp-docs-improvements.preview.developers.cloudflare.com/cloudflare-for-platforms/workers-for-platforms/get-started/user-workers/
https://developers.cloudflare.com/cloudflare-for-platforms/workers-for-platforms/demos/ https://wfp-docs-improvements.preview.developers.cloudflare.com/cloudflare-for-platforms/workers-for-platforms/demos/
https://developers.cloudflare.com/cloudflare-for-platforms/workers-for-platforms/platform/ https://wfp-docs-improvements.preview.developers.cloudflare.com/cloudflare-for-platforms/workers-for-platforms/platform/
https://developers.cloudflare.com/cloudflare-for-platforms/workers-for-platforms/configuration/ https://wfp-docs-improvements.preview.developers.cloudflare.com/cloudflare-for-platforms/workers-for-platforms/configuration/
https://developers.cloudflare.com/workers/wrangler/configuration/ https://wfp-docs-improvements.preview.developers.cloudflare.com/workers/wrangler/configuration/
https://developers.cloudflare.com/cloudflare-for-platforms/workers-for-platforms/get-started/ https://wfp-docs-improvements.preview.developers.cloudflare.com/cloudflare-for-platforms/workers-for-platforms/get-started/
https://developers.cloudflare.com/cloudflare-for-platforms/workers-for-platforms/reference/ https://wfp-docs-improvements.preview.developers.cloudflare.com/cloudflare-for-platforms/workers-for-platforms/reference/

@github-actions
Copy link
Contributor

CI run failed: build logs

Copy link
Contributor

@irvinebroque irvinebroque left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

How can we make getting started simple?

Ex: this content:

Screenshot 2025-12-18 at 6 23 18 PM

is:

  • below the fold
  • not on the getting started page
  • not on the homepage of Cloudflare for Platforms

How can we get someone doing ^ that — and going whooaaaaaa it works

And then be like "okay how does it work though I want to understand" and read and invest the time to go deeper

If we do that — we invert it and get people moving and making progress.

| `PUT https://api.cloudflare.com/client/v4/accounts/{account_id}/workers/dispatch/namespaces/{namespace_name}/scripts/{script_name}/tags/{tag}` | Adds the single specified tag to the list of tags associated with the Worker script. |
| `DELETE https://api.cloudflare.com/client/v4/accounts/{account_id}/workers/dispatch/namespaces/{namespace_name}/scripts/{script_name}/tags/{tag}` | Deletes the single specified tag from the list of tags associated with the Worker script. |
| `DELETE https://api.cloudflare.com/client/v4/accounts/{account_id}/workers/dispatch/namespaces/{namespace_name}/scripts?tags={filter}` | Deletes all Worker scripts matching the filter. For example, `tags=testing:yes` would delete all scripts tagged with `testing`. |
| Method and endpoint | Description |
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Screenshot 2025-12-18 at 5 43 19 PM

Something off with table

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@kodster28 good example here of the kind of thing that we might want to think about components in docs for?

Ex: here what we are trying to do is explain to someone in dev docs what REST APIs are available to do xyz — and link them to the right place

@dinasaur404 these need to link to our docs at https://developers.cloudflare.com/api/

Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think the simplest immediate action here would be to shorten the URl to the relevant part /accounts/{account_id} if she wanted to follow that format.

If up for a different format which -- for mobile + search + general usability -- header sections are way better than tables, should use APIRequest which makes the calls a lot more actionable + includes permissions directly to streamline the workflow.

} from "~/components";

## Prerequisites:
## Prerequisites
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

There is so much here in get started — versus having one clear place to get started.

Screenshot 2025-12-18 at 5 46 10 PM

How can we get this down to a single page?

There is a lot of content on the other pages that is both getting started and reference documentation

## Prerequisites:
## Prerequisites

### Enable Workers for Platforms
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think this can be clearer as a note component — clearly a prerequisite vs. part of the content


If you are an Enterprise customer, contact your Cloudflare account team to enable Workers for Platforms.

### Learn about Workers for Platforms
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I wonder about taking diagram and reusing here — show the person visually who is getting started the thing they are about to deploy

This guide walks you through setting up Workers for Platforms. You will configure a [dispatch namespace](/cloudflare-for-platforms/workers-for-platforms/how-workers-for-platforms-works/#dispatch-namespace), a [dynamic dispatch Worker](/cloudflare-for-platforms/workers-for-platforms/how-workers-for-platforms-works/#dynamic-dispatch-worker), and a [user Worker](/cloudflare-for-platforms/workers-for-platforms/how-workers-for-platforms-works/#user-workers) to test a request end to end.

### 1. Create a user Worker
### 1. Create a dispatch namespace
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

How can we get the first thing someone does here with us to be Deploy to Cloudflare — see something real and working and feel successful — "I have done a thing and it works!"

and then go and do the mechanical steps to understand step by step how that thing works?

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Right now I think this is too reliant on the dashboard. People shouldn't need to go back and forth here so much.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Basically — the steps outlined here are the ones that I would expect us to guide someone to take from within the WFP dashboard vs. explaining here in docs.

If I am in docs I want to click button have stuff work — then understand it

If I am reading instruction manual in one tab clicking buttons in dash in another...


### Dynamic dispatch Worker

A dynamic dispatch Worker is the entry point for all requests. You write this Worker to:
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
A dynamic dispatch Worker is the entry point for all requests. You write this Worker to:
A dynamic dispatch Worker is the entry point for all requests to your platform. Your dynamic dispatch Worker:


A dynamic dispatch Worker is the entry point for all requests. You write this Worker to:

- **Route requests** - Determine which customer Worker should handle each request based on hostname, path, headers, or any other criteria
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
- **Route requests** - Determine which customer Worker should handle each request based on hostname, path, headers, or any other criteria
- **Routes requests** - Determine which customer Worker should handle each request based on hostname, path, headers, or any other criteria


### User Workers

User Workers contain code written by your customers. They are deployed to a dispatch namespace and invoked by your dynamic dispatch Worker. You can provide user Workers with [bindings](/cloudflare-for-platforms/workers-for-platforms/configuration/bindings/) to access KV, D1, R2, and other resources.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
User Workers contain code written by your customers. They are deployed to a dispatch namespace and invoked by your dynamic dispatch Worker. You can provide user Workers with [bindings](/cloudflare-for-platforms/workers-for-platforms/configuration/bindings/) to access KV, D1, R2, and other resources.
User Workers contain code written by your customers. Your customer sends their code to your platform, and then you make an API request to deploy a user Worker on their behalf. They are deployed to a dispatch namespace and invoked by your dynamic dispatch Worker. You can provide user Workers with [bindings](/cloudflare-for-platforms/workers-for-platforms/configuration/bindings/) to access KV, D1, R2, and other resources.

I am finding myself wanting to add this kind of sentence in many places to get super super clear that it goes:

  1. customer sends code to platform
  2. platform takes code, sends it to cloudflare as user Worker

Both — because this is the flow that there isn't a diagram of here (AFAIK) — and because of examples where this isn't followed or understood


### Outbound Worker (optional)

An [outbound Worker](/cloudflare-for-platforms/workers-for-platforms/configuration/outbound-workers/) intercepts `fetch()` requests made by user Workers. Use it to:
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
An [outbound Worker](/cloudflare-for-platforms/workers-for-platforms/configuration/outbound-workers/) intercepts `fetch()` requests made by user Workers. Use it to:
An [outbound Worker](/cloudflare-for-platforms/workers-for-platforms/configuration/outbound-workers/) intercepts [`fetch()`](/workers/runtime-apis/fetch/) requests made by user Workers. Use it to:


Both Workers for Platforms and [Service bindings](/workers/runtime-apis/bindings/service-bindings/) enable Worker-to-Worker communication. Use Service bindings when you know exactly which Workers need to communicate. Use Workers for Platforms when user Workers are uploaded dynamically by your customers.

You can use both simultaneously - your dynamic dispatch Worker can use Service bindings to call internal services while also dispatching to user Workers in a namespace.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

non-blocking but — example?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

9 participants