# immutable-js/immutable-js

Immutable persistent data collections for Javascript which increase efficiency and simplicity.

Repository: https://github.com/immutable-js/immutable-js
Canonical: https://ross.abutalabs.com/products/immutable-js
Homepage: https://immutable-js.com
Language: TypeScript
License: MIT
License Family: permissive
Last push: 2026-08-17T09:22:33+00:00

## Health v2 (maintenance only)
Score: 98/100 (v2, computed 2026-09-03T02:20:16.233290+00:00)
- activity 98, release rhythm 98, longevity 100
- inputs: {"age_days": 4445, "days_push": 16, "days_rel": 19, "gap_med": 11, "n_releases_24m": 18}
- flags: none
- formula: round(0.45*activity + 0.35*rhythm + 0.20*longevity); archived -> min(score, 10)

## Adoption (not part of the score)
Stars 33040, forks 1859 (observed 2026-08-28T04:11:58.063832+00:00)

## What it is
Immutable.js provides persistent immutable data collections (List, Map, Set, Stack, Record, and lazy Seq) for JavaScript and TypeScript, using structural sharing via hash tries for efficiency. It enables simpler state management, cheap change detection, and memoization with a familiar JavaScript-first API and first-class TypeScript types.

## Use cases
- manage immutable application state in React or Redux
- avoid defensive copying when updating nested data structures
- implement undo/redo with cheap snapshots of state
- efficiently chain map and filter over large or infinite sequences with lazy Seq
- deeply read and update nested data with getIn/setIn/updateIn
- compare collections by value equality for memoization and change detection

## When to choose
- you need persistent data structures with structural sharing in JavaScript or TypeScript
- your app benefits from value-based equality, memoization, or undo/redo
- you want zero dependencies and built-in TypeScript types
- you work with large collections where copying would be expensive

## When to avoid
- your project only needs simple frozen objects or spread-based immutability
- you rely heavily on native ES6 Map/Set interop without conversion overhead
- bundle size is critical and you only use a small subset of features
- your team prefers Immer-style mutable drafts over functional collections

## Facets
- artifact type: library
- maturity: stable
- function: serialization, developer-tools
- domain: web-development, frontend, data-science
- platform: browser, cross-platform
- tags: immutable-data, persistent-data-structures, functional-programming, typescript, state-management, react, redux, zero-dependencies, algorithms, nodejs, web-server

## Member repositories
- immutable-js/immutable-js (main) score 98

## Provenance
- Observed fields: from GitHub, fetched 2026-08-28T04:11:58.063832+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-29T16:28:43.419924+00:00, confidence not recorded.
  - readme: https://github.com/immutable-js/immutable-js (fetched 2026-08-28T04:11:58.063832+00:00, sha 7d7a076619e0)
  - homepage: https://immutable-js.com (fetched 2026-08-29T07:49:09.363765+00:00, sha 1d67839f9c5d)
  - site_page: https://immutable-js.com/docs/v5/Record (fetched 2026-08-29T07:49:09.375777+00:00, sha 91814d8f4e43)
  - site_page: https://immutable-js.com/docs/v5/OrderedMap (fetched 2026-08-29T07:49:09.378112+00:00, sha 1c54cc04ee10)
  - site_page: https://immutable-js.com/docs/v5/OrderedSet (fetched 2026-08-29T07:49:09.379862+00:00, sha d2d27bd8e57e)
  - site_page: https://immutable-js.com/docs/v5/Stack (fetched 2026-08-29T07:49:09.381454+00:00, sha 73aa9c6b41d9)
  - site_page: https://immutable-js.com/docs/v5 (fetched 2026-08-29T07:49:09.366349+00:00, sha f95ab91291c9)
  - site_page: https://immutable-js.com/docs/v5/List (fetched 2026-08-29T07:49:09.368169+00:00, sha f993e696cb75)
  - site_page: https://immutable-js.com/docs/v5/Map (fetched 2026-08-29T07:49:09.370532+00:00, sha a696a455d8ae)
  - site_page: https://immutable-js.com/docs/v5/Set (fetched 2026-08-29T07:49:09.373104+00:00, sha 8e7ec338980d)
- Data as of 2026-08-30T08:39:29.467469+00:00.
