Skip to content

Workers vs. Pages (compatibility matrix)

You can deploy full-stack applications, including front-end static assets and back-end APIs, as well as server-side rendered pages (SSR), to both Cloudflare Workers and Pages. The compatibility matrix below shows which features are available for each, to help you choose whether to build with Workers or Pages. Unless otherwise stated below, what works in Pages works in Workers, and what works in Workers works in Pages. Think something is missing from this list? Open a pull request โ†— or create a GitHub issue โ†—.

We plan to bridge the gaps between Workers and Pages and provide ways to migrate your Pages projects to Workers.

Legend
โœ…: Supported
โณ: Coming soon
๐ŸŸก: Unsupported, workaround available
โŒ: Unsupported

WorkersPages
Writing, Testing, and Deploying Code
Rollbacksโœ…โœ…
Gradual Deploymentsโœ…โŒ
Preview URLsโœ…โœ…
Testing toolsโœ…โœ…
Local Developmentโœ…โœ…
Remote Development (--remote)โœ… 1โŒ
Quick Editor in Dashboard โ†—โœ…โŒ
Static Assets
Early HintsโŒโœ…
Custom HTTP headers for static assets๐ŸŸก 2โœ…
Middleware๐ŸŸก 3โœ…
Redirects๐ŸŸก 4โœ…
Smart Placementโœ…โœ…
Observability
Workers Logsโœ…โŒ
Logpushโœ…โŒ
Tail Workersโœ…โŒ
Real-time logsโœ…โœ…
Runtime APIs & Compute Models
Node.js Compatibility Modeโœ…โœ…
Durable Objectsโœ…๐ŸŸก 5
Cron Triggersโœ…โŒ
Bindings
AIโœ…โœ…
Analytics Engineโœ…โœ…
Assetsโœ…โœ…
Browser Renderingโœ…โœ…
D1โœ…โœ…
Email Workersโœ…โŒ
Environment Variablesโœ…โœ…
Hyperdriveโœ…โœ…
KVโœ…โœ…
mTLSโœ…โœ…
Queue Producersโœ…โœ…
Queue Consumersโœ…โŒ
R2โœ…โœ…
Rate Limitingโœ…โŒ
Secretsโœ…โœ…
Service bindingsโœ…โœ…
Vectorizeโœ…โœ…
Builds (CI/CD)
Monoreposโœ…โœ…
Build Watch Pathsโœ…โœ…
Build Cachingโœ…โœ…
Deploy HooksโŒโœ…
Branch Deploy ControlsโŒโœ…
Custom Branch AliasesโŒโœ…
Pages Functions
File-based RoutingโŒ 6โœ…
Pages PluginsโŒ 7โœ…

Footnotes

  1. Does not currently support Workers with static assets. For more details on which bindings are supported in remote development, refer to the docs. โ†ฉ

  2. Similar to 3, to customize the HTTP headers that are returned by static assets, you can use Service bindings to connect a Worker in front of the Worker with assets. โ†ฉ

  3. If you need to run a Worker before serving static assets, you can create a separate Worker that acts as middleware, and then use Service bindings to forward the request to the Worker with assets. We plan to explore additional configuration to support more complex routing in the future. โ†ฉ

  4. You can handle redirects by adding code to your Worker (a community package โ†— is available for _redirects support), or you can use Bulk Redirects. โ†ฉ

  5. To use Durable Objects with your Cloudflare Pages project, you must create a separate Worker with a Durable Object and then declare a binding to it in both your Production and Preview environments. Using Durable Objects with Workers is simpler and recommended. โ†ฉ

  6. Workers supports popular frameworks, many of which implement file-based routing. โ†ฉ

  7. Everything that is possible with Pages Functions can also be achieved by adding code to your Worker or by using framework-specific plugins for relevant third party tools. โ†ฉ