Open
Description
[REQUIRED] Describe your environment
- Operating System version: macOS 12.3
- Browser version: Chrome 100
- Firebase SDK version: 9.6.7
- Firebase Product: auth
[REQUIRED] Describe the problem
As described in https://web.dev/bfcache, the browsers' back/forward cache doesn't work when IndexedDB has an open connection. Currently, connections are opened here and then they're never closed:
They should be closed (db.close()
) immediately after used or when deleteApp()
is called.
As a workaround, I monkey patched window.indexedDB.open
to keep references to each connection so I can close them on pagehide
so bfcache works:
const open = window.indexedDB.open.bind(window.indexedDB)
const dbs = []
window.indexedDB.open = (...args) => {
const request = open(...args)
request.addEventListener('success', event => {
const db = event.target.result
dbs.push(db)
})
return request
}
window.addEventListener(
'pagehide',
() => {
for (const db of dbs) {
db.close()
}
},
{ capture: true },
)