fp-ts is a library for typed functional programming in TypeScript, providing common functional data types and abstractions such as Option, Either, IO, Task, Functor, Applicative, and Monad. It is useful for building pure functional programming patterns in TypeScript, including support for higher kinded types via TypeScript techniques.
Project status
- Active maintenance: The GitHub repo shows an upstream push on 2026-04-20, but the provided update history for published updates is up to 2.16.9 on 2024-12-10, with no newer tagged updates shown in the evidence.
- Apparent update cadence: Within the 2.16.x line, there was a gap of about 9 months between 2.16.5 (2024-03-25) and 2.16.9 (2024-12-10), then a long quiet period relative to today (2026-08-12).
AI summary generated
Recent updates
2.16.9
Release 2.16.9 is described as a polish update, specifically adding support for the TypeScript compiler option `strictBuiltinIteratorReturn` (PR #1949). The code diff for the 2.16.5 to 2.16.9 range also includes CI, linting, and documentation/test updates, plus evidence of API additions in several modules.
Features2.16.5
fp-ts 2.16.5 primarily addresses a RangeError caused by `chainWithIndex` exceeding the maximum call stack size. The implementation change replaces an `Array.push(...spread)` pattern with explicit indexed loops to avoid spread-related stack issues during iteration.
2.16.0
Release 2.16.0 primarily adds a set of new fp-ts combinators and aliases across multiple modules (Either, IO, IOEither, IOOption, ReaderEither, ReaderIO, ReaderTask, ReaderTaskEither, Option, etc.). The release notes enumerate the new dual functions and their “aka” aliases (for example, tapEither, tapIO, mapError/mapLeft, as/asUnit, Option.orElse/alt/altW, and flatMap*/chain* aliases).
Features2.15.0
Release 2.15.0 introduces new functional combinators, most notably `LazyArg`, `tap`, `tapError`, and several `*Nullable` and `*Option` helpers, and it extends `flatMap` callbacks to receive an index for array-like structures. The diff also shows a broad type-level refactor where many existing APIs that previously accepted `Lazy<T>` now accept `LazyArg<T>`, and some sequencing/alias typing has changed.
Features2.14.0
Release 2.14.0 introduces a new `flatMap` combinator across many fp-ts data types (e.g., `Either`, `Option`, `Array`, Reader/State/Task variants). The implementation supports both call styles, `pipe(ma, flatMap(f))` and `flatMap(ma, f)`, and the codebase updates core instances to use `flatMap` for sequencing.
Features2.13.2
This release primarily adds a new combinator, `chainOptionKW`, across multiple fp-ts error monad modules. The code change introduces a widening variant of `chainOptionK` that merges error types instead of keeping them strict. Alongside this, the diff includes documentation, typing test updates, and a few new unit tests.
Features2.13.1
Release 2.13.1 is presented as a feature and polish release for fp-ts, including additions like ReaderIO/ReaderTask/ReaderTaskEither modules, various helper functions, and several type-signature fixes and overloads. However, the provided code diff for this release only shows packaging-level changes in package.json and the changelog, not the large set of API additions described in the release notes.
BreakingFeatures2.13.0
Release 2.13.0 primarily documents an experimental change to add a package.json `exports` field to support newer `moduleResolution` modes. The code diff provided, however, shows substantial documentation restructuring (anchor/section heading changes) and a CI Node version pin, plus changelog content that is not reflected in the provided release notes.
Breaking2.13.0-rc.6
fp-ts 2.13.0-rc.6 primarily changes package publishing metadata, specifically the order of the `package.json` `exports` entries (moving `./*` to the end) and reverts a prior change (PR #1584) that was causing a regression. The diff also contains a broad TypeScript type-signature change to `bind`/`bindW` across many modules, which is not mentioned in the release notes.
2.13.0-rc.4
Release 2.13.0-rc.4 backports a set of “handy defaults” from fp-ts v3, mainly around natural transformations, Kleisli helpers, and of functions. It also includes targeted type-level fixes, specifically around fromPredicate for TaskEither, and adding missing fromPredicate for These, plus removing a useless type parameter from exists in Either and These.
BreakingFeatures