I thought @apollo13's suggestion solved some of the problems with overly generic serializers, for example, having to introspect serialized values and determine the type of what was serialized (since the hook specifies the type of each named variable).

So, for your solution regarding messages, the solution would be to subclass `SessionStorage`, call it `JSONSessionStorage`, and also one for `FallbackStorage` which has `storage_classes = (CookieStorage, JSONSessionStorage)` which handles JSON encoding? It seems like we still have the ugliness of settings that depend on one another (`MESSAGE_STORAGE` and `SESSION_SERIALIZER`), but overall, this does seem like a better separation of concerns. I don't have experience with 3rd party apps that make use of session storage, but it seems like they may be unlikely to expose such "storage APIs" around all their session usage which could be a drawback of this solution.

Please correct me if I'm misunderstanding what your proposal would look like.