- FIX(gotrue): Fix the issue where
verfiyOTP
emitssignIn
instead ofpasswordRecovery
auth event. (#774). (fc426134) - FEAT(gotrue,supabase_flutter): Add identity linking and unlinking methods. (#760). (6c0c922d)
- FEAT: add getUser() method. (62dcb8c6)
- Graduate package to a stable release. See pre-releases prior to this version for changelog entries.
- FIX: PKCE flow not emitting password recovery event (#744). (65859bd2)
- FIX: sign out on already used refresh token (#740). (72ffb9ee)
- FIX(gotrue): signing in with pkce flow fires two
signedIn
auth event (#734). (6dee1660) - FEAT(gotrue): add Figma to OAuth provider. (#743). (f5b72d47)
Note: This release has breaking changes.
- FIX: token refresh doesn't block on ClientException (#660). (a5ef8b71)
- FIX(gotrue,supabase): allow refreshSession after exception (#633). (8853155f)
- FEAT(supabase_flutter): use SharedPreferences for access token (#608). (9d72a59d)
- BREAKING REFACTOR: many auth breaking changes (#636). (7782a587)
- BREAKING REFACTOR: use Dart 3 (#598). (02c4071a)
- FIX(gotrue): remove import of dart:io from gotrue_client.dart (#659). (7280b490)
- FIX: compile with webdev (#653). (23242287)
- FIX(gotrue,supabase): allow refreshSession after exception (#633). (8853155f)
- FIX(gotrue): export everything in constants.dart and hide what we want to hide instead of using show (#617). (24df174f)
- FIX(supabase): get jwt on http call (#540). (e044d3ca)
- FIX(gotrue): remove OtpType deprecation and add assertion to check type for resend method (#567). (d4509de3)
- REFACTOR(gotrue): add email otptype (#534). (b5fe3d32)
- FIX(gotrue): add pkce to signup (#533). (5b3308a4)
- FEAT(gotrue): add scope to signOut (#530). (94a1cceb)
- FIX(gotrue): Add missing members on
User
json serialization (#512). (70cc835b) - FIX(gotrue): only remove session in otp verification if it's not email change or phone change (#514). (23bed82c)
- FIX: reformat Provider type to be ordered alphabetically (#471). (c3a1dbb3)
- FEAT: update dependency constraints to sdk < 4.0.0 (#474). (7894bc70)
- FEAT: Add kakao provider enum type (#470). (9a1bb334)
- chore: move the repo into supabase-flutter monorepo
- chore: export mfa types #140
- feat: add synchronous onAuthStateChange for internal use #139
- feat: add pkce flow support #135
- feat: expose
headers
as a getter #137 - fix: prevent
signedIn
event from firing for passwordRecovery event #136 - fix: pass missing catchaToken parameter on the request of
signInWithPassword
#138
- fix: prevent onAuthStateChange emitting null session when signed in #133
- fix: sign out users silently when refresh token is invalid #126
- fix: correct expiry margin #130
- fix: pass recoverSession errors to
onAuthStateChanged
#131
- fix: lower the version of
meta
to v1.7.0 to match the requirement for Flutter 2.8.0
- fix: properly reset refresh retry count #122
- fix: make
Factor.friendlyName
nullable #121
- fix: downgrade
meta
to support minimum Flutter version.
- feat: add support for
signInWithIdToken
.
- fix:
onAuthStateChanged
now emits the latestAuthState
#116
- fix: downgrade minimum
collection
version to support wider range of Flutter SDK versions
- feat: 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());
- feat: paginate
admin.listUsers()
auth.admin.listUsers(page: 2, perPage: 10);
- fix: allow nullable
role
andupdatedAt
inUser.fromJson()
#108
- feat: add
createUser()
,deleteUser()
, andlistUsers()
to admin methods. #106
- fix: use correct token for refreshing #104
- fix: redirect_to double URL encoding issue #102
- fix: avoid positive lookbehind in snake case extension (#100)
- fix: reset token retry count on session remove #98
- feat: fail to getSessionFromUrl throws error on onAuthStateChange #99
supabase.onAuthStateChange.listen((data) { // handle auth state change here }, onError: (error) { // handle error here });
- fix: verify otp exception on successful verification (#95)
- fix: query parameter format for
redirect_to
when making request (#96) - fix: reset token retry count on session remove (#98)
- fix: a bug where emailRedirect does not work properly (#92)
- chore: v1.0.0 release 🚀
- BREAKING: update the public API to match JS library (#90)
signUp()
now uses named parameters
// Before final res = await supabase.auth.signUp('[email protected]', 'password'); // After final res = await supabase.auth.signUp(email: '[email protected]', password: 'password');
signIn()
is split into different methods
// Magic link signin // Before final res = await supabase.auth.signIn(email: '[email protected]'); // After final res = await supabase.auth.signInWithOtp(email: '[email protected]'); // Email and password signin // Before final res = await supabase.auth.signIn(email: '[email protected]', password: 'password'); // After final res = await supabase.auth.signInWithPassword(email: '[email protected]', 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 toupdateUser()
// Before final res = await supabase.auth.update( UserAttributes( email: '[email protected]', data: { 'username': 'new_username', }, ), ); // After final res = await supabase.auth.updateUser( UserAttributes( email: '[email protected]', data: { 'username': 'new_username', }, ), );
- fix: encoding issue with some languages(#89)
- BREAKING:
data
property ofGotrueSessionResponse
is renamed tosession
(#87) - fix: bug where siningup with email verification throwed an exception(#87)
- BREAKING: rename
GotrueError
toGoTrueException
- chore: Update lints to v2.0.0
- feat: Add
.generateLink()
method(#83) - fix: Nullable type error if signInWithEmail is used twice(#84)
- feat: Able to update phone number with
auth.update
method(#81)
- fix: type casting of phone auth response(#79)
- fix:
OpenIDConnectCredentials
'snonce
parameter optional - fix: use completer in the retry logic to return value when token refresh is complete(#75)
- fix: Retry access token refresh when offline (#63)
- feat: Can add custom http client(#69)
- feat: Show statuscode in GotrueResponse(#69)
- BREAKING:
user
will be returned when signing up with auto confirm off (#63) - feat: Slack and Shopify as login providers(43)
- fix: Adds missing keys - phone, phone_confirmed_at, emailed_confirmed_at to User.toJson()(43)
- fix: fetch the user, if missing, on
/verify
(#29) - feat: add JWT headers when refreshing token (#53)
- feat: add
signInWithOpenIDConnect
(#61)
- feat: add
toString
method toGotrueError
class
- fix: trigger signedIn event on recoverSession
- feat: add
tokenRefreshed
auth event - feat: add slack, spotify and twitch Auth providers
- fix: update currentSession.user when GoTrueClient.update is called
- chore: export missing types
- feat:
setAuth()
method for setting the session with a provided jwt - fix: improve client tests
- chore: add
X-Client-Info
header
- feat: add support for phone auth
- fix: stop refreshToken timer on session removed
- fix: close http.Client on request done
- chore: update External OAuth Providers
- chore: add example code block
- fix: export gotrue_response classes
- BREAKING CHANGE: rename 'ProviderOptions' to 'AuthOptions'
- feat: support redirectTo option
- fix: handle jwt expiry less than 60 seconds
- fix: session refresh timer
- fix: wrong timestamp value
- fix: persistSessionString with wrong expiresAt
- fix: URL encode redirectTo
- fix: parsing provider callback url with fragment #12
- fix: parses provider token and adds oauth scopes and redirectTo
- fix: expiresAt conversion to int and getUser resolving JSON
- fix: signOut method
- fix: User nullable params
- fix: Session nullable params
- fix: lint errors
- chore: Migrate to Null Safety
- fix: Password and other attributes defaulting to email field.
- chore: export UserAttributes
- chore: export Provider class
- fix: updateUser bug
- fix: http success statusCode check
- fix: stateChangeEmitters uninitialized value
- fix: email verification required on sign up
- chore: export Session and User classes
- fix: session and user parsing from json
- chore: method to get persistSessionString
- Initial pre-release.