# Supabase Auth: single_identity_not_deletable

> Supabase returns single_identity_not_deletable when unlinkIdentity would remove a user’s only identity. Link another sign-in method first, then unlink.

Canonical: https://app369.com/fix/supabase-single-identity-not-deletable/
Last updated: 2026-11-10

single_identity_not_deletable is the Supabase Auth error for unlinking the only identity a user has. Every user needs at least one identity, such as email or Google, so the last one can’t be removed.

**Short answer**

Call getUserIdentities() and only offer “Disconnect” when the user has two or more identities. To switch a user from one provider to another, link the new identity with linkIdentity() first, then unlink the old one.

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 identity can’t be unlinked, and the fix**

1. 01 ### **It is the user’s only identity**
  > “Every user must have at least one identity attached to it, so deleting (unlinking) an identity is not allowed if it's the only one for the user.” [**Supabase docs, Auth error codes (single_identity_not_deletable)**](https://supabase.com/docs/guides/auth/debugging/error-codes) A user who signed up with Google and nothing else has one identity. Unlinking it would leave no way to sign in, so Supabase refuses.
2. 02 ### **The settings screen shows Disconnect for every provider**
  > “The user needs to be signed in and have at least 2 linked identities in order to unlink an existing identity.” [**Supabase docs, Identity Linking**](https://supabase.com/docs/guides/auth/auth-identity-linking) Hide or disable the Disconnect button when getUserIdentities() returns a single identity, and explain that another sign-in method has to be added first.```
const { data } = await supabase.auth.getUserIdentities();
const canUnlink = (data?.identities ?? []).length > 1;
```
3. 03 ### **The new provider was never linked** Moving a user from email to Google means linking Google first with linkIdentity(), which needs manual linking turned on, and only then unlinking the email identity.
4. 04 ### **Unlinking would clash with another account**
  > “Unlinking this identity causes the user's account to change to an email address which is already used by another user account.” [**Supabase docs, Auth error codes (email_conflict_identity_not_deletable)**](https://supabase.com/docs/guides/auth/debugging/error-codes) Also check: if unlinking would change the account’s email to one another user already has, the error is email_conflict_identity_not_deletable instead.

Checked against the vendor’s docs on November 10, 2026: [Supabase docs: Auth error codes](https://supabase.com/docs/guides/auth/debugging/error-codes); [Supabase docs: Identity Linking](https://supabase.com/docs/guides/auth/auth-identity-linking).

## **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: [**Supabase identity_already_exists**](https://app369.com/fix/supabase-identity-already-exists/) · [**Supabase User already registered**](https://app369.com/fix/supabase-user-already-registered/) · [**Supabase Signups not allowed**](https://app369.com/fix/supabase-signups-not-allowed/) · [**Supabase PGRST116**](https://app369.com/fix/supabase-pgrst116-single-row/)

Questions

## **More on this error**

<details>

<summary>**Can I delete the user instead? **+</summary>

Yes, deleting the whole user is a different operation from unlinking. Unlinking only removes one sign-in method and needs at least one to remain.

</details>

<details>

<summary>**Does the user have to be signed in to unlink? **+</summary>

Yes. Supabase says the user needs to be signed in and have at least 2 linked identities.

</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/)