Las credenciales de Supabase viven en un fichero que se queda en tu ordenador y no se sube al publicar, precisamente porque contiene credenciales. El servidor donde corre tu app no lo tiene, así que hay que dárselas a mano en el panel de tu hosting. Si nunca lo hiciste, este es el resultado.
Cuando sí lo hiciste y sigue fallando, casi siempre es una de tres. La primera: el nombre no lleva el prefijo que tu proyecto necesita, VITE_ o NEXT_PUBLIC_ según con qué esté hecho, y sin ese prefijo la variable existe en el servidor pero nunca llega al navegador. La segunda: la diste de alta solo en uno de los entornos, y falla en las previsualizaciones aunque funcione en producción, o al revés. La tercera, la más frustrante: la añadiste bien pero no volviste a desplegar, y las variables se leen al construir la app, no al visitarla.
Un caso aparte: si publicas desde el propio Lovable, Bolt o Replit en vez de desde Vercel, las variables se configuran en el panel de esa herramienta. Tenerlas en Vercel no sirve de nada si quien construye tu app es otro.