For function returns, the strongest matches are reduxjs/reselect (Reselect is a TypeScript memoization and derived-state library designed), angus-c/just (Just provides modular utility functions including memoization alongside data) and lodash/lodash (Lodash is a general-purpose utility library that provides some). sindresorhus/p-memoize and alexreardon/memoize-one round out the shortlist. Each is ranked by relevance to your query, popularity and recent activity.
Compare the top function execution tracers on GitHub, ranked by stars and activity, and find the right one for your debugging needs.
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 optimizatio
Reselect is a TypeScript memoization and derived-state library designed for optimizing state selectors, though it is tightly coupled to state management rather than general-purpose function caching.
Just is a collection of JavaScript utility libraries designed for data manipulation, functional programming, performance optimization, statistical analysis, and string processing. It provides a set of tools for deep cloning, filtering, and transforming complex objects and arrays. The project is structured as a series of zero-dependency modules, allowing utilities to be used independently to minimize bundle size. It implements functional programming patterns including currying, piping, and partial application, and provides execution control through memoization, debouncing, and throttling. The
Just provides modular utility functions including memoization alongside data manipulation and performance optimization tools, though it lacks specialized features like custom cache storage and automated invalidation.
Lodash is a JavaScript utility library and data manipulation toolkit. It provides a collection of modular functions for transforming, filtering, and validating arrays, objects, strings, and numbers. The project functions as a functional programming toolkit, offering capabilities for function composition, currying, and lazy evaluation. It includes mechanisms for execution control, such as debouncing and throttling, to manage the timing and frequency of function invocations. The library covers a broad surface of data operations, including deep cloning and merging of complex nested structures,
Lodash is a general-purpose utility library that provides some foundational building blocks like lazy evaluation and execution control, though it lacks dedicated memoization and caching features.
Memoize promise-returning & async functions
This TypeScript library provides function memoization specifically tailored for promise-returning and asynchronous functions, fulfilling the core caching and async requirements though lacking built-in custom storage or automatic invalidation features.
Memoize-one is a JavaScript function memoization library that stores function return values and serves them instantly on repeat calls with identical arguments to avoid redundant calculations. It retains only the single most recent argument set and return value, maintaining a constant and bounded memory footprint. The library features a shallow argument comparison engine and includes the runtime execution context alongside input arguments during comparison to ensure state and binding changes trigger fresh computations. Users can inject custom equality functions to override the default argumen
This TypeScript library provides function memoization tailored to remember only the latest invocation, missing advanced features like custom storage or asynchronous support but cleanly fitting the core category.
Fast-memoize.js is a JavaScript memoization library that caches function return values for identical arguments to speed up expensive execution in JavaScript applications. It operates as a caching utility that stores and retrieves function outputs by serializing input parameters into unique keys. The library optimizes execution through arity-based function specialisation, generating tailored internal call paths based on the expected number of arguments. It features deterministic argument serialization to convert complex and variadic input parameters into unique string keys for reliable cache l
fast-memoize.js is a dedicated JavaScript memoization library designed for high performance, though it lacks advanced features like automatic expiration or built-in asynchronous support out of the box.
React Query is an asynchronous state management library and data fetching orchestrator designed to fetch, cache, and synchronize server state in web applications. It functions as a server-state cache manager that handles asynchronous data requests to keep local application state in sync with a remote server. The library implements a stale-while-revalidate cache pattern, which provides immediate access to cached data while triggering background updates to maintain consistency. It further supports optimistic user interface updates, allowing the interface to change immediately during data mutati
This library handles asynchronous data fetching and server-state caching for React applications, but it is an asynchronous state manager rather than a general-purpose function memoization or lazy evaluation utility.
Next.js is a web development framework that provides a file-system-based routing system and a suite of server-side utilities for managing the request-response cycle. It includes built-in support for data fetching, caching, and revalidation, allowing developers to control how content is rendered and served. The framework offers a centralized configuration system for build-time settings, environment variables, and deployment adapters, alongside a command-line interface for bootstrapping new projects. The framework covers a wide range of application requirements, including metadata management fo
This repository is a full-stack web framework rather than a standalone function memoization library, even though it provides server-side caching and revalidation utilities.
DataLoader is a utility that collects individual data loads into a single batch and caches results to minimize redundant backend requests. It operates on a batch-and-cache architecture, where multiple data lookups within a single execution frame are grouped together and dispatched as one request, with the results stored in memory for instant retrieval on subsequent calls. The utility distinguishes itself through several key capabilities. It supports per-key error handling, allowing partial failures within a batch without rejecting the entire operation. A cache priming mechanism lets developer
DataLoader is a batching and request-deduplication utility rather than a general-purpose function memoization or caching library, making it a specialized building block rather than the exact tool for this search.
This library provides a collection of strongly typed hooks designed to manage asynchronous tasks, component state, and DOM interactions within user interfaces. It serves as a utility toolkit for tracking data changes, caching asynchronous results, and synchronizing references across both server and browser rendering environments. The project distinguishes itself by offering specialized mechanisms for regulating high-frequency user inputs through debouncing and throttling techniques. It simplifies complex browser interactions, such as keyboard shortcuts, clipboard access, and viewport visibili
This repository provides a collection of React hooks for state management and UI interactions rather than a standalone function memoization or caching library for general JavaScript/TypeScript use.
Cosmiconfig is a Node.js configuration loader used to find and load application settings from package manifests, rc files, and TypeScript modules. It functions as a directory-tree search tool and multi-format config parser that converts settings into JavaScript objects. The system distinguishes itself through a configuration transformation engine that supports merging base configurations and applying custom functions to parsed results. It employs a memoized transformation cache to store these results in memory, reducing filesystem overhead and avoiding repeated expensive computations. The li
Cosmiconfig is a configuration loader rather than a general-purpose function memoization library, though it does utilize internal caching to store parsed configuration results.
Underscore is a JavaScript utility library providing a suite of functional programming and data manipulation helpers. It serves as a framework for transforming data collections, composing functions, managing objects, and performing precise data type validation without modifying core language prototypes. The project includes a functional programming toolkit designed to control function execution timing and behavior through techniques such as debouncing, throttling, and partial application. It also provides a dedicated object manipulation utility for cloning, merging, picking, and omitting prop
Underscore is a broad general-purpose utility library rather than a dedicated memoization tool, so while it includes basic execution wrappers, it lacks advanced caching and invalidation features.
| Repository | Stars | Language | License | Last push |
|---|---|---|---|---|
| reduxjs/reselect | 19K | TypeScript | MIT | |
| angus-c/just | 6.2K | JavaScript | MIT | |
| lodash/lodash | 61.2K | JavaScript | NOASSERTION | |
| sindresorhus/p-memoize | 442 | TypeScript | MIT | |
| alexreardon/memoize-one | 3K | TypeScript | MIT | |
| caiogondim/fast-memoize.js | 2.6K | JavaScript | MIT | |
| tannerlinsley/react-query | 49.8K | TypeScript | MIT | |
| vercel/next.js | 140.1K | JavaScript | MIT | |
| graphql/dataloader | 13.4K | JavaScript | MIT | |
| jaredlunde/react-hook | 1.5K | TypeScript | MIT |