Repository navigation
·
6 commits
to develop
since this release
Supabase CLI v2.120.0 — 2026-10-06
A mix of usability improvements and bug fixes, with two major additions for debugging and observability: service logs now persist to disk and ship to Analytics, and CLI runs can export OpenTelemetry traces for end-to-end performance analysis. Stack commands also accept short IDs from stack list, making them much less tedious to use.
Highlights
- Service logs persist, ship to Analytics, and
stack logsgains history — Every service's output now lives in<stateRoot>/<stackId>/logs/, survives restarts and owner exits, and reaches your project's Logs page in Studio.supabase stack logsprints retained history by default;-f/--followswitches to live output. New--since,--tail, and--serviceflags. (#6893) - Trace CLI runs end-to-end with opt-in OTLP export — Set
SUPABASE_TRACE_FILEto export a JSON trace of one run to a file, orSUPABASE_OTLP_ENDPOINTto stream to Tempo, Jaeger, or Grafana. Spans track migrations, containers, API operations, and database queries. Off by default; costs nothing when unset. Two scripts (trace-report,bench-cli) turn traces into critical-path analysis and fair A/B comparisons. (#6935) - Stack commands now accept short IDs —
supabase stack listprints an 8-character ID; every--stack-idflag now accepts it (or any unique 4+ character prefix), eliminating the tedium of copying full 64-character hashes. (#6967)
Improvements
- Upgrade check is now cached outside projects —
supabase --versionand commands run outside asupabase/directory no longer hit GitHub's API on every run; the check is cached in~/.supabase/cli-latestfor 10 hours. On slow or offline networks, this saves ~3 seconds per run. (#6939) - Config rejection errors name the setting and the fix — When a saved stack rejects a configuration change, the error now says which
config.tomlkey or env var changed and suggests reverting it or runningsupabase stack destroy --stack-id <id>. JSON and stream-json errors carry structured details for agents. (#6944) - Command telemetry now tags stack backend and OrioleDB — Telemetry records whether each command ran on
legacyorstackbackend, the runtime (docker,podman, ornative), and whether the project uses OrioleDB. (#6940)
Bug fixes
- Config: stop treating disabled data API as enabled —
config diff,config push, andconfig pullno longer report false drift or propose incorrect changes when the data API is disabled. (#6949) - Gateway URLs now print even when API is disabled —
supabase startnow showsAPI_URL,FUNCTIONS_URL, andMCP_URLregardless of[api] enabled, since Kong serves auth regardless. (#6986) - Typegen stdin feed no longer hangs on early-exit tools — Fixed an intermittent hang in
supabase gen typeswhen a tool exits before reading its full input. (#6948) stop --no-backupnow prunes migra cache — Volumes created bydb diffanddb pullare now labeled and cleaned up onstop --no-backup, not left behind. (#6982)- Native stack: wait for processes to exit before reporting stopped —
supabase stack stopnow confirms that native service processes have exited before returning, preventing port conflicts or file locks when services restart. (#6937) - Native stack: prevent ephemeral port collisions on reopen — Backend ports are now reserved below the OS ephemeral range, fixing intermittent
port already in useerrors when stacks restart. (#6941) - Fix intermittent instance root claim race — Instance root owner markers are now written atomically, eliminating a rare concurrency bug on high-load systems. (#6933)
Dependency updates
- @supabase/typegen 0.2.2 — TypeScript output now includes a
ComputedFieldskey on tables and views, fixing type generation for functions with named row parameters. (#6919) - pg-delta 1.0.0-alpha.57 — No longer emits unnecessary
REVOKEstatements for column-level grants when running declarative sync against unchanged exports. (#7020)
Plus 1 internal improvement.
Full changelog: v2.119.0...v2.120.0