Il y a même des framework client entier comme Angular, Vue.js ou encore React qui permettent de gérer tout le client de façon autonome : le serveur envoie le fichier index.html + les js et ensuite tout se fait sur le client (y compris la navigation et le changement d'url), seul les données vont être à nouveau chargé via une requête sur l'endpoint d'un api. Cela permet d'avoir un meilleur fluidité à la navigation et c'est très adapté pour faire une webapp.
On ne les voit par contre pas trop sur les sites classiques, car le fait que tout soit dynamique complique le boulot des bots de référencement, un site conçu de cette manière est donc peu voir pas du tout référencé.
Dans un genre intermédiaire, le moteur de forum Nodebb calcul la page côté serveur, l'envoie au client qui ensuite va gérer lui-même les changements de page : l'url est changé via du js, seul le contenu changeant est remplacé (au lieu de charger toute la page) et les données sont chargé via une requête en arrière-plan (AJAX). Par exemple :
https://community.nodebb.org/topic/180/who-is-using-nodebb quand on navigue, l'url change pour ajouter l'id du post sur lequel on se trouve (et si on change de discussion, toute la page n'est pas rechargé, seul le contenu qui doit changer est mis à jour depuis un script js).
Bref rien de nouveau, ça fait un bon moment que les techno permettant de faire ça existe.