Chrome local storage exceeded quota

  • 1
  • Problem
  • Updated 1 year ago
  • In Progress
  • (Edited)
Users were reporting that data wasn't being displayed. I researched and noticed that I was getting an error in the console (Attached). I lowered the query size on the model from 500 to 100 and the error stopped. Then I clicked load more on the table attached to that model and when I reached 300 the screen stopped responding and the attached error showed up in the console.

This error seems to be related to Chrome local storage and when testing the same UI in Safari I do not receive any errors. 

Skuid version 9.5.4

Photo of John De Santiago

John De Santiago

  • 736 Points 500 badge 2x thumb

Posted 2 years ago

  • 1
Photo of Zach McElrath

Zach McElrath, Employee

  • 52,256 Points 50k badge 2x thumb
Official Response

The root cause of this issue is with how Skuid is caching Record Type Picklist Dependency metadata --- and we're about to release a version of Skuid that should resolve this later this week.

For each Record Type on an object, there can be a different set of valid Picklist Values for each Picklist/Multi-Select Picklist field on that object. For Objects with lots of Record Types / lots of Picklist fields / lots of values on a given Picklist field, this can add up to a TON of metadata. Technically, since this metadata is not available in Apex, the only way for Skuid to access this metadata is via Salesforce API calls. For the optimum user experience, best performance, and to avoid burning through your API calls, Skuid caches the results of these Record Type picklist dependency metadata API calls in browser SessionStorage. SessionStorage is like LocalStorage in that it has a limited domain-specific storage quota, depending on the browser --- Chrome's quota is 5 MB per domain, and for Chrome it's a hard limit that can't be changed. If you attempt to populate more than 5 MB of metadata in local/session storage per domain, Chrome throws the error that your users are seeing.

This error is being thrown because Skuid is attempting to cache Record Type dependency metadata into SessionStorage, and it's being rejected, probably because there's already a ton of metadata in SessionStorage that Skuid's put there before.

SessionStorage, unlike LocalStorage, can be cleared out simply by having a user quit / close their browser window --- when that happens, everything in Session Storage is deleted for any domains that aren't open in another browser window. LocalStorage persists across browser and window closure.

In the next Millau Update 1 maintenance release, and in the Millau Update 2 point release coming out at the end of May, we've implemented some massive changes to how Skuid caches this metadata. We're massively compressing what we put in SessionStorage, reducing the total size of what's put into SessionStorage by > 90%. This should result in your users no longer experiencing these issues attempting to view pages where you've got Record Type dependent picklist fields, such as the Account Type field.