Use the runtime deliberately
Cloudflare Workers can host request handlers and connect them to platform services. They are not a traditional always-running Node server. Check runtime compatibility, execution limits and required APIs before moving an application. A deployment that builds successfully can still fail because a required binding, schema migration or provider secret is absent.
Make configuration an explicit contract
Define which database, asset service and storage bucket each environment needs. Use separate development and production settings, keep secrets outside source control and fail closed when security verification is unavailable. A local test bypass must be constrained to local development rather than inferred from a missing secret.
Separate durable state from request work
Store important business facts in a database before reporting success. Notifications can use a durable outbox with retry state, while documents belong in private object storage with authorized access. Record an idempotency key for operations that may be retried. An email API accepting a request is not proof that a recipient received the message.
Bound external dependencies
Apply timeouts, payload limits and retry ceilings to provider calls. Validate incoming JSON and avoid exposing raw provider errors to visitors. Log request references and safe failure categories rather than customer messages or credentials. Give operators enough information to distinguish a missing binding from a validation error or an unavailable email service.
Scale the operating process too
Test real request paths, backups, migration ordering and rollback in a suitable environment. Inspect latency and errors under representative load rather than assuming edge placement guarantees a particular result. Confirm how scheduled retries execute in the actual deployment product. Workers and Pages configuration should not be treated as interchangeable without checking the serving application.
A practical planning checklist
Prepare an environment inventory with binding names, schema versions, required secrets and scheduled tasks, but no secret values. Review it against the deployed version before testing a public form. Capture a successful local request reference and a controlled failure reference. This evidence helps distinguish application behavior from an infrastructure configuration gap during release review.