Short answer
Show a clear message on the reset form asking for a different password. On profile screens, only include password in updateUser when the user typed a new one. Set autocomplete to new-password so the browser doesn’t fill in the current password.
Rather not fix it yourself? App Fix Ticket starts with a fixed-price diagnosis, then a fixed price for the fix before any fix work.
Why Supabase rejects the new password, and the fix
01
The user typed the old password
“A user that is updating their password must use a different password than the one currently used.” Supabase docs, Auth error codes (same_password)
After a reset link, many users try the password they remember. Catch the code and ask for a new one.
const { error } = await supabase.auth.updateUser({ password: newPassword }); if (error?.code === 'same_password') { showMessage('Choose a password different from your current one.'); }02
The profile form always sends the password
A settings screen that passes the password on every save fails when only the name changed. Leave password out unless the field was edited.
03
The browser filled in the current password
Autofill can put the saved password into the new-password field. Mark the field with autocomplete set to new-password.
<input type="password" name="new-password" autocomplete="new-password" />04
The current password is checked in the wrong place
“If your app requires users to confirm their current password before setting a new one, you can pass current_password” Supabase docs, Password-based Auth (Verifying the current password)
Also check: to confirm the old password, pass current_password to updateUser (supabase-js v2.102.0 or newer) instead of signing in again on the client.
Checked against the vendor’s docs on : Supabase docs: Auth error codes; Supabase docs: Password-based Auth.
Rather hand it over?
Fixed scope, fixed price, paid upfront. The work happens in writing; no call needed.
- from $450App Fix TicketOne reproducible bug in an existing mobile or web app, diagnosed and fixed.See scope and start
- from $450AI-Built App RescueA 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
“Very responsive, attentive to fixing bugs, and completed the project as needed! Thank you!”
Related: Supabase weak password · Supabase email link invalid or expired · Supabase sms_send_failed · Supabase PGRST200