# browserstate/history.js

History.js gracefully supports the HTML5 History/State APIs (pushState, replaceState, onPopState) in all browsers. Including continued support for data, titles, replaceState. Supports jQuery, MooTools and Prototype.  For HTML5 browsers this means that you can modify the URL directly, without needing to use hashes anymore. For HTML4 browsers it will revert back to using the old onhashchange functionality.

Repository: https://github.com/browserstate/history.js
Canonical: https://ross.abutalabs.com/products/historyjs
Homepage: http://browserstate.github.com/history.js/demo/
Language: JavaScript
License: NOASSERTION
License Family: other
Topics: html5-history-api, html5-history, javascript, polyfill, hashchange
Last push: 2022-02-12T07:34:30+00:00

## Health v2 (maintenance only)
Score: 32/100 (v2, computed 2026-09-02T17:46:02.011165+00:00)
- activity 0, release rhythm 35, longevity 100
- inputs: {"age_days": 5704, "days_push": 1663, "days_rel": null, "gap_med": null, "n_releases_24m": 0}
- flags: no_releases, no_license
- formula: round(0.45*activity + 0.35*rhythm + 0.20*longevity); archived -> min(score, 10)

## Adoption (not part of the score)
Stars 10654, forks 1302 (observed 2026-08-28T04:10:43.673836+00:00)

## What it is
History.js is a JavaScript library that provides a normalized wrapper around the HTML5 History/State APIs (pushState, replaceState, onPopState) across all browsers, falling back to hashchange-based behavior in HTML4 browsers. It supports adapters for jQuery, MooTools, and Prototype and is now maintained only in a legacy/archival condition.

## Use cases
- normalize browser history APIs across browsers
- support pushState in legacy HTML4 browsers
- manage client-side routing state without page reloads
- handle back/forward button navigation in single-page apps
- modify the URL without hashes in older browsers

## When to choose
- you must support legacy HTML4 browsers that lack native pushState
- you need consistent history behavior across very old browser versions
- you are maintaining an existing codebase already built on History.js

## When to avoid
- you target only modern browsers - use the native HTML5 History API instead
- you need an actively maintained library with ongoing bug fixes
- you are starting a new single-page application - modern frameworks have built-in routing

## Facets
- artifact type: library
- maturity: abandoned
- function: routing, state-management, middleware
- domain: web-development, frontend, browser-extensions
- platform: browser, cross-platform
- tags: polyfill, html5-history-api, pushstate, hashchange, jquery-plugin, legacy-browser-support, javascript

## Member repositories
- browserstate/history.js (main) score 32

## Provenance
- Observed fields: from GitHub, fetched 2026-08-28T04:10:43.673836+00:00.
- Health v2: computed from the inputs above; adoption is never an input.
- Inferred fields (summary, facets, guidance): AI-extracted, prompt v1, taxonomy v1, on 2026-08-29T17:18:12.961996+00:00, confidence not recorded.
  - readme: https://github.com/browserstate/history.js (fetched 2026-08-28T04:10:43.673836+00:00, sha 842174a348a7)
- Data as of 2026-08-30T08:39:29.467469+00:00.
