Safari on macOS Big Sur 11.4 and iOS 14.6 has a nasty bug where IndexedDB requests get lost and never resolve. The issue was fixed in Safari 14.7.
This library (well, function) works around the issue and tells you when IndexedDB is actually available.
To install:
npm i safari-14-idb-fix
To use:
import idbReady from 'safari-14-idb-fix';
idbReady().then(() => {
// Safari has definitely figured out where IndexedDB is.
// You can use IndexedDB as usual.
});
A modern build tool will handle the above example fine, but if you need a specific build:
safari-14-idb-fix/dist/index.js
EcmaScript module.safari-14-idb-fix/dist/index.cjs
CommonJS module.safari-14-idb-fix/dist/iife.min.js
Minified plain JS, which creates anidbReady
global.