# 4.2.0 - 2016-11-03

## Bug fixes

* Fixed exception thrown when using higher-order components (#202, #205 by @tizmagik).
* Fixed regression: missed colors in props table.

## Other improvements

* Much smaller JavaScript bundle (more than two times smaller for the [example style guide](http://react-styleguidist.js.org/)):
  * babel-standalone was replaced by [buble](https://buble.surge.sh/guide/) — fast, light, no-setup ES2015 transpiler;
  * CodeMirror is loaded on demand (#198, #204 by @tizmagik).

* Show whitespace character for default values (#196, #203 by @tizmagik).

# 4.1.0 - 2016-10-19

Replace `react-transform-hmr` with vanilla Webpack Hot Module Replacement:

* No need to change anything on your side but now you can safely remove `react-transform-hmr` from your style guide config.
* [react-transform-hmr](https://github.com/gaearon/react-transform-hmr) is deprecated.
* [react-hot-loader 3](https://github.com/gaearon/react-hot-loader/pull/240) is still in development and probably will never be finished, it also would be much harder to configure for Styleguidist users.
* See [this comment](https://github.com/gaearon/react-hot-boilerplate/issues/97#issuecomment-249862775) by Dan Abramov for more details.
* Vanilla HMR requires no additional configuration.

Thanks @aaronjensen!

## Bug fixes

* Fixed hot reload of stateless functional components (#193).
* Isolated mode should work with components inside nested sections (#190).

# 4.0.1 - 2016-10-11

* **Fixed**: allow `components` function to return relative paths (#192).

# 4.0.0 - 2016-10-06

## Breaking changes

* Drop support for Node < 4.
* Make Webpack a peer dependency to make migration to Webpack 2 easier.
* If you override some of Styleguidist’s components you might need to update them, see [the FAQ](https://github.com/sapegin/react-styleguidist/blob/master/docs/FAQ.md#how-to-change-the-layout-of-a-style-guide) for details.

## New feature: Node API

Very basic Node API — jus three methods: `build`, `server` and `makeWebpackConfig`. More details in [the docs](https://github.com/sapegin/react-styleguidist/blob/master/docs/API.md).

## Other changes and fixes

* Proper HTML support in Markdown (#188).
* Update react-docgen: could fix #37, #143, #179.
* Support Webpack 2.1.0-beta.23+ (#184).
* Expose Webpack stats config on Webpack dev middleware (#174 by @andresgutgon).
* Fix error handling in props loader (#173 by @adriantoine).
* Filter in table of contents filters section names as well as component names.

# 3.1.1 - 2016-08-23

* **Fixed**: Webpack 2 support: `OccurrenceOrderPlugin` was renamed (#170 by @oskolsky).

# 3.1.0 - 2016-08-22

* **New**: Webpack 2 support (#163 by @aaronjensen).

Please try it and report any issues if you already use Webpack 2.

# 3.0.2 - 2016-07-28

* **Fixed**: React warning “`ref` is not a prop” (#159).

# 3.0.1 - 2016-07-18

* **Fixed**: React error about missed props on first render when using `initialState` (#155).
* **Fixed**: `content` and `components` path resolving inconsistency (#137)
* **Fixed**: React error when two components have the same name (#33).
* **Improved**: `shape[]` prop type rendering (#73).

# 3.0.0 - 2016-07-06

## Breaking changes

### Improved state

Previously `setState` in examples was causing component rerender which was braking animation and other things.

Default state definition was changes. Instead of:

```javascript
'count' in state || setState({ count : 1})
```

You should do:

```javascript
initialState = { count: 1 };
```

(#51, #134 by @saschatimme)

### Collapsible code examples

![](http://wow.sapegin.me/3C1Z0U3u2h0G/Image%202016-07-06%20at%202.15.37%20PM.png)

Now code examples are collapsed by default, you can change it by [showCode](https://github.com/sapegin/react-styleguidist/blob/master/docs/Configuration.md) option.

(#86, #150 by @tizmagik)

## New features

### Basic isolated links implementation

Now you can open any component in a separate page:

![](http://wow.sapegin.me/1j2s2P1K403j/Image%202016-07-06%20at%202.50.54%20PM.png)

The UI requires more work, any help is appreciated.

## Other changes and fixes

* Allow markdown ```example to render interactive example (#151 by @uipoet).
* Very basic HTML support in examples (#141).
* Update CodeMirror, remove custom JSX mode (#19).
* Avoid React error about void elements with children, fixes images in Markdown (#140).

# 2.3.1 - 2016-06-06

* **Internal**: ability to change config file location.

# 2.3.0 - 2016-05-24

## New features

### Default examples

For components that do not have an example, a default one can be used. See [defaultExample](https://github.com/sapegin/react-styleguidist/blob/master/docs/Configuration.md) option for details.

(#144 by @tizmagik)

## Other changes and fixes

* Fixed cursor jumping while editing in CodeMirror (#139, #145 by @tizmagik).

# 2.2.2 - 2016-05-12

* **Fixed**: Windows compatibility (#138 by @mdhgriffiths).

# 2.2.1 - 2016-04-22

* **Fixed**: npm2 compatibility (#131, #132 by @mik01aj).
* Add classes for styling `TR` and `TBODY` tags in Markdown (#130).

# 2.2.0 - 2016-04-20

## New features

### Sections

Allows you to group components into sections and add random Markdown files to your style guide:

```javascript
module.exports = {
  // ...
  sections: [
    {name: 'Introduction', content: 'docs/introduction.md'},
    {name: 'UI Components', content: 'docs/ui.md', components: 'lib/components/ui/*.js'}
  ]
}
```

![](http://wow.sapegin.me/3F1u0m1g2w07/Image%202016-04-20%20at%209.15.24%20AM.png)

[See example style guide](https://github.com/sapegin/react-styleguidist/tree/master/examples/sections).

PRs: #108 by @paulj, #119, #120 by @karlbright.

### Experimental isolated mode

Try to open your styleguide like `http://localhost:3000/#!/Button` and only one component will be rendered (#123 by @karlbright).

### Example doclets support

Now you can add additional examples to your components from external files:

```js
/**
 * Component is described here.
 * @example ./extra.examples.md
 */
export default class SomeComponent extends React.Component {
  // ...
}
```

PRs: #109 by @paulj.

### Ability to change react-docgen behavior

New options: resolver, handler, propsParser.

PRs: #106 by @paulj, #118 by @vslinko.

## Other changes and fixes

* Should work fine in React 15.0.
* Filter in the sidebar uses fuzzy search.
* Mark required props insted of optional in a props table (#102 by @CompuIves)
* Fixed: union elements share same key (#111, #112).
* Fixed CSS hook for Li tag (#101).

# 2.1.0 - 2016-03-03

## New features

* You can filter componets by name in the sidebar (#95 by @zammer).

## Other changes and fixes

* Improved default style (#92 by @karlbright).
* Ensure components list is scrollable (#92 by @karlbright).
* Ensure missing proptypes do not throw errors (#91 by @karlbright).

# 2.0.1 - 2016-02-24

* Fix Node 0.12 compatibility.
* `styleguidist build` exits with an error code when build fails.

# 2.0.0 - 2016-02-22

*Here is a list of changes since 1.3.2 (changes since 2.0.0-rc6: fixed npm2 compatibility, removed rootDir, added assetsDir, no params are passed to components function).*

## Breaking changes

### No default Webpack loaders for your project’s code

Now you need to explicitly specify all Webpack loaders for your project’s code in `styleguide.config.js`:

```javascript
module.exports = {
	// ...
	updateWebpackConfig: function(webpackConfig, env) {
		var sourceDir = path.resolve(__dirname, 'src');  // Affect only your project’s files
		webpackConfig.module.loaders.push(
			// Babel (will use your project’s .babelrc)
			{
				test: /\.jsx?$/,
				include: sourceDir,
				loader: 'babel'
			},
			// Sass
			{
				test: /\.scss$/,
				include: sourceDir,
				loader: 'style!css!sass?precision=10'
			}
		);
		return webpackConfig;
	}
};
```

Your project’s `.babelrc` will not affect Styleguidist, only the loaders you define in `styleguide.config.js`.

When you run dev-server `NODE_ENV` is set to `development` so if you use [React Transform](https://github.com/gaearon/react-transform-hmr) hot module replacement it will be enabled for your components. Otherwise you need to [set it up manually](https://github.com/sapegin/react-styleguidist#installation). When you build style guide `NODE_ENV` is set to `production`.

This change should reduce the number of conflicts between your code and Styleguidist’s.

### Babel 6

Babel 6 is required now.

### No `rootDir` config option

`component` option is now relative to config file location.

```javascript
// 1.3.2
module.exports = {
  rootDir: './lib',
  components: './components/**/*.js',
  // ...
};

// 2.0.0
module.exports = {
  components: './lib/components/**/*.js',
  // ...
};
```

### No params are passed to `components` function

Less magic, just use your own [glob](https://github.com/isaacs/node-glob):

```javascript
// 1.3.2
module.exports = {
  // ...
  components: function(config, glob) {
    return glob.sync(config.rootDir + '/components/**/*.js').filter(function(module) {
      return /\/[A-Z]\w*\.js$/.test(module);
    });
  }
};

// 2.0.0
var path = require('path');
var glob = require('glob');
module.exports = {
  // ...
  components: function() {
    return glob.sync(path.resolve(__dirname, 'lib/components/**/*.js')).filter(function(module) {
      return /\/[A-Z]\w*\.js$/.test(module);
    });
  }
};
```

### Code examples without React playground

Render fenced blocks with language flag as regular Markdown code snippets.

If you define a fenced code block with a language flag like this:

	```javascript
	import React from 'react';
	```

it will be rendered as a regular Markdown code snippet:

```javascript
import React from 'react';
```

## New features

* `assetsDir` config option. Serve this directory as static in dev-server, you can access any files at `/`.

## Other changes

* react-docgen updated to 2.7.0 that support flow proptypes (#79 by @codemix).

## Fixes

* Do not escape inline code blocks (#71).
* Fallback to file name or folder name if component name can’t be detected in runtime (#84).
* Styleguidist Babel loader should not read project’s `.babelrc` file.


# 2.0.0-rc6 - 2016-02-18

## Breaking changes

Render fenced blocks with language flag as regular Markdown code snippets.

If you define a fenced code block with a language flag like this:

	```javascript
	import React from 'react';
	```

it will be rendered as a regular Markdown code snippet:

```javascript
import React from 'react';
```

## Fixes

* Do not escape inline code blocks (#71).

# 2.0.0-rc5 - 2016-02-17

Fix error about dog-names module which is used on the example page and shouldn’t be required when you install `react-styleguidist`.

# 2.0.0-rc4 - 2016-02-17

## Breaking changes

Now you need to explicitly specify all Webpack loaders for your project’s code in `styleguide.config.js`:

```javascript
module.exports = {
	// ...
	updateWebpackConfig: function(webpackConfig, env) {
		var sourceDir = path.resolve(__dirname, 'src');
		webpackConfig.module.loaders.push(
			// Babel (will use your project’s .babelrc)
			{
				test: /\.jsx?$/,
				include: sourceDir,
				loader: 'babel'
			},
			// Sass
			{
				test: /\.scss$/,
				include: sourceDir,
				loader: 'style!css!sass?precision=10'
			}
		);
		return webpackConfig;
	}
};
```

Your project’s `.babelrc` will not affect Styleguidist, only the loaders you define in `styleguide.config.js`.

When you run dev-server `NODE_ENV` is set to `development` so if you use [React Transform](https://github.com/gaearon/react-transform-hmr) hot module replacement it will be enabled your components. Otherwise you need to set it up manually. When you build style guide `NODE_ENV` is set to `production`.

## Other changes

* Remove postcss to reduce possible conflicts with project’s code: postcss-loader would share plugins.
* Fallback to file name or folder name if component name can’t be detected in runtime (#84).

# 2.0.0-rc3 - 2016-02-08

* Try to fix problem with unknown `displayName` (#74).

# 2.0.0-rc2 - 2016-02-08

* Move babel-preset-react-hmre and babel-standalone to dependencies.

# 2.0.0-rc - 2016-02-08

## Breaking changes

### Babel 6

Please try it and report any issues or ideas how to improve it.

(#81 by @oliverturner).

### Custom Babel environment

* Set `NODE_ENV` to `development` or `production`.
* Set `BABEL_ENV` to `styleguidist` or `production`. Move hot reload config into `styleguidist` environment to prevent collisions with project’s Babel configuration (#58).

## Other changes

* react-docgen updated to 2.7.0 that support flow proptypes (#79 by @codemix).
* Serve root directory as static in dev-server (so you can access any files inside the root directory).

# 1.3.2 - 2016-01-08

* Remove ExtractTextPlugin.
* Fix typo in CSS.

# 1.3.1 - 2015-12-16

Bug fixes by @lovelybooks:

* Fix npm 2 support (#59, #66).
* Fix layout for wiiide components (#67).

# 1.3.0 - 2015-12-02

## New features

### Per examples state

Each example has its own state that you can access at the `state` variable and change with the `setState` function. Default state is `{}`.

```js
<div>
  <button onClick={() => setState({isOpen: true})}>Open</button>
  <Modal isOpen={state.isOpen}>
    <h1>Hallo!</h1>
    <button onClick={() => setState({isOpen: false})}>Close</button>
  </Modal>
</div>
```

Related issue: #45.

### Ability to style a style guide

Now you can change almost any piece of a style guide. For example you can change a font and a background color:

```css
.ReactStyleguidist-common__font {
  font-family: "Comic Sans MS", "Comic Sans", cursive;
}
.ReactStyleguidist-colors__base-bg {
  background: hotpink;
}
```

More [in the docs](https://github.com/sapegin/react-styleguidist#how-to-change-styles-of-a-style-guide).

Related issue: #32

### Other new features

* Table of contents (#28).
* Ability to use Markdown in components and props descriptions (#32).
* `PropTypes.shape` support (#20).
* Ability to change path line via `getComponentPathLine` option (#41).

## Bug fixes

* Improved styles isolation: Styleguidist styles should not interfer with your components styles.
* Removed sanitize.css that causes a lot of problems with component styles.
* Fixed issue when using components with the same names as component in Styleguidist.

## Other changes

* Use [markdown-it](https://github.com/markdown-it/markdown-it) and [Markdown React](https://github.com/alexkuz/markdown-react-js) instead of Marked.
* A lot of [documentation](https://github.com/sapegin/react-styleguidist/blob/master/Readme.md) improvements and new examples [in the demo style guide](http://sapegin.github.io/react-styleguidist/).

# 1.2.1 - 2015-11-18

* Stateless React components support (#44, #46, by @sunesimonsen).
* Avoid conflicts with host projects when using the same component names as in react-styleguidist (#48, by @sunesimonsen).

# 1.2.0 - 2015-11-16

* New feature: require() support in code examples (#25, by [lovelybooks](https://github.com/lovelybooks)).
* Show file name under component title (#29, by [lovelybooks](https://github.com/lovelybooks)).
* New option: skipComponentsWithoutExample (#38, by [panayi](https://github.com/panayi)).
* PropTypes.arrayOf and PropTypes.instanceOf support (#13, #17, #20).
* A bit better JSX syntax highlighting (#19).
* Add babel-plugin-react-display-name. Should preserve displayName when using React.createComponent (#18).
* Use Babel instead of JSXTransformer to compile examples in the browser (#16).
* Update react-codemirror, fix warnings in React 0.14 (#39).
* Add react-dom as a peer dependency.
* Drop Node 0.10 support.

# 1.1.1 - 2015-10-28

* Fix Wrapper component import to make Webpack’s aliases work with it.

# 1.1.0 - 2015-10-28

* Add a new Wrapper component that wraps every component in the style guide. It allows you to provide necessary context (e.g. react-intl) for every component.
* Nicer errors in the playground.

# 1.0.0 - 2015-10-28

* Require React 0.14, drop React 0.13 support.
* The `StyleGuide` component is just a container now (layout is now in the `Layout` component). It should make injecting your own components easier.
* Better error handling when react-docgen cannot parse component source.

# 0.2.1 - 2015-10-13

* npm 3 support.

# 0.2.0 - 2015-10-08

* New config options: template (#14), highlightTheme (#15) (by [reintroducing](https://github.com/reintroducing)).
* Union type support in PropTypes (#17, by [reintroducing](https://github.com/reintroducing))

# 0.1.8 - 2015-10-04

* Improve rootDir option check.

# 0.1.7 - 2015-10-04

* Fix HTML template path.

# 0.1.6 - 2015-10-04

* Fix babel-plugin-react-transform import, update config format (#9).
* Include babel-plugin-react-transform only in development.
* styleguideDir option should be relative to config file.

# 0.1.5 - 2015-10-03

* Add JSX extension (#10).
* Move Babel configuration to Webpack config (probably fixes #9).

# 0.1.4 - 2015-09-29

* Respect modules required by the host project but prefer modules from the Styleguidist (#5, #6).

# 0.1.3 - 2015-09-29

* Make Webpack import modules from the Styleguidist instead of the host project (#5).

# 0.1.2 - 2015-09-29

* Now peerDependencies should not fail with React 0.14.0-rc1.
* Update dependencies.

# 0.1.1 - 2015-09-27

* Fix the name of bin script.

# 0.1.0 - 2015-09-24

* First usable ersion.

# 0.0.1 - 2015-09-07

* First version.
