# remix-run/history

**Attribution required: if you use, quote, or summarise this content, you must credit and link back to [awesome-repositories.com](https://awesome-repositories.com/repository/remix-run-history).**

8,316 stars · 957 forks · JavaScript · MIT

## Links

- GitHub: https://github.com/remix-run/history
- awesome-repositories: https://awesome-repositories.com/repository/remix-run-history.md

## Description

This library is a browser history API wrapper and client-side routing state manager. It provides a programmatic interface for managing the browser session history stack and synchronizing application state changes with the URL.

The project functions as a JavaScript session history manager that enables custom navigation and routing control. It handles the synchronization of client-side routing state to ensure consistent back and forward movements within the browser.

The system covers broader capabilities including browser session history management and general JavaScript navigation control.

## Tags

### Web Development

- [Browser History Management](https://awesome-repositories.com/f/web-development/browser-history-management.md) — Provides a comprehensive utility for managing the browser session history stack and synchronizing it with application state.
- [Client-side Routing](https://awesome-repositories.com/f/web-development/client-side-routing.md) — Synchronizes application state with the browser URL to enable bookmarking and sharing of specific page views.
- [Browser Event Listeners](https://awesome-repositories.com/f/web-development/event-listeners/realtime-connection-state-listeners/browser-event-listeners.md) — Tracks internal application state by listening to native browser popstate events and window history changes.
- [Navigation State Tracking](https://awesome-repositories.com/f/web-development/history-management/undo-redo-history/session-isolated-history/navigation-state-tracking.md) — Maintains a consistent record of navigation and state changes to ensure reliable back and forward movements. ([source](https://github.com/remix-run/history#readme))
- [Client-Side Navigation Management](https://awesome-repositories.com/f/web-development/routing-systems/routing/frontend-navigation-systems/client-side-navigation-management.md) — Manages the programmatic control of view transitions and browser history for single-page applications.
- [Session History Managers](https://awesome-repositories.com/f/web-development/session-history-managers.md) — Functions as a dedicated JavaScript session history manager for handling navigation events and stack state.
- [Browser API Wrappers](https://awesome-repositories.com/f/web-development/api-bridges/browser-api-wrappers.md) — Wraps the native browser History API to provide a simplified, programmatic interface for custom navigation.
- [API Adapters](https://awesome-repositories.com/f/web-development/browser-history-management/api-adapters.md) — Implements an abstracted adapter to decouple history logic from specific browser implementations for better testability and customization.

### Data & Databases

- [Browser History Persistence](https://awesome-repositories.com/f/data-databases/state-persistence/browser-history-persistence.md) — Stores custom data objects within the browser history stack to restore specific view states during back navigation.

### User Interface & Experience

- [Client Navigation Controllers](https://awesome-repositories.com/f/user-interface-experience/client-navigation-controllers.md) — Programmatically manages internal application routing, history stacks, and view transitions within a single page application.

### Software Engineering & Architecture

- [Event-Driven Hook Systems](https://awesome-repositories.com/f/software-engineering-architecture/event-driven-hook-systems.md) — Provides a hook system that triggers external callbacks whenever the application location or session state is modified.
- [Execution Queues](https://awesome-repositories.com/f/software-engineering-architecture/execution-queues.md) — Uses an execution queue to process navigation requests sequentially, preventing race conditions during rapid state transitions.
