Convert ConvexCache into a fully synchronous API and use a boolean where necessary for localStorage