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)