DEV Community

Sora2 Hub Team
Sora2 Hub Team

Posted on

Déployer une app Next.js + Supabase sur Vercel : la checklist en 8 points

Votre app marche en local, npm run dev ne renvoie aucune erreur… et la version en production affiche une page blanche. C'est presque toujours l'un des huit points ci-dessous. Gardez cette liste sous la main avant chaque mise en ligne.

1. Les variables d'environnement sont dans le bon environnement

Sur Vercel, une variable peut être définie pour Production, Preview ou Development. Vérifiez que NEXT_PUBLIC_SUPABASE_URL et NEXT_PUBLIC_SUPABASE_ANON_KEY existent bien pour Production, puis relancez un déploiement : une variable ajoutée après le build n'est pas prise en compte.

2. La clé service_role ne sort jamais du serveur

Elle contourne toutes les règles RLS. Ne lui donnez jamais le préfixe NEXT_PUBLIC_, utilisez-la uniquement dans des Route Handlers ou des Server Actions, et jamais dans un composant client.

3. RLS est activé sur chaque table exposée

Une table sans Row Level Security est lisible par n'importe qui possédant la clé anon, c'est-à-dire tout visiteur. Dans le tableau de bord Supabase, activez RLS et écrivez au moins une politique select basée sur auth.uid().

4. Les URL de redirection d'authentification incluent le domaine de production

Dans Authentication > URL Configuration, ajoutez https://votre-domaine.com/** et, si vous utilisez les previews, https://*-votre-equipe.vercel.app/**. Sinon, les liens magiques et l'OAuth renvoient vers localhost.

5. Les cookies de session sont gérés côté serveur

Avec l'App Router, utilisez @supabase/ssr et un middleware qui rafraîchit la session. Sans cela, l'utilisateur semble connecté sur le client mais anonyme dans les Server Components.

6. Les migrations sont appliquées sur la base de production

Les tables créées à la main en local n'existent pas forcément en ligne. Versionnez le schéma avec supabase migration new et appliquez-le avec supabase db push avant de déployer le code qui en dépend.

7. Les images distantes sont autorisées

Si vous affichez des fichiers du Storage Supabase avec next/image, déclarez l'hôte *.supabase.co dans images.remotePatterns de next.config.js.

8. Les fonctions ne dépassent pas le délai

Les traitements longs (génération, export, e-mails en masse) dépassent vite la durée maximale d'une fonction serverless. Déplacez-les dans une file ou une Edge Function Supabase et renvoyez immédiatement une réponse.

Pour aller plus vite

Si vous partez de zéro, un générateur d'applications peut créer cette base pour vous. Massvai est un générateur d'applications IA qui produit des apps full-stack Next.js, Supabase et Vercel dont vous gardez le code ; la checklist ci-dessus reste valable pour relire ce qu'il génère.

Transparence : je fais partie de l'équipe Massvai.

Top comments (0)