Releases, fixes, and the occasional retrospective on what we learned in production. Subscribe to get the next one in your inbox the moment it goes live.
After eight months in beta, Edge Functions are now GA across all 38 regions. Cold starts under 30ms, isolates instead of containers, and a new lambda.routes() API for per-region routing.
New
Edge Functions GA. Now generally available with 99.99% SLA. lambda functions:deploy ships to 38 regions in a single command. #3142
Per-region routing. A new routes.ts primitive lets you pin endpoints to regions, fail over to fallback regions, or serve different bundles by geo. #3098
Streaming responses. Functions can now return ReadableStream for SSE, AI tokens, or large CSV exports without buffering. #3127
Improvements
Cold starts dropped from 84ms to 28ms (P95) thanks to a new V8 snapshot pipeline. #3061
Function logs now stream live in the dashboard with sub-second latency, even at 10k req/s. #3119
Bundle size limit raised from 50MB to 250MB for paid plans. Compressed deltas are now diffed across deploys. #3145
Fixes
Fixed a race in kv.atomic() that caused intermittent transaction aborts under high contention. #3103
Resolved the dashboard crash when viewing functions deployed from a deleted git branch. #3110
A small but mighty release. lambda migrate now warns before destructive changes hit production, and the CLI is 2.4× faster to boot on first run.
Improvements
CLI startup dropped from 240ms to 98ms thanks to lazy-loaded subcommand modules. #3088
Migration plans now show estimated lock duration, row-count impact, and a backfill ETA before applying. #3079
Trace viewer now surfaces N+1 query patterns inline with a "fix this" suggestion. #3084
Fixes
Fixed a regression where lambda dev would hang if port 4321 was already in use. #3091
SAML logout redirects now respect the RelayState parameter on all configured IdPs. #3094
Webhooks no longer retry indefinitely on 410 Gone responses — they now permanently fail-open. #3096
RB
EM
SP
Shipped by Renata, Eli & Sam.
Apr 14 · 2026
v2.3.3Patch
Better Postgres branching & a quieter dashboard.
Database branches now support copy-on-write at the storage layer, so spinning up a 200GB preview environment costs you exactly nothing — until you write to it.
New
Copy-on-write branches. Preview environments now share storage pages with their parent until divergence. Branches start in <3 seconds regardless of database size. #3052
Quiet hours. Dashboard alerts now respect a per-team quiet-hours schedule. Pages still fire; toasts hush. #3068
Improvements
Logs panel now supports filter chips (status, region, function, user) with keyboard navigation. #3070
API keys can now be scoped to a single resource type — finally. #3074
— March 2026 —
Mar 31 · 2026
v2.3.0Major release9 contributors
Row-level policies, written like English.
A new declarative policy DSL replaces the JSON-based access rules. Read your security model out loud — it’s the same as the source code.
New
Policy DSL. A new .policy file format lets you express row-level access in plain reading order. The compiler emits Postgres RLS under the hood. #2987
Policy preview. The dashboard shows you which existing rows a policy change would suddenly grant or revoke before you apply it. #3001
Audit logs API. Every policy decision is now queryable via /v1/audit with full request context attached. #3019
Improvements
JSON policies still work — the DSL is opt-in. Migration tool included. #3024
Test runner can now assert "this policy denies access for this row + user" with a one-liner. #3030
JK
MC
DV
+6
Shipped by Jiro & the Auth team.
Mar 17 · 2026
v2.2.7Patch
Faster cold queries, calmer pagers.
A weekend’s worth of perf work. The query planner now caches plans across deploys, and we shaved 40% off the connection-pool acquire time.
Improvements
Query plans cached across deploys for unchanged statements — first-request P95 down 38%. #2945
Connection pool acquire latency: 12ms → 7ms (P95). #2952
Alerts now batch within a 60s window so you don't get paged 14 times for the same incident. #2961