[{"data":1,"prerenderedAt":799},["ShallowReactive",2],{"blog-es-supabase-project-paused-recover":3,"blog-index-es":452},{"id":4,"title":5,"body":6,"category":405,"cover":406,"coverAlt":407,"description":408,"draft":409,"extension":410,"faq":411,"image":429,"keywords":430,"meta":438,"navigation":439,"ogTitle":440,"path":441,"published":442,"seo":443,"stem":444,"tldr":445,"updated":450,"__hash__":451},"blog_es\u002Fblog\u002Fsupabase-project-paused-recover.md","¿Proyecto de Supabase pausado? Tus datos siguen ahí",{"type":7,"value":8,"toc":391},"minimark",[9,13,16,19,24,27,30,41,45,48,51,54,58,61,64,98,101,109,113,116,125,131,134,138,141,144,153,220,223,228,231,235,238,246,249,262,266,269,272,283,291,295,320,324,327,332,364,371,383],[10,11,12],"p",{},"Tu app ha dejado de responder. Cada petición vuelve como un error y, cuando\nabres tu panel de Supabase, el proyecto tiene la palabra Paused junto al nombre,\ncon un botón de Restaurar donde antes estaban los paneles de siempre. Nada de lo\nque desplegaste ha causado esto, y nada te avisó de que venía.",[10,14,15],{},"Aquí es donde se tuercen las dos respuestas habituales. Una dice que tu base de\ndatos ya no está, lo cual nunca fue cierto. La otra dice que te relajes, que un\nproyecto de Supabase pausado por inactividad conserva todos sus datos, así que\npulsa Restaurar y sigue con tu día. Eso es cierto hoy y deja de serlo, en\nsilencio, en una fecha que nadie menciona.",[10,17,18],{},"Ayuda pensar en el proyecto como en un trastero. Se dejó de pagar el alquiler,\nasí que las luces están apagadas y la puerta cerrada. Tus cajas siguen dentro,\nexactamente como las dejaste. Ahí es donde está tu proyecto ahora mismo, y hay\nuna fecha a partir de la cual el trastero se vacía.",[20,21,23],"h2",{"id":22},"un-proyecto-de-supabase-pausado-está-borrado","¿Un proyecto de Supabase pausado está borrado?",[10,25,26],{},"No. El proyecto está detenido, y detener no es eliminar. Tus tablas, tus filas,\ntus reglas de Row Level Security y los archivos que subieron tus usuarios siguen\ntodos en disco. Lo que se ha apagado es la base de datos que hay delante, y por\neso tu app recibe un error en cada petición que hace.",[10,28,29],{},"Esa distancia es lo que hace razonable el susto. Desde fuera la app está rota\ncomo se rompe una app cuando le falta la base de datos: listas vacías,\ncargadores que no terminan nunca, un error en cada guardado. Desde el panel es\nun proyecto con un botón encima.",[10,31,32,33,40],{},"Supabase pausa proyectos en el plan gratuito y solo ahí. Según su propia\ndocumentación, pueden pausar aplicaciones del plan gratuito que muestren poca\nactividad durante siete días para ahorrar recursos de servidor, y los proyectos\nde pago no se pausan por inactividad en absoluto. Su\n",[34,35,39],"a",{"href":36,"rel":37},"https:\u002F\u002Fsupabase.com\u002Fdocs\u002Fguides\u002Fplatform\u002Ffree-project-pausing",[38],"nofollow","página sobre pausas","\nes la que conviene leer, porque todo lo de aquí abajo depende de cifras que son\nsuyas.",[20,42,44],{"id":43},"por-qué-pausó-supabase-mi-proyecto","¿Por qué pausó Supabase mi proyecto?",[10,46,47],{},"Porque nadie habló con él durante una semana aproximadamente.",[10,49,50],{},"Actividad significa peticiones. Abrir el proyecto en el panel cuenta. Tu app\nllamando a la base de datos cuenta. Lo que no cuenta es que tu app simplemente\nexista, así que un proyecto que se lanzó el mes pasado y todavía no ha\nencontrado visitantes es exactamente la forma que acaba pausada. Casi nunca le\npasa a las apps con tráfico.",[10,52,53],{},"El plan gratuito permite además dos proyectos activos a la vez, y los pausados\ndejan de contar contra ese límite. Así que un proyecto que aparcaste a propósito\ny uno que se detuvo solo se ven igual en el panel, y ambos corren ya contra el\nmismo reloj de un año.",[20,55,57],{"id":56},"cómo-restauro-un-proyecto-de-supabase-pausado","¿Cómo restauro un proyecto de Supabase pausado?",[10,59,60],{},"Abre el panel, elige el proyecto y pulsa Restaurar. Dentro de la ventana ese es\ntodo el procedimiento, y son unos minutos de espera en lugar de una migración.",[10,62,63],{},"Lo que vuelve es el proyecto que tenías. La misma referencia de proyecto, así\nque la misma URL de la API. Las mismas tablas, las mismas reglas, los mismos\nbuckets de Storage. Supabase levanta los proyectos gratuitos en la última\nversión menor de Postgres como parte de la restauración, cosa que no vas a\nnotar.",[10,65,66,67,71,72,75,76,81,82,84,85,88,89,92,93,97],{},"Las claves son la parte que puede no volver tal como estaba. Supabase ha\nadvertido que los proyectos restaurados desde el 1 de noviembre de 2025 ya no\nreciben las claves heredadas, ",[68,69,70],"code",{},"anon"," y ",[68,73,74],{},"service_role",". ",[34,77,80],{"href":78,"rel":79},"https:\u002F\u002Fgithub.com\u002Forgs\u002Fsupabase\u002Fdiscussions\u002F29260",[38],"En palabras de la propia\nSupabase",", los proyectos\npausados que se restauran corren el riesgo de romperse porque no tendrán las\nclaves heredadas. Si tu app todavía envía la clave ",[68,83,70],{}," antigua, una cadena\nlarga que empieza por ",[68,86,87],{},"eyJ",", cuenta con que sus peticiones se rechacen en cuanto\nel proyecto vuelva. La solución es poner la clave publicable del proyecto, la\nque empieza por ",[68,90,91],{},"sb_publishable_",", en los ajustes de entorno de tu builder. ",[34,94,96],{"href":95},"\u002Fblog\u002Fsupabase-new-api-keys","Los\ndos formatos de clave"," se comparan uno junto al\notro.",[10,99,100],{},"Haz una cosa antes de cerrar la pestaña: saca una copia de los datos mientras la\nbase de datos está en marcha. Un proyecto pausado es el único estado en el que\nno puedes exportar nada, y el motivo para hacerlo hoy y no la semana que viene\nes el reloj de la siguiente sección.",[10,102,103,104,108],{},"Ya que tu app ha vuelto, también merece la pena saber qué le enseña a un\ndesconocido. Nuestro escaneo gratuito lee tu sitio desde fuera y te dice lo que\nencuentra. Tarda unos 20 segundos y no necesita cuenta:\n",[34,105,107],{"href":106},"\u002Fsecurity-scanner","escanea tu app",".",[20,110,112],{"id":111},"cuánto-tiempo-tengo-para-restaurarlo","¿Cuánto tiempo tengo para restaurarlo?",[10,114,115],{},"Un año desde el día en que se pausó. Supabase lo formula así: una vez pausado el\nproyecto, hay una ventana de un año para restaurarlo en la plataforma desde\nSupabase Studio.",[10,117,118,119,124],{},"Comprueba esa cifra en lugar de fiarte de ella, porque ya se ha movido una vez.\nCuando el límite se\n",[34,120,123],{"href":121,"rel":122},"https:\u002F\u002Fsupabase.com\u002Fchangelog\u002F27497-paused-free-plan-projects-are-restorable-for-90-days",[38],"introdujo en junio de 2024","\neran 90 días, y todo lo escrito sobre proyectos pausados antes de que Supabase\nlo ampliara sigue diciendo 90. Su propio artículo de ayuda es la señal más\nclara: la página dice un año y la URL en la que vive sigue diciendo 90 días.",[126,127],"diagram",{"alt":128,"caption":129,"src":130},"Una línea de tiempo. Arranca en un símbolo de pausa, atraviesa una banda larga resaltada con una llave dentro y continúa más allá del final de la banda hasta un archivo guardado y un cubo. Más adelante, un contorno vacío tachado.","Dentro de la banda, un botón te devuelve el proyecto. Pasada la banda todavía puedes recoger los datos, y más adelante ya no queda nada que recoger.","\u002Fblog\u002Fsupabase-project-paused-recover\u002Fthe-restore-window-1600x520.png",[10,132,133],{},"Calcula la fecha y ponla en un calendario ahora que estás pensando en ello. Es\nun año desde el día en que el proyecto se pausó, que casi nunca es un año desde\nel día en que tú te enteraste.",[20,135,137],{"id":136},"no-hay-botón-de-restaurar-qué-pasa-ahora","No hay botón de Restaurar. ¿Qué pasa ahora?",[10,139,140],{},"Recibes una descarga en lugar de una restauración, y esa diferencia es mayor de\nlo que suena.",[10,142,143],{},"Una vez cerrada la ventana, Supabase sustituye la opción de restaurar por dos\ncosas que puedes llevarte: el último backup lógico, tomado justo antes de pausar\nel proyecto, y todos tus objetos de Storage. Ambos salen de la página de resumen\ndel proyecto. Tus datos están en esos archivos. Tu proyecto no, y no va a\nvolver.",[10,145,146,147,152],{},"Supabase documenta\n",[34,148,151],{"href":149,"rel":150},"https:\u002F\u002Fsupabase.com\u002Fdocs\u002Fguides\u002Ftroubleshooting\u002Frestore-project-after-90-days-pause",[38],"la migración que viene a continuación",".\nSon cinco pasos y, entre todos, piden un cliente de Postgres, la CLI de Supabase\ny un token de acceso de la Management API.",[154,155,156,169],"table",{},[157,158,159],"thead",{},[160,161,162,166],"tr",{},[163,164,165],"th",{},"Lo que recuperas",[163,167,168],{},"Cómo llega hasta ahí",[170,171,172,188,196,204,212],"tbody",{},[160,173,174,178],{},[175,176,177],"td",{},"Tablas, filas, tipos de columna, índices y reglas de Row Level Security",[175,179,180,181,184,185],{},"Dentro del archivo ",[68,182,183],{},".backup",", cargado en un proyecto nuevo con ",[68,186,187],{},"psql",[160,189,190,193],{},[175,191,192],{},"Los archivos que subieron tus usuarios",[175,194,195],{},"Se descargan aparte desde la página de resumen y luego se copian a los buckets nuevos con la CLI de Supabase",[160,197,198,201],{},[175,199,200],{},"Ajustes de Auth, Realtime, Storage y API",[175,202,203],{},"Supabase publica un script que los copia a través de su Management API",[160,205,206,209],{},[175,207,208],{},"Extensiones, webhooks de base de datos y publicaciones de Realtime",[175,210,211],{},"Los vuelves a activar a mano en el proyecto nuevo",[160,213,214,217],{},[175,215,216],{},"Tu URL de API y tus claves",[175,218,219],{},"Esto no lo recuperas. Un proyecto nuevo tiene una referencia nueva, así que la URL y cada clave cambian con ella, y todo lo que guarde las antiguas hay que actualizarlo",[10,221,222],{},"Esa última fila es de la que la gente se entera demasiado tarde. La dirección\nque tu app venía usando es parte del proyecto que acabas de perder, así que\nreconstruir no es solo un trabajo de datos. Las variables de entorno de tu\nbuilder, todo lo que pegaste directamente en el código, cualquier webhook,\npasarela de pago o herramienta de analítica que apunte a la URL antigua: cada\nuna de esas cosas es un sitio por donde la app se rompe después de que los datos\nya estén a salvo.",[126,224],{"alt":225,"caption":226,"src":227},"Dos carriles. En el de arriba un proyecto pausado se abre con una llave y continúa como el mismo proyecto, con su conexión a la app intacta. En el de abajo el proyecto se convierte en un archivo guardado y un cubo de archivos, que alimentan un proyecto distinto, y la línea desde la app hasta él está punteada y tachada.","Los dos carriles acaban con tus filas en una base de datos. Solo uno acaba con la app apuntando todavía al sitio correcto.","\u002Fblog\u002Fsupabase-project-paused-recover\u002Frestore-or-rebuild-1600x600.png",[10,229,230],{},"Después de eso queda una línea más, y esa no lleva rescate. La nota de Supabase\nes contundente: una vez borrado un proyecto, todos los datos asociados, backups\nincluidos, se eliminan de forma permanente y no se pueden recuperar. Si tu panel\nte está ofreciendo descargas ahora mismo, cógelas ya.",[20,232,234],{"id":233},"el-plan-gratuito-guarda-un-backup-mientras-mi-proyecto-está-pausado","¿El plan gratuito guarda un backup mientras mi proyecto está pausado?",[10,236,237],{},"Hay exactamente uno, y no es la red de seguridad que imagina la mayoría.",[10,239,240,241,245],{},"El plan gratuito no toma ningún backup programado. No se copia nada a ninguna\nparte mientras tu proyecto funciona, cosa que\n",[34,242,244],{"href":243},"\u002Fblog\u002Fdoes-supabase-back-up-my-database","conviene saber antes de que algo salga mal","\ny no durante. La copia que aparece en tu panel cuando se cierra la ventana de\nrestauración es un único backup lógico tomado en el momento de la pausa, y pasa\na poder descargarse justo en el punto en que ya no puedes restaurar.",[10,247,248],{},"De ahí se siguen dos cosas. La copia lleva la fecha del día en que tu proyecto\nse detuvo, lo cual resulta ser suficiente, porque un proyecto pausado no ha\naceptado ninguna escritura desde entonces. Y vive en la misma cuenta que el\nproyecto del que salió, detrás del mismo inicio de sesión, cubierta por el mismo\nborrado. Está en el trastero, detrás de la misma puerta.",[10,250,251,252,256,257,261],{},"El momento de sacar tu propia copia es mientras el proyecto vuelve a funcionar.\n",[34,253,255],{"href":254},"\u002Fblog\u002Fback-up-supabase-free-tier","Hacer una desde el panel sin tocar un terminal","\nes la vía del plan gratuito, y\n",[34,258,260],{"href":259},"\u002Fblog\u002Fthree-ways-to-back-up-a-supabase-database","tres formas de hacer backup de una base de datos Supabase","\ncompara lo que cuesta cada una.",[20,263,265],{"id":264},"cómo-evito-que-se-vuelva-a-pausar","¿Cómo evito que se vuelva a pausar?",[10,267,268],{},"Dale al proyecto algo que responder cada pocos días, o sácalo del plan gratuito.",[10,270,271],{},"Supabase cuenta como actividad abrir el proyecto en el panel y las peticiones\nque llegan desde tu aplicación conectada. Una tarea programada que llame a tu\nbase de datos una vez al día basta para mantener el contador despierto, y un\npequeño servicio de cron o un flujo programado en tu repositorio de código es la\nforma habitual de montarlo.",[273,274,276],"callout",{"type":275},"warn",[10,277,278,282],{},[279,280,281],"strong",{},"Un ping mantiene el proyecto despierto y nada más."," No es un backup, no te\ndice cuándo se rompe tu app por cualquiera de los otros motivos por los que se\nrompen las apps, y una tarea programada que dejó de ejecutarse en silencio se ve\nexactamente igual que una que sigue funcionando. Lo que haga el ping tiene que\nser algo cuyo fallo notarías, o la primera noticia será la misma insignia de\nPaused que estás mirando ahora.",[10,284,285,286,290],{},"Pasar a Pro elimina la pregunta en lugar de gestionarla. Los proyectos de pago\nno se pausan por inactividad, y en Pro es además donde empiezan los backups\ndiarios de Supabase, con una ventana de siete días. ",[34,287,289],{"href":288},"\u002Fblog\u002Fsupabase-free-plan-limits","Qué más cambia Pro, límite por límite",", tiene su propio artículo.",[20,292,294],{"id":293},"qué-hacer-esta-semana","Qué hacer esta semana",[296,297,298],"key-takeaways",{},[299,300,301,308,311,314,317],"ul",{},[302,303,304,305,307],"li",{},"Pulsa Restaurar hoy si el botón está ahí. Son unos minutos, y es la única vía que conserva tu URL. Si tu app todavía usa la clave ",[68,306,70],{}," antigua, dale la clave publicable en cuanto el proyecto vuelva.",[302,309,310],{},"Si el botón ya no está, descarga primero el archivo de backup y tus archivos de Storage. Un proyecto borrado se los lleva.",[302,312,313],{},"Saca tu propia copia de la base de datos en cuanto el proyecto funcione, porque el plan gratuito no está sacando ninguna por ti.",[302,315,316],{},"Pon algo en un temporizador que llame a tu proyecto, y asegúrate de que notarías si ese temporizador se parase.",[302,318,319],{},"Guarda una copia de tus datos fuera de tu cuenta de Supabase, donde no la alcance ni una pausa, ni una ventana caducada, ni un borrado.",[20,321,323],{"id":322},"dónde-encaja-reeve-care","Dónde encaja Reeve Care",[10,325,326],{},"Una pausa es una caída que no parece una caída. Tus páginas siguen cargando,\nporque las sirve tu builder; lo que se ha detenido es todo lo que hay detrás de\nellas. Buena parte de la explicación de por qué nadie te avisó está ahí.",[126,328],{"alt":329,"caption":330,"src":331},"Un panel de Reeve Care con dos filas. En la primera, el contorno punteado de una cuenta de Supabase aparece tachado mientras fuera de ella hay archivos guardados con una marca de visto. En la segunda, un sitio se observa a través de una lupa y se levanta una alerta.","Las copias están fuera de la cuenta de la que salieron. La app también se vigila desde fuera, y una comprobación que deja de recibir respuesta levanta algo.","\u002Fblog\u002Fsupabase-project-paused-recover\u002Fcare-outside-and-watching-1600x520.png",[299,333,334,340,346,352,358],{},[302,335,336,339],{},[279,337,338],{},"Un proyecto pausado no se puede copiar, y una copia que falla te manda un\ncorreo."," Care se conecta a tu base de datos siguiendo su propio horario en\nlugar de esperar a que tu app se dé cuenta, así que la noche en que deja de\nresponder es la noche en que te enteras.",[302,341,342,345],{},[279,343,344],{},"La copia vive fuera de tu cuenta de Supabase."," Cifrada, en almacenamiento\nque tenemos nosotros, de modo que un proyecto pausado, caducado o borrado no se\nlleva los backups con él.",[302,347,348,351],{},[279,349,350],{},"Cada copia se vuelve a leer antes de contar."," La fecha de tu panel es el\núltimo backup que pasó esa comprobación, nunca el último que se intentó.",[302,353,354,357],{},[279,355,356],{},"Restaurar es un botón",", y antes de empezar se toma una instantánea del\nestado actual, así que hasta la restauración tiene su deshacer.",[302,359,360,363],{},[279,361,362],{},"Los archivos que subieron tus usuarios también se copian",", en cuanto\nconectes tus buckets de Storage. Esa es una segunda clave y es opcional, porque\nla clave que emite Supabase para Storage no solo lee, también escribe, y\npreferimos pedirla aparte antes que juntarla con una que no puede.",[10,365,366,367,370],{},"Dos límites, antes de que decidas nada. Care hace backup de ",[279,368,369],{},"Supabase"," y de\nnada más hoy por hoy, y si tus datos viven en otro sitio lo decimos antes de que\npagues y no después. Y nada de esto impide que un proyecto se pause: la pausa\nocurre dentro de Supabase, donde somos un cliente como cualquier otro. Lo que\ncambia es dónde están tus datos el día que ocurre.",[10,372,373,374,378,379,108],{},"Deja también encendidos los backups del propio Supabase el día que pases a un\nplan de pago. Dos copias en dos sitios es la idea entera, y la más barata de las\ndos ya está en tu factura. Lo que incluye cada plan está en la\n",[34,375,377],{"href":376},"\u002Fpricing","página de precios",", y la copia, la comprobación y la restauración\nestán dibujadas paso a paso en la\n",[34,380,382],{"href":381},"\u002Fsupabase-backups","página de backups de Supabase",[10,384,385,386,390],{},"Antes de cerrar esta pestaña, abre tu panel y mira cuál de los dos botones te\nestá ofreciendo tu proyecto. Ese único dato decide si hoy son cinco minutos de\nespera o una reconstrucción, y la\n",[34,387,389],{"href":388},"\u002Fchecklist","checklist de seguridad de 10 minutos"," cubre los backups junto con\ntodo lo demás que conviene confirmar cuando tu app vuelva a responder.",{"title":392,"searchDepth":393,"depth":393,"links":394},"",3,[395,397,398,399,400,401,402,403,404],{"id":22,"depth":396,"text":23},2,{"id":43,"depth":396,"text":44},{"id":56,"depth":396,"text":57},{"id":111,"depth":396,"text":112},{"id":136,"depth":396,"text":137},{"id":233,"depth":396,"text":234},{"id":264,"depth":396,"text":265},{"id":293,"depth":396,"text":294},{"id":322,"depth":396,"text":323},"Backups","\u002Fblog\u002Fsupabase-project-paused-recover\u002Fcover-1200x630.png","Un símbolo de pausa junto a una caja de proyecto cerrada, con la base de datos y los archivos subidos aún dentro.","Supabase pausó tu proyecto tras una semana sin actividad. No se ha borrado nada, Restaurar está junto al nombre y tienes un año antes de que eso cambie.",false,"md",[412,414,417,420,423,426],{"q":23,"a":413},"No. Una pausa detiene la base de datos, no elimina nada. Tus tablas, tus filas, tus reglas de Row Level Security y los archivos subidos siguen en disco, y por eso el panel te ofrece un botón de Restaurar en lugar de una disculpa. Lo que sí rompe la pausa es tu app, porque cada petición que hace vuelve ahora como un error.",{"q":415,"a":416},"¿Cuánto tiempo tengo para restaurar un proyecto de Supabase pausado?","Un año desde el día en que se pausó. Supabase lo describe como una ventana de un año para restaurar el proyecto desde Supabase Studio. Ese número ya se movió una vez: eran 90 días cuando se introdujo el límite en junio de 2024, y el artículo de ayuda que Supabase publica sobre esto todavía lleva 90 días en su URL. Lee la cifra actual en su página sobre pausas y no en la de nadie más.",{"q":418,"a":419},"Mi proyecto no tiene botón de Restaurar. ¿Y ahora qué?","La ventana se ha cerrado y Supabase ha cambiado ese botón por dos descargas: el último backup lógico, tomado justo antes de pausar el proyecto, y todos tus archivos de Storage. Ambos están en la página de resumen del proyecto. Tus datos están ahí, y volver a una app que funcione pasa por crear un proyecto nuevo y cargar esos archivos en él. Descarga las dos cosas hoy, porque un proyecto borrado se lleva sus backups para siempre.",{"q":421,"a":422},"¿Mi URL de proyecto y mis claves de API seguirán siendo las mismas?","Si pulsas Restaurar dentro de la ventana, la URL sí: el proyecto vuelve con la misma referencia de proyecto con la que se construye tu URL. Las claves puede que no. Supabase ha advertido que los proyectos restaurados desde el 1 de noviembre de 2025 vuelven sin las claves heredadas anon y service_role, así que una app que todavía use la clave anon necesita en su lugar la clave publicable del proyecto. Si tienes que reconstruir en un proyecto nuevo, cambian las dos cosas: un proyecto nuevo tiene una referencia nueva, así que la URL de la API y todas las claves cambian con ella. Eso implica actualizar las variables de entorno de tu builder y todo lo que tenga apuntada la dirección antigua, webhooks y servicios de terceros incluidos.",{"q":424,"a":425},"¿Cómo evito que Supabase vuelva a pausar mi proyecto?","Dale algo que responder al menos una vez por semana, o sácalo del plan gratuito. Supabase cuenta como actividad abrir el panel y las peticiones que llegan desde tu aplicación conectada, así que una tarea programada que llame a tu proyecto una vez al día mantiene el contador despierto. Pasar a Pro elimina la pregunta del todo, porque los proyectos de pago no se pausan por inactividad, y además es donde empiezan los backups diarios.",{"q":427,"a":428},"Mi proyecto desapareció del panel, no está pausado. ¿Puedo recuperarlo?","Primero establece cuál de los dos casos tienes, porque son situaciones distintas. Un proyecto pausado sigue en la lista, con Restaurar junto a su nombre y los datos congelados en disco. Si no aparece en absoluto, el panel no ofrece ningún control para deshacer el borrado: quedan un ticket de soporte con Supabase y una copia que hiciste tú. Esa segunda es todo el argumento para tener un backup antes del día en que hace falta.","\u002Fblog\u002Fsupabase-project-paused-recover\u002Fcard-800x500.png",[431,432,433,434,435,436,437],"proyecto supabase pausado","supabase plan gratuito pausado","restaurar proyecto supabase pausado","recuperar proyecto supabase borrado","reanudar proyecto supabase","supabase inactivo 7 dias","mantener proyecto supabase activo",{},true,"¿Proyecto de Supabase pausado? Qué hacer ahora","\u002Fblog\u002Fsupabase-project-paused-recover","2026-09-12",{"title":5,"description":408},"blog\u002Fsupabase-project-paused-recover",[446,447,448,449],"Un proyecto de Supabase pausado por inactividad no es un proyecto borrado. Los datos están congelados en disco y el panel tiene un botón de Restaurar junto al nombre.","Tienes un año desde el día en que se pausó para restaurarlo desde el panel de Supabase. Los proyectos gratuitos se pausan tras una semana de poca actividad.","Pasado ese año el botón de Restaurar se sustituye por una descarga, y la única vuelta es un proyecto nuevo con URL nueva y claves nuevas.","El plan gratuito no copia nada mientras tu proyecto funciona, así que el único backup que existe es el que se tomó justo al pausarlo.","2026-09-30","_Hr83kT6NNJSUS7rTrA3cKSUHMkgjWyDFEKDr3-efk8",[453,460,466,472,478,484,490,496,502,508,514,519,524,530,536,542,547,553,559,565,571,577,583,589,595,601,607,613,619,625,626,632,638,644,650,656,662,668,674,680,686,692,698,703,709,715,721,727,733,739,745,751,757,763,768,773,778,784,789,794],{"path":454,"title":455,"description":456,"published":457,"category":458,"image":459,"draft":409},"\u002Fblog\u002Fbase44-security-scan","Escaneo de seguridad de Base44: lo que solo él ve","El escaneo de seguridad de Base44 revisa siete tipos de problema desde dentro. Esta es la mitad que lee y nadie más puede leer, y la mitad que nunca mira.","2026-10-10","Fundamentos de seguridad","\u002Fblog\u002Fbase44-security-scan\u002Fcard-800x500.png",{"path":461,"title":462,"description":463,"published":464,"category":458,"image":465,"draft":409},"\u002Fblog\u002Fapi-key-leaked-what-to-do","Tu clave API se filtró. El orden en el que hay que actuar","Una clave API se filtró y no sabes por dónde empezar. No todas las claves de tu frontend lo son, y el orden importa más que la velocidad.","2026-10-09","\u002Fblog\u002Fapi-key-leaked-what-to-do\u002Fcard-800x500.png",{"path":467,"title":468,"description":469,"published":470,"category":458,"image":471,"draft":409},"\u002Fblog\u002Finfinite-recursion-in-policy-for-relation","\"Infinite recursion detected in policy\" sin desactivar RLS","\"Infinite recursion detected in policy for relation\" significa que tu policy preguntó a la tabla que protege. Así se rompe el círculo.","2026-10-08","\u002Fblog\u002Finfinite-recursion-in-policy-for-relation\u002Fcard-800x500.png",{"path":473,"title":474,"description":475,"published":476,"category":458,"image":477,"draft":409},"\u002Fblog\u002Fno-api-key-found-in-request","\"No API key found in request\" en Supabase, y el arreglo equivocado","\"No API key found in request\" significa que tu petición llegó a Supabase sin clave. Casi todas las respuestas apuntan a las reglas de tu base de datos.","2026-10-07","\u002Fblog\u002Fno-api-key-found-in-request\u002Fcard-800x500.png",{"path":479,"title":480,"description":481,"published":482,"category":458,"image":483,"draft":409},"\u002Fblog\u002Fis-base44-safe","¿Es seguro Base44? Lo que vimos en 5.442 apps Base44","¿Es seguro Base44? Pasamos nueve comprobaciones a 5.442 apps Base44 en producción. Casi todas sacaron B por motivos que su dueño nunca eligió.","2026-10-06","\u002Fblog\u002Fis-base44-safe\u002Fcard-800x500.png",{"path":485,"title":486,"description":487,"published":488,"category":458,"image":489,"draft":409},"\u002Fblog\u002Fmove-a-secret-to-an-edge-function","Ocultar una clave API: muévela a una Edge Function de Supabase","Ocultar una clave API significa sacarla del navegador, y una Edge Function de Supabase es el sitio más pequeño donde ponerla. Dos pasos importan más.","2026-10-05","\u002Fblog\u002Fmove-a-secret-to-an-edge-function\u002Fcard-800x500.png",{"path":491,"title":492,"description":493,"published":494,"category":458,"image":495,"draft":409},"\u002Fblog\u002Fenv-file-exposed-on-your-server","¿Tu archivo .env está expuesto? Las doce rutas a revisar","¿Tu archivo .env está expuesto en tu propio servidor web? Doce direcciones te lo dicen, y un acierto significa que todo lo que contiene ya es público.","2026-10-04","\u002Fblog\u002Fenv-file-exposed-on-your-server\u002Fcard-800x500.png",{"path":497,"title":498,"description":499,"published":500,"category":458,"image":501,"draft":409},"\u002Fblog\u002Fis-v0-safe","Seguridad de v0: las 1.790 aplicaciones escaneadas sacaron una A","Seguridad de v0, medida en 1.790 aplicaciones v0 en vivo: todas sacaron A. Solo 17 nombraban una base de datos, y eso es casi todo lo que mide la A.","2026-10-03","\u002Fblog\u002Fis-v0-safe\u002Fcard-800x500.png",{"path":503,"title":504,"description":505,"published":506,"category":458,"image":507,"draft":409},"\u002Fblog\u002Fis-bolt-safe","¿Es seguro Bolt? Lo que vimos en 1.123 aplicaciones Bolt","¿Es seguro Bolt? Pasamos 1.123 aplicaciones Bolt en vivo por nueve comprobaciones. El hosting salió limpio. Los hallazgos eran claves y tablas abiertas dentro.","2026-10-02","\u002Fblog\u002Fis-bolt-safe\u002Fcard-800x500.png",{"path":509,"title":510,"description":511,"published":512,"category":458,"image":513,"draft":409},"\u002Fblog\u002Fis-supabase-down-or-your-app","¿Supabase está caído o es tu app? Cómo distinguirlo","¿Supabase está caído o es tu app? Un proyecto pausado, una base de datos llena y un fallo tuyo parecen lo mismo. Cuatro comprobaciones los separan.","2026-10-01","\u002Fblog\u002Fis-supabase-down-or-your-app\u002Fcard-800x500.png",{"path":515,"title":516,"description":517,"published":450,"category":458,"image":518,"draft":409},"\u002Fblog\u002Fdoes-supabase-encrypt-my-data","¿Supabase cifra mis datos? Sí. Esto es lo que detiene","¿Supabase cifra los datos? Sí: AES-256 en reposo, TLS en tránsito, SOC 2 e ISO 27001. Qué cubre cada uno, y la fuga que ninguno de ellos detiene.","\u002Fblog\u002Fdoes-supabase-encrypt-my-data\u002Fcard-800x500.png",{"path":288,"title":520,"description":521,"published":522,"category":458,"image":523,"draft":409},"¿Cuánto cuesta Supabase? Los límites del plan gratuito","Los límites del plan gratuito de Supabase: 500 MB de base de datos, 5 GB de egress y ningún backup. Qué pasa en cada uno y qué cambia Pro por $25.","2026-09-29","\u002Fblog\u002Fsupabase-free-plan-limits\u002Fcard-800x500.png",{"path":525,"title":526,"description":527,"published":528,"category":405,"image":529,"draft":409},"\u002Fblog\u002Ftest-your-supabase-backup","Prueba tu backup de Supabase antes del día que lo necesites","Cómo probar tu backup de Supabase: restaurarlo en un proyecto de prueba, contar filas, iniciar sesión y buscar la línea que le falta a un archivo cortado.","2026-09-28","\u002Fblog\u002Ftest-your-supabase-backup\u002Fcard-800x500.png",{"path":531,"title":532,"description":533,"published":534,"category":405,"image":535,"draft":409},"\u002Fblog\u002Fsupabase-backup-github-action","Backup gratis de Supabase con una GitHub Action, y la trampa","Un backup de Supabase con GitHub Action es gratis y sirve a muchas apps. El workflow, el connection string correcto y el egress de cada ejecución.","2026-09-27","\u002Fblog\u002Fsupabase-backup-github-action\u002Fcard-800x500.png",{"path":537,"title":538,"description":539,"published":540,"category":405,"image":541,"draft":409},"\u002Fblog\u002Fdownload-your-supabase-backup","Por qué no puedes descargar tu backup de Supabase","No puedes descargar tu backup de Supabase en un proyecto actual: la copia diaria es una instantánea física. Cómo comprobarlo y tener tu propia copia.","2026-09-26","\u002Fblog\u002Fdownload-your-supabase-backup\u002Fcard-800x500.png",{"path":543,"title":544,"description":545,"published":540,"category":458,"image":546,"draft":409},"\u002Fblog\u002Fsupabase-permission-denied-for-table","Supabase \"permission denied for table\": el grant que falta","Desde el 30 de octubre, una tabla nueva de Supabase responde \"permission denied for table\" hasta que le das acceso. El grant del email es la mitad del arreglo.","\u002Fblog\u002Fsupabase-permission-denied-for-table\u002Fcard-800x500.png",{"path":548,"title":549,"description":550,"published":551,"category":458,"image":552,"draft":409},"\u002Fblog\u002Fopen-api-endpoint-exposed","¿Un endpoint de API abierto es un problema? Mira el JSON","Tu escaneo señaló un endpoint de API abierto. Que importe depende de lo que devolvió, y la mayoría de los que encontramos eran de la plataforma.","2026-09-25","\u002Fblog\u002Fopen-api-endpoint-exposed\u002Fcard-800x500.png",{"path":554,"title":555,"description":556,"published":557,"category":458,"image":558,"draft":409},"\u002Fblog\u002Flovable-security-scan","Escaneo de seguridad de Lovable: lo que no puede probar","Escaneo de seguridad de Lovable: qué revisan el Quick scan y el Deep scan, cuándo corre cada uno, y lo único que ningún escaneo desde dentro puede probar.","2026-09-24","\u002Fblog\u002Flovable-security-scan\u002Fcard-800x500.png",{"path":560,"title":561,"description":562,"published":563,"category":405,"image":564,"draft":409},"\u002Fblog\u002Fsupabase-backup-auth-users","Por qué tu dump de Supabase no tiene usuarios dentro","Ejecuta supabase db dump por sí solo y obtienes la forma de tu base de datos y ninguna de sus filas, sin el esquema auth donde viven tus usuarios.","2026-09-23","\u002Fblog\u002Fsupabase-backup-auth-users\u002Fcard-800x500.png",{"path":566,"title":567,"description":568,"published":569,"category":458,"image":570,"draft":409},"\u002Fblog\u002Fdomain-and-certificate-expiry","Dominio caducado, web caída: qué pasa a partir de ahora","Tu dominio caducó y tu web está caída. Aquí tienes el reloj que acaba de arrancar, por qué el certificado es el menor problema, y cómo comprobar ambos.","2026-09-22","\u002Fblog\u002Fdomain-and-certificate-expiry\u002Fcard-800x500.png",{"path":572,"title":573,"description":574,"published":575,"category":458,"image":576,"draft":409},"\u002Fblog\u002Fis-lovable-safe","¿Es seguro Lovable? Lo que vimos en 18.554 aplicaciones Lovable","¿Es seguro Lovable? Pasamos 18.554 aplicaciones Lovable por nueve comprobaciones. La plataforma fue la más limpia de cinco. Los hallazgos estaban dentro.","2026-09-21","\u002Fblog\u002Fis-lovable-safe\u002Fcard-800x500.png",{"path":578,"title":579,"description":580,"published":581,"category":458,"image":582,"draft":409},"\u002Fblog\u002Fvibe-coded-app-security-checklist","La lista de seguridad del vibe coding, en nueve comprobaciones","Una lista de seguridad del vibe coding con nueve puntos, cada uno verificable en tu app desde fuera por cualquiera, y cada uno con una prueba de una línea.","2026-09-20","\u002Fblog\u002Fvibe-coded-app-security-checklist\u002Fcard-800x500.png",{"path":584,"title":585,"description":586,"published":587,"category":458,"image":588,"draft":409},"\u002Fblog\u002Fstripe-secret-key-in-frontend","Una clave secreta de Stripe en tu frontend puede mover dinero","Una clave secreta de Stripe expuesta en tu frontend puede reembolsar, cobrar y leer cada ficha de cliente que tienes. Tu clave pk_live_ sí debe estar ahí.","2026-09-19","\u002Fblog\u002Fstripe-secret-key-in-frontend\u002Fcard-800x500.png",{"path":590,"title":591,"description":592,"published":593,"category":458,"image":594,"draft":409},"\u002Fblog\u002Fvite-and-next-public-env-vars","Variables de entorno de Vite expuestas: el prefijo dice publica esto","Variables de entorno de Vite expuestas en tu app: hicieron lo que pedía el prefijo. VITE_ y NEXT_PUBLIC_ significan publica esto, y la IA nunca supo el coste.","2026-09-18","\u002Fblog\u002Fvite-and-next-public-env-vars\u002Fcard-800x500.png",{"path":596,"title":597,"description":598,"published":599,"category":458,"image":600,"draft":409},"\u002Fblog\u002Fbase44-source-maps","Seguridad en Base44: qué marca un escaneo y qué te toca arreglar a ti","Seguridad en Base44 en 5.438 apps escaneadas: tres hallazgos en casi todas son de la plataforma, el source map es la insignia de Base44 y lo tuyo es poco.","2026-09-17","\u002Fblog\u002Fbase44-source-maps\u002Fcard-800x500.png",{"path":602,"title":603,"description":604,"published":605,"category":458,"image":606,"draft":409},"\u002Fblog\u002Fis-cursor-ai-safe","¿Es seguro Cursor AI? El editor, el código y la app que publicaste","¿Es seguro Cursor AI? Tres preguntas en una búsqueda: qué guarda Cursor, en qué falla el código que escribe y si la app que publicaste está abierta.","2026-09-16","\u002Fblog\u002Fis-cursor-ai-safe\u002Fcard-800x500.png",{"path":608,"title":609,"description":610,"published":611,"category":458,"image":612,"draft":409},"\u002Fblog\u002Fis-replit-safe","¿Es seguro Replit? Lo que vimos en 3.042 aplicaciones Replit en vivo","¿Es seguro Replit? Pasamos 3.042 aplicaciones Replit en vivo por nueve comprobaciones externas. Los hallazgos estaban en la aplicación publicada, no en el host.","2026-09-15","\u002Fblog\u002Fis-replit-safe\u002Fcard-800x500.png",{"path":614,"title":615,"description":616,"published":617,"category":405,"image":618,"draft":409},"\u002Fblog\u002Fsupabase-storage-backup","Supabase storage backup: tu copia de la base no tiene archivos","Un Supabase storage backup es una tarea aparte. Las copias de la base guardan la lista de tus archivos y ninguno de ellos, así que cada upload queda roto.","2026-09-14","\u002Fblog\u002Fsupabase-storage-backup\u002Fcard-800x500.png",{"path":620,"title":621,"description":622,"published":623,"category":405,"image":624,"draft":409},"\u002Fblog\u002Fsupabase-point-in-time-recovery","Point-in-time recovery de Supabase: precio y límites","El point-in-time recovery de Supabase rebobina tu base de datos a cualquier segundo de la última semana. Cuesta $100 al mes sobre Pro y solo cubre la base.","2026-09-13","\u002Fblog\u002Fsupabase-point-in-time-recovery\u002Fcard-800x500.png",{"path":441,"title":5,"description":408,"published":442,"category":405,"image":429,"draft":409},{"path":627,"title":628,"description":629,"published":630,"category":458,"image":631,"draft":409},"\u002Fblog\u002Fsafest-ai-app-builder","¿Qué builder de apps con IA es más seguro? 30.998 apps escaneadas","¿Qué builder de apps con IA es más seguro? Escaneamos 30.998 apps activas de Lovable, Base44, Replit, v0 y Bolt. El builder no es lo que decide tu nota.","2026-09-11","\u002Fblog\u002Fsafest-ai-app-builder\u002Fcard-800x500.png",{"path":633,"title":634,"description":635,"published":636,"category":458,"image":637,"draft":409},"\u002Fblog\u002Fenable-rls-on-every-supabase-table","Activa Row Level Security en cada tabla de Supabase y compruébalo","Activar Row Level Security en Supabase sin política cierra la tabla del todo. Una política sin el interruptor no hace nada. Aquí tienes el SQL y la prueba.","2026-09-10","\u002Fblog\u002Fenable-rls-on-every-supabase-table\u002Fcard-800x500.png",{"path":639,"title":640,"description":641,"published":642,"category":458,"image":643,"draft":409},"\u002Fblog\u002Fsupabase-rls-disabled-in-public","Supabase \"RLS disabled in public\": lo que el aviso no ve","Supabase marca \"RLS disabled in public\" como error. No dice nada de la política de lectura que deja tu tabla igual de abierta a cualquiera.","2026-09-09","\u002Fblog\u002Fsupabase-rls-disabled-in-public\u002Fcard-800x500.png",{"path":645,"title":646,"description":647,"published":648,"category":458,"image":649,"draft":409},"\u002Fblog\u002Frotate-supabase-service-role-key","Cómo rotar una clave service_role de Supabase filtrada","Supabase dice que primero cierres la fuga. Otras guías dicen que rotes ya. Cuál es lo correcto depende de dónde se filtró tu clave service_role.","2026-09-08","\u002Fblog\u002Frotate-supabase-service-role-key\u002Fcard-800x500.png",{"path":651,"title":652,"description":653,"published":654,"category":458,"image":655,"draft":409},"\u002Fblog\u002Fvibe-coding-security-scanners-compared","Escáneres de seguridad vibe coding comparados, el nuestro incluido","El mejor escáner de seguridad para vibe coding depende de tres preguntas que ninguna lista de funciones responde. Diez herramientas, con precios.","2026-09-07","\u002Fblog\u002Fvibe-coding-security-scanners-compared\u002Fcard-800x500.png",{"path":657,"title":658,"description":659,"published":660,"category":458,"image":661,"draft":409},"\u002Fblog\u002Fsupabase-security-checker","Supabase security checker: haz tú mismo las cinco comprobaciones","Un Supabase security checker lee tu app publicada en lugar de la configuración de tu proyecto. Estas son las cinco comprobaciones y cómo hacer cada una.","2026-09-06","\u002Fblog\u002Fsupabase-security-checker\u002Fcard-800x500.png",{"path":663,"title":664,"description":665,"published":666,"category":458,"image":667,"draft":409},"\u002Fblog\u002Fvibe-coding-security-scanner","Escáner de seguridad para vibe coding: qué se le escapa","Un escáner de seguridad para vibe coding lee tu app en vivo desde fuera. Qué cubre eso, las cuatro cosas que no puede ver y cómo leer el resultado.","2026-09-05","\u002Fblog\u002Fvibe-coding-security-scanner\u002Fcard-800x500.png",{"path":669,"title":670,"description":671,"published":672,"category":458,"image":673,"draft":409},"\u002Fblog\u002Fmissing-security-headers","Faltan cabeceras de seguridad: cuándo importa de verdad","Que falten cabeceras de seguridad es el hallazgo que más imprime nuestro escáner. Contra qué protegen y cuándo son la línea menos urgente de tu informe.","2026-09-04","\u002Fblog\u002Fmissing-security-headers\u002Fcard-800x500.png",{"path":675,"title":676,"description":677,"published":678,"category":458,"image":679,"draft":409},"\u002Fblog\u002Fopenai-api-key-exposed-in-frontend","Tu clave de API de OpenAI está expuesta en tu frontend. Rótala.","Una clave de API de OpenAI expuesta en tu frontend no se puede atar a un dominio. Rótala hoy, mueve la llamada a tu servidor y limita el gasto.","2026-09-03","\u002Fblog\u002Fopenai-api-key-exposed-in-frontend\u002Fcard-800x500.png",{"path":681,"title":682,"description":683,"published":684,"category":458,"image":685,"draft":409},"\u002Fblog\u002Fwhat-secrets-leak-from-vibe-coded-apps","Clave de API expuesta en el frontend: qué llevan 30.998 apps","Una clave de API expuesta en tu frontend suele ser una clave de Google Maps. Escaneamos 30.998 apps vibe-coded y contamos qué secretos se filtran de verdad.","2026-09-02","\u002Fblog\u002Fwhat-secrets-leak-from-vibe-coded-apps\u002Fcard-800x500.png",{"path":687,"title":688,"description":689,"published":690,"category":405,"image":691,"draft":409},"\u002Fblog\u002Fsupabase-backup-tools-compared","Herramientas de backup de Supabase comparadas, la nuestra incluida","Cuatro tipos de herramienta de backup de Supabase, qué copia cada una y cuándo una GitHub Action gratuita le gana a pagar a cualquiera, nosotros incluidos.","2026-09-01","\u002Fblog\u002Fsupabase-backup-tools-compared\u002Fcard-800x500.png",{"path":693,"title":694,"description":695,"published":696,"category":458,"image":697,"draft":409},"\u002Fblog\u002Freplit-secrets-explained","Cómo usar secrets en Replit, y qué se publica de todos modos","Cómo usar secrets en Replit: añadir uno, leerlo y arreglar las dos causas del undefined. Y las claves que la herramienta Secrets no puede mantener privadas.","2026-08-31","\u002Fblog\u002Freplit-secrets-explained\u002Fcard-800x500.png",{"path":254,"title":699,"description":700,"published":701,"category":405,"image":702,"draft":409},"Backups del plan gratuito de Supabase: cómo hacer uno sin terminal","No hay backups en el plan gratuito de Supabase: la copia tienes que hacerla tú. Cómo sacarla desde el panel y qué deja fuera la vía CSV.","2026-08-30","\u002Fblog\u002Fback-up-supabase-free-tier\u002Fcard-800x500.png",{"path":704,"title":705,"description":706,"published":707,"category":458,"image":708,"draft":409},"\u002Fblog\u002Fis-supabase-secure","¿Supabase es seguro? Sí. Tu proyecto es otra pregunta","¿Supabase es seguro? La plataforma está auditada, cifrada y sometida a pentests. Su propia documentación dice dónde termina eso y empiezan tus ajustes.","2026-08-29","\u002Fblog\u002Fis-supabase-secure\u002Fcard-800x500.png",{"path":710,"title":711,"description":712,"published":713,"category":458,"image":714,"draft":409},"\u002Fblog\u002Fwhere-to-find-supabase-api-keys","Dónde están tus claves API de Supabase: anon, service_role y URL","La URL del proyecto, la clave anon y la clave service_role están en una sola página del panel. Aquí tienes dónde está, y cuál de los cuatro va en tu app.","2026-08-28","\u002Fblog\u002Fwhere-to-find-supabase-api-keys\u002Fcard-800x500.png",{"path":716,"title":717,"description":718,"published":719,"category":458,"image":720,"draft":409},"\u002Fblog\u002Fnew-row-violates-row-level-security-policy","New row violates row-level security policy en Supabase. ¿Y ahora?","\"New row violates row-level security policy\" significa que Supabase rechazó una escritura. El arreglo rápido vuelve a abrir la tabla para cualquiera.","2026-08-27","\u002Fblog\u002Fnew-row-violates-row-level-security-policy\u002Fcard-800x500.png",{"path":722,"title":723,"description":724,"published":725,"category":458,"image":726,"draft":409},"\u002Fblog\u002Fcors-wildcard-security-risk","¿Es un comodín CORS un riesgo de seguridad? Casi nunca.","¿Es un comodín CORS un riesgo de seguridad? Casi siempre es el ajuste por defecto de tu builder y no entrega nada que tu servidor no diera ya a cualquiera.","2026-08-26","\u002Fblog\u002Fcors-wildcard-security-risk\u002Fcard-800x500.png",{"path":728,"title":729,"description":730,"published":731,"category":405,"image":732,"draft":409},"\u002Fblog\u002Fsupabase-branching-is-not-a-backup","Supabase branching no es un backup. Solo va hacia adelante.","Por qué el branching de Supabase no es un backup: una rama arranca sin tus datos y un merge solo mueve el esquema. Para qué sirve y qué usar en su lugar.","2026-08-25","\u002Fblog\u002Fsupabase-branching-is-not-a-backup\u002Fcard-800x500.png",{"path":734,"title":735,"description":736,"published":737,"category":405,"image":738,"draft":409},"\u002Fblog\u002Fhow-to-restore-a-supabase-backup","Cómo restaurar un backup de Supabase, y qué se rompe después","Cómo restaurar un backup de Supabase desde el panel o desde un archivo de volcado, qué reemplaza la restauración y por qué tu app puede seguir rota al terminar.","2026-08-24","\u002Fblog\u002Fhow-to-restore-a-supabase-backup\u002Fcard-800x500.png",{"path":740,"title":741,"description":742,"published":743,"category":458,"image":744,"draft":409},"\u002Fblog\u002Fsupabase-storage-bucket-public","Tu bucket de Supabase Storage es público. ¿Es un problema?","Un bucket público de Supabase Storage significa que quien tenga la URL de un archivo puede abrirlo. No significa que alguien pueda listar lo que hay dentro.","2026-08-23","\u002Fblog\u002Fsupabase-storage-bucket-public\u002Fcard-800x500.png",{"path":746,"title":747,"description":748,"published":749,"category":458,"image":750,"draft":409},"\u002Fblog\u002Fgoogle-api-key-exposed-in-frontend","¿Es un problema una clave de API de Google en tu frontend?","Una clave de API de Google en tu frontend es la clave que más encuentra nuestro escáner, y casi siempre no pasa nada. Un ajuste gratuito decide cuál es cuál.","2026-08-22","\u002Fblog\u002Fgoogle-api-key-exposed-in-frontend\u002Fcard-800x500.png",{"path":752,"title":753,"description":754,"published":755,"category":405,"image":756,"draft":409},"\u002Fblog\u002Fai-agent-deleted-my-database","Un agente de IA borró mis datos de Supabase. ¿Qué puedo recuperar?","Un agente de IA borró datos de tu base. Lo que puedes recuperar ya estaba decidido antes de que se ejecutara, y los próximos minutos deciden el resto.","2026-08-21","\u002Fblog\u002Fai-agent-deleted-my-database\u002Fcard-800x500.png",{"path":758,"title":759,"description":760,"published":761,"category":458,"image":762,"draft":409},"\u002Fblog\u002Fcan-anyone-read-your-supabase-database","¿Puede cualquiera leer tu base de datos Supabase? 3.680 apps","¿Puede cualquiera leer tu base de datos Supabase sin iniciar sesión? Escaneamos 30.998 apps activas hechas con builders de IA y medimos cuántas dicen que sí.","2026-08-18","\u002Fblog\u002Fcan-anyone-read-your-supabase-database\u002Fcard-800x500.png",{"path":764,"title":765,"description":766,"published":761,"category":458,"image":767,"draft":409},"\u002Fblog\u002Fsource-maps-exposed-in-production","Source maps expuestos: tu app está publicando su código original","Un source map expuesto deja que cualquiera lea el código original de tu app, comentarios incluidos. La comprobación de 30 segundos y lo que de verdad importa.","\u002Fblog\u002Fsource-maps-exposed-in-production\u002Fcard-800x500.png",{"path":95,"title":769,"description":770,"published":771,"category":458,"image":772,"draft":409},"Las nuevas claves de API de Supabase: ¿cuál va en tu app?","Supabase sustituyó anon y service_role por claves publicables y secretas. ¿Cuál pertenece a tu app y cuál no debe estar nunca?","2026-08-12","\u002Fblog\u002Fsupabase-new-api-keys\u002Fcard-800x500.png",{"path":243,"title":774,"description":775,"published":776,"category":405,"image":777,"draft":409},"¿Supabase respalda mi base de datos? Depende de tu plan.","¿Supabase respalda tu base de datos? A diario en los planes de pago, y nada en el gratuito. Cómo saber cuál tienes y qué es lo que esa copia no cubre.","2026-08-11","\u002Fblog\u002Fdoes-supabase-back-up-my-database\u002Fcard-800x500.png",{"path":779,"title":780,"description":781,"published":782,"category":458,"image":783,"draft":409},"\u002Fblog\u002Fsupabase-rls-on-but-table-still-public","Supabase Row Level Security está activado. Tu tabla sigue pública.","Activar Supabase Row Level Security no protege una tabla. Lo hacen tus políticas, y la que arregló tu app rota puede dejar entrar a cualquiera.","2026-08-10","\u002Fblog\u002Fsupabase-rls-on-but-table-still-public\u002Fcard-800x500.png",{"path":785,"title":786,"description":787,"published":782,"category":405,"image":788,"draft":409},"\u002Fblog\u002Fversion-history-is-not-a-backup","El historial de versiones no es un backup. No recupera una tabla.","Lovable y Bolt guardan un historial de versiones de tu código. Tu base de datos es un servicio aparte, y volver atrás no te devuelve tus datos.","\u002Fblog\u002Fversion-history-is-not-a-backup\u002Fcard-800x500.png",{"path":259,"title":790,"description":791,"published":792,"category":405,"image":793,"draft":409},"Tres formas de respaldar una base Supabase, y qué falta en cada una","El panel, pg_dump y un servicio gestionado. Qué guarda de verdad cada uno, qué deja fuera sin avisar y cuál sobrevive a perder la cuenta.","2026-08-09","\u002Fblog\u002Fthree-ways-to-back-up-a-supabase-database\u002Fcard-800x500.png",{"path":795,"title":796,"description":797,"published":792,"category":458,"image":798,"draft":409},"\u002Fblog\u002Fwhich-api-keys-are-safe-in-your-frontend","Qué claves de API son seguras en el navegador y cuáles no","Tu clave anon de Supabase está pensada para ser pública. Tu clave service_role no, y se salta todas las reglas que pongas. Cómo distinguirlas.","\u002Fblog\u002Fwhich-api-keys-are-safe-in-your-frontend\u002Fcard-800x500.png",1791618971546]