# Changelog > **Tags:** > > - [New Feature] > - [Bug Fix] > - [Breaking Change] > - [Documentation] > - [Internal] > - [Polish] > - [Experimental] **Note**: Gaps between patch versions are faulty/broken releases. **Note**: A feature tagged as Experimental is in a high state of flux, you're at risk of it changing without notice. # 2.3.13 - **Polish** - improve `modify` / `modifyOption` behaviour when using `pipe`, #181 (@thewilkybarkid) # 2.3.12 - **Polish** - Add missing pure annotations, #175 (@OliverJAsh) # 2.3.11 - **Bug Fix** - OptionalFromPath: Type Issue fix for 5 arguments, #167 (@Barackos) # 2.3.10 - **Internal** - optimize `fromTraversable`, closes #119 (@gcanti) # 2.3.9 Experimental modules require `fp-ts@^2.5.0`. - **Experimental** - `At` - add `at` constructor (@gcanti) - `Iso` - add `iso` constructor (@gcanti) - add `composeLens` (@gcanti) - add `composePrism` (@gcanti) - add `composeOptional` (@gcanti) - add `composeTraversal` (@gcanti) - add `fromNullable` (@gcanti) - add `filter` (@gcanti) - add `fromNullable` (@gcanti) - add `prop` (@gcanti) - add `props` (@gcanti) - add `component` (@gcanti) - add `index` (@gcanti) - add `indexNonEmpty` (@gcanti) - add `key` (@gcanti) - add `atKey` (@gcanti) - add `some` (@gcanti) - add `right` (@gcanti) - add `left` (@gcanti) - add `traverse` (@gcanti) - add `findFirst` (@gcanti) - add `findFirstNonEmpty` (@gcanti) - add `composeIso` (@gcanti) - add `Semigroupoid` (@gcanti) - (\*) rename `invariantIso` to `Invariant` (@gcanti) - (\*) rename `categoryIso` to `Category` (@gcanti) - `Ix` - add `index` constructor (@gcanti) - add `indexReadonlyNonEmptyArray` (@gcanti) - `Lens` - add `lens` constructor (@gcanti) - add `composeIso` (@gcanti) - add `composeTraversal` (@gcanti) - add `indexNonEmpty` (@gcanti) - add `findFirstNonEmpty` (@gcanti) - add `composeLens` (@gcanti) - add `Semigroupoid` (@gcanti) - (\*) rename `invariantIso` to `Invariant` (@gcanti) - (\*) rename `categoryIso` to `Category` (@gcanti) - `Prism` - add `prism` constructor (@gcanti) - add `composeIso` (@gcanti) - add `composeTraversal` (@gcanti) - add `indexNonEmpty` (@gcanti) - add `findFirstNonEmpty` (@gcanti) - add `composePrism` (@gcanti) - add `Semigroupoid` (@gcanti) - (\*) rename `invariantIso` to `Invariant` (@gcanti) - (\*) rename `categoryIso` to `Category` (@gcanti) - `Optional` - add `optional` constructor (@gcanti) - add `composeIso` (@gcanti) - add `composeTraversal` (@gcanti) - add `indexNonEmpty` (@gcanti) - add `findFirstNonEmpty` (@gcanti) - add `composeOptional` (@gcanti) - add `Semigroupoid` (@gcanti) - (\*) rename `invariantIso` to `Invariant` (@gcanti) - (\*) rename `categoryIso` to `Category` (@gcanti) - `Traversal` - add `traversal` constructor (@gcanti) - add `composeIso` (@gcanti) - add `composeLens` (@gcanti) - add `composePrism` (@gcanti) - add `composeOptional` (@gcanti) - add `findFirst` (@gcanti) - add `findFirstNonEmpty` (@gcanti) - add `fromNullable` (@gcanti) - add `indexNonEmpty` (@gcanti) - add `composeTraversal` (@gcanti) - add `Semigroupoid` (@gcanti) - (\*) rename `categoryIso` to `Category` (@gcanti) (\*) breaking change # 2.3.7 - **Experimental** - `At` - add `atReadonlyRecord` (@gcanti) - add `atReadonlyMap` (@gcanti) - add `atReadonlySet` (@gcanti) - deprecate `atRecord` (@gcanti) - `Ix` - add `indexReadonlyRecord` (@gcanti) - add `indexReadonlyArray` (@gcanti) - add `indexReadonlyMap` (@gcanti) - deprecate `indexRecord` (@gcanti) - deprecate `indexArray` (@gcanti) - `Optional` - add `composeLens` (@gcanti) - add `composePrism` (@gcanti) - add `setOption` (@gcanti) # 2.3.6 - **Polish** - import without `/lib` or `/es6` paths, closes #147 (@gcanti) # 2.3.5 - **Experimental** - add `modifyF`, closes #149 (@gcanti) - `Iso` - `Lens` - `Prism` - `Optional` # 2.3.4 - **Experimental** - `Lens`, `Prism`, `Optional`: add `Refinement` overload to `findFirst`, #148 (@wmaurer) # 2.3.3 - **Experimental** - `Prism` - (\*) remove `fromSome` constructor (@gcanti) - (\*) change `fromNullable` signature (@gcanti) - `Optional` - add missing `fromNullable` combinator, closes #133 (@gcanti) (\*) breaking change # 2.3.2 - **Experimental** - `At` - add `atRecord` (@gcanti) - `Ix` - add `indexArray` (@gcanti) - add `indexRecord` (@gcanti) - `Lens` - add `findFirst` combinator, closes #131 (@gcanti) - `Prism` - add `findFirst` combinator (@gcanti) - add `traverse` combinator (@gcanti) - `Optional` - add `findFirst` combinator (@gcanti) - add `traverse` combinator (@gcanti) # 2.3.1 - **Experimental** - add `Iso` module (@gcanti) - add `Lens` module (@gcanti) - add `Prism` module (@gcanti) - add `Optional` module (@gcanti) - add `Traversal` module (@gcanti) - add `At` module (@gcanti) - add `Ix` module (@gcanti) - **Internal** - implement old APIs through new APIs (@gcanti) # 2.2.0 - **New Feature** - `At` - add `ReadonlyRecord` module (@gcanti) - add `ReadonlySet` module (@gcanti) - `Index` - add `ReadonlyArray` module (@gcanti) - add `ReadonlyNonEmptyArray` module (@gcanti) - add `ReadonlyRecord` module (@gcanti) # 2.1.1 - **Bug Fix** - fix `Optional.fromPath`, #122 (@mikearnaldi) # 2.1.0 - **New Feature** - Add support for `Optional.fromPath`, #105 (@cybermaak) - **Bug Fix** - handle nullable values in `fromNullableProp`, fix #106 (@gcanti) # 2.0.1 - **Bug Fix** - rewrite es6 imports (@gcanti) # 2.0.0 - **Breaking Change** - upgrade to `fp-ts@2.x` (@gcanti) - remove deprecated APIs (@gcanti) - uncurried `Lens.fromProp` - uncurried `Lens.fromProps` - uncurried `Lens.fromNullableProp` - uncurried `Optional.fromNullableProp` - uncurried `Optional.fromOptionProp` - remove `At/StrMap` (@gcanti) - remove `Index/StrMap` (@gcanti) # 1.7.2 output ES modules to better support tree-shaking (@gcanti) # 1.7.1 - **Polish** - move `fp-ts` to peerDependencies (@gcanti) # 1.7.0 - **New Feature** - add `At/Record` (@mlegenhausen) - add `Index/Record` (@mlegenhausen) # 1.6.1 - **Polish** - Providing a `Refinement` to the `find` method of `Fold` will return the narrowed type (@Stouffi) # 1.6.0 - **New Feature** - add `Traversal.prototype.filter` (@gcanti) - add `Either` prisms (@gcanti) - **Polish** - many optimizitions (@sledorze) - **Deprecation** - deprecate `Prism.fromRefinement` in favour of `Prism.fromPredicate` (@gcanti) # 1.5.3 - **Bug Fix** - revert 27b587b, closes #75 (@gcanti) # 1.5.2 - **Polish** - disallow improper use of `from`\* APIs, closes #73 (@gcanti) # 1.5.1 - **Polish** - add aliases for `compose` methods, closes #51 (@gcanti) # 1.5.0 - **New Feature** - add `indexNonEmptyArray` (@sledorze) - **Internal** - upgrade to `fp-ts@1.11.0` (@sledorze) **Note**. If you are running `< typescript@3.0.1` you have to polyfill `unknown`. You can use [unknown-ts](https://github.com/gcanti/unknown-ts) as a polyfill. # 1.4.1 - **New Feature** - add `Prism.fromRefinement` (@bepremeg) - add `Optional.fromOptionProp` (@bepremeg) # 1.3.0 - **New Feature** - add `Lens.{fromProp, fromPath, fromNullableProp}` and `Optional.fromNullableProp` curried overloadings (@gcanti) # 1.2.0 - **New Feature** - add `At` (@leighman) - add `Set` instance - add `StrMap` instance - add `Index` (@leighman) - add `Array` instance - add `StrMap` instance # 1.1.0 - **New Feature** - add `Lens.fromProps` (@gcanti) # 1.0.0 - **Breaking Change** - upgrade to `fp-ts@1.0.0` (@gcanti) # 0.5.2 - **New Feature** - add `Iso.reverse`, closes #36 (@gcanti) # 0.5.1 - **Experimental** - add Flowtype support (@gcanti) # 0.5.0 - **Breaking Change** - upgrade to fp-ts 0.6 (@gcanti) # 0.4.4 - **New Feature** - add `Lens.fromNullableProp` (@gcanti) # 0.4.3 - **New Feature** - `Prism`: add `set` method (@gcanti) - `Optional`: add `fromNullableProps` static function (@gcanti) - **Bug fix** - `Prism`: change `asOptional`, `asTraversal` implementations, fix #29 (@gcanti) # 0.4.2 - **Polish** - fix Optional laws (@gcanti) - remove `Endomorphism` type alias (@gcanti) # 0.4.1 - **New Feature** - Add aliases to ISO, closes #24 (@gcanti) # 0.4.0 - **Breaking Change** - upgrade to fp-ts 0.5 (@gcanti) - currying of all APIs (@gcanti) # 0.3.2 - **Polish** - upgrade to latest fp-ts (0.4.3) (@gcanti) # 0.3.1 - **New Feature** - Added Setter (@LiamGoodacre) - Added Getter (@LiamGoodacre) - Added all possible conversions (e.g asGetter, asFold, etc) (@LiamGoodacre) - Added all possible compositions (@LiamGoodacre) - add \_tag fields (allows for tagged unions) (@gcanti) - **Polish** - Fixed some typos (Options/Option -> Optional) (@LiamGoodacre) - Minor rearrangement so conversions and compositions are grouped (@LiamGoodacre) # 0.3.0 - **Breaking Change** - upgrade to latest fp-ts (@gcanti) # 0.2.0 - **New Feature** - add `Prism.some`, closes #10 (@gcanti) - add `composeX`, closes #11 (@gcanti) - **Breaking Change** - upgrade to latest `fp-ts` (`monocle-ts` APIs are not changed though) (@gcanti) - drop `lib-jsnext` folder - remove `Optional.fromProp`, closes #9 (@gcanti) # 0.1.1 - **New Feature** - add `Prism.fromPredicate` - fix `Optional.fromProp` # 0.1.0 Initial release