Tests would run on all the clients and, since in my workspace the server was updated simultaneously, I could be more sure it would work.
Think python 2->3 or Angular 1->2. These types of changes do happen, and I bet they happen at Google. I don't think anyone is rewriting a downstream app when they make these changes. Most likely they are doing something like forking the library and renaming it, which is just another form of versioning.
https://isocpp.org/blog/2015/05/cppcon-2014-large-scale-refa...
It also encourages writing tools for automating this stuff. A big part of the motivation for polyup (https://github.com/PolymerLabs/polyup) was the fact that we'd be responsible for getting people to upgrade.