Workers
Cloudflare Workers executes customer code in V8 isolates on the Cloudflare network, with bindings to storage, database, queue and inference services. This page documents the execution model, the binding model, the platform limits that constrain design, and pricing as published.
Document control
Document control. Vendor: Cloudflare, Inc. Document owner: Dana, technical writer, Integrity Czech Republic s.r.o. Last reviewed: 2026-08-31. Content snapshot of the referenced Cloudflare documentation: 2026-08-28. Figures in this document were verified against the sources listed under References on the dates shown there; Cloudflare changes limits and packaging without notice, so verify at the source before you design against a value.
Overview
Workers is Cloudflare's serverless compute platform. Code is deployed to the network rather than to a region, and an invocation is handled at the data centre that received the request. There are no instances to size and no runtime to patch, but the platform imposes explicit CPU, memory, subrequest and script size limits that shape what can be built on it. Those limits are documented in the Limits and constraints section and should be read before design, not after.
Two usage patterns are common. The first places a Worker in front of an existing origin to handle routing, header manipulation, authentication, personalisation or caching logic, leaving the application where it is. The second builds an application entirely on the platform, using its storage and database services with no conventional origin server.
Scaling is handled by the platform in the sense that no capacity is provisioned per deployment. It is not unbounded: per-invocation CPU time, memory, subrequest counts and per-service quotas apply, and account-level concurrency controls exist. Design against the documented limits rather than against an assumption of unlimited scale.
Architecture
A Worker runs in a V8 isolate rather than in a container or virtual machine. An isolate is a sandboxed JavaScript execution context; many isolates are hosted per process, and starting one is substantially cheaper than starting a container image. This is the basis for the platform's start-up characteristics and for the economics of deploying the same code to every location.
Start-up is not free in all cases. Cold start time depends on script size, on the amount of work performed at module scope, and on whether a WebAssembly module must be instantiated. Large bundles and heavy initialisation produce measurable cold starts.
The execution environment implements web platform APIs: fetch, Request and Response, URL, Web Crypto, streams, WebSocket and a subset of Node.js APIs enabled through the nodejs_compat compatibility flag. Runtime behaviour is pinned by a compatibility date and by compatibility flags declared in the Worker configuration, which is how the platform introduces behavioural changes without breaking deployed code.
Bindings connect a Worker to platform resources. A binding is declared in configuration and injected into the environment object at runtime, so a KV namespace, an R2 bucket, a D1 database, a queue, a Durable Object namespace, an AI model or another Worker is addressed as a capability rather than through a connection string or an embedded credential.
Deployment through the Wrangler CLI publishes a new version. Gradual deployments route a configured percentage of traffic to a new version, which means that during a gradual deployment two versions serve concurrently. Deployment is therefore not atomic in that mode, and code must tolerate both versions running against the same data.
In the Cloudflare request pipeline, security phases execute before a Worker is invoked, so a request blocked by the WAF or by a DDoS rule does not reach Worker code.
Capabilities
| Capability | Behaviour | Status and tier | Source |
|---|---|---|---|
| JavaScript and TypeScript runtime | Primary supported runtime, executing in V8 isolates against web platform APIs. | Generally available. | Runtime APIs |
| WebAssembly | Modules compiled from Rust, C, C++ and other languages, invoked from a JavaScript entry point. | Generally available. | WebAssembly |
| Python Workers | Python entry points executing on the platform. | Open beta. Requires the python_workers compatibility flag. Not appropriate for a workload that needs a stability commitment. | Python Workers |
| Workers KV | Eventually consistent global key-value store optimised for high read volume. | Generally available. | Workers KV |
| R2 | Object storage with an S3-compatible API and no egress charge to the internet. | Generally available. | R2 |
| D1 | Serverless SQL database built on SQLite. | Generally available. | D1 |
| Durable Objects | Single-instance stateful objects providing strong consistency, transactional storage and WebSocket coordination. | Generally available. | Durable Objects |
| Queues, Cron Triggers, Workflows | Asynchronous message processing, scheduled invocation and durable multi-step execution. | Verify individual feature status at the source before relying on it. | Queues |
| Workers AI and Vectorize | Inference against hosted models, and vector index storage and search. | Model and feature status varies; some are in beta. Verify per model. | Workers AI |
| Static assets and Wrangler | Static asset hosting for full-stack applications; local development, versioning, gradual deployments and observability through the Wrangler CLI. | Generally available. | Wrangler |
Configuration model
A Worker is defined by its code and its configuration file, wrangler.jsonc or wrangler.toml. The configuration declares:
- Entry point and build settings. The module entry point and any build step.
- Compatibility date and flags. The runtime behaviour the code was written against. Changing the compatibility date is a deliberate act with observable effects and should be reviewed as a code change.
- Bindings. KV namespaces, R2 buckets, D1 databases, Durable Object namespaces, queues, service bindings to other Workers, AI bindings and plain environment variables.
- Secrets. Held outside the configuration file, set through Wrangler or the dashboard, and exposed on the environment object at runtime.
- Triggers. Routes and custom domains for HTTP invocation, cron expressions for scheduled invocation, and queue consumer declarations.
- Environments. Named variants of the configuration for staging and production, each with its own bindings and secrets.
- Limits. Where supported, an explicit CPU limit for the Worker.
Storage choice is the main architectural decision and follows the consistency and access pattern required: KV for high-volume reads of data that tolerates eventual consistency, D1 for relational queries, R2 for objects, Durable Objects where strong consistency or per-entity coordination is required, and Queues where work should be decoupled from the request.
Hold the configuration in version control alongside the code, since bindings and compatibility settings determine runtime behaviour as much as the source does.
Limits and constraints
Values below are from Cloudflare's platform limits documentation, verified 2026-08-31 (https://developers.cloudflare.com/workers/platform/limits/). They change without notice and should be re-checked before a design depends on them.
| Limit | Free | Paid |
|---|---|---|
| Requests | 100,000 per day, 1,000 per minute | Billed per request, no daily cap |
| CPU time per invocation | 10 ms | 30 s default, configurable up to 5 minutes |
| Memory per isolate | 128 MB | 128 MB |
| Worker size after compression | 3 MB | 10 MB |
| Subrequests per invocation | 50 | 10,000 |
| Subrequests to internal services per invocation, such as KV, R2 and D1 | 1,000 | Matches the configured limit, default 10,000 |
| Simultaneous outbound connections | 6 | 6 |
| Environment variables per Worker | 64 | 128 |
| Cron Trigger CPU time | 10 ms | 30 s for intervals under 1 hour; 15 minutes for intervals of 1 hour or more |
A subrequest is any request the Worker makes with the Fetch API or to a Cloudflare service through a binding, so fetch calls and binding calls consume the same per-invocation budget.
Storage service constraints, retrieved 2026-08-28:
- Workers KV. Key size 512 bytes, value size 25 MiB, and a documented limit of approximately one write per second to the same key. KV is eventually consistent: a write is not guaranteed to be visible to a read in another location immediately.
- R2. Multipart upload is required above the single-request object size limit, and part size constraints apply. No egress charge to the internet; operations are billed by class.
- D1. A maximum database size and per-query constraints apply. A D1 database is not a substitute for a horizontally scaled relational cluster; confirm the current maximum before planning data volume.
- Durable Objects. An object is single threaded, so throughput per object is bounded and hot-key patterns must be avoided at design time. Per-object storage limits apply and differ between the key-value and SQLite backends.
Further constraints:
- Python Workers are in open beta and require the
python_workerscompatibility flag. Planning a production workload on them means accepting beta status and the possibility of behavioural change. - CPU time measures time spent executing, not wall-clock time. Time awaiting a subrequest does not consume CPU time, but total request duration remains subject to HTTP timeouts and client behaviour.
- Cold starts are not eliminated. Large bundles, extensive module-scope initialisation and WebAssembly instantiation add measurable start-up time.
- Gradual deployments run two versions concurrently, so schema and data format changes must be backward compatible for the duration of the rollout.
- Node.js compatibility is partial and depends on the
nodejs_compatflag and the compatibility date. Libraries requiring unsupported Node.js APIs, native modules or long-lived raw TCP connections may not run. - Account-level concurrency and rate controls exist. A workload expecting extreme burst concurrency should be confirmed against the contract rather than assumed.
Plan availability
| Tier | Included |
|---|---|
| Free | 100,000 requests per day, 10 ms CPU per invocation, 3 MB compressed Worker size, 50 subrequests per invocation, with separate free allowances on KV, D1 and R2. |
| Workers Paid | Cloudflare states a minimum of 5 US dollars per month, including 10 million requests and 30 million CPU milliseconds per month, with usage beyond those amounts billed per request and per CPU millisecond. Raises CPU time to 30 seconds by default, Worker size to 10 MB and HTTP subrequests to 10,000. |
| Platform services | KV, R2, D1, Durable Objects, Queues, Vectorize and Workers AI are metered separately from Workers requests, each with its own free allowance and unit pricing. R2 charges no egress fee to the internet. |
| Enterprise | Contractual terms, committed usage and support arrangements. |
Accurate as of 2026-08-28 against Cloudflare public pricing documentation (https://developers.cloudflare.com/workers/platform/pricing/). Prices, included amounts and limits change without notice. Model cost against the per-service pricing pages for every service in the design, not against the Workers request price alone.
Deployment
Prerequisites.
- Identify the candidate workload and classify it: edge logic in front of an existing origin, an API, a scheduled job, or a full application.
- Map the workload to platform primitives and record the consistency requirement for each piece of state, since that determines the storage choice.
- Check the workload against the documented limits before writing code: peak CPU per request, peak memory, number of outbound calls per request, bundle size and any dependency requiring an unsupported Node.js API.
- Confirm the runtime. If Python is proposed, record that Python Workers are in open beta and obtain a decision on accepting that status.
- Record where secrets currently live and how they will be supplied as Worker secrets.
- Record the current traffic path and the rollback route to it.
Staged validation. Implement the workload against a staging environment with its own bindings and its own data, and exercise it with representative traffic. Measure CPU time per invocation, memory use and subrequest count against the tier limits, and measure cold start behaviour with the production bundle size rather than a trimmed one. Confirm that observability output reaches the intended destination before any production traffic is routed.
Configuration.
- Declare bindings and set the compatibility date explicitly; do not rely on a default.
- Move all credentials to Worker secrets, and confirm none remain in the repository or the configuration file.
- Configure separate staging and production environments with distinct storage resources, so a deployment error cannot write to production data.
- Set up CI so that deployment is performed by the pipeline with a scoped API token, not from a developer workstation.
- Add rate limiting in front of publicly reachable Worker routes, and add caching where the response permits it, so that request volume and therefore cost are bounded.
- Model cost against expected traffic using the per-service pricing pages, including storage operation classes, and set billing alerts.
Cutover. Route production traffic progressively using gradual deployments or a route covering a subset of paths. Because two versions serve concurrently during a gradual deployment, verify that the new version is compatible with data written by the previous one, and with data the previous one will continue to write during the rollout.
Verification.
- Confirm error rate and latency at each traffic percentage against the recorded baseline before increasing it.
- Confirm that CPU time per invocation stays within the configured limit at production traffic mix, since a limit exceeded under load presents as intermittent failures.
- Confirm that logs and metrics are being produced and retained as intended.
- Confirm that storage operations are within the expected volume, because operation counts drive cost more than request counts in many designs.
- Confirm that the previous path still works, so that rollback is available.
Rollback. Revert traffic to the previous version through the deployment interface, or remove the route so requests reach the origin directly. Keep the previous version deployed rather than deleted until the new version has run through a full traffic cycle. Where a schema or data format changed, verify that the previous version can still read data written by the new one before rolling back.
Operational considerations
Instrument CPU time, error rate and subrequest counts per route, not only request volume. Limit-related failures appear under load and are invisible in a low-traffic staging environment.
Keep the compatibility date under review. Leaving it fixed indefinitely means the Worker runs against increasingly old runtime behaviour; advancing it without testing changes behaviour. Treat an advance as a change with its own validation.
Watch storage operation counts alongside request counts. A design that performs several KV or D1 operations per request has a cost profile driven by those operations, and a caching change can alter the bill substantially in either direction.
Rotate Worker secrets on a schedule and hold them only in the platform secret store. Because bindings replace connection strings, a leaked secret is usually an application credential rather than a platform one, but the rotation obligation is the same.
Design Durable Object keys so that load distributes across objects. A single object handling a disproportionate share of traffic becomes a throughput ceiling that no amount of platform scaling addresses.
Failure modes to plan for: a dependency upgrade pushing the bundle past the size limit, a code path that occasionally exceeds the CPU limit for large inputs, KV write contention on a single key, an upstream service that is slow enough to hold subrequests open, and a gradual deployment left partially rolled out.
Known caveats
- Python Workers are in open beta and require a compatibility flag. They are not appropriate for a workload that needs a stability commitment.
- The platform is not free of capacity constraints. CPU time, memory, bundle size, subrequests and per-service quotas all bound what a single invocation can do.
- Cold starts exist. They are small for compact JavaScript bundles and larger for big bundles and WebAssembly instantiation.
- Gradual deployment is not atomic. Two versions serve at once, so both must work with the same data.
- KV is eventually consistent and has a per-key write rate limit. Using it as a primary store for rapidly mutating state produces correctness problems that appear only under concurrency.
- A Durable Object is single threaded. Throughput per object is bounded by design, not by the account tier.
- Node.js compatibility is partial. A dependency tree that builds locally may still fail at runtime on an unsupported API.
- Portability is partial. Web standard APIs, the S3-compatible R2 API and D1's SQLite dialect keep much application logic portable, while Durable Objects and other platform-specific services would require re-architecture to move. Record which category each component falls into during design.
Interoperability
Workers execute after the security phases of the Cloudflare request pipeline, so WAF, DDoS and Bot Management decisions are applied before Worker code runs. A blocked request never reaches a Worker.
Workers interact with the CDN through the Cache API and through Cache Rules. Where both a Cache Rule and Worker cache logic act on the same request, the documented traffic sequence determines precedence.
R2 can serve as an origin for the CDN and backs Cache Reserve, so object storage, caching and compute compose without a conventional origin server.
Service bindings allow one Worker to invoke another without a network round trip, which supports splitting an application into separately deployed units while keeping call latency low.
Turnstile validation can be performed from a Worker, allowing challenge verification at the edge rather than in the application backend.
Access can be placed in front of a Worker route so that requests are authenticated and authorised before invocation, without the Worker implementing authentication itself.
FAQ
Is a full application migration required to adopt Workers? No. A common adoption path places a Worker on a route in front of an existing origin to handle redirects, caching logic, authentication or personalisation, while the application remains where it is. Migration of the application itself is a separate decision.
What does the CPU limit actually measure? Time spent executing code, not total request duration. Awaiting a subrequest does not consume CPU time, so a request may last longer than the CPU limit without exceeding it.
Which storage service should hold session or coordination state? Durable Objects, where strong consistency or per-entity coordination is required. KV is eventually consistent and rate limited per key, which makes it unsuitable for rapidly mutating single-key state.
Which parts of a Workers application are portable to another platform? Code written against web standard APIs, data in R2 through the S3-compatible API, and D1 schemas and queries in SQLite's dialect are largely portable. Durable Objects and other platform-specific services require re-architecture.
References
- https://developers.cloudflare.com/workers/, retrieved 2026-08-28.
- https://developers.cloudflare.com/workers/platform/limits/, retrieved 2026-08-28.
- https://developers.cloudflare.com/workers/platform/pricing/, retrieved 2026-08-28.
- https://developers.cloudflare.com/workers/languages/python/, retrieved 2026-08-28.
- https://developers.cloudflare.com/workers/configuration/compatibility-dates/, retrieved 2026-08-28.
- https://developers.cloudflare.com/workers/configuration/versions-and-deployments/gradual-deployments/, retrieved 2026-08-28.
- https://developers.cloudflare.com/kv/, retrieved 2026-08-28.
- https://developers.cloudflare.com/r2/, retrieved 2026-08-28.
- https://developers.cloudflare.com/d1/, retrieved 2026-08-28.
- https://developers.cloudflare.com/durable-objects/, retrieved 2026-08-28.
Content snapshot: 2026-08-28.
Changelog
| Date | Change | Author |
|---|---|---|
| 2026-08-31 | Rewritten as a technical reference. Added limits and plan availability tables with sources. | Integrity documentation team |
| 2026-08-28 | Initial publication. | Integrity documentation team |
Contents
464 pages mirrored from the Cloudflare documentation for workers.
Pages
- Best practices
- Workers Cache
- CI/CD
- Configuration
- Databases
- Demos and architectures
- Examples
- Framework guides
- Getting started
- Glossary
- Languages
- Local development
- Observability
- Cloudflare Workers
- Platform
- Playground
- Reference
- Runtime APIs
- Static Assets
- Testing
- Tutorials
- Versions & deployments
- Vite plugin
- Wrangler
Best practices
Workers Cache
CI/CD
- Builds
- Advanced setups
- Builds API reference
- Automatic pull requests
- Build branches
- Build caching
- Build image
- Build watch paths
- Configuration
- Deploy Hooks
- Event subscriptions
- Git integration
- GitHub integration
- GitLab integration
- Limits & pricing
- MCP server
- Troubleshooting builds
- External CI/CD
- GitHub Actions
- GitLab CI/CD
Configuration
- Bindings (env)
- Cloudflare Access
- Compatibility dates
- Compatibility flags
- Cron Triggers
- Environment variables
- Integrations
- APIs
- External Services
- Multipart upload metadata
- Placement
- Routes and domains
- Custom Domains
- Routes
- workers.dev
- Secrets
- Workers Sites
- Workers Sites configuration
- Start from existing
- Start from scratch
- Start from Worker
- Page Rules
Databases
- Analytics Engine
- Connect to databases
- Cloudflare D1
- Hyperdrive
- 3rd Party Integrations
- Neon
- PlanetScale
- Supabase
- Turso
- Upstash
- Xata
- Vectorize (vector database)
Demos and architectures
Examples
- 103 Early Hints
- A/B testing with same-URL direct access
- Accessing the Cloudflare Object
- Aggregate requests
- Alter headers
- Write to Analytics Engine
- Auth with headers
- HTTP Basic Authentication
- Block on TLS
- Bulk origin override
- Bulk redirects
- Using the Cache API
- Cache POST requests
- Cache Tags using Workers
- Cache using fetch
- Conditional response
- CORS header proxy
- Country code redirect
- Setting Cron Triggers
- Data loss prevention
- Debugging logs
- Cookie parsing
- Fetch HTML
- Fetch JSON
- Geolocation: Weather application
- Geolocation: Custom Styling
- Geolocation: Hello World
- Hot-link protection
- Custom Domain with Images
- Logging headers to console
- Modify request property
- Modify response
- Multiple Cron Triggers
- Stream OpenAI API Responses
- Post JSON
- Using timingSafeEqual
- Read POST
- Redirect
- Respond with another site
- Return small HTML page
- Return JSON
- Rewrite links
- Set security headers
- Sign requests
- Single Page App (SPA) shell with bootstrap data
- Stream large JSON
- Turnstile with Workers
- Using the WebSockets API
Framework guides
- AI & agents
- Agents SDK
- LangChain
- APIs
- FastAPI
- Hono
- Deploy an existing project
- Mobile applications
- Expo
- Web applications
- Astro
- Microfrontends
- More guides...
- Analog
- Angular
- Docusaurus
- Gatsby
- Hono
- Nuxt
- Qwik
- Solid
- Waku
- Next.js
- OpenNext adapter
- React + Vite
- React Router (formerly Remix)
- RedwoodSDK
- SvelteKit
- TanStack Start
- Vike
- Vue
Getting started
Languages
- JavaScript
- Examples
- Python Workers
- The Basics
- Examples
- Foreign Function Interface (FFI)
- How Python Workers Work
- Packages
- FastAPI
- Langchain
- Standard Library
- Rust
- Supported crates
- TypeScript
- Examples
Local development
- Supported bindings per development mode
- Environment variables and secrets
- Adding local data
- Share a local dev server
- Local Explorer
- Developing with multiple Workers
- Vite Plugin
- Choosing between Wrangler & Vite
Observability
- DevTools
- Breakpoints
- Profiling CPU usage
- Profiling Memory
- Errors and exceptions
- Exporting OpenTelemetry Data
- Export to Axiom
- Export to Grafana Cloud
- Export to Honeycomb
- Export to PostHog
- Export to Sentry
- Logs
- Workers Logpush
- Real-time logs
- Tail Workers
- Workers Logs
- MCP server
- Metrics and analytics
- Query Builder
- Source maps and stack traces
- Integrations
- Sentry
- Traces
- Custom spans
- Known limitations
- Spans and attributes
Platform
- Betas
- Built with Cloudflare button
- Claim deployments (temporary accounts)
- Deploy to Cloudflare buttons
- Infrastructure as Code (IaC)
- Known issues
- Limits
- Pricing
- Choose a data or storage product
- Workers for Platforms
Reference
- How the Cache works
- How Workers works
- Migrate from Service Workers to ES Modules
- Protocols
- Security model
Runtime APIs
- Bindings (env)
- AI
- Analytics Engine
- Assets
- Browser Run
- D1
- Dispatcher (Workers for Platforms)
- Durable Objects
- Environment Variables
- Hyperdrive
- Images
- KV
- Media Transformations
- mTLS
- Queues
- R2
- Rate Limiting
- Secrets
- Secrets Store
- Service bindings
- HTTP
- RPC (WorkerEntrypoint)
- Stream
- Vectorize
- Version metadata
- Dynamic Workers
- Workflows
- Cache
- Console
- Context (ctx)
- Encoding
- EventSource
- Fetch
- Handlers
- Alarm Handler
- Email Handler
- Fetch Handler
- Queue Handler
- Scheduled Handler
- Tail Handler
- Headers
- HTMLRewriter
- MessageChannel
- Node.js compatibility
- assert
- AsyncLocalStorage
- Buffer
- crypto
- Diagnostics Channel
- dns
- EventEmitter
- fs
- http
- https
- net
- path
- process
- Streams
- StringDecoder
- test
- timers
- tls
- url
- util
- zlib
- Performance and timers
- Request
- Response
- Remote-procedure call (RPC)
- Error handling
- Lifecycle
- Reserved Methods
- TypeScript
- Visibility and Security Model
- Scheduler
- Streams
- ReadableStream
- ReadableStream BYOBReader
- ReadableStream DefaultReader
- TransformStream
- WritableStream
- WritableStream DefaultWriter
- TCP sockets
- Web Crypto
- Web standards
- WebAssembly (Wasm)
- Wasm in JavaScript
- WebSockets
Static Assets
- Billing and Limitations
- Configuration and Bindings
- Direct Uploads
- Get Started
- Headers
- Migration Guides
- Migrate from Pages to Workers
- Migrate from Netlify to Workers
- Migrate from Vercel to Workers
- Redirects
- Routing
- Advanced
- Version affinity
- HTML handling
- Serving a subdirectory
- Full-stack application
- Single Page Application (SPA)
- Static Site Generation (SSG) and custom 404 pages
- Worker script
Testing
- Miniflare
- Core
- Compatibility Dates
- Fetch Events
- Modules
- Multiple Workers
- Queues
- Scheduled Events
- Web Standards
- Variables and Secrets
- WebSockets
- Developing
- Attaching a Debugger
- Live Reload
- Get Started
- Migrations
- Migrating from Version 2
- Storage
- Cache
- D1
- Durable Objects
- KV
- R2
- Writing tests
- Integration test harness
- Configure the test harness
- Get started
- Integrations
- Interact with Workers
- Prepare test state
- Wrangler's unstable_startWorker()
- Vitest integration
- Configuration
- Debugging
- Isolation and concurrency
- Known issues
- Migration guides
- Migrate from Miniflare 2's test environments
- Migrate from unstable_dev
- Migrate from Vitest 3 to Vitest 4
- Migrate to Vitest plugin
- Mock outbound requests
- Recipes and examples
- Test APIs
- Write your first test
Tutorials
- Build a todo list Jamstack application
- Build a QR code generator
- Build a Slackbot
- Connect to and query your Turso database using Workers
- Create a fine-tuned OpenAI model with R2
- Deploy a real-time chat application
- Deploy an Express.js application on Cloudflare Workers
- Generate YouTube thumbnails with Workers and Cloudflare Image Resizing
- GitHub SMS notifications using Twilio
- Handle form submissions with Airtable
- Connect to a MySQL database with Cloudflare Workers
- OpenAI GPT function calling with JavaScript and Cloudflare Workers
- Connect to a PostgreSQL database with Cloudflare Workers
- Send Emails With Postmark
- Send Emails With Resend
- Securely access and upload assets with Cloudflare R2
- Set up and use a Prisma Postgres database
- Use Workers KV directly from Rust
Versions & deployments
- Deployment management
- Gradual deployments
- Version affinity
- With Durable Objects
- Preview URLs
- Rollbacks
- Version overrides
Vite plugin
- Get started
- Reference
- API
- Cloudflare Environments
- Debugging
- Migrating from wrangler dev
- Non-JavaScript modules
- Programmatic configuration
- Secrets
- Static Assets
- Vite Environments
- Tutorial - React SPA with an API
Wrangler
- API
- Bundling
- Commands
- Artifacts
- Browser
- Certificates
- Containers
- D1
- Flagship
- General commands
- Hyperdrive
- KV
- Pages
- Pipelines
- Queues
- R2
- Secrets Store
- Tunnel
- Vectorize
- VPC
- Workers
- Workers for Platforms
- Workflows
- Configuration
- Custom builds
- Deprecations
- Environments
- Install/Update Wrangler
- Migrations
- Migrate from Wrangler v2 to v3
- Migrate from Wrangler v3 to v4
- Migrate from Wrangler v1 to v2
- 1. Migrate webpack projects
- 2. Update to Wrangler v2
- Wrangler v1 (legacy)
- Authentication
- Commands
- Configuration
- Install / Update
- Webpack
- Authentication profiles
- System environment variables
