History API
Позволяет менять session history same-origin без перезагрузки документа:
pushState(state, title, url) — новая запись
replaceState(...) — заменить текущую
back() / forward() / go(n) — навигация по истории
Смена history сама не рендерит UI: обновите представление и слушайте popstate для кнопок Back/Forward.
history.pushState({ page: "profile" }, "", "/profile");
window.addEventListener("popstate", (e) => {
render(e.state);
});
SPA-смысл
Роутер держит URL и state в sync с экраном. title в современных браузерах часто игнорируется — title меняйте отдельно.
Итог: History API = URL/история без reload; контент обновляете вы + popstate.