Post-Migration Supabase Gotchas: Pausing, Pooler Limits, Backups
Moving off Lovable Cloud onto your own Supabase project hands you three things Lovable quietly managed: a free-tier project that Supabase may pause after a 7-day stretch of low activity, connection limits that need the right pooler, and backups that are now entirely your responsibility. None of these appear on day one — they surprise you a week or a month later. Here is each one and its fix.
By Hire Lovable Xperts · Last verified: 2026-07-19
Why did my Supabase project pause about a week after migrating?
Because it is on the Free Plan. Supabase's production guidance states it may pause Free Plan projects that show low activity over a 7-day period to save server resources. A freshly migrated project with little real traffic hits that threshold easily. A paused project stops serving requests — your app looks down — but the data is safe and you restore it from the Supabase dashboard.
This catches teams who migrate a low-traffic internal tool or a not-yet-launched app: a week after moving, the app returns connection errors and it looks like the migration failed. It did not — Supabase simply paused an idle Free Plan project. Paid plans are not paused for inactivity.
Related: The full move-off-Lovable playbook
How do I stop my Supabase project from pausing?
Two reliable options: upgrade to a paid plan, which Supabase does not pause for inactivity, or keep genuine activity flowing to the database so it never crosses the low-activity threshold. Restoring a already-paused project is a one-click action from the dashboard, but restoring is reactive — for anything user-facing, removing the pause risk entirely is the safer play.
- If the project is already paused, open the Supabase dashboard, select the project, and click Restore — it comes back with all data intact.
- For a production or user-facing app, upgrade to a paid plan so inactivity pausing no longer applies.
- For a genuinely low-traffic app you want to keep free, ensure something touches the database at least every few days — a real health-check route beats an artificial ping.
- Set an uptime monitor against a route that reads from Supabase, so you learn the project paused within minutes instead of from a user complaint.
Who backs up my database now that I've left Lovable?
You do. Supabase automatically backs up Pro, Team, and Enterprise projects daily, and point-in-time recovery is a paid add-on — none of that applies on the Free Plan. Supabase explicitly recommends Free Plan projects export their own data regularly with the CLI db dump command and keep off-site copies. Leaving Lovable means backup responsibility transfers to you the moment you cut over.
There is a sharp edge here: deleting a Supabase project permanently removes all associated data, including any backups. On the Free Plan with no automated backup, an accidental delete or a bad migration has no safety net unless you made your own dump.
- Schedule a regular dump: supabase db dump --db-url "$DB_URL" -f backup-$(date +%F).sql
- Store each dump off-site (object storage or a separate machine) — not only on the laptop that ran it.
- If backups are business-critical, upgrade to a plan with automated daily backups and add point-in-time recovery.
- Test a restore at least once into a scratch project — an untested backup is a guess, not a backup.
What are Supabase's connection limits, and when do I need the pooler?
Supabase gives you three ways in, and picking the wrong one exhausts connections. A direct connection suits long-lived servers but is IPv6-only unless you add IPv4. The session pooler (port 5432) is IPv4-friendly for persistent backends. The transaction pooler (port 6543) is built for serverless and edge functions that open many short-lived connections. Lovable hid this choice; on your own project you make it.
Each pooler caps two separate numbers: client connections (how many clients attach to the pooler) and backend connections (how many the pooler opens to Postgres), both bounded by your compute tier. Serverless functions are the classic trap — dozens of concurrent invocations each grabbing a connection will exhaust a direct connection fast, which is exactly what the transaction pooler on 6543 exists to absorb.
| Method | Port | Best for | Watch out for |
|---|---|---|---|
| Direct connection | 5432 | Persistent VMs / long-lived containers | IPv6-only unless you add the IPv4 add-on |
| Session pooler (Supavisor) | 5432 | Persistent backends on IPv4-only networks | One backend connection held per client session |
| Transaction pooler (Supavisor) | 6543 | Serverless / edge functions, many transient connections | Does not support prepared statements |
Why do my serverless or edge functions run out of connections?
Because they open a fresh connection per invocation and, at any real concurrency, blow past a direct connection's ceiling. The fix is to route serverless and edge workloads through the transaction pooler on port 6543, which is purpose-built for many short-lived connections. The one constraint: transaction mode does not support prepared statements, so disable them in your client or ORM.
- Point serverless/edge database traffic at the transaction pooler connection string (port 6543) rather than the direct or session string.
- Disable prepared statements in your client — for many Postgres libraries that means a prepare: false or equivalent flag.
- Keep persistent backends (a long-running Node server) on the direct or session connection instead — they benefit from reused connections.
- If you still hit limits, check your compute tier's connection caps before assuming a code bug.
What's the full list of surprises after leaving Lovable Cloud?
The three big ones are pausing, backups, and connection pooling — but they share a root cause. Lovable Cloud managed the Supabase project for you, so its plan tier, backup posture, and connection routing were invisible. Owning the project means owning all three decisions. Use this table as a post-migration checklist to close each gap before it turns into an incident.
| Surprise | When it bites | Fix |
|---|---|---|
| Free project paused | ~7 days of low activity | Upgrade to a paid plan, or restore from dashboard + monitor uptime |
| No automated backups | First data loss or bad migration | Schedule regular db dump off-site, or upgrade for daily backups + PITR |
| Connection exhaustion | Traffic spike / serverless concurrency | Use the transaction pooler (6543) for serverless, direct/session for servers |
| Permanent delete | Accidental project deletion | Never rely on a single copy — keep off-site dumps |
Related: Move off Lovable without breaking it · Migrate your database to your own Supabase · Have an engineer harden the new setup
Frequently asked questions
Why did my Supabase project pause after I migrated off Lovable?
Will I lose data when a free Supabase project pauses?
How do I keep a Supabase project from pausing?
Does the Supabase free tier back up my database automatically?
Which Supabase connection method should my app use?
Why do my serverless functions exhaust database connections?
What happens if I accidentally delete my Supabase project?
Sources
Talk to a senior engineer — not a salesperson.
Book a free 30-minute audit call. We'll diagnose what's wrong and tell you exactly what it costs to fix.