Skip to content

Behavior differences

The Worker API matches Workers runtime APIs. The differences below come from single-node topology and the pinned workerd. Cloudflare products that are not provided: Unsupported.

Workers

TopicBehaviorDocs
Outbound fetch / sockets / node:netShared stock workerd Network(allow=["public"])TCP sockets
Named Service/DO Fetcher.connectDeclared capability tunnel, not a second general outbound
CF IP-range block / self-connect detector / SMTP 25Not provided
Runtime / binding-backend / workerd-internal listenersLoopback
Control / data listenersDefault loopback; an operator may expose them
Exposed ingress and extra public-IP / SMTP egress policyOperator-owned
Request-scoped CPU / subrequest / simultaneous-connection quotasPinned open-source workerd standalone process does not enforceWorkers limits
LimitEnforcer subrequest accountingNo-op; getLimitsExceeded() always reports none
Ineffective WorkerLoader.ResourceLimitsNot treated as enforced
Public-address boundary, product durable limits, handle cleanup, process supervisionStill apply
Other numeric ceilingsLimits
Deploy authorityOne local SQLite authority and one supervised runtime generationVersions and deployments
Global rollout / placement / traffic splitting / account management / billing control planeNot provided
Static AssetsImmutable S3-backed deployment content on the single-node platform; routing and bindings coveredStatic Assets
Global CDN placement / replication / purge propagation / product quotasNot provided
Service BindingsDefault / named fetch and RPC within one platform authorityBindings
Cross-region placement / global service discoveryNot provided
Target admission, deployment pins, capability lifetime, recoveryLocal and fail closed
CronUTC only, five fields, plus documented local Quartz-like extensionsCron Triggers
Cron recoveryAt most the newest slot within misfire grace; no full downtime replay
Cron known failuresConfigured bounded local retry unless noRetry() is called

Storage

TopicBehaviorDocs
KV topologySingle-node SQLite authority; no global replication or edge-cache propagation timingKV
R2Object bytes held by the configured S3-compatible providerR2
R2 global placement / replicationNot provided
D1 topologySingle local-primary SQLite authorityD1
D1 read-replica / region routingNot provided
D1 served_by / region / colo metadata / billing countersNot provided
D1 bookmarksOpaque bookmarks preserve same-database local sequential visibility
D1 rows_read / rows_writtenStable local SQLite execution counters
D1 dump()Current hosted non-alpha dump() is rejected

Compute

TopicBehaviorDocs
Durable Object placementPlaced on the single local workerd processDurable Objects
Location hints / jurisdiction / global migrationNo geographic scheduling effect
Queues durabilitySingle-node scheduler.sqlite; at-least-once deliveryQueues
Queues global FIFONot provided
Queues unknown native dispatchRetains lease and does not consume tenant retry budget; later delivery can repeat the same attempt number
Workflows executionLocal SQLite authorityWorkflows
Workflows callbacksAt-least-once until result commits; replay skips durably completed callbacks
Workflows external effectsDo not roll back with Workflow snapshots
Workflows cross-region execution / global placement / dashboard / observabilityNot provided

Media

TopicBehaviorDocs
Cache authorityWorkers Cache and Cache API are single-node local authorityWorkers Cache, Cache API
Automatic cachingRequires explicit s-maxage or max-age
Heuristic TTL / global replication / purge propagationNot provided
Tiered cache / Cache Rules / Cache Deception Armor / plan-dependent behaviorNot provided
Default object size16 MiB per cached object; 1 GiB logical body bytes per Worker
Live valuesocd capabilities --json; see Limits
ImagesBounded local raster transform binding, not hosted Cloudflare ImagesImages
Hosted delivery / upload / signing, URL transforms, video, AI upscale, product quotasOut of scope