diff --git a/examples/with-reasonml/.gitignore b/examples/with-reasonml/.gitignore
new file mode 100644
index 00000000..ac1fa842
--- /dev/null
+++ b/examples/with-reasonml/.gitignore
@@ -0,0 +1,2 @@
+bs
+.merlin
diff --git a/examples/with-reasonml/README.md b/examples/with-reasonml/README.md
new file mode 100644
index 00000000..b9484810
--- /dev/null
+++ b/examples/with-reasonml/README.md
@@ -0,0 +1,32 @@
+[![Deploy to now](https://deploy.now.sh/static/button.svg)](https://deploy.now.sh/?repo=https://github.com/zeit/next.js/tree/master/examples/with-reasonml)
+# Example app using ReasonML & ReasonReact components
+
+## How to use
+
+Download the example [or clone the repo](https://github.com/zeit/next.js):
+
+```bash
+curl https://codeload.github.com/zeit/next.js/tar.gz/master | tar -xz --strip=2 next.js-master/examples/with-reasonml
+cd with-reasonml
+```
+
+Install it and run:
+
+```bash
+npm install
+npm run dev
+```
+
+Deploy it to the cloud with [now](https://zeit.co/now) ([download](https://zeit.co/download))
+
+```bash
+now
+```
+
+## The idea behind the example
+
+This example features:
+
+* An app that mixes together JavaScript and ReasonML components and functions
+* An app with two pages which has a common Counter component
+* That Counter component maintain the counter inside its module. This is used primarily to illustrate that modules get initialized once and their state variables persist in runtime
diff --git a/examples/with-reasonml/bsconfig.json b/examples/with-reasonml/bsconfig.json
new file mode 100644
index 00000000..323cfbe3
--- /dev/null
+++ b/examples/with-reasonml/bsconfig.json
@@ -0,0 +1,7 @@
+{
+ "name": "with-reasonml",
+ "sources": ["components", "pages"],
+ "bs-dependencies": ["reason-react"],
+ "reason": { "react-jsx": 2 },
+ "package-specs": ["commonjs"]
+}
diff --git a/examples/with-reasonml/components/Counter.re b/examples/with-reasonml/components/Counter.re
new file mode 100644
index 00000000..3ba4ba61
--- /dev/null
+++ b/examples/with-reasonml/components/Counter.re
@@ -0,0 +1,14 @@
+let component = ReasonReact.statefulComponent "Counter";
+let make _children => {
+ ...component,
+ initialState: fun () => 0,
+ render: fun self => {
+ let countMsg = "Count: " ^ (string_of_int self.state);
+ let onClick _evt {ReasonReact.state} => ReasonReact.Update (state + 1);
+
+
(ReasonReact.stringToElement "HOME PAGE is here!")
+
+
+ }
+};
+let jsComponent =
+ ReasonReact.wrapReasonForJs
+ ::component
+ (fun _jsProps => make [||])
diff --git a/examples/with-reasonml/pages/about.js b/examples/with-reasonml/pages/about.js
new file mode 100644
index 00000000..b08913f1
--- /dev/null
+++ b/examples/with-reasonml/pages/about.js
@@ -0,0 +1,4 @@
+import { jsComponent as About } from './about.re'
+import React from 'react'
+
+export default () =>
diff --git a/examples/with-reasonml/pages/index.js b/examples/with-reasonml/pages/index.js
new file mode 100644
index 00000000..1cedf538
--- /dev/null
+++ b/examples/with-reasonml/pages/index.js
@@ -0,0 +1,3 @@
+import { jsComponent as Index } from './index.re'
+
+export default () =>
diff --git a/examples/with-redux-code-splitting/README.md b/examples/with-redux-code-splitting/README.md
new file mode 100644
index 00000000..2a8a204e
--- /dev/null
+++ b/examples/with-redux-code-splitting/README.md
@@ -0,0 +1,32 @@
+
+[![Deploy to now](https://deploy.now.sh/static/button.svg)](https://deploy.now.sh/?repo=https://github.com/zeit/next.js/tree/master/examples/with-redux-code-splitting)
+
+# Redux with code splitting example
+
+## How to use
+
+Download the example [or clone the repo](https://github.com/zeit/next.js):
+
+```bash
+curl https://codeload.github.com/zeit/next.js/tar.gz/master | tar -xz --strip=2 next.js-master/examples/with-redux-code-splitting
+cd with-redux-code-splitting
+```
+
+Install it and run:
+
+```bash
+npm install
+npm run dev
+```
+
+Deploy it to the cloud with [now](https://zeit.co/now) ([download](https://zeit.co/download))
+
+```bash
+now
+```
+
+## The idea behind the example
+
+Redux uses single store per application and usually it causes problems for code splitting when you want to load actions and reducers used on the current page only.
+
+This example utilizes [fast-redux](https://github.com/dogada/fast-redux) to split Redux's actions and reducers across pages. In result each page's javascript bundle contains only code that is used on the page. When user navigates to a new page, its actions and reducers are connected to the single shared application store.
\ No newline at end of file
diff --git a/examples/with-redux-code-splitting/config/redux.js b/examples/with-redux-code-splitting/config/redux.js
new file mode 100644
index 00000000..0b9f5b94
--- /dev/null
+++ b/examples/with-redux-code-splitting/config/redux.js
@@ -0,0 +1,12 @@
+import { createStore, applyMiddleware } from 'redux'
+import { composeWithDevTools } from 'redux-devtools-extension'
+import thunkMiddleware from 'redux-thunk'
+import withRedux from 'next-redux-wrapper'
+import { rootReducer } from 'fast-redux'
+
+export const initStore = (initialState = {}) => {
+ return createStore(rootReducer, initialState,
+ composeWithDevTools(applyMiddleware(thunkMiddleware)))
+}
+
+export const reduxPage = (comp) => withRedux(initStore)(comp)
diff --git a/examples/with-redux-code-splitting/containers/about.js b/examples/with-redux-code-splitting/containers/about.js
new file mode 100644
index 00000000..5813b640
--- /dev/null
+++ b/examples/with-redux-code-splitting/containers/about.js
@@ -0,0 +1,32 @@
+import React from 'react'
+import {bindActionCreators} from 'redux'
+import {connect} from 'react-redux'
+import {namespaceConfig} from 'fast-redux'
+import Link from 'next/link'
+
+const DEFAULT_STATE = {version: 1}
+
+const {actionCreator, getState: getAboutState} = namespaceConfig('about', DEFAULT_STATE)
+
+const bumpVersion = actionCreator(function bumpVersion (state, increment) {
+ return {...state, version: state.version + increment}
+})
+
+const About = ({ version, bumpVersion }) => (
+