# Immer > ## Pages - [API overview](api.md): | Exported name | Description | Section | - [Array Methods Plugin](array-methods.md): The Array Methods Plugin (`enableArrayMethods()`) optimizes array operations within Immer producers by avoiding unnec... - [Built with Immer](built-with.md): - [react-copy-write](https://github.com/aweary/react-copy-write) _Immutable state with a mutable API_ - [Classes](complex-objects.md): Plain objects (objects without a prototype), arrays,`Map`s and`Set`s are always drafted by Immer. Every other objec... - [Extracting the current state from a draft](current.md): Immer exposes a named export`current`that creates a copy of the current state of the draft. This can be very useful... - [Frequently Asked Questions](faq.md): Read the (second part of the) [introduction blog](https://medium.com/@mweststrate/introducing-immer-immutability-the-... - [Introduction to Immer](introduction.md): Immer (German for: always) is a tiny package that allows you to work with immutable state in a more convenient way. - [Map and Set](map-set.md): _⚠ Since version 6 support for`Map`s and`Set`s has to be enabled explicitly by calling [`enableMapSet()`](./install... - [Extracting the original state from a draft](original.md): Immer exposes a named export`original`that will get the original object from the proxied instance inside`produce`... - [Porting to other languages](other-lang.md): Immer has been ported to other programming languages. - [Pitfalls](pitfalls.md): For performance tips, see [Performance Tips](./performance.mdx#performance-tips). - [External resources](resources.md): - Blog: [The Rise of Immer in React](https://www.netlify.com/blog/2018/09/12/the-rise-of-immer-in-react/) - [Update patterns](update-patterns.md): Working with immutable data, before Immer, used to mean learning all the immutable update patterns.