rsnext/examples/progressive-render
2019-11-27 11:40:58 -05:00
..
components [example] Progressive rendered application (#998) 2017-02-05 13:43:28 +01:00
pages Update progressive enhancement example (#9507) 2019-11-25 16:32:35 -05:00
package.json Update progressive enhancement example (#9507) 2019-11-25 16:32:35 -05:00
README.md Add the deploy button to compatible examples (#9547) 2019-11-27 11:40:58 -05:00

Example app implementing progressive server-side render

Deploy your own

Deploy the example using ZEIT Now:

Deploy with ZEIT Now

How to use

Using create-next-app

Execute create-next-app with Yarn or npx to bootstrap the example:

npx create-next-app --example progressive-render progressive-render-app
# or
yarn create next-app --example progressive-render progressive-render-app

Download manually

Download the example:

curl https://codeload.github.com/zeit/next.js/tar.gz/canary | tar -xz --strip=2 next.js-canary/examples/progressive-render
cd progressive-render

Install it and run:

npm install
npm run dev
# or
yarn
yarn dev

Deploy it to the cloud with now (download):

now

The idea behind the example

Sometimes you want to not server render some parts of your application.

For example:

  1. Third party components without server render capabilities
  2. Components that depend on window or other browser only APIs
  3. Content isn't important enough for the user (eg. below the fold content)

To handle these cases, you can conditionally render your component using the useEffect hook.

This example features:

  • A custom hook called useMounted, implementing this behavior
  • An app with a component that must only be rendered in the client
  • A loading component that will be displayed before rendering the client-only component