124 wires and counting

$ follow Supabase

Keep up with Supabase in about 3 minutes: what actually shipped — the commits, pull requests, releases, and security advisories that matter.

or

fair warning: these emails are deeply technical. diffs, version numbers, CVEs, benchmark deltas. if that's not your idea of a good read, this isn't your newsletter.

Folds into your digest — weekly by default, monthly if you prefer. Unsubscribe in one click.

$ status

wire 2026-05-20
stories 87

© 2026 RepoJournal Home Showcase Explore How it works Privacy

$ the-wire · showcase

SUPABASE TIGHTENS SQL INJECTION DEFENSE WHILE STUDIO FIXES BREAK THE RENDER LOOP

By RepoJournal · Filed · About Supabase · Composed from the cited sources · methodology

1 person shipped this

A critical sanitization hardening in pg-format closes a control-phrase injection vector that could slip SQL commands through keyword validation, while the Studio team ships four fixes that restore table editing reliability and fix infinite render loops.

The pg-meta team patched a dangerous regex gap in pg-format's keyword() helper [1]. The original validation `/^[A-Za-z][A-Za-z0-9_]*$/` accepted space-separated phrases, meaning DROP TABLE and DELETE FROM would pass through as valid keywords. This is a hardening pass that tightens that regex to reject anything that looks like a control phrase. Ship this before your next build. On the Studio side, the team crushed four UI bugs that have been eating support tickets. The table editor was nuking unsaved columns on every refetch because a useEffect was re-initializing from server data without checking if the user had already typed something [2]. The new-project form was caught in a maximum-update-depth infinite loop because form.formState was in a dependency array, creating a new Proxy reference on every render [3]. The instance diagram was laying out read replicas with a hardcoded fake height instead of measuring actual node dimensions [4]. All three are merged and ready. On the CLI front, the team migrated CI pipelines to Blacksmith runners for faster builds [5] and fixed a cross-platform release workflow bug where Windows PowerShell was eating variable expansions [6]. The hidden flags system got refactored from a global registry to per-command scoping to prevent collisions [7].

Action items

References

  1. [1] fix(pg-meta): tighten pg-format keyword() against control-phrase injection (#46076) supabase/supabase ↗
  2. [2] fix(studio): preserve unsaved columns in table editor across refetches (#46073) supabase/supabase ↗
  3. [3] fix(studio): prevent infinite render loop in new-project form (#46131) supabase/supabase ↗
  4. [4] fix(studio): use measured node heights for instance diagram layout (#46075) supabase/supabase ↗
  5. [5] ci: migrate CI and release workflows to Blacksmith runners (#5300) ↗ supabase/cli
  6. [6] fix(cli): fix smoke test shell and npm tag quoting in release workflow (#5294) ↗ supabase/cli
  7. [7] fix(cli): scope hidden flags per-command instead of globally ↗ supabase/cli

Quick answers

What shipped in Supabase on May 20, 2026?
A critical sanitization hardening in pg-format closes a control-phrase injection vector that could slip SQL commands through keyword validation, while the Studio team ships four fixes that restore table editing reliability and fix infinite render loops. In total, 41 commits, 41 pull requests, and 5 releases landed.
Who contributed to Supabase on May 20, 2026?
1 developer shipped this update, including avallete.
What were the notable Supabase updates?
fix(pg-meta): tighten pg-format keyword() against control-phrase injection (#46076), fix(studio): preserve unsaved columns in table editor across refetches (#46073), and fix(studio): prevent infinite render loop in new-project form (#46131).