---
title: "Keep your existing Supabase backend"
description: "Connect a new native client without moving accounts, tables, or stored files."
---
When the existing product already uses a Supabase project you own, the native Superapp client can connect to that backend. This preserves server data while the interface is rebuilt in Swift.

:::note
Do not experiment against production first. Use a separate Supabase project, branch, or safe test environment until authentication, queries, and access policies are verified.
:::

## Document the existing backend

-   Tables, views, relationships, functions, triggers, and storage buckets.
-   Authentication providers, redirect behavior, and account-deletion requirements.
-   Row-level security policies for reading, inserting, updating, and deleting.
-   Edge Functions, webhooks, scheduled jobs, and external service dependencies.
-   Environment separation, backups, data ownership, and migration history.

### 1. Connect the owned project

Use Superapp's secure Supabase connection flow. Never paste a service-role key into chat or include it in the iOS client.

### 2. Map app actions to permissions

For every screen, specify which signed-in user may read or change each record. Confirm that row-level security enforces those rules rather than relying on hidden buttons.

### 3. Preserve user identity

Keep the same authentication project when existing accounts must continue working. Configure the native sign-in flow and test old accounts, session refresh, sign-out, and account deletion.

### 4. Test compatibility

Verify queries, uploads, realtime updates, functions, and error states with safe data. Check that the old and new clients cannot corrupt each other's records.

### 5. Release gradually

Use TestFlight with existing users before broad release. Monitor authentication errors, policy failures, slow queries, and backend logs during the transition.

Continue with [Connect Supabase](/connect-supabase) for the standard connection flow and [Keep keys and secrets safe](/keys-and-secrets) before adding private integrations.
