Safari on macOS Big Sur 11.4 and iOS 14.6 has a nasty bug where IndexedDB requests get lost and never resolve.
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 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 some different builds:
dist/cjs/index.js
CommonJS module.dist/cjs-compat/index.js
CommonJS module, transpiled for older browsers.dist/esm/index.js
EcmaScript module.dist/esm-compat/index.js
EcmaScript module, transpiled for older browsers.dist/iife/index-min.js
Minified plain JS, which creates anidbReady
global.dist/iife-compat/index-min.js
As above, but transpiled for older browsers.