You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
馃悰 [firebase_auth] Windows: reauthenticateWithCredential never completes on success聽#18632
On Windows, User.reauthenticateWithCredential() never completes when the credential is valid. The returned Future stays pending forever. An invalid credential rejects normally.
FirebaseAuthPlugin::ReauthenticateWithCredential in the Windows plugin only invokes the Pigeon result callback on the error branch:
User::Reauthenticate() in the C++ SDK returns Future<void>, but the Pigeon signature expects an InternalUserCredential, so the success branch was left empty. Nothing calls result and the Dart side waits forever. It is the only method in the file that returns nothing on success: ReauthenticateWithProvider just below calls result(credential), and Reload deals with the same Future<void> shape by reading firebaseAuth->current_user() once the future completes and building the reply from that.
Steps to reproduce
Run a Flutter Windows app with an email/password Firebase user signed in.
Call:
final cred =EmailAuthProvider.credential(email: user.email!, password: correctPassword);
await user.reauthenticateWithCredential(cred);
print('never printed');
Pass the correct password.
Expected
The future completes with a UserCredential, as it does on Android, iOS, macOS and web.
Actual
The future never completes, with no error and no exception. Anything awaiting it is stuck until the process exits.
A wrong password completes normally with a FirebaseAuthException, since the error branch calls result.
Impact
Any Windows flow that requires credential reauthentication first cannot complete. Ours is the account email-change flow, where reauthenticateWithCredential runs ahead of verifyBeforeUpdateEmail. The verification email is never requested and the user sees nothing happen. verifyBeforeUpdateEmail is implemented correctly, it just isn't reached.
Possible fix
Reload already shows the pattern for a Future<void> C++ call that has to return a richer Pigeon type: read the current user after completion and construct the reply from it.
Version
firebase_auth 6.5.7. The same code is in 6.6.1 (current latest) at the same place.
This is a valid bug. Windows ReauthenticateWithCredential only calls the Pigeon result callback on the error path, so a successful reauth never completes on the Dart side. That empty success branch with // TODO: wrong return type has been there since Windows auth shipped.
The C++ SDK has ReauthenticateAndRetrieveData, which returns AuthResult, so the fix should follow ReauthenticateWithProvider / LinkWithCredential rather than reconstructing from current_user() the way Reload does. We'll get a fix in.
Activity
russellwheatley commentedon Sep 1, 2026
Hey @JulianPscheid - Thanks for the detailed report 馃檹
This is a valid bug. Windows ReauthenticateWithCredential only calls the Pigeon result callback on the error path, so a successful reauth never completes on the Dart side. That empty success branch with // TODO: wrong return type has been there since Windows auth shipped.
The C++ SDK has ReauthenticateAndRetrieveData, which returns AuthResult, so the fix should follow ReauthenticateWithProvider / LinkWithCredential rather than reconstructing from current_user() the way Reload does. We'll get a fix in.