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 appears that IndexedDB on iOS does not recycle it's storage at all, meaning that writing a small object (e.g. 2 KB) many, many times, will eventually use up the phone storage. I had a small app running for a day updating only 5 records (of a total of 5 records) that was written probably millions of times over the course of a day, and it ended up using 1.5 GB of reported storage use. For the test I used LokiJS as a wrapper over IndexedDB, but have verified the same behavior with IndexedDB API directly.
Anyone else seeing or experiencing similar behavior? Is there some API that can be called to make iOS release "unused storage" somehow?
Some more details on the issue here: techfort/LokiJS#620