[![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 ### Using `create-next-app` Download [`create-next-app`](https://github.com/segmentio/create-next-app) to bootstrap the example: ``` npm i -g create-next-app create-next-app --example with-reasonml with-reasonml-app ``` ### Download manually Download the example [or clone the repo](https://github.com/zeit/next.js): ```bash curl https://codeload.github.com/zeit/next.js/tar.gz/canary | tar -xz --strip=2 next.js-canary/examples/with-reasonml cd with-reasonml ``` Install it and run: ```bash npm install npm run build npm run dev ``` Deploy it to the cloud with [now](https://zeit.co/now) ([download](https://zeit.co/download)) ```bash now ``` ### Recommendation: Run BuckleScript build system `bsb -w` and `next -w` separately. For the sake of simple convention, `npm run dev` run both `bsb` and `next` concurrently. However, this doesn't offer the full [colorful and very, very, veeeery nice error output](https://reasonml.github.io/blog/2017/08/25/way-nicer-error-messages.html) experience that ReasonML can offer, don't miss it! ## 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