# reduxjs/reselect

**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/reduxjs-reselect).**

19,032 stars · 661 forks · TypeScript · MIT

## Links

- GitHub: https://github.com/reduxjs/reselect
- awesome-repositories: https://awesome-repositories.com/repository/reduxjs-reselect.md

## Topics

`memoized-selectors` `redux`

## Description

Reselect is a state management optimization tool and memoization utility designed to minimize redundant calculations and UI re-renders. It functions as a library for creating memoized selectors that derive specific data from a state store.

The library implements input-based memoization and recursive selector composition to create a hierarchy of derived data dependencies. It ensures reference-stable result caching and provides custom equality checking to determine when a cache should be invalidated.

The project covers capabilities for derived data computation, frontend performance optimization, and selector stability validation to identify unstable behavior during development.

## Tags

### Software Engineering & Architecture

- [Memoization Caches](https://awesome-repositories.com/f/software-engineering-architecture/memoization-caches.md) — Caches function results and returns them if input arguments remain identical to previous calls.
- [Composable Selector Pipelines](https://awesome-repositories.com/f/software-engineering-architecture/composable-architectures/composable-selector-pipelines.md) — Implements chains of memoized selectors where downstream computations execute only when upstream dependencies change.
- [Memoization Utilities](https://awesome-repositories.com/f/software-engineering-architecture/memoization-utilities.md) — A utility that caches expensive computation results based on inputs to optimize component lifecycles.
- [Redux Implementations](https://awesome-repositories.com/f/software-engineering-architecture/redux-implementations.md) — Optimizes the retrieval of data from a centralized immutable store to prevent redundant calculations.
- [State Selectors](https://awesome-repositories.com/f/software-engineering-architecture/redux-implementations/state-selectors.md) — Provides a framework for creating stable and efficient functions to extract and format state slices.
- [Custom Memoization Rules](https://awesome-repositories.com/f/software-engineering-architecture/performance-reliability/performance-optimization/caching-memoization/custom-memoization-rules.md) — Allows developers to define custom equality functions to control when memoized values are invalidated. ([source](https://cdn.jsdelivr.net/gh/reduxjs/reselect@master/README.md))
- [Value-Based Equality Checking](https://awesome-repositories.com/f/software-engineering-architecture/value-based-equality-checking.md) — Provides mechanisms to invalidate caches using structural value comparison instead of simple reference checks.

### Data & Databases

- [Reference-Stable Caches](https://awesome-repositories.com/f/data-databases/key-value-stores/response-caching/computational-result-caching/reference-stable-caches.md) — Ensures the same object reference is returned when output has not changed to prevent unnecessary downstream re-renders.

### Web Development

- [Derived State](https://awesome-repositories.com/f/web-development/derived-state.md) — Calculates new values from raw state and caches them until the underlying input data changes.
- [State Selectors](https://awesome-repositories.com/f/web-development/derived-state/state-selectors.md) — Provides a library for creating memoized selectors that derive specific data from a global state store.
- [Recursive Compositions](https://awesome-repositories.com/f/web-development/derived-state/state-selectors/recursive-compositions.md) — Allows selectors to be nested and chained together to manage complex derived data dependencies.
- [Memoized Derivations](https://awesome-repositories.com/f/web-development/memoized-derivations.md) — Caches computed results and triggers recalculations only when reactive input values change. ([source](https://cdn.jsdelivr.net/gh/reduxjs/reselect@master/README.md))
- [Frontend Performance Optimization](https://awesome-repositories.com/f/web-development/frontend-performance-optimization.md) — Reduces the frequency of expensive data transformations and UI updates through strategic memoization.
- [State Optimization Tools](https://awesome-repositories.com/f/web-development/state-optimization-tools.md) — Reduces redundant calculations in application state by tracking dependencies and invalidating caches only when needed.
