# Firebase Auth: auth/cancelled-popup-request

> Firebase throws auth/cancelled-popup-request when a second sign-in popup opens before the first one finishes. Block double clicks and ignore the stale error.

Canonical: https://app369.com/fix/firebase-auth-cancelled-popup-request/
Last updated: 2026-11-09

auth/cancelled-popup-request is the Firebase Auth error a popup sign-in throws when another popup call starts before it finishes. The SDK shows one popup at a time and cancels the older request.

**Short answer**

Make sure only one signInWithPopup or linkWithPopup call runs at a time: disable the button while sign-in is pending, and don’t start sign-in from code that runs twice. When the error does arrive, ignore it; the newer popup is still running.

Rather not fix it yourself? [**App Fix Ticket**](https://app369.com/fixed-price/flutter-firebase-bug-fix/) starts with a fixed-price diagnosis, then a fixed price for the fix before any fix work.

## **Why the popup is cancelled, and the fix**

1. 01 ### **The user clicked twice**
  > “This operation has been cancelled due to another conflicting popup being opened.” [**Firebase JS SDK, Firebase JS SDK auth errors (cancelled-popup-request)**](https://github.com/firebase/firebase-js-sdk/blob/main/packages/auth/src/core/errors.ts) A second click opens a new popup and cancels the first call. Disable the button until the call settles.```
let signingIn = false;
async function signIn() {
  if (signingIn) return;
  signingIn = true;
  try {
    await signInWithPopup(auth, new GoogleAuthProvider());
  } catch (error) {
    if (error.code !== 'auth/cancelled-popup-request') throw error;
  } finally {
    signingIn = false;
  }
}
```
2. 02 ### **Sign-in starts from code that runs twice**
  > “Only one popup is ever shown at once.” [**Firebase JS SDK, Firebase JS SDK source: popup.ts**](https://github.com/firebase/firebase-js-sdk/blob/main/packages/auth/src/platform_browser/strategies/popup.ts) React StrictMode runs effects twice in development. Start popups from a click handler, not from an effect.
3. 03 ### **The app shows the error to the user** The cancelled call is not a failure the user needs to see. Treat this code like a no-op and wait for the newer popup’s result.
4. 04 ### **A different popup error is the real one** Also check: if no popup opens at all, the browser blocked it, which is auth/popup-blocked. If the user closed it, the code is auth/popup-closed-by-user.

Checked against the vendor’s docs on November 9, 2026: [Firebase JS SDK source: auth errors](https://github.com/firebase/firebase-js-sdk/blob/main/packages/auth/src/core/errors.ts); [Firebase JS SDK source: popup.ts](https://github.com/firebase/firebase-js-sdk/blob/main/packages/auth/src/platform_browser/strategies/popup.ts); [Firebase docs: Authenticate using Google with JavaScript](https://firebase.google.com/docs/auth/web/google-signin).

## **Rather hand it over?**

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

- [from $450**App Fix Ticket**One reproducible bug in an existing mobile or web app, diagnosed and fixed.**See scope and start**](https://app369.com/fixed-price/flutter-firebase-bug-fix/)
- [from $450**AI-Built App Rescue**A Lovable, Bolt or Cursor app checked end to end in 3 days, then its worst problems fixed at a fixed price.****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. This applies to the first 10 Launch Checks bought after October 30, 2026.**See scope and start**](https://app369.com/fixed-price/ai-app-rescue/)

[**All 127 Fiverr reviews**](https://app369.com/reviews/)

Related: [**Firebase auth/popup-blocked**](https://app369.com/fix/firebase-google-sign-in-popup-blocked/) · [**Firebase auth/user-mismatch**](https://app369.com/fix/firebase-auth-user-mismatch/) · [**Firebase auth/unauthorized-domain**](https://app369.com/fix/firebase-auth-unauthorized-domain/) · [**Firebase auth/network-request-failed**](https://app369.com/fix/firebase-auth-network-request-failed/)

Questions

## **More on this error**

<details>

<summary>**Does the second popup still work? **+</summary>

Yes. Only the older call is cancelled; the newest popup carries on and resolves normally.

</details>

<details>

<summary>**Does signInWithRedirect have this error? **+</summary>

No. This code comes from the popup flow, where the SDK allows one popup at a time.

</details>

<details>

<summary>**Can you fix it for me? **+</summary>

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. This applies to the first 10 Launch Checks bought after October 30, 2026.

</details>

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; Simon replies by email, usually within one business day.

[**Describe your problem **→](https://app369.com/contact/) [**All fixes**](https://app369.com/fix/)