Revisada el 2026-10-10 · vigente hasta 2027-01-08

Las consultas periódicas pueden reducir las pausas por inactividad de un proyecto gratuito de Supabase, pero no garantizan que siga activo.1

Supabase evalúa la actividad de la última semana y puede pausar los proyectos gratuitos con uso insuficiente.1 Para evitar la pausa por inactividad con respaldo del proveedor, la opción oficial es un plan de pago.1 Esta receta documenta un patrón no oficial: un script y un programador de tareas (en macOS, un LaunchAgent) que lanzan esa lectura dos veces al día.

Por qué se pausa

  • Los proyectos del plan gratuito se comprueban en una ventana de 7 días. Según la documentación, unas pocas peticiones al día a la base de datos durante la semana anterior suelen bastar para evitar la pausa.1
  • Cuenta como actividad entrar en el panel de Supabase y las llamadas a la API, incluidas las de una aplicación conectada.1
  • Los proyectos de pago no se pausan por inactividad.1
  • El propietario recibe un correo de aviso una semana antes y otro de confirmación al pausarse.1
  • Un proyecto pausado se restaura desde el panel con «Resume project». Hay un año de margen para hacerlo; pasado ese plazo ya no se garantiza.1

Requisitos

  • Un proyecto de Supabase en plan gratuito con una tabla pequeña que se pueda leer.
  • Un equipo que esté siempre encendido, con Node.js.
  • La URL del proyecto y una clave guardadas en un archivo .env.local que no se sube a git. Nunca van en el código.

Pasos

  1. Crea un script que lea una fila de una tabla pequeña (select con limit 1) con el cliente oficial supabase-js. Esa lectura ya cuenta como petición a la base de datos.
  2. Haz que el script avise si falla. Por ejemplo, con una notificación de macOS y el error escrito en el log. Un fallo puede deberse a red, DNS, permisos o una pausa: comprueba el panel antes de atribuirle una causa.
  3. Ejecútalo con Node leyendo el entorno desde el archivo: node --env-file=.env.local scripts/keepalive-supabase.mjs.
  4. Crea un LaunchAgent (archivo .plist en ~/Library/LaunchAgents/) con tres piezas:
    • el comando del paso 3 y el directorio de trabajo del proyecto;
    • una programación diaria (dos horas fijas, por ejemplo 09:00 y 21:00);
    • RunAtLoad activado, para que se lance también al iniciar sesión.
  5. Cárgalo con launchctl bootstrap gui/$(id -u) <ruta del plist>.
  6. Redirige la salida estándar y los errores a un archivo en ~/Library/Logs/ para poder comprobar que se ejecuta.
  7. Pruébalo a mano una vez antes de fiarte de la programación.

Errores frecuentes

  • Usar la clave secreta (antes service_role) en un script que solo lee: se salta todas las políticas de seguridad por filas (RLS). Para una lectura mínima basta la clave publicable, sujeta a RLS, con una política que permita leer esa tabla.2
  • Programarlo en un portátil que se apaga: si el equipo está dormido toda la semana, el proyecto se pausa igual.
  • Olvidar que el archivo de entorno está en el directorio de trabajo: el LaunchAgent debe fijarlo.
  • Dar por hecho que esto es oficial: es una solución no oficial a una regla del plan gratuito, que puede cambiar.1

Véase también

  • Vercel, para el despliegue de otras partes del mismo tipo de proyectos.

Referencias

Footnotes

  1. Project Pausing. Supabase. Consultado el 2026-10-10. ↩ ↩2 ↩3 ↩4 ↩5 ↩6 ↩7 ↩8 ↩9

  2. Understanding API keys. Supabase. Consultado el 2026-10-10. ↩