Big overview of what's missing in Safari 7.1+ and iOS 8+ in terms of browser storage.
Updated May 25th 2016
IndexedDB onupgradeneeded not firing correctly in Safari/iOS 8Fixed in iOS 9IndexedDB transaction throw error for multiple object storeFixed in WebKit nightly!IndexedDB is deleting data when a PK is shared amongst two objectStoresfixed in iOS 9IndexedDB array index keys are concated across cursor lifetimefixed in iOS 9Add ObjectStore Blob Support for IndexedDBFixed in WebKit Nightly!indexeddb versionchange event not firedFixed in WebKit Nightly!IndexedDB does not throw ConstraintErrors for unique keysFixed in WebKit Nightly!IndexedDB openKeyCursor() returns primaryKeys in wrong orderFixed in WebKit Nightly!IndexedDB is not available in a web workerFixed in WebKit Nightly!
window.indexedDB, IDBCursor and IDBKeyRange should be undefined when IndexedDB isn't availablefixed in iOS 9
WKWebView: openDatabase results in DOM Exception 18fixed in WebKit nightly!WKWebView: IndexedDB data doesn't survive an app relaunchbug in Cordova configuration, not WKWebView; see database-filler for working demo
In home screen WebApps websql do not response after standyby under IOS 8fixed in iOS 8.2openDatabase intermittently triggers SecurityError: DOM Exception 18 in Chrome on iOSfixed in latest Chrome regressed because of Chrome switching to WKWebView
- IndexedDB on iOS 8 – Broken Bad (see comments especially)
- PouchDB – Safari Madness
It turned out to be an insane bug still present in their latest technology preview: When having multiple object stores and querying an index of one store, you will also get matches for indexes on other stores.
cursor.key
shows values from the index of another store.cursor.value
shows random duplicate values from the store you are querying.Basically, if you have objectStores 'students' with an index 'name' and 'schools' with an index 'city', and you query the 'name' index on 'students' with no range specified (or WITH a range - it doesnt matter), you will get a cursor that iterates a mix of student names and cities. Each onsuccess callback from the cursor will have a key that sometimes is a student name and sometimes a city. The value though is always a student and some students are shown multiple times - one time with the name key and another time with a city key,
What's the easiest way to file this issue?