[{"data":1,"prerenderedAt":419},["ShallowReactive",2],{"blog-es-supabase-new-api-keys":3},{"id":4,"title":5,"body":6,"category":382,"cover":383,"coverAlt":383,"description":384,"draft":385,"extension":386,"faq":387,"image":400,"keywords":401,"meta":407,"navigation":408,"ogTitle":409,"path":410,"published":411,"seo":412,"stem":413,"tldr":414,"updated":411,"__hash__":418},"blog_es\u002Fblog\u002Fsupabase-new-api-keys.md","Las nuevas claves de API de Supabase: ¿cuál va en tu app?",{"type":7,"value":8,"toc":371},"minimark",[9,30,33,38,49,80,88,95,101,105,108,114,119,123,126,212,218,225,229,232,267,270,279,283,292,318,327,331,358],[10,11,12,13,17,18,21,22,25,26,29],"p",{},"Si has abierto tu panel de Supabase hace poco y has encontrado claves que\nempiezan por ",[14,15,16],"code",{},"sb_publishable_"," y ",[14,19,20],{},"sb_secret_"," donde antes estaban ",[14,23,24],{},"anon"," y\n",[14,27,28],{},"service_role",", no se ha roto nada. Supabase ha cambiado el nombre de sus claves\nde API, y el par que conocías está de salida.",[10,31,32],{},"El cambio es pequeño en lo que hace y grande en lo que evita. Las dos claves\nsiguen cumpliendo exactamente los dos trabajos de siempre. Lo nuevo es que ahora\nves cuál es cuál sin abrir nada.",[34,35,37],"h2",{"id":36},"qué-ha-cambiado-supabase-en-realidad","Qué ha cambiado Supabase en realidad",[10,39,40,41,48],{},"Supabase\n",[42,43,47],"a",{"href":44,"rel":45},"https:\u002F\u002Fsupabase.com\u002Fblog\u002Fjwt-signing-keys",[46],"nofollow","anunció las nuevas claves en julio de 2025",",\njunto con un cambio en cómo firma los tokens de sesión. Dos cosas sustituyeron a\notras dos:",[50,51,52,68],"ul",{},[53,54,55,56,60,61,64,65,67],"li",{},"La clave ",[57,58,59],"strong",{},"publicable",", ",[14,62,63],{},"sb_publishable_…",", sustituye a la clave ",[14,66,24],{},".",[53,69,70,71,60,74,77,78,67],{},"Las claves ",[57,72,73],{},"secretas",[14,75,76],{},"sb_secret_…",", sustituyen a la clave ",[14,79,28],{},[10,81,82,83,87],{},"Los permisos no cambian. Una clave publicable sigue identificando tu proyecto y\nno lleva permisos propios; una secreta sigue saltándose todas las reglas que has\nescrito. Si ya sabes\n",[42,84,86],{"href":85},"\u002Fblog\u002Fwhich-api-keys-are-safe-in-your-frontend","qué claves son seguras en un frontend",",\nnada de esa intuición ha quedado obsoleta.",[10,89,90,91,94],{},"Merece la pena conocer dos diferencias prácticas. Puedes tener ",[57,92,93],{},"varias"," claves\nsecretas a la vez y revocarlas de una en una, así que rotar una clave ya no\nimplica un momento en el que se rompe todo lo que la usaba. Y las claves\nantiguas tenían una propiedad que casi nadie notó: eran JWT que caducan diez\naños después de crear el proyecto. Las nuevas no llevan caducidad dentro.",[96,97],"diagram",{"alt":98,"caption":99,"src":100},"Dos claves dibujadas una encima de la otra. La antigua son tres bloques separados por puntos, con el del medio abierto para mostrar la palabra role. La nueva es una sola cadena, con su primera palabra sb guion bajo secret resaltada al principio.","Los mismos dos trabajos, dos formas distintas. En el par antiguo el rol está enterrado en el medio; en el nuevo es lo primero que lees.","\u002Fblog\u002Fsupabase-new-api-keys\u002Ftwo-key-formats-1600x640.png",[34,102,104],{"id":103},"cuál-de-las-dos-pertenece-a-tu-app","Cuál de las dos pertenece a tu app",[10,106,107],{},"La publicable, y solo la publicable.",[10,109,110,111,113],{},"Tu app se ejecuta en el navegador de tu visitante, y la petición a tu base de\ndatos sale desde ahí. Tiene que decir a qué proyecto pertenece, y ese\nidentificador llega a cada visitante por diseño. ",[14,112,63],{}," es la clave\nconstruida para eso: encontrarla en tu app no es un hallazgo, y nunca lo fue.",[10,115,116,118],{},[14,117,76],{}," es lo contrario. Lee y escribe cada fila de cada tabla desde donde\nsea, ignorando por completo tus políticas, que es justo su propósito. Su sitio es\nun servidor, una edge function, un worker: ningún lugar al que llegue un\nnavegador. Si alguna vez se ha pegado una en el código del frontend, renuévala en\nel panel antes de tocar nada más, porque borrar la línea no cierra la puerta.",[34,120,122],{"id":121},"cómo-saber-cuál-tienes","Cómo saber cuál tienes",[10,124,125],{},"Lee los primeros caracteres. Esa es ya toda la comprobación.",[127,128,129,145],"table",{},[130,131,132],"thead",{},[133,134,135,139,142],"tr",{},[136,137,138],"th",{},"Lo que ves",[136,140,141],{},"Qué es",[136,143,144],{},"¿Segura en el navegador?",[146,147,148,165,180,197],"tbody",{},[133,149,150,155,158],{},[151,152,153],"td",{},[14,154,63],{},[151,156,157],{},"clave publicable actual",[151,159,160],{},[161,162,164],"key-verdict",{"type":163},"safe","Su sitio",[133,166,167,171,174],{},[151,168,169],{},[14,170,76],{},[151,172,173],{},"clave secreta actual",[151,175,176],{},[161,177,179],{"type":178},"danger","Nunca",[133,181,182,190,193],{},[151,183,184,187,188],{},[14,185,186],{},"eyJ…"," con ",[14,189,24],{},[151,191,192],{},"clave publicable antigua",[151,194,195],{},[161,196,164],{"type":163},[133,198,199,205,208],{},[151,200,201,187,203],{},[14,202,186],{},[14,204,28],{},[151,206,207],{},"clave secreta antigua",[151,209,210],{},[161,211,179],{"type":178},[10,213,214,215,67],{},"Una clave actual es una cadena larga en dos mitades: un centro aleatorio y una\nsuma de verificación corta al final. Una clave antigua son tres bloques\nseparados por puntos, y el del medio es texto legible en vez de cifrado, y por eso\ndistinguir el par antiguo pasaba por descodificarlo y leer el campo ",[14,216,217],{},"role",[10,219,220,221,67],{},"Si encuentras una clave en tu app y no sabes cuál es, nuestro escaneo gratuito\nlee tu web en vivo desde fuera y nombra lo que puede ver. Tarda unos 20 segundos\ny no necesita cuenta: ",[42,222,224],{"href":223},"\u002F#scan","escanea tu app",[34,226,228],{"id":227},"mis-claves-anon-y-service_role-antiguas-siguen-funcionando","¿Mis claves anon y service_role antiguas siguen funcionando?",[10,230,231],{},"Hoy sí. Supabase ha publicado un calendario, no un interruptor:",[127,233,234,244],{},[130,235,236],{},[133,237,238,241],{},[136,239,240],{},"Cuándo",[136,242,243],{},"Qué pasa",[146,245,246,259],{},[133,247,248,251],{},[151,249,250],{},"1 de noviembre de 2025",[151,252,253,254,256,257,67],{},"Los proyectos restaurados después de esa fecha ya no reciben ",[14,255,24],{}," ni ",[14,258,28],{},[133,260,261,264],{},[151,262,263],{},"Finales de 2026, sin fecha fija",[151,265,266],{},"Todos los proyectos tendrán que usar las claves nuevas.",[10,268,269],{},"Así que no hay emergencia esta semana, y sí hay una fecha límite este año. Si tu\napp se construyó antes del cambio de nombre y no se ha tocado desde entonces,\nahora mismo funciona con claves antiguas y seguirá haciéndolo un tiempo.",[10,271,272,273,275,276,278],{},"El motivo para moverse pronto no es la fecha límite. Es el día en que alguien\npega la clave equivocada en un prompt: ",[14,274,20],{}," se delata, ",[14,277,186],{}," no.",[34,280,282],{"id":281},"cómo-cambiar-sin-romper-tu-app","Cómo cambiar sin romper tu app",[10,284,285,286,291],{},"La ",[42,287,290],{"href":288,"rel":289},"https:\u002F\u002Fsupabase.com\u002Fdocs\u002Fguides\u002Fgetting-started\u002Fmigrating-to-new-api-keys",[46],"guía de migración","\nde Supabase es la referencia. La versión corta, para una app que no escribiste a\nmano:",[293,294,295,302,305,312,315],"ol",{},[53,296,297,298,301],{},"En el panel, abre ",[57,299,300],{},"Settings → API Keys"," y crea las claves nuevas. Eso las\nañade; no quita las antiguas, y los dos pares funcionan a la vez.",[53,303,304],{},"Busca dónde crea tu app su cliente de Supabase y sustituye la clave\npublicable. En un builder como Lovable o Bolt suele ser un valor en los\najustes del proyecto y no una línea de código.",[53,306,307,308,311],{},"Sustituye la clave secreta allí donde se use ",[57,309,310],{},"en un servidor",": edge\nfunctions, webhooks, tareas programadas, cualquier cosa que no sea el\nnavegador.",[53,313,314],{},"Carga tu app y recorre las partes que leen y escriben datos. Una clave\npublicable equivocada falla de inmediato y en voz alta, que es el caso bueno.",[53,316,317],{},"Solo cuando todo funcione, desactiva las claves antiguas.",[10,319,320,321,323,324,326],{},"El paso 5 es el que hay que dejar para el final, y conviene hacerlo a propósito\nen vez de nunca: los proyectos a medio migrar, donde la app todavía lleva una\nclave ",[14,322,24],{}," vieja junto a una ",[14,325,16],{}," viva, son comunes y confusos de\ndepurar.",[34,328,330],{"id":329},"qué-hacer-esta-semana","Qué hacer esta semana",[332,333,334],"key-takeaways",{},[50,335,336,339,348,351],{},[53,337,338],{},"Abre Settings → API Keys y mira qué pares tiene tu proyecto. Es un minuto y te dice en qué punto estás.",[53,340,341,342,344,345,347],{},"Si encuentras ",[14,343,76],{}," o ",[14,346,28],{}," en cualquier parte del código del frontend, renuévala hoy. Es el único punto urgente de esta lista.",[53,349,350],{},"Crea las claves nuevas y pasa tu app cuando tengas media hora, no por la fecha límite sino porque el prefijo hace obvio el próximo error.",[53,352,353,354,67],{},"Aprovecha para mirar Row Level Security. La clave nueva no cambia nada de lo que permiten tus políticas, y ",[42,355,357],{"href":356},"\u002Fblog\u002Fsupabase-rls-on-but-table-still-public","activar RLS no es lo mismo que estar protegido",[10,359,360,361,365,366,370],{},"Si quieres la versión concreta de qué revisar en tu plataforma, tenemos una guía\nen lenguaje claro para ",[42,362,364],{"href":363},"\u002Fis-your-supabase-app-safe","apps con Supabase",", y la\n",[42,367,369],{"href":368},"\u002Fchecklist","lista de seguridad en 10 minutos"," cubre esto junto a las demás\ncosas que conviene desactivar en una app recién lanzada.",{"title":372,"searchDepth":373,"depth":373,"links":374},"",3,[375,377,378,379,380,381],{"id":36,"depth":376,"text":37},2,{"id":103,"depth":376,"text":104},{"id":121,"depth":376,"text":122},{"id":227,"depth":376,"text":228},{"id":281,"depth":376,"text":282},{"id":329,"depth":376,"text":330},"Fundamentos de seguridad",null,"Supabase sustituyó anon y service_role por claves publicables y secretas. ¿Cuál pertenece a tu app y cuál no debe estar nunca?",false,"md",[388,391,394,397],{"q":389,"a":390},"¿sb_publishable_ es lo mismo que la clave anon?","Hace el mismo trabajo. Nombra tu proyecto para que una petición sepa a dónde ir, no lleva permisos propios y está pensada para vivir en tu app, donde cualquiera puede leerla. Lo que protege tus datos en ambos casos es Row Level Security, no la clave.",{"q":392,"a":393},"¿Mis claves anon y service_role siguen funcionando?","Sí, hoy. Supabase las ha mantenido en marcha durante la migración y puedes tener los dos pares a la vez. Lo anunciado es que a finales de 2026 todos los proyectos deberán pasar a las nuevas claves, sin fecha exacta todavía.",{"q":395,"a":396},"Tengo los dos pares en el panel. ¿Cuál debe usar mi app?","La publicable, sb_publishable_. El cambio es de una línea: sustituye la clave que tu app pasa cuando crea el cliente de Supabase. Nada cambia en tus tablas ni en tus políticas, porque la clave nueva tiene exactamente los permisos que tenía la anon.",{"q":398,"a":399},"¿El nuevo formato hace mi app más segura por sí solo?","No. Hace que la clave peligrosa se vea a simple vista, y eso vale dinero en errores no cometidos, pero una clave publicable sigue leyendo todo lo que tus políticas le permitan. Si Row Level Security está apagado, la clave nueva abre tu base de datos exactamente igual de par en par que la antigua.","\u002Fblog\u002Fsupabase-new-api-keys\u002Fcard-800x500.png",[402,403,404,405,406],"nuevas claves api supabase","clave sb_publishable","clave sb_secret","clave anon supabase obsoleta","migración claves api supabase",{},true,"Las nuevas claves de API de Supabase, explicadas","\u002Fblog\u002Fsupabase-new-api-keys","2026-08-12",{"title":5,"description":384},"blog\u002Fsupabase-new-api-keys",[415,416,417],"Supabase ahora emite claves sb_publishable_ y sb_secret_. Sustituyen a anon y service_role y hacen exactamente los mismos dos trabajos.","La clave publicable pertenece a tu app. La secreta nunca, y ahora las distingues leyendo los primeros caracteres.","Tus claves antiguas siguen funcionando hoy. Supabase ha dicho que todos los proyectos tendrán que dejarlas a finales de 2026.","i-_iEKvOl6lAdGB_ZQae6oHU4i9TMxPaB3qwRwZnIsc",1787826048206]