Skip to content

v2.120.0

Latest

Choose a tag to compare

@github-actions github-actions released this 06 Oct 16:40
· 6 commits to develop since this release
753520f

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 logs gains 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 logs prints retained history by default; -f/--follow switches to live output. New --since, --tail, and --service flags. (#6893)
  • Trace CLI runs end-to-end with opt-in OTLP export — Set SUPABASE_TRACE_FILE to export a JSON trace of one run to a file, or SUPABASE_OTLP_ENDPOINT to 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 list prints an 8-character ID; every --stack-id flag 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 --version and commands run outside a supabase/ directory no longer hit GitHub's API on every run; the check is cached in ~/.supabase/cli-latest for 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.toml key or env var changed and suggests reverting it or running supabase 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 legacy or stack backend, the runtime (docker, podman, or native), and whether the project uses OrioleDB. (#6940)

Bug fixes

  • Config: stop treating disabled data API as enabled — config diff, config push, and config pull no 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 start now shows API_URL, FUNCTIONS_URL, and MCP_URL regardless 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 types when a tool exits before reading its full input. (#6948)
  • stop --no-backup now prunes migra cache — Volumes created by db diff and db pull are now labeled and cleaned up on stop --no-backup, not left behind. (#6982)
  • Native stack: wait for processes to exit before reporting stopped — supabase stack stop now 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 use errors 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 ComputedFields key 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 REVOKE statements for column-level grants when running declarative sync against unchanged exports. (#7020)

Plus 1 internal improvement.

Full changelog: v2.119.0...v2.120.0