Supabase Flutter v3 Lands Nov. 11 With Breaks the Compiler Misses
Add ascending: false to every order() call that relies on descending sort before upgrading supabase_flutter to v3. The compiler won't flag it.

Supabase will ship stable supabase-flutter 3.0.0 on Nov. 11, and two of its breaking changes produce no compiler error: the default sort direction of order() and how v2 and v3 apps exchange realtime broadcasts. Supabase said so in its Nov. 6 changelog, which lists v3 as a breaking change for every Dart and Flutter project on supabase_flutter or supabase v2 (Supabase changelog, Nov. 6, 2026).
What Changes
Supabase said v3 is built around type safety. supabase gen types --lang dart generates row, insert and update types per table, and a new supabase.table() API returns typed rows instead of List<Map<String, dynamic>>. Postgres functions get typed supabase.rpc methods, and AuthState becomes a sealed class so switch statements can be exhaustive.
Timestamps become DateTime, URLs become Uri and durations become Duration. Realtime listeners become Streams instead of callbacks. All service exceptions extend one SupabaseException base class. The anonKey parameter of Supabase.initialize is renamed publishableKey, and the existing anon key stays valid as its value.
The typed API is additive. from() still works on the same client, so tables can move one at a time. Supabase marked table() as @experimental while its shape settles.
The Breaks You Won’t See
Supabase said much of v2 was ported from supabase-js, and that order() sorting descending by default is the opposite of SQL. v3 changes that default. Supabase said to add ascending: false to every order() call that depends on descending order, and to do it while still on v2.
Apps that share a realtime broadcast channel should be released together, Supabase said, because v2 and v3 apps exchange broadcasts differently. The migration guide has a “changes the compiler will not catch” section; Supabase said to read it before shipping.
Package Renames and Timeline
Projects that depend directly on gotrue, realtime_client, storage_client or functions_client must switch to supabase_auth, supabase_realtime, supabase_storage and supabase_functions. Supabase said the old packages will be marked discontinued on pub.dev when 3.0.0 ships. Projects that depend only on supabase_flutter or supabase keep their imports.
Self-hosted projects running a GoTrue older than API version 2024-01-01 are affected too, because v3 reads only the newer error codes. Typed code generation needs Supabase CLI 2.122.0 or newer.
A ^2.x constraint never resolves to 3.0.0, so nothing breaks by itself. Prereleases (3.0.0-dev) are on pub.dev now. Supabase said v2 gets security and critical fixes for 6 months after the stable release, and new features go only to v3.
The Take
The compile errors are the easy part. A sort that silently flips on a leaderboard, a message feed or a “latest orders” screen ships green and looks plausible. Grep for order( today, make the direction explicit, and do it on v2 where you can test the old behavior. Third-party packages built on v2 are the other drag: hold the upgrade until their maintainers publish v3-compatible releases.


