Open-Awesome
CategoriesAlternativesStacksSelf-HostedExplore
Open-Awesome

© 2026 Open-Awesome. Curated for the developer elite.

TermsPrivacyAboutGitHubRSS
  1. Home
  2. Functional Programming
  3. List

List

MITTypeScriptv2.0.19

A fast immutable list data structure for JavaScript with a comprehensive functional API and seamless Ramda integration.

GitHubGitHub
1.7k stars52 forks0 contributors

What is List?

List is a fast, immutable list data structure for JavaScript that serves as a purely functional alternative to native arrays. It solves the problem of accidental mutations in functional programming by providing a persistent sequence with optimized performance for operations like map, filter, and reduce. The library offers a comprehensive functional API, seamless integration with Ramda, and support for multiple coding styles including curried functions and chainable methods.

Target Audience

JavaScript and TypeScript developers practicing functional programming, especially those using libraries like Ramda or seeking immutable data structures for safer state management. It's also suitable for performance-sensitive applications where functional operations on sequences are frequent.

Value Proposition

Developers choose List over native arrays or other immutable libraries because it combines immutability with high performance, a familiar functional API, and excellent tree-shaking support. Its seamless Ramda integration allows easy adoption for existing Ramda users, while its focus on being a single, optimized data structure ensures reliability and efficiency.

Overview

🐆 An immutable list with unmatched performance and a comprehensive functional API.

Use Cases

Best For

  • Functional programming in JavaScript with immutable data structures
  • Replacing native arrays in Ramda-based codebases for better performance
  • Building applications where accidental mutation of arrays is a concern
  • Performance-critical operations on sequences with functional transformations
  • TypeScript projects needing fully typed immutable collections
  • Libraries that require tree-shaking friendly utility functions for lists

Not Ideal For

  • Projects relying heavily on imperative array mutations like in-place sorting or frequent push/pop operations
  • Teams prioritizing minimal bundle size over functional benefits, as native arrays have zero overhead
  • Codebases deeply integrated with libraries expecting native Array instances without conversion glue
  • Environments where quick prototyping without learning functional patterns is essential

Pros & Cons

Pros

Immutable Safety

Guarantees no accidental mutations, making state predictable in functional code—the README emphasizes this prevents bugs from imperative temptations.

Performance Optimization

Uses relaxed radix balanced trees for persistent operations, with benchmarks showing it often outperforms native arrays in functional use cases like map and filter.

Flexible API Styles

Offers chainable methods, curried functions, and plain imports, catering to different coding preferences while maintaining TypeScript support.

Seamless Ramda Integration

Implements 61 out of 76 Ramda array functions, allowing easy migration for existing Ramda users without API changes.

Cons

Incomplete Ramda Coverage

Missing 15 Ramda functions like `uniq` and `transpose`, which may force users to implement workarounds or stick with arrays for those operations.

Conversion Boilerplate

Requires explicit `toArray` and `from` calls for interoperability with native arrays, adding extra steps in mixed codebases.

FP Learning Curve

The immutable, functional API and concepts like Fantasy Land can be overwhelming for developers accustomed to imperative JavaScript, slowing adoption.

Memory Overhead Risk

Persistent data structures can increase memory usage for large lists compared to mutable arrays, though the README doesn't address this trade-off directly.

Frequently Asked Questions

Quick Stats

Stars1,654
Forks52
Contributors0
Open Issues6
Last commit2 years ago
CreatedSince 2016

Tags

#functional-programming#iterable#tree-shaking#fantasy-land#data-structures#immutable-data-structures#typescript#javascript-library#immutable#ramda#redux#performance

Built With

T
TypeScript

Included in

Functional Programming6.0k
Auto-fetched 18 hours ago

Related Projects

immutableimmutable

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

Stars33,057
Forks1,857
Last commit1 day ago
ImmerImmer

Create the next immutable state by mutating the current one

Stars28,971
Forks879
Last commit8 days ago
Lazy.jsLazy.js

Like Underscore, but lazier

Stars5,972
Forks260
Last commit6 years ago
morimori

ClojureScript's persistent data structures and supporting API from the comfort of vanilla JavaScript

Stars3,370
Forks142
Last commit4 months ago
Community-curated · Updated weekly · 100% open source

Found a gem we're missing?

Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.

Submit a projectStar on GitHub