@manton Yeah, the storage eviction in Safari is frustrating. You might have some luck with the Storage API and navigator.storage.persist(). It's not guaranteed, though.

Origin might be excluded from eviction if it has active page at the time of eviction, or its storage is in persistent mode. By default, all origins use a best-effort mode, which means their persistence is not guaranteed and their data can be evicted. An origin can request persistent mode using the Storage API introduced below.

From Updates to Storage Policy on the WebKit blog.