You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
48 lines
2.2 KiB
Markdown
48 lines
2.2 KiB
Markdown
---
|
|
# quotesdb-shfq
|
|
title: '[TRIAGE] Cloudflare Workers WASM size limit — free tier 1MB limit may require paid plan for Rust binary'
|
|
status: completed
|
|
type: task
|
|
priority: critical
|
|
created_at: 2026-03-10T23:32:05Z
|
|
updated_at: 2026-03-10T23:32:05Z
|
|
---
|
|
|
|
<context>
|
|
This is a triage decision ticket. It must be resolved before dependent implementation tickets can proceed.
|
|
</context>
|
|
|
|
<question>
|
|
Cloudflare Workers WASM size limit: the free tier has a 1MB Worker script size limit. A Rust binary compiled for workers-rs may exceed this. Does this project require a paid Workers plan?
|
|
</question>
|
|
|
|
<options>
|
|
1. **Paid Workers plan** — removes the 1MB limit ($5/month). Simplest solution.
|
|
2. **Optimise binary size** — use `opt-level = "z"`, `lto = true`, `strip = true`, `wasm-opt`, and minimise dependencies. May bring the binary under 1MB.
|
|
3. **Split the Worker** — serve static assets from Pages and keep the Worker API-only (fewer dependencies).
|
|
</options>
|
|
|
|
<decision>
|
|
**The 1 MB limit in this ticket is outdated.** The current Cloudflare Workers limits (as of 2026) are:
|
|
- Workers Free: **3 MB after gzip compression**, 64 MB before compression
|
|
- Workers Paid: **10 MB after gzip**, 64 MB before compression
|
|
|
|
**Chosen approach: Free tier + binary size optimisation (no paid plan required).**
|
|
|
|
Rationale:
|
|
- The API Worker only handles API routes — no Yew/UI code is bundled into it (UI is on Pages).
|
|
- The database layer uses `workers-rs` native D1 bindings (not SQLx) per ticket e8a330 — this eliminates a heavy dependency.
|
|
- The `Cargo.toml` release profile already has `opt-level = "z"`, `lto = true`, `strip = true`, `codegen-units = 1`.
|
|
- `wrangler` applies `wasm-opt` automatically during deploy, further reducing WASM size.
|
|
- A simple CRUD API with these optimisations gzips well under 3 MB.
|
|
- Verification command: `wrangler deploy --outdir bundled/ --dry-run` (shows `gzip: X KiB`).
|
|
|
|
**Implementation ticket created: see ticket for binary size verification after Cargo.toml dependencies are added (1f5bb5).**
|
|
|
|
If the binary somehow exceeds 3 MB, fallback options are: further dependency pruning, or Workers Paid at $5/month.
|
|
</decision>
|
|
|
|
<commit>
|
|
`chore(quotesdb): resolve triage — cloudflare-workers-wasm-size-limit-free-tier-1mb-limit-may-r`
|
|
</commit>
|