Cloudflare Pages runbook
System: cloudflare-pages (getraxx.com landing page + future static surfaces) Owner: sre-agent Last incident: 2026-05-27 (waitlist form hidden — see RCA 2026-05-27-getraxx-waitlist-flag-invisible) Last reviewed: 2026-05-27
How to tell it's broken
- Symptom 1: Deployed content does not reflect expected feature state (e.g., form not visible, flag-gated content missing)
- Symptom 2:
wrangler pages deploystep fails indeploy-getraxx.ymlwith auth/project error - Symptom 3:
getraxx.comreturns a CF Pages 500 or 404 that is not a route-level miss - Symptom 4:
www.getraxx.comdoes not redirect togetraxx.com(redirect rule fired or www re-attached as CF Pages custom domain)
Architecture — where the build actually happens
Critical: The deploy-getraxx.yml workflow uses a build-then-upload pattern. CF Pages only hosts the pre-built dist/. It does NOT run npm run build itself.
GitHub Actions runner
└─ npm ci && npm run build ← Vite bakes env vars INTO the bundle here
└─ wrangler pages deploy dist/ ← uploads static files to CF Pages
Cloudflare Pages
└─ serves the uploaded dist/ ← has no knowledge of original env vars
Consequence: CF Pages project env vars (set via dashboard or API) have zero effect on what ends up in the bundle. The flag values must be present in the GH Actions step shell at build time.
Env vars for feature flags
Feature flags in frontend/getraxx-landing are injected via Vite's define block in vite.config.js. The values Vite reads come from loadEnv(mode, cwd), which reads from the shell environment and any .env files.
Where to set them:
| What you want | Where to set it |
|---|---|
| Always-on flag in production builds | Add env: block on the Build getraxx landing step in .github/workflows/deploy-getraxx.yml |
| Secret build-time value | Store in Infisical; add a load-vault-secrets step before the build step; inject into env: |
| Local dev flag override | .env.local in frontend/getraxx-landing/ (gitignored) |
Do NOT use: CF Pages project env vars for anything that affects bundle content — they are irrelevant for this pattern.
How to diagnose (in order)
- Check whether the issue is visible in the live bundle. Download
https://getraxx.com/and search the JS bundle for the feature string (e.g.,"opening soon"vs `