While there are some legitimate bugs and differences in state handling even in modern browsers, they are relatively small enough now that you can just use the native HTML5 History API. If you intend to support legacy browsers, then History.js is your bet. This notice is here as History.js does not receive enough funding to be maintained, so it exists only in legacy condition for legacy browsers. P