Skip to content

Firebase Auth errorFirebase: auth/requires-recent-login when deleting an account

Your app’s Delete account button, or a password or email change, fails with auth/requires-recent-login. Firebase only allows those actions soon after the user signed in. Here’s what Firebase’s docs say, in their own words, the fix, and why it matters for App Store review, or hand it over at a fixed price.

Short answer

Deleting an account, setting a primary email address and changing a password need a recent sign-in. If the user signed in too long ago, Firebase fails the action with auth/requires-recent-login. Ask the user to sign in again, pass the new credential to reauthenticateWithCredential, then retry the action. Account deletion can also run on your server with the Admin SDK, which deletes users by uid.

Why it fails, and the fix

  1. 01

    The user signed in too long ago

    “If you perform one of these actions, and the user signed in too long ago, the action fails with an error.” Firebase, Manage users: Re-authenticate a user

    Catch auth/requires-recent-login when you call deleteUser() or change a password or email, and treat it as a step in the flow, not a dead end.

  2. 02

    Re-authenticate, then retry

    “re-authenticate the user by getting new sign-in credentials from the user and passing the credentials to reauthenticateWithCredential.” Firebase, Manage users: Re-authenticate a user

    Show a screen asking the user to sign in again, call reauthenticateWithCredential with the new credential, and retry the action. For Google or Apple sign-in, we run the provider sign-in again to get that credential. Firebase’s example:

    import { getAuth, reauthenticateWithCredential } from "firebase/auth";
    
    const auth = getAuth();
    const user = auth.currentUser;
    
    // TODO(you): prompt the user to re-provide their sign-in credentials
    const credential = promptForCredentials();
    
    reauthenticateWithCredential(user, credential).then(() => {
      // User re-authenticated.
    }).catch((error) => {
      // An error ocurred
      // ...
    });
  3. 03

    Delete the account from your server

    “The Firebase Admin SDK allows deleting existing users by their uid:” Firebase, Manage users (Admin SDK)

    Firebase’s Admin SDK can also delete a user by uid from your backend, for example in a Cloud Function the app calls. That is a separate route from the client call, and we verify the caller is that signed-in user, then delete their app data along with the account.

  4. 04

    It blocks App Store account deletion

    “If your app supports account creation, you must also offer account deletion within the app.” Apple, Guideline 5.1.1(v)

    Apple requires apps with account creation to offer account deletion inside the app, so a Delete account button that fails can turn into a 5.1.1(v) rejection. Test deletion with an account that signed in a while ago, not only a fresh one.

Checked against the vendor’s docs on : Firebase docs: Manage users, Re-authenticate a user; Firebase docs: Manage users with the Admin SDK; Apple: App Review Guidelines, 5.1.1 (last updated October 16, 2026).

Rather hand it over?

Fixed scope, fixed price, paid upfront. The work happens in writing; no call needed.

Related: App Store Guideline 5.1.1 · Firebase auth/invalid-credential · Google Play Data safety form rejected · Firestore query requires an index

Questions

More on this error

Which actions need a recent sign-in?

Firebase names deleting an account, setting a primary email address and changing a password.

What do you need to fix it?

The app’s code and access to the Firebase project. We add the re-authentication step, test deletion with each sign-in method the app offers, and send the change as a pull request.

Can you fix it for me?

If one bug is the whole problem, the App Fix Ticket covers it: a written diagnosis first, then the fix. If the app has more going on, the Launch Check is a written check of the whole app. Each issue found is rated critical, high, medium or low, with where it is and how it was confirmed. No issues worth fixing, no charge. If the Launch Check finds nothing rated medium or higher, Simon refunds the full $450. You keep the report either way.

A different error?

Describe it and get a written quote

Send the error and what you were doing. You get a written scope, a fixed price and a timeline; we reply by email, usually within one business day.