Retour au blog
GUIDE TECHNIQUE · 14 MIN DE LECTURE

Migrer un projet Supabase vers Aurabase en 1h

Affane Daylami · Fondateur· 09 avril 2026

Si vous êtes sur Supabase et que vous lorgnez vers Aurabase, la bonne nouvelle c'est que le plus dur, c'est de choisir. La migration en elle-même prend entre une heure et un weekend selon la taille du projet — et 95% de votre code ne bouge pas.

Chez Aurabase, on s'est donné une contrainte forte dès le design : la surface SDK et les conventions RLS devaient être drop-in compatible avec Supabase. Même createClient(), même .from().select().eq(), mêmes policies SQL Postgres. L'idée : si vous voulez partir, partez — on rend ça trivial. Voici le playbook complet.

#
Audit préalable

Ce qui bouge, ce qui reste

Avant de commencer, listez ce qui va changer et ce qui va rester. Spoiler : la majorité reste.

Schéma PostgresIDENTIQUEpg_dump → aura db restore. Extensions, triggers, functions, indexes — tout passe.
Policies RLSIDENTIQUEMême syntaxe. auth.uid(), auth.role(), auth.jwt() fonctionnent tels quels.
SDK JavaScript95% IDENTIQUERemplacez @supabase/supabase-js par @aurabase/client. Même API chainable.
Auth flowsIDENTIQUEsignUp, signInWithPassword, signInWithOAuth, mfa — mêmes noms, mêmes signatures.
Storage APIIDENTIQUEaura.storage.from(bucket).upload(...) · compat S3 · policies RLS transférables.
RealtimeIDENTIQUEchannel().on("postgres_changes", ...) inchangé. Presence + broadcast pareils.
Edge FunctionsADAPTATION MINEUREDeno → WASM. Deno.serve() devient edge.handler(). 15 lignes à toucher max.
DashboardDIFFÉRENTStudio Aurabase · on vous aide à retrouver vos repères.
#
Étape 1

Créer le projet Aurabase cible

Créez un projet avec la même région que votre Supabase actuel. Même cluster régional = latence de migration négligeable.

terminal
BASH
# Compte Aurabase + CLI
npm i -g @aurabase/cli
aura login
# Créer le projet (même région que Supabase)
aura project create my-app --region eu-west-3 --plan pro
# Récupérer les clés
aura project keys my-app --format env >> .env.aurabase
#
Étape 2

Dump Supabase, restore Aurabase

Un pg_dump standard. Aurabase accepte du SQL Postgres vanilla, pas besoin de transformation intermédiaire.

terminal
BASH
# Récupérer la connection string Supabase depuis leur dashboard
export SUPABASE_DB_URL="postgresql://postgres:...@db.xxx.supabase.co:5432/postgres"
# Dump du schéma public (sans les schémas système Supabase)
pg_dump "$SUPABASE_DB_URL" \
--schema=public \
--no-owner --no-acl \
--format=custom \
-f supabase-dump.pgdump
# Restore dans Aurabase (parallel 8 workers pour les gros dumps)
aura db restore supabase-dump.pgdump --env prod --parallel 8 --confirm
# Regénérer les types TypeScript
aura types gen > src/aurabase.types.ts
Astuce
Pour un projet de 50 GB avec 200 tables, comptez ~25 minutes pour l'étape dump + restore. On'a mesuré en interne avec les bases de démo Supabase.
#
Étape 3

Migrer les utilisateurs et leurs hashes

C'est ici que la plupart des migrations coincent ailleurs : il faut forcer tous les users à reset leur mot de passe. Chez nous, non — Supabase et Aurabase utilisent tous deux Argon2id avec les mêmes paramètres par défaut. Les hashes passent tels quels.

migrate-users.sh
BASH
# Export Supabase (nécessite leur service_role_key)
aura migrate export-supabase \
--url $SUPABASE_URL \
--service-key $SUPABASE_SERVICE_ROLE \
--output users.jsonl
# → 42 318 users exported · 1 847 MFA factors · 12 OAuth accounts
# Import dans Aurabase · hashes préservés, MFA conservés
aura auth import users.jsonl --env prod
# → 42 318 imported in 24s · zéro collision email
Info
Les sessions actives côté Supabase ne sont pas portées (impossible techniquement — chaque plateforme signe ses JWT avec sa propre clé). Les users se reconnecteront normalement à leur prochaine visite. Leur mot de passe fonctionne immédiatement.
#
Étape 4

Adapter le code client

Une recherche/remplacement suffit pour 95% des cas.

lib/supabase.ts → lib/aurabase.ts
TYPESCRIPT
// AVANT (Supabase)
import { createClient } from '@supabase/supabase-js'
export const supabase = createClient(url, key)
// APRÈS (Aurabase)
import { createClient } from '@aurabase/client'
export const aura = createClient(url, key)
// Le reste du code ne change pas :
await aura.from('posts').select('*').eq('author_id', userId)
#
Étape 5

Adapter les Edge Functions

Supabase utilise Deno, Aurabase compile en WASM. L'adaptation est mécanique.

functions/hello/index.ts
TYPESCRIPT
// AVANT (Supabase Deno)
Deno.serve(async (req) => {
const { name } = await req.json()
return new Response(JSON.stringify({ hello: name }))
})
// APRÈS (Aurabase WASM)
import { edge } from '@aurabase/edge'
export default edge.handler(async (req) => {
const { name } = await req.json()
return Response.json({ hello: name })
})
#
Cutover

Bascule DNS et mise en production

Deux stratégies possibles. On recommande la première pour 99% des cas.

  1. Cutover direct — changez AURA_URL et AURA_ANON_KEY dans vos env vars, redéployez. Les users se reconnectent, tout fonctionne. C'est ce qu'ont fait 90% de nos migrations.
  2. Dual-write temporaire — écrivez dans Supabase + Aurabase simultanément pendant 48h, vérifiez la cohérence via aura migrate diff, puis coupez Supabase. À privilégier pour les apps critiques.
#
Aide

On est là si ça coince

Pour les projets > 100 GB ou avec des contraintes de compliance strictes (HIPAA, PCI), notre équipe fait la migration avec vous. C'est gratuit sur le plan Enterprise, 800€ en one-shot ailleurs.

Demander un accompagnement →
PRÊT À MIGRER ?

Essayez gratuitement pendant que vous lisez.

Créez un projet Aurabase en 60 secondes, importez un dump de test. Vous verrez — c'est trivial.

Créer un projet Guide technique complet
Aucune carte bancaire requise · 500 MB gratuits · 50 000 MAU