← knowledge.oriz.in

No Firebase Functions — Blaze requires a card on file, hard blocked

decision decisionarchitecturefirebaseno-functionsno-card-on-filecloudflare-workerscloudflare-pages-functionsgithub-actionsserverless

No Firebase Functions — Blaze requires a card on file

Decision

Firebase Cloud Functions are never used by any product in the family. This is a hard exclusion, not a "prefer not to" — Functions only runs on Blaze, Blaze requires a card on file, and the no-card-on-file rule is non-negotiable.

This closes the loop on firebase-spark-forever.md: Spark forever implies Functions never.

Why

What replaces Functions

Workload type Replacement Free-tier limit Source
HTTPS endpoint / webhook receiver Cloudflare Workers 100,000 requests/day CF Workers limits
Edge function on a Pages site Cloudflare Pages Functions Shared 100K/day with Workers CF Pages Functions pricing
Scheduled cron job (>1/min granularity) Cloudflare Workers cron triggers Included in Workers free CF Workers limits
Heavy scheduled batch (long-running, package builds, scrapers) GitHub Actions on public repo Unlimited minutes on public repos; 2000 min/mo on private free GH Actions billing, GH Actions pricing 2026
Per-user compute (auth-gated, requires fresh data) Client-side fetch + Firestore REST direct from browser Spark Firestore: 50K reads/day, 20K writes/day firebase-rest-firestore-not-admin
Static-ish derived data (sitemaps, search index, OG image cache) Build-time generation ? static JSON in Cloudflare Pages CF Pages free unlimited static (existing knowledge)
Inbound webhook reliability (retries, replay) Hookdeck free tier ? CF Worker per hookdeck-for-webhook-reliability

Concrete payment-flow consequences

Payment webhooks (Razorpay, Lemon Squeezy, Polar.sh) must not be in the hot path of a CF Worker that could fail closed on quota. Concrete rule:

What changes vs prior decisions

Implications

Cross-refs