supabase_flutter 2.8.0 supabase_flutter: ^2.8.0 copied to clipboard
Flutter integration for Supabase. This package makes it simple for developers to build secure and scalable products.
2.8.0 #
2.7.0 #
2.6.0 #
2.5.11 #
- Update a dependency to the latest release.
2.5.10 #
- Update a dependency to the latest release.
2.5.8 #
2.5.7 #
- Update a dependency to the latest release.
2.5.6 #
- Update a dependency to the latest release.
2.5.5 #
- Update a dependency to the latest release.
2.5.4 #
- Update a dependency to the latest release.
2.5.1 #
- Update a dependency to the latest release.
2.4.0 #
2.3.4 #
2.3.3 #
2.3.2 #
2.3.1 #
- Update a dependency to the latest release.
2.3.0 #
2.2.0 #
2.1.0 #
2.0.2 #
- Update a dependency to the latest release.
2.0.1 #
- Update a dependency to the latest release.
- FIX: fix(supabase_flutter): export signInWithOAuth() and generateRawNonce() (#763)
2.0.0 #
- Graduate package to a stable release. See pre-releases prior to this version for changelog entries. Upgrade guide can be found here.
2.0.0-dev.4 #
- FIX: PKCE flow not emitting password recovery event (#744). (65859bd2)
- FIX: update sign in with Apple instruction on readme (#746). (a4897d06)
- FIX: use SharedPreferences on web (#738). (d0cc2015)
- FIX(supabase_flutter): session migration from hive to sharedPreferences now works properly (#731). (c81cf07f)
2.0.0-dev.3 #
- Update a dependency to the latest release.
2.0.0-dev.2 #
2.0.0-dev.1 #
- Update a dependency to the latest release.
2.0.0-dev.0 #
Note: This release has breaking changes.
- FEAT(supabase_flutter): use SharedPreferences for access token (#608). (9d72a59d)
- DOCS: update readme to v2 (#647). (514cefb4)
- BREAKING REFACTOR: remove
signInWithApple
method and makegenerateRawNonce
public (#650). (2f9fe41f) - BREAKING REFACTOR: create package specific configs (#640). (53cd3e09)
- BREAKING REFACTOR: many auth breaking changes (#636). (7782a587)
- BREAKING REFACTOR: use Dart 3 (#598). (02c4071a)
1.10.25 #
- Update native Google sign-in instructions on README
1.10.24 #
- Update a dependency to the latest release.
1.10.23 #
- Update a dependency to the latest release.
1.10.22 #
- Update a dependency to the latest release.
1.10.21 #
- Update a dependency to the latest release.
1.10.20 #
- Update a dependency to the latest release.
1.10.19 #
- Update a dependency to the latest release.
1.10.18 #
- Update a dependency to the latest release.
1.10.17 #
- Update a dependency to the latest release.
1.10.16 #
- Update a dependency to the latest release.
1.10.15 #
- Update a dependency to the latest release.
1.10.14 #
1.10.12 #
- Update a dependency to the latest release.
1.10.11 #
- Update a dependency to the latest release.
1.10.10 #
- Update a dependency to the latest release.
1.10.9 #
1.10.7 #
1.10.6 #
- update README.md to include native auth instructions
1.10.5 #
- Update a dependency to the latest release.
1.10.4 #
- Update a dependency to the latest release.
1.10.3 #
- Update a dependency to the latest release.
1.10.2 #
- Update a dependency to the latest release.
1.10.0 #
1.9.1 #
- chore: update the repo to be a monorepo for all sub-libraries
[1.9.0] #
- feat: add pkce support #432
// Initialize Supabase with AuthFlowType.pkce to enable PKCE flow for deep link related auth await Supabase.initialize( url: supabaseUrl, anonKey: supabaseKey, authFlowType: AuthFlowType.pkce, );
[1.8.0] #
- feat: allow
signInWithOAuth
withplatformDefault
option to open in app webview for iOS #431
[1.7.0] #
[1.6.0] #
- feat: Added custom WebView for OAuth (LaunchMode.inAppWebView) #355
- fix: update supabase to v1.6.1
- add setAuth() function to storage
- fix: keep one storage and functions instance to persist auth
[1.5.0] #
[1.4.1] #
- fix: print stack trace on the console while in debug mode when auth error occurs
[1.4.0] #
- feat: add
realtimeClientOptions
toSupabase.initialize()
- feat: update supabase to v1.5.0
- add
realtimeClientOptions
to SupabaseClient - add missing
options
parameter to rpc - use single isolate for functions and postgrest and add
isolate
parameter toSupabaseClient
- update postgrest to v1.2.2
- improve comment docs
- deprecate
returning
parameter of.delete()
- update storage to v1.2.2
- properly parse content type
- correct path parameter documentation
- update gotrue to v1.4.1
onAuthStateChanged
now emits the latestAuthState
- downgrade minimum
collection
version to support wider range of Flutter SDK versions
- add
[1.3.0] #
- feat: add
authScreenLaunchMode
toauth.signInWithOAuth()
to change OAuth sign-in screen behavior #323await supabase.auth.signInWithOAuth( Provider.goodle, authScreenLaunchMode: LaunchMode.inAppWebView, );
- fix: only start deep link observer on supported platforms #333
- feat: update supabase to v1.3.0
- fix: handle update and delete on record that wasn't found properly using stream #167
- feat: update gotrue to v1.4.0
- add support for MFA
Read more about MFA with Supabase here// 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());
- paginate
admin.listUsers()
auth.admin.listUsers(page: 2, perPage: 10);
- add support for MFA
- feat: update postgrest to v1.2.1
- fix: update realtime to v1.0.2
- export realtime presence
- feat: update storage to v1.2.0
- add transform option to
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, ));
- add transform option to
[1.2.1] #
[1.2.0] #
- feat: update supabase to v1.2.0
- add createUser(), deleteUser(), and listUsers() to admin methods.
- feat: add storage retry option to enable storage to auto retry failed upload attempts #280
// The following will initialize Supabase that will retry failed uploads up to 25 times, // which is about 10 minutes of retrying. await Supabase.initialize( supabaseUrl, supabaseAnonKey, storageRetryAttempts: 25, );
[1.1.0] #
- fix: await for the initial deeplink to be handled during auth initialize #262
- feat: update supabase to v1.1.0
- fix: stream filter other than eq is not properly applied.
- fail to getSessionFromUrl throws error on
onAuthStateChange
supabase.onAuthStateChange.listen((data) { // handle auth state change here }, onError: (error) { // handle error here });
- feat: add generic types to
.select()
// data is `List<Map<String, dynamic>>` final data = await supabase.from('users').select<List<Map<String, dynamic>>>(); // data is `Map<String, dynamic>` final data = await supabase.from('users').select<Map<String, dynamic>>().eq('id', myId).single();
[1.0.1] #
- fix: update sample code on readme.md
[1.0.0] #
- chore: v1.0.0 release 🚀
- BREAKING: update supabase to v1.0.0
- BREAKING:
.stream()
now takes a named parameterprimaryKey
instead of a positional argument.supabase.from('my_table').stream(primaryKey: ['id']);
- feat:
.stream()
has 5 additional filters:neq
,gt
,gte
,lt
,lte
(148 auth.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');
auth.signIn()
is split into different methods
// Magic link sign-in // 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 sign-in // 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');
auth.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();
auth.update()
is renamed toauth.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', }, ), );
SupabaseAuth.instance.onAuthChange()
is now removed andsupabase.auth.onAuthStateChange()
should be used instead
- BREAKING:
- BREAKING: set minimum required Flutter version to 2.8.0
[1.0.0-dev.9] #
- fix: update supabase to v1.0.0-dev.9
- fix: recreate a
PostgrestClient
with proper auth headers when calling.rpc()
(#143) - fix: allow custom headers to be set for
SupabaseClient
(#144) - fix: stream error will emit the entire exception and the stack trace (#145)
- fix: update realtime to v1.0.0-dev.5
- fix: bug where it throws exception when listening to postgres changes on old version of realtime server
- fix: sends null for access_token when not signed in (#53)
- fix: recreate a
[1.0.0-dev.8] #
- BREAKING: update supabase to v1.0.0-dev.7
- update payload shape on old version of realtime server to match the new version in realtime v1.0.0-dev.3
- fix: encoding issue with some languages in gotrue v1.0.0-dev.4
- fix: update insert documentation to reflect new
returning
behavior in postgrest v1.0.0-dev.4
[1.0.0-dev.7] #
- chore: update supabase to v1.0.0-dev.6
- fix:
.stream()
typing issue #138
- fix:
[1.0.0-dev.6] #
- BREAKING: update supabase package v1.0.0-dev.5
- deprecated:
.stream()
no longer needs.execute()
- BREAKING:
eq
filter on.stream()
is a separate method now
// before Supabase.instance.client.from('my_table:title=eq.Supabase') .stream(['id']) .order('created_at') .limit(10) .execute() .listen((payload) { // do something with payload here }); // now Supabase.instance.client.from('my_table') .stream(['id']) .eq('title', 'Supabase') .order('created_at') .limit(10) .listen((payload) { // do something with payload here });
- BREAKING: listening to database changes has a new API
- feat: added support for broadcast and presence
final channel = Supabase.instance.client.channel('can_be_any_string'); // listen to insert events on public.messages table channel.on( RealtimeListenTypes.postgresChanges, ChannelFilter( event: 'INSERT', schema: 'public', table: 'messages', ), (payload, [ref]) { print('database insert payload: $payload'); }); // listen to `location` broadcast events channel.on( RealtimeListenTypes.broadcast, ChannelFilter( event: 'location', ), (payload, [ref]) { print(payload); }); // send `location` broadcast events channel.send( type: RealtimeListenTypes.broadcast, event: 'location', payload: {'lat': 1.3521, 'lng': 103.8198}, ); // listen to presence states channel.on(RealtimeListenTypes.presence, ChannelFilter(event: 'sync'), (payload, [ref]) { print(payload); print(channel.presenceState()); }); // subscribe to the above changes channel.subscribe((status) async { if (status == 'SUBSCRIBED') { // if subscribed successfully, send presence event final status = await channel.track({'user_id': myUserId}); } });
- deprecated:
[1.0.0-dev.5] #
- chore: add example app in example directory
- fix:
WidgetsBinding
warning
[1.0.0-dev.4] #
- BREAKING: update supabase package v1.0.0-dev.4
- feat: accept custom headers
- feat: add add X-Client-Info header
[1.0.0-dev.3] #
- BREAKING: update supabase package v1.0.0-dev.3
[1.0.0-dev.2] #
- feat: custom http client
[1.0.0-dev.1] #
- feat: add Mac OS and Windows support for deep links
- BREAKING: Remove SupabaseAuthRequiredState as well as overriding methods in SupabaseAuthState
// Before
await Supabase.initialize(
url: 'SUPABASE_URL',
anonKey: 'SUPABASE_ANON_KEY',
);
...
// Class extending `SupabaseAuthState` or `AuthRequiredState` was necessary
// to persist auth state
class AuthState<T extends StatefulWidget> extends SupabaseAuthState<T> {
...
}
// After
// Initializing Supabase is all you need to do to persist auth state
// Deep links will also be automatically handled when you initialize Supabase.
await Supabase.initialize(
url: 'SUPABASE_URL',
anonKey: 'SUPABASE_ANON_KEY',
);
...
// You can get the initial session of the user with `SupabaseAuth.instance.initialSession`
try {
final initialSession = await SupabaseAuth.instance.initialSession;
} catch(error) {
// Handle errors in session initial recovery here
}
// You should now use `onAuthStateChanged` as the
Supabase.instance.client.auth.onAuthStateChange((event, session) {
// handle sign-in/signups here
});
- fix: OAuth should open in an external browser
- BREAKING: update supabase package v1.0.0-dev.1
[0.3.2] #
- chore: add basic example codes on readme.md
[0.3.1+3] #
- fix: OAuth authentication page should open in an external browser
[0.3.1+1] #
- fix: lint error on Flutter 2.X
- chore: add multiple Flutter version to the CI pipeline
[0.2.12] #
- chore: update supabase-dart package v0.2.14
[0.2.11] #
- chore: update supabase-dart package v0.2.13
[0.2.10] #
- chore: update supabase-dart package v0.2.12
- chore: update documents
[0.2.9] #
- feat: signing out now triggers
onUnauthenticated()
- feat: export supabase package so that underlying symbols can be imported
- fix: update code samples to reflect breaking change from v0.0.3
- fix: typos on code samples on readme.md
[0.2.8] #
- chore: update supabase to v0.2.7
[0.2.7] #
- chore: update supabase to v0.2.6
[0.2.6] #
- fix: export local_storage
[0.2.5] #
- chore: update supabase to v0.2.5
[0.2.4] #
- chore: update supabase to v0.2.4
[0.2.3] #
- chore: update supabase to v0.2.3
[0.2.2] #
- chore: update supabase to v0.2.2
[0.2.1] #
- chore: update supabase to v0.2.1
[0.2.0] #
- chore: update supabase to v0.2.0
[0.1.0] #
- BREAKING CHANGE:
Supabase.initialize
is nowFuture<void>
- chore: update supabase to v0.1.0
- feat: using hive to persist session by default
[0.0.8] #
- chore: update supabase to v0.0.8
[0.0.7] #
- chore: update supabase to v0.0.7
[0.0.6] #
- chore: update supabase to v0.0.5
[0.0.5] #
- chore: update supabase to v0.0.4
[0.0.4] #
- chore: update supabase to v0.0.3
[0.0.3] #
- BREAKING CHANGE: rework Supabase singleton with
Supabase.initialize
andSupabase.instance
- chore: update docs
[0.0.2] #
- feat: support custom localStorage with fallback to SharedPreferences as default
[0.0.1] #
- chore: update supabase, url_launcher packages
[0.0.1-dev.5] #
- fix: launch url in the current tab for flutter web
- fix: SupabaseAuthRequiredState to trigger onAuthenticated when user session available
[0.0.1-dev.4] #
- feat: support flutter web
[0.0.1-dev.3] #
- chore: update supabase to v0.0.1
[0.0.1-dev.2] #
- feat: support nested authentication flow with startAuthObserver() and stopAuthObserver()
- feat: support SupabaseAuthRequiredState
- feat: support enable/disable debug log
- refactor: tidy up
[0.0.1-dev.1] #
- Initial pre-release.