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.jsEcmaScript module.safari-14-idb-fix/dist/index.cjsCommonJS module.safari-14-idb-fix/dist/iife.min.jsMinified plain JS, which creates anidbReadyglobal.