Sign Up for Free

RunKit +

Try any Node.js package right in your browser

This is a playground to test code. It runs a full Node.js environment and already has all of npm’s 400,000 packages pre-installed, including fastify-nextjs with all npm packages installed. Try it out:

require("next/package.json"); // next is a peer dependency. var fastifyNextjs = require("fastify-nextjs")

This service is provided by RunKit and is not affiliated with npm, Inc or the package authors.

fastify-nextjs v5.0.3

React server side rendering support for Fastify with Next

fastify-nextjs

js-standard-style CI workflow

React server side rendering support for Fastify with Next Framework.

Install

npm i fastify-nextjs next --save

Usage

Since Next needs some time to be ready on the first launch, you must declare your routes inside the after callback, after you registered the plugin.
The plugin will expose the api next in Fastify that will handle the rendering for you.

const fastify = require('fastify')()

fastify
  .register(require('fastify-nextjs'))
  .after(() => {
    fastify.next('/hello')
  })

fastify.listen(3000, err => {
  if (err) throw err
  console.log('Server listening on http://localhost:3000')
})

All you server rendered pages must be saved in the folder pages, as you can see in the next documentation.

// /pages/hello.js
export default () => <div>hello world</div>

If you need to pass custom options to next just pass them to register as second parameter.

fastify.register(require('fastify-nextjs'), { dev: true })

If you need to handle the render part yourself, just pass a callback to next:

fastify.next('/hello', (app, req, reply) => {
  // your code
  // `app` is the Next instance
  app.render(req.raw, reply.raw, '/hello', req.query, {})
})

Acknowledgements

This project is kindly sponsored by:

License

Licensed under MIT.

RunKit is a free, in-browser JavaScript dev environment for prototyping Node.js code, with every npm package installed. Sign up to share your code.
Sign Up for Free