For immutable data structures, the strongest matches are facebook/immutable-js (This library provides persistent JavaScript collections with structural sharing), immutable-js/immutable-js (Immutable) and mweststrate/immer (Immer provides immutable state management with draft-based mutations and). rtfeldman/seamless-immutable and kolodny/immutability-helper round out the shortlist. Each is ranked by relevance to your query, popularity and recent activity.
Hand-picked open-source immutable data structures for JavaScript, Python, and Java. Compare the top repositories by stars, maintenance, and alternatives to…
This is a persistent data structure library for JavaScript that provides collections which prevent the direct mutation of objects and arrays. It serves as an immutable state management tool and functional programming utility, ensuring that data remains unchanged after creation to simplify change detection and state tracking. The library enables the maintenance of application state by producing new versions of data structures during updates. It focuses on efficient data comparison by checking actual content instead of memory references and supports a functional programming workflow to prevent
This library provides persistent JavaScript collections with structural sharing and TypeScript support, directly matching the requirement for immutable data structures to enforce functional programming and prevent side effects.
Immutable.js is a library of persistent data structures and a functional state management toolkit. It provides a collection of immutable objects and arrays that prevent direct mutation to ensure predictable state management in JavaScript applications. The library utilizes structural sharing to efficiently create new versions of data without full copying and implements lazy sequence processing to chain data transformations that execute only when values are requested. It also supports batch mutation processing, allowing multiple changes to be applied to a temporary mutable copy before returning
Immutable.js is a persistent data structure library for JavaScript and TypeScript that uses structural sharing and lazy evaluation to provide safe, efficient immutable collections and functional state management.
Immer is an immutable state management library for JavaScript that enables the creation of new versions of state trees. It functions as a state container that uses a proxy-based handler to ensure data immutability. The library utilizes a copy-on-write mechanism and a draft-based mutation model. This allows users to write mutating code on a temporary proxy, which the system then uses to produce a new immutable result while keeping the original state unchanged. The project covers immutable state management and complex object cloning to facilitate predictable state transitions. These capabiliti
Immer provides immutable state management with draft-based mutations and structural sharing for JavaScript, though it focuses on state trees rather than a traditional persistent collections API.
This is a JavaScript immutable data library used to create objects and arrays that prevent direct mutation. It serves as an immutable state manager and object wrapper designed to ensure data consistency by blocking modifications while remaining compatible with standard JavaScript syntax. The library functions as a converter that transforms standard mutable data into frozen structures and can convert them back for local modifications. This allows for a workflow where data is switched between immutable and mutable versions to perform bulk edits before locking the state again. The project provi
This JavaScript library prevents direct mutation of objects and arrays to ensure state consistency, though it relies on standard object/array wrappers rather than full persistent data structures with structural sharing.
immutability-helper is an immutable data manipulation library and object utility used for creating modified copies of objects and arrays. It functions as a command-based state manager and functional data transformer that ensures original source data remains unchanged during updates. The library distinguishes itself by using a declarative set of mutation commands and descriptors to specify changes. It preserves reference equality by returning the original object reference if no actual changes occur during the mutation process. It provides capabilities for deep cloning nested structures and pe
This TypeScript library provides immutable data manipulation and state updates using a command-based syntax to prevent side effects, though it focuses on utility functions rather than persistent collection classes.
Immer is an immutable state management library used to create new versions of data structures. It allows the production of new state by mutating a temporary draft instead of using manual object spreading. The project implements structural sharing to reuse unchanged parts of a data tree between versions, which reduces memory consumption. It also functions as a JSON patch generator to calculate and output the differences between two state versions. To ensure data integrity, the library includes a state mutation protector that freezes data structures to detect and prevent accidental modificatio
Immer is a JavaScript state management library that provides immutable data updates through proxy-based draft mutation, supporting structural sharing and object freezing to prevent unintended side effects.
Utilities for treating frozen JavaScript objects as persistent immutable collections
This library provides utilities for treating JavaScript objects as persistent immutable collections using structural sharing, though it is more lightweight than a full-featured data structure suite.
High performance implementation of Immutable Sequence in JavaScript, based on Finger Tree.
This JavaScript library implements persistent immutable sequences using finger trees for high-performance structural sharing, though it covers a narrower collection type rather than a full general-purpose immutable data structure suite.
ClojureScript's persistent data structures and supporting API from the comfort of vanilla JavaScript
This library brings ClojureScript's persistent, immutable data structures and structural sharing to vanilla JavaScript and TypeScript environments, making it a solid fit for functional programming needs despite its Clojure roots.
Collections is a JavaScript data structure library that provides unified interfaces for sets, maps, ordered sequences, and key-value storage. It includes capacity-bounded eviction mechanisms, categorical grouping, and set membership collections designed to organize and manage complex datasets through consistent traversal methods. The library offers advanced primitives such as circular ring buffers that automatically discard old entries upon reaching capacity limits, and comparator-driven sorted sequences maintained through binary search positioning. It supports persistent state snapshotting v
This package provides JavaScript implementations of common data structures with idiomatic interfaces, matching the need for collection utilities even though its focus on persistence and structural sharing is less explicitly detailed.
| रिपॉजिटरी | स्टार्स | भाषा | लाइसेंस | अंतिम पुश |
|---|---|---|---|---|
| facebook/immutable-js | 33.1K | TypeScript | MIT | |
| immutable-js/immutable-js | 33.1K | TypeScript | MIT | |
| mweststrate/immer | 29K | JavaScript | MIT | |
| rtfeldman/seamless-immutable | 5.3K | JavaScript | BSD-3-Clause | |
| kolodny/immutability-helper | 5.2K | TypeScript | MIT | |
| immerjs/immer | 29K | JavaScript | MIT | |
| aearly/icepick | 422 | JavaScript | MIT | |
| qiao/immutable-sequence.js | 15 | JavaScript | — | |
| swannodette/mori | 3.4K | Clojure | — | |
| montagejs/collections | 2.1K | JavaScript | NOASSERTION |