Este es el workaround documentado oficialmente para el bug conocido de navigator.locks colgándose en supabase-js v2
Some checks failed
/ Deploy to Cloudflare Pages (push) Has been cancelled

This commit is contained in:
2026-06-18 22:06:53 -03:00
parent c20624399c
commit 5141a5c06c

View File

@@ -1,4 +1,4 @@
import { createClient } from '@supabase/supabase-js' import { createClient, processLock } from '@supabase/supabase-js'
const supabaseUrl = import.meta.env.VITE_SUPABASE_URL const supabaseUrl = import.meta.env.VITE_SUPABASE_URL
const supabaseAnonKey = import.meta.env.VITE_SUPABASE_ANON_KEY const supabaseAnonKey = import.meta.env.VITE_SUPABASE_ANON_KEY
@@ -7,7 +7,16 @@ if (!supabaseUrl || !supabaseAnonKey) {
throw new Error('Variables de entorno VITE_SUPABASE_URL y VITE_SUPABASE_ANON_KEY son requeridas') throw new Error('Variables de entorno VITE_SUPABASE_URL y VITE_SUPABASE_ANON_KEY son requeridas')
} }
export const supabase = createClient(supabaseUrl, supabaseAnonKey) export const supabase = createClient(supabaseUrl, supabaseAnonKey, {
auth: {
// Por defecto supabase-js v2 usa navigator.locks para coordinar refresh de sesión entre tabs.
// Si una tab queda colgada o se cierra sin liberar el lock, getSession()/queries quedan
// esperando ese lock para siempre. processLock usa coordinación solo en memoria (sin
// navigator.locks) — evita el deadlock a costa de no sincronizar refresh entre tabs,
// lo cual es aceptable para este producto (uso mayormente single-tab).
lock: processLock,
},
})
// supabase.auth.getSession() puede colgarse indefinidamente si el cliente queda // supabase.auth.getSession() puede colgarse indefinidamente si el cliente queda
// esperando un lock interno (navigator.locks) que nunca se libera. Esta barrera // esperando un lock interno (navigator.locks) que nunca se libera. Esta barrera