What Happens to Auth Users During Migration?
If you're planning a Supabase migration, there's one question that probably keeps you up at night more than any other: what happens to my users? Will they be able to log in? Will they lose their accounts? Will I need to send thousands of "please reset your password" emails?
These are the right questions to ask, because auth migration is genuinely the hardest part of moving a Supabase project. It's also the part where Stack2X provides the most value. Let's walk through exactly what happens to your auth users during a migration, in terms anyone can understand.
Why Auth Migration Is the Hardest Part
Your database stores information -- rows of data in tables. Conceptually, moving it is like copying files from one hard drive to another. It's a lot of data, but the process is well understood.
Auth users are different. They're not just rows in a table. Each user account is a bundle of interconnected information: an email address, a securely stored password, login provider settings, multi-factor authentication configurations, metadata your app uses, and tokens that keep them logged in. All of these pieces have to arrive at the destination together, in the right format, with the right relationships, or the account simply won't work.
The reason this trips up even experienced developers is that Supabase's auth system stores data across multiple internal tables with specific encryption formats and foreign key relationships. Miss one piece and the whole account breaks.
Password Hashes: What They Are and Why They Matter
When a user creates a password on your app, Supabase doesn't store the actual password. Instead, it runs the password through a one-way mathematical function called a hashing algorithm. The result -- called a hash -- is what gets stored.
Think of it like a fingerprint. You can verify that a fingerprint matches a person, but you can't reconstruct the person from the fingerprint. Similarly, when a user logs in, Supabase hashes the password they type in and compares it to the stored hash. If they match, the user is in. But nobody -- not even you as the project owner -- can reverse the hash back into the original password.
This is important for migration because you can't simply "re-create" users at the destination and set their passwords. You don't know their passwords. The only way users can keep logging in with their existing credentials is if the password hashes are transferred exactly as they are.
Stack2X transfers these hashes precisely. The hashing algorithm, the salt (a random value added to make each hash unique), and the hash itself all move together. The result: your users type the same password they always have, and it works.
What Exactly Gets Transferred
When Stack2X migrates your auth users, here's the complete picture of what moves:
User identities and emails. Every user account, with their unique ID, email address, phone number, and any other identifiers. The unique IDs are preserved, which matters because your database likely references users by these IDs throughout your app.
Password hashes. As described above, the encrypted password data transfers intact. Users keep their existing passwords.
User metadata. Supabase lets you attach custom data to user accounts -- display names, preferences, roles, onboarding status. All of this metadata comes along for the ride.
Auth provider configurations. If your users sign in through Google, GitHub, Apple, or other OAuth providers, those provider links are maintained. A user who signed up with Google can still log in with Google after migration.
Multi-factor authentication (MFA). If users have set up two-factor authentication with authenticator apps, those configurations are preserved. They won't need to re-enroll their devices. Their existing authenticator codes will continue to work.
Email confirmation status. Users who verified their email address don't get asked to verify again. Their confirmed status transfers with their account.
What Happens to Active Sessions
Here's the one area where honesty is important: active sessions (the "remember me" tokens that keep users logged in) are tied to the specific Supabase instance they were created on. When you migrate to a new instance, these session tokens won't carry over.
In practical terms, this means users who are currently logged in will need to log in again after you switch your app to the new destination. This isn't a Stack2X limitation -- it's how session tokens work in any authentication system. The tokens are cryptographically bound to the server that issued them.
The good news: this is a one-time event. Users log in with their same email and password (or OAuth provider), a new session is created on the new instance, and they continue as normal. Most users won't think twice about it, especially if you time your migration around a natural low-activity period.
If you want to be proactive, a simple in-app notification -- "We've upgraded our infrastructure. Please log in again." -- turns a potential confusion moment into a non-event.
Email Providers and Sending Configuration
Supabase handles transactional emails -- things like password reset links, email confirmations, and magic login links. If you've configured a custom email provider (like SendGrid, Resend, or Postmark) on your source project, you'll want to apply the same configuration to your destination.
Stack2X migrates the auth user data, but email provider API keys and SMTP settings are infrastructure configuration rather than user data. Your developer (or you, through the Supabase dashboard) will need to set up the same email provider on the new project. This is a one-time configuration step, not a per-user operation.
The templates for your emails -- the actual content of your password reset messages, confirmation emails, and so on -- should be reconfigured on the destination as well. If you've customized these in your source project, take screenshots or copy the text before migration so you can replicate them.
The Bottom Line: Your Users Won't Notice
The entire point of careful auth migration is invisibility. Your users should never know it happened. They should open your app, log in with the same credentials they've always used, and see all their data exactly where they left it.
Stack2X was built with this outcome as the primary goal. Every auth-related component -- identities, hashes, metadata, providers, MFA -- is handled as a coordinated transfer, not a piecemeal copy-paste. The result is that your users' experience stays seamless while your infrastructure moves to exactly where you need it.
If you're planning a migration and auth users are your biggest concern, that's completely understandable. It's the piece that matters most to your customers. Stack2X ensures it's also the piece you can worry about least.
Related Articles
Supabase Migration for Non-Technical Founders
A plain-English guide to migrating your Supabase project without writing a single line of code. Built for founders, not developers.
Manual vs Automated Supabase Migration Compared
Compare manual Supabase migration using scripts and CLI tools against automated migration with Stack2X. Time, risk, and complexity breakdown.