My solution to this problem is to make a singleton service, and have that reach into the clients [session storage, local storage, cookies, whatever], perhaps applying a timeout, depending on the lifetime you need.
The singleton service is mostly just a dictionary. When you want some dat , it looks up a guid key which is in the client storage you elected.
This approach works the same on all Blazor modes and is resistant to page refreshes and lost connections, depending on your client GUID storage mechanism. It also doesn't require you to store data in the browser other than that GUID.
Of course, this is only for transient data storage. Its main benefit is to get around the issue of lots of "scoped" instances.