Cloudflare Workers allows you to run JavaScript (or Rust/Wasm) code at the edge of the network, close to the end user. This reduces latency, improves performance and simplifies the architecture by eliminating traditional servers. In 2025, the platform offers advanced features such as KV Store, Durable Objects, Workers Sites and native integration with Cloudflare Pages.
Why use Workers?
- Minimum latency, code runs in global data centers, typically <10ms.
- Automatic scaling, no need to provision instances.
- Pay-per-use model, billing based on requests and CPU time.
- Integration with Cloudflare services, firewall, CDN, Argo, Images, etc.
- Support for multiple languages, JavaScript, TypeScript, Rust, C, Go via WebAssembly.
Basic architecture of a Worker
- Script, function
fetchthat receivesRequestand returnsResponse. - Routing, defined in
wrangler.tomlor via Workers Routes. - Optional Storage, KV or Durable Objects for persistent state.
- Deploy,
wrangler publishor CI/CD integration.
Request flow
The path of a request is direct: the user accesses Cloudflare Edge via HTTPS, which runs the Worker Script in the nearest data center. The Worker reads and writes to the KV Store, communicates with Durable Objects when it needs consistent state, and returns the response to the user. In parallel, Edge serves content already cached by the CDN whenever possible, avoiding unnecessary re-execution.
Configuring the project with Wrangler
## Instalar Wrangler (CLI oficial) npm i -g @cloudflare/wrangler ## Inicializar projeto wrangler init my-worker --type=javascript ## Editar wrangler.toml (exemplo)
Minimum example of wrangler.toml:
name = "my-worker" type = "javascript" account_id = "YOUR_ACCOUNT_ID" workers_dev = true compatibility_date = "2025-01-01" [vars] API_KEY = "${API_KEY}" [[kv_namespaces]] binding = "MY_KV" id = "YOUR_KV_ID"
Basic script (3 lines)
addEventListener('fetch', event => { event.respondWith(handleRequest(event.request)) }); async function handleRequest(request) { return new Response('Olá do Cloudflare Workers!', {status: 200}); }
This code responds “Hello from Cloudflare Workers!” to any request.
Path routing
In wrangler.toml add routes for specific domains:
routes = ["example.com/api/*", "api.example.com/*"]
Now the Worker will only fire for URLs that match the pattern.
Using KV Store (2-line example)
await MY_KV.put('visitas', '1'); let count = await MY_KV.get('visitas');
KV offers millisecond latency and global high availability.
Durable Objects, consistent state per key (example 3 lines)
class Counter { constructor(state) { this.state = state; } async fetch(request) { let value = await this.state.storage.get('count') || 0; await this.state.storage.put('count', ++value); return new Response(String(value)); } } addEventListener('fetch', event => event.respondWith(handleRequest(event.request)));
Durable Objects maintain synchronous state between instances, ideal for counters, chat rooms, etc.
Safety and best practices
- Input validation, never trust URL parameters; use
URLSearchParamsand sanitize. - CPU limit, Workers have a limit of 50ms per request; avoid long loops.
- Use of environment variables, store secrets in
wrangler secret putinstead of hard-code. - CORS, configure proper headers for public APIs.
- Rate limiting, combine with Cloudflare Firewall Rules to protect against abuse.
Testing locally
wrangler dev
The command starts a local server that simulates the Edge environment.
Deploy via CI/CD (GitHub Actions example), 5 lines
name: Deploy Workers on: push jobs: deploy: runs-on: ubuntu-latest steps: - uses: actions/checkout@v3 - run: npm i -g @cloudflare/wrangler - run: wrangler publish env: CF_API_TOKEN: $
Observability
- Logs,
wrangler taildisplays logs in real time. - Metrics, Cloudflare Analytics shows latency, errors, traffic.
- Error Tracking, use
try/catchand send details to Sentry or Workers KV.
Quick checklist
- Install Wrangler CLI.
- Configure
wrangler.tomlwith account_id and KV/DO. - Write script
fetchhandler. - Set routes or use
workers_dev. - Test locally with
wrangler dev. - Configure secrets via
wrangler secret. - Deploy with
wrangler publishor CI. - Monitor logs (
wrangler tail). - Apply firewall rules for security.
Conclusion
Cloudflare Workers delivers ultra-fast computing at the edge, allowing you to create serverless APIs, static websites, image transformations, and business logic. By following security best practices, using KV or Durable Objects for state, and integrating with CI/CD pipelines, you can scale applications globally with predictable costs and high performance.
Have you already developed a Worker? Share your tips and challenges in the comments!
Also read
- [WebAssembly at the edge: Why starting fast and isolated matters27
- Cloudflare Workers in production: what changes after hello world
- Developing serverless applications with AWS Lambda and Cloudflare Workers in 2025
- Modern Web Development in 2025: Trends, Tools and Innovative Strategies
- Cloudflare Durable Objects: Consistent state at the edge — what really changes
- Cloudflare Workers vs Pages: the difference that matters before you choose
