The quick and dirty solution to this is to have a client response handler that checks for a header set on responses to ensure its a compatible version, then prompt a page refresh if not.
It feels dirty because you’re not handling these issues silently. But it’s explicit, clear and it enables a consistent and performant experience.