NewYour coding agent can read the release notes before it upgrades.Set up the MCP server →
npm · #3958 most downloaded on npm
Functional programming in TypeScript
Last release 1 years ago
18 Aug 2025
Release timing varies
gaps range from 2 weeks to 9 months
Nearly every release is documented
notes for 59 of the last 60 stable releases
Nothing withdrawn
no release was ever pulled
10 years old
233 releases · first in 2017
add scanLeft, scanRight (@PaNaVTEC)
scanLeft, scanRight (@PaNaVTEC)onerror argument to Either.tryCatch, fix #323 (@gcanti)Either.tryCatch now refines the error (@gcanti)Setoid, Ord, Functor, Apply, Applicative, Chain, Monad, Alt, Alternative, Plus
(@gcanti)typescript@2.7.2 (@gcanti)add phantom fields to curried type classes, fix #316 (@gcanti)
Unfoldable.replicateA signatures (@gcanti)One column per quarter.
see https://github.com/gcanti/fp-ts/pull/312 (@gcanti)
Nothing published for this version
Validation: add getOrElse, getOrElseValue, closes #278 (@gcanti)
Validation: add getOrElse, getOrElseValue, closes #278 (@gcanti)Functor2, Functor3, Apply2, Apply3, Applicative2, Applicative3, Chain2, Chain3, Monad2,
Monad3 in order to better support MTL style (@gcanti)Set: fix union / insert / toArray / reduce definitions (@gcanti)Validation: add chain (@gcanti)StateTaskEither, TaskOption examples (@gcanti)Ordering: add fromNumber, toNumber (@gcanti)
add some Foldable functions (@gcanti)
Array: add rotate (@gcanti)Foldable functions (@gcanti)
minimummaximumsumproductfoldMoneOfelemfindOption: add tryCatch (@gcanti)Ring: add getProductRing (@gcanti)Setoid: add getProductSetoid (@gcanti)Ord: add getProductOrd (@gcanti)Flow: use $NonMaybeType for fromNullable and mapNullable (@gcanti)
$NonMaybeType for fromNullable and mapNullable (@gcanti)Array: add getSemigroup / getMonoid, fix #272 (@gcanti)
getSemigroup / getMonoid, fix #272 (@gcanti)getRecordSetoid (@gcanti)ap_ methods (Reader, State, Writer) (@gcanti)is* methods as type guards (Option, Either, Validation, These) (@gcanti)ap_ parameter name (@OliverJAsh)getRecordSemigroup signature (@gcanti)getRecordMonoid signature (@gcanti)Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
move semigroup methods from Monoid.ts to Semigroup.ts (@valery-paschenkov)
add function.constNull and function.constUndefined (@raveclassic)
function.constNull and function.constUndefined (@raveclassic)upgrade to latest TypeScript (2.6.1), fix #244 (@gcanti)
Release candidate ` npm i fp-ts@next `
Release candidate
npm i fp-ts@next
Nothing published for this version
Nothing published for this version
Array: add findFirst and findLast functions (@chasent)
Array: add findFirst and findLast functions (@chasent)Option: add getOrElseValue, filter, mapNullable (@raveclassic)Either: add getOrElseValue (@raveclassic)Either: add fromNullable (@gcanti)Either: equals now accepts a Setoid<L> other than Setoid<A>, fix #247 (@gcanti)Validation: equals now accepts a Setoid<L> other than Setoid<A>, fix #247 (@gcanti)Semigroup: add getRecordSemigroup, getRecordMonoid, getMeetSemigroup, getJoinSemigroup (@gcanti)
Invariant (@gcanti)Semigroup: add getRecordSemigroup, getRecordMonoid, getMeetSemigroup, getJoinSemigroup (@gcanti)Ord: add getSemigroup, fromCompare, contramap (@gcanti)Option: add toUndefined method (@vegansk)These: add getMonad (@gcanti)Foldable: add fold (@gcanti)TaskEither (@gcanti)Validation: add fromEither (@gcanti)Task: add fromIO (@gcanti)Either: pass value to getOrElse (@jiayihu)Array: add span function (@gcanti)Array: fix takeWhile, dropWhile (@gcanti)Moore machine example (@gcanti)Semigroupoid definition (@gcanti)Ordering: shorten orderingSemigroup definition (@gcanti)Task: prefer {} to any, fix #231 (@OliverJAsh)prettier@1.7.0 (@gcanti)These: fix fold and bimap definitions (@gcanti)ArrayOption example (@gcanti)State: remove Endomorphism type alias (@gcanti)Monoidal: use liftA2 (@gcanti)fixed EitherT to only run code on the left once, closes #219 (@nfma)
migrate to curried APIs when possible (@raveclassic, @gcanti)
ofs (@gcanti)Nothing published for this version
add endomorphism monoid, fix #189 (@gcanti)
foldr using foldMap (@gcanti)insert, remove and pop to StrMap (@gcanti)voidLeft, voidRight type inference, fix #191 (@gcanti)add contains, isNone, isSome, exists methods to Option (@alexandervanhecke)
contains, isNone, isSome, exists methods to Option (@alexandervanhecke)Exception module (@gcanti)Pair module (@gcanti)Trace module (@gcanti)IxMonad module (@gcanti)IxIO module (@gcanti)Either.fromOption (@gcanti)StateT example (@gcanti)IxIO example (@gcanti)Nothing published for this version
add type-level dictionaries in order to reduce the number of overloadings (@gcanti)
never type for none, closes #160 (@gcanti)Nothing published for this version
Nothing published for this version
Dictionary (wrapped, renamed to StrMap)
Functor: add flap, closes #129 (@gcanti)
flap, closes #129 (@gcanti)Array.snoc returns wrong results with nested arrays, fix #133 (@gcanti)
Array.snoc returns wrong results with nested arrays, fix #133 (@gcanti)Functor: add voidRight / voidLeft, closes #120 (@gcanti)
voidRight / voidLeft, closes #120 (@gcanti)Mealy machine, closes #122 (@gcanti)Filterable, closes #124 (@gcanti)Witherable, closes #125 (@gcanti)right === ofIxMonad: remove wrong type constraint (@gcanti)
add Free Applicative, closes #106 (@gcanti)
Free Applicative, closes #106 (@gcanti)Semiring, closes #107 (@gcanti)Ring, closes #108 (@gcanti)Field, closes #109 (@gcanti)toString methods, closes #116 (@gcanti)of (@gcanti)_tag type annotations, closes #118 (@gcanti)proofs of implementation (@rilut)Validation: remove deprecated functions
StateT monad transformer, closes #104 (@gcanti)Store comonad, closes #100 (@rilut)Last monoid, closes #99 (@gcanti)Id monadfunctor (@gcanti)examples folderexercises folderStatic prefix in type classesgetFunctorComposition -> getCompositionFunctorgetApplicativeComposition -> getCompositionApplicativegetFoldableComposition -> getCompositionFoldablegetTraversableComposition -> getCompositionTraversableOptionT, EitherT, ReaderT refactoringIxMonadT, move IxIO to the examples folderTrans moduleFree refactoringrxjs dependencylib-jsnext folderNone constructor privatePointed and Copointed type classesadd Monoidal type class (@gcanti)
foldMap, closes #89 (@gcanti)instanceof checks with valued _tags, fix #96 (@gcanti, @sledorze)Monoid: add getFunctionStaticMonoid, closes #70 (@gcanti)
getFunctionStaticMonoid, closes #70 (@gcanti)traverse_ and sequence_, closes #71 (@gcanti)getStaticMonad to EitherT, OptionT, ReaderT, closes #81 (@gcanti)when, closes #77 (@gcanti)IxMonadT, closes #73 (@gcanti)of should return Either, fix #80 (@gcanti)toArray (@gcanti)Foldable module: add intercalate function, fix #65 (@gcanti)
Foldable module: add intercalate function, fix #65 (@gcanti)Profunctor typeclass, fix #33 (@gcanti, @sledorze)These, fix #47 (@gcanti)Apply module: add applyFirst and applySecond, fix #60 (@sledorze)Either.ap (@sledorze)expose experimental modules (@danielepolencic, @gcanti)
add getOrElse to Either, fix #39 (@sledorze)
getOrElse to Either, fix #39 (@sledorze)EitherT, fix #36 (@gcanti)OptionT, fix #37 (@gcanti)ReaderT, fix #38 (@gcanti)Trans typeclass (liftT), fix #40 (@gcanti)Free, fix #42 (@gcanti)deprecate validation.getApplicativeS / validation.getStaticApplicative (@gcanti)
validation.getApplicativeS / validation.getStaticApplicative (@gcanti)fix return types of validation.success / validation.failure (@gcanti)
validation.success / validation.failure (@gcanti)fix Some.reduce so it calls f, https://github.com/gcanti/fp-ts/pull/45 (@leemhenson)
Some.reduce so it calls f, https://github.com/gcanti/fp-ts/pull/45 (@leemhenson)Semigroupoid type class (@gcanti)
Semigroupoid type class (@gcanti)Rxjs module (@gcanti)Tuple module (@gcanti)Dictionary module (@gcanti)complete refactoring: new technique to get higher kinded types and typeclasses
Nothing published for this version
- New Feature - add support for fantasy-land - Breaking Change - complete refactoring - remove data module - remove newtype module
data modulenewtype modulefix compose definition for 5 or more functions (@bumbleblym)
compose definition for 5 or more functions (@bumbleblym)make Array a HKT and deprecate to,from helper functions, fix #5 (@gcanti)
to,from helper functions, fix #5 (@gcanti)Traced comonad (@bumbleblym)getOrElse method to Option (@gcanti)State definition (@gcanti)fix ChainRec definition (@gcanti)
ChainRec definition (@gcanti)Nothing published for this version
Your coding agent can read these notes before it upgrades. Set up the MCP server →