How to move your Lovable Cloud app to your own Supabase
Lovable Cloud keeps your app's database, users and files inside Lovable. Moving them to your own Supabase project means you own the data, pay Supabase directly, and can host the app anywhere. Lovable has an official export for the database. This guide follows it, and covers the parts the export leaves behind.
Don't remove Lovable Cloud until the end. Removing it permanently deletes your database, user accounts and stored files. Keep it running until everything works in the new project.
Keep the export file private. It contains your users' personal data and their password hashes. Don't upload it anywhere or send it to anyone, and delete it once the move is done.
What moves, and what you redo
Comes with the export: your tables and data, the rules that protect them (Row Level Security), and your users' accounts with their password hashes, so people keep their passwords.
Not in the export, so you redo it:
- Stored files (images, uploads). You download and re-upload them.
- Secrets, such as a Stripe or Resend key. Lovable doesn't show their values again, so you copy new keys from each service.
- Sign-in settings, such as Google sign-in and the allowed redirect links.
- Backend functions. Their code is already in your GitHub, so you deploy it to the new project.
Everyone who is signed in will need to sign in once more after the switch. Their passwords still work.
What you need: your Lovable project, a free Supabase account, a free GitHub account, and a computer. One step (restoring the database) runs a command in a terminal. If that's new to you, an AI coding tool like Claude Code or Cursor can run it with you, or email us and we'll walk you through it.
Newer Lovable apps use TanStack Start (you'll see @tanstack/react-start in the app's package.json). Utplava has been tested with Lovable's React and Vite apps. If yours is a TanStack Start app, email us before you switch and we'll check it with you first.
Steps
-
Write down what your app uses
Before anything else, note how people sign in (email, Google and so on), the names of the secrets your app uses, the storage buckets that hold files, and any outside services such as Stripe or Resend. This list is how you'll know nothing was missed.
-
Put your code on GitHub
If you haven't already, connect Lovable to GitHub (our Lovable guide shows how). Your code, including the
supabasefolder with your database changes and backend functions, is then in a repository you own. -
Export the database
In Lovable, go to More, then Database, select Manage, then Settings. Under Export project data, click Export data, then Export on the Database card and Start export. Lovable emails you when it's ready, and you download it from More, then Storage. You can export once every 24 hours, and the file can be up to 5 GB.
-
Download your stored files
Files aren't in the export. Download them from More, then Storage, keeping the same folders. If there are many, ask Lovable's chat to add a temporary backend function that lists every file in a bucket and returns them as one ZIP with the folder paths kept. Remove that function when you're done.
-
Create your Supabase project
On supabase.com, create a new project in a region close to your users and save the database password somewhere safe. From Project Settings, note the Project URL, the publishable key and the project ID. You'll need them later.
-
Restore the database into Supabase
The export is a compressed PostgreSQL file that you load with
pg_restore, version 16 or newer. In your Supabase project, click Connect and copy the Session pooler connection string, then run:pg_restore --no-owner --no-privileges -d "your-connection-string" your-export-fileSome warnings about things that already exist are normal, because every Supabase project starts with its own sign-in and storage setup. Afterwards, check that Table Editor shows your tables with data and Authentication, then Users shows your users.
-
Upload your files
In Supabase, open Storage, create buckets with exactly the same names, and upload your files into the same folders. On the free plan, a single file can be at most 50 MB.
-
Set up sign-in again
Under Authentication, turn on the same sign-in methods you had. In URL Configuration, set the Site URL to your app's live link and add it to Redirect URLs, or sign-in will send people back to the wrong place. For Google sign-in, add the new project's callback link in your Google settings too.
-
Add your secrets and backend functions
Copy fresh keys from each service on your list and add them in Supabase under Edge Functions, then Secrets. Then deploy your backend functions from your code with
npx supabase functions deploy, or ask your AI tool to do it. -
Point your app at the new project and put it online
In Utplava, pick your app's repository. On the app's page, set
VITE_SUPABASE_URL,VITE_SUPABASE_PUBLISHABLE_KEYandVITE_SUPABASE_PROJECT_IDto your new project's values. Utplava explains each one and warns you if a key looks wrong. Settings here take priority over the old values in your code. Then deploy. -
Test everything before you remove anything
On the new link, sign in with an existing account and its old password, try a password reset, open a page with stored files, upload a new file, and test each outside service, like a test payment or email. Go back to your list from step 1 and tick everything off.
-
Remove Lovable Cloud, then connect your own Supabase in Lovable
Only when everything passes: remove Lovable Cloud under More, then Database, Manage, Settings. That deletes the old database for good, which is why it comes last. Then connect your own Supabase project in Lovable so you can keep building there. Lovable may update your app's code when you connect it, so open your live link once more afterwards and check it still works.
If something doesn't look right
Users can't sign in on the new link
Check step 8: the live link must be in Supabase's Redirect URLs, and each sign-in method must be turned on again. People who were signed in before the switch need to sign in once more.
Pictures or files are missing
The bucket names or folders don't match the old ones exactly. Compare them with Lovable's Storage view and re-upload into the right place.
The app still shows old data
It's still talking to Lovable Cloud. Check the three VITE_SUPABASE_ settings in Utplava (step 10) and deploy again. These values are built into the app, so a change only shows after a new deploy. If it still shows old data, the old address may be written straight into your code (often in src/integrations/supabase/client.ts). Ask Lovable to read it from the settings instead.
Still stuck?
Email contact@dealup.co.in with your app's name and the step you're on. A real person will help.