NewYour coding agent can read the release notes before it upgrades.Set up the MCP server →
pub.dev · #363 most downloaded on pub.dev
A dart client for Supabase. This client makes it simple for developers to build secure and scalable products.
Last release 4 days ago
30 Sep 2026
Release timing varies
gaps range from 8 days to 2 months
Nearly every release is documented
notes for 60 of the last 60 stable releases
1 version withdrawn
withdrawn after publishing
6 years old
174 releases · first in 2021
One column per quarter.
BREAKING FEAT(realtime_client): Introduce type safe realtime methods (#725).
FIX: PKCE flow not emitting password recovery event (#744).
FIX: issue where .range() not respecting the offset given. (#722).
FIX(functions_client): use header for response parsing (#616).
Note: This release has breaking changes.
SupabaseClient (#649). (fa341bfe)Update a dependency to the latest release.
Packages with breaking changes:
Packages with breaking changes:
functions_client - v2.0.0-dev.0gotrue - v2.0.0-dev.0postgrest - v2.0.0-dev.0realtime_client - v2.0.0-dev.0storage_client - v2.0.0-dev.0supabase - v2.0.0-dev.0supabase_flutter - v2.0.0-dev.0yet_another_json_isolate - v2.0.0-dev.0Packages with other changes:
Update a dependency to the latest release.
Update a dependency to the latest release.
Update a dependency to the latest release.
Update a dependency to the latest release.
Packages with breaking changes:
Packages with breaking changes:
Packages with other changes:
Packages with dependency updates only:
Packages listed below depend on other packages in this workspace that have had changes. Their versions have been incremented to bump the minimum dependency versions of the packages they depend upon in this project.
supabase - v1.11.4supabase_flutter - v1.10.17Update a dependency to the latest release.
FIX(gotrue): export SignOutScope (#576).
FIX(realtime_client,supabase): pass apikey as the initial access token for realtime client (#596).
FEAT: add logLevel parameter to RealtimeClientOptions (#592).
Packages with breaking changes:
useSchema() method for making rest API calls on custom schema. (#525). (40a0f090)Packages with breaking changes:
Packages with other changes:
Packages with dependency updates only:
Packages listed below depend on other packages in this workspace that have had changes. Their versions have been incremented to bump the minimum dependency versions of the packages they depend upon in this project.
supabase - v1.9.9supabase_flutter - v1.10.11Update a dependency to the latest release.
Packages with breaking changes:
Packages with breaking changes:
Packages with other changes:
Update a dependency to the latest release.
Update a dependency to the latest release.
Update a dependency to the latest release.
Update a dependency to the latest release.
REFACTOR: bump minimum Dart SDK version to 2.17.0 (#510).
Packages with breaking changes:
Packages with breaking changes:
Packages with other changes:
functions_client - v1.3.1gotrue - v1.8.1postgrest - v1.3.1storage_client - v1.4.1supabase - v1.9.1supabase_flutter - v1.10.1FIX: Update http dependency constraints (#491).
Packages with breaking changes:
Packages with breaking changes:
Packages with other changes:
Packages with dependency updates only:
Packages listed below depend on other packages in this workspace that have had changes. Their versions have been incremented to bump the minimum dependency versions of the packages they depend upon in this project.
supabase - v1.9.4supabase_flutter - v1.10.4FIX: Update http dependency constraints (#491).
FIX: reformat Provider type to be ordered alphabetically (#471).
// Add custom headers using the `headers` setter
supabase.headers = {'my-headers': 'my-value'};
feat: add async storage as parameter to support pkce flow #190
fix: race condition for passing auth headers for rest client #192
fix: copy headers value on from() call #189
fix: handle onAuthStateChange errors silently #187
fix: keep one storage and functions instance to persist auth #182
setAuth() functionadd support for signInWithIdToken
signInWithIdTokenFIX: don't try to decode an empty body (#631).
FEAT(postgrest,supabase): add useSchema() method for making rest API calls on custom schema. (#525).
FIX: make Supabase client work in Dart Edge again (#675).
isolate parameter to SupabaseClient #169onAuthStateChanged now emits the latest AuthStatecollection version to support wider range of Flutter SDK versionsPackages with breaking changes:
Packages with breaking changes:
Packages with other changes:
Packages with dependency updates only:
Packages listed below depend on other packages in this workspace that have had changes. Their versions have been incremented to bump the minimum dependency versions of the packages they depend upon in this project.
supabase - v1.11.6supabase_flutter - v1.10.19// Start the enrollment process for a new Multi-Factor Authentication (MFA) factor
final res = await client.mfa
.enroll(issuer: 'MyFriend', friendlyName: 'MyFriendName');
// Prepares a challenge used to verify that a user has access to a MFA factor.
final res = await client.mfa.challenge(factorId: factorId1);
// Verifies a code against a challenge.
final res = await client.mfa
.verify(factorId: factorId1, challengeId: challengeId, code: getTOTP());
Read more about MFA with Supabase hereadmin.listUsers()auth.admin.listUsers(page: 2, perPage: 10);
createSignedUrl(), getPublicUrl(), and .download() to transform images on the flyfinal signedUrl = await storage.from(newBucketName).createSignedUrl(uploadPath, 2000,
transform: TransformOptions(
width: 100,
height: 100,
));
final publicUrl = storage.from(bucket).getPublicUrl(path,
transform: TransformOptions(width: 200, height: 300));
final file = await storage.from(newBucketName).download(uploadPath,
transform: TransformOptions(
width: 200,
height: 200,
));
FEAT: add logLevel parameter to RealtimeClientOptions (#592).
// The following will initialize a supabase client that will retry failed uploads up to 25 times,
// which is about 10 minutes of retrying.
final supabase = SupabaseClient('Supabase_URL', 'Anon_key', storageRetryAttempts: 25);
FIX(realtime_client): correct channel error data (#566).
REFACTOR: bump minimum Dart SDK version to 2.17.0 (#510).
FIX: Format the files to adjust to Flutter 3.10.1 (#475).
onAuthStateChangesupabase.onAuthStateChange.listen((data) {
// handle auth state change here
}, onError: (error) {
// handle error here
});
.select()// data is `List<Map<String, dynamic>>`
final data = await supabase.from<List<Map<String, dynamic>>>('users').select();
// data is `Map<String, dynamic>`
final data = await supabase.from<Map<String, dynamic>>('users').select().eq('id', myId).single();
fix: update sample code on readme.md
BREAKING: set minimum SDK of Dart at 2.15.0
.stream() now takes a named parameter primaryKey instead of a positional argument.supabase.from('my_table').stream(primaryKey: ['id']);
.stream() has 5 additional filters: neq, gt, gte, lt, lte (#148)signUp() now uses named parameters // Before
final res = await supabase.auth.signUp('example@email.com', 'password');
// After
final res = await supabase.auth.signUp(email: 'example@email.com', password: 'password');
signIn() is split into different methods // Magic link signin
// Before
final res = await supabase.auth.signIn(email: 'example@email.com');
// After
final res = await supabase.auth.signInWithOtp(email: 'example@email.com');
// Email and password signin
// Before
final res = await supabase.auth.signIn(email: 'example@email.com', password: 'password');
// After
final res = await supabase.auth.signInWithPassword(email: 'example@email.com', password: 'password');
onAuthStateChange is now a stream // Before
supabase.auth.onAuthStateChange((event, session) {
// ...
});
// After
final subscription = supabase.auth.onAuthStateChange().listen((data) {
final AuthChangeEvent event = data.event;
final Session? session = data.session;
});
// Don't forget to cancel the subscription when you're done
subscription.cancel();
update() is renamed to updateUser() // Before
final res = await supabase.auth.update(
UserAttributes(
email: 'new@email.com',
data: {
'username': 'new_username',
},
),
);
// After
final res = await supabase.auth.updateUser(
UserAttributes(
email: 'new@email.com',
data: {
'username': 'new_username',
},
),
);
fix: update realtime to v1.0.0-dev.5
fix: recreate a PostgrestClient with proper auth headers when calling .rpc()
PostgrestClient with proper auth headers when calling .rpc() (#143)SupabaseClient (#144)BREAKING: update relatime to v1.0.0-dev.3
returning behaviorfix: .stream() method typing issue
.stream() method typing issuedeprecated: .execute() and .stream() can be used without it
.execute() and .stream() can be used without it.stream() no longer takes the realtime syntax. .eq() method should be used to apply eq filter on .stream().// before
supabase.from('my_table:title=eq.Supabase')
.stream(['id'])
.order('created_at')
.limit(10)
.execute()
.listen((payload) {
// do something with payload here
});
// now
supabase.from('my_table')
.stream(['id'])
.eq('title', 'Supabase')
.order('created_at')
.limit(10)
.listen((payload) {
// do something with payload here
});
fix: update storage to v1.0.0-dev.3
web_socket_channel to dev dependencies since it is used in testspostgrest testBREAKING: update postgrest to v1.0.0-dev.2
- feat: custom http client
BREAKING: update postgrest to v1.0.0-dev.1
fix: Calling postgrest endpoints within realtime callback throws exception
feat: update postgrest to v0.1.11
- fix: update gotrue to v0.2.2
fix: export type, SupabaseRealtimePayload
SupabaseRealtimePayloadfix: update postgrest to0.1.10+1
feat: update postgrest to v0.1.10
- feat: add functions support
Your coding agent can read these notes before it upgrades. Set up the MCP server →