1.0.2 • Published 2 years ago

next-pages-preimport v1.0.2

Weekly downloads
-
License
MIT
Repository
github
Last release
2 years ago

next-pages-preimport

Speed up first render of pages in your Next.js application.

Motivation

With Next.js a first render of each page has a large TTFB.

The overhead is due to the fact that dependencies are imported on demand when the user requests a page. In real complex applications this overhead can increase TTFB to tens of seconds.

The second time the page loads faster, since the modules are cached (in ssr-module-cache.js).

You can find details here: https://github.com/vercel/next.js/issues/23187.

This issue can be fixed with pages pre-import. Right now only _app and _document can be pre-imported (implemented here: https://github.com/vercel/next.js/pull/23261).

With next-page-preimport you can speed up your Next.js application and make it more stable.

Installation

yarn add next-pages-preimport

or

npm install next-pages-preimport

Usage

It works only with Custom Server.

// server.js
const express = require('express');
const next = require('next')

const nextPagesPreimport = require('next-pages-preimport');

const dev = process.env.NODE_ENV !== 'production'
const hostname = 'localhost'
const port = 3000

const app = next({ dev, hostname, port })
const handle = app.getRequestHandler()

app.prepare().then(() => {
  if (!dev) {
    nextPagesPreimport();
  }

  const server = express();

  server.all('*', (req, res) => handle(req, res));

  server.listen(port, (err) => {
    if (err) {
      throw err;
    }

    console.log(`Ready on http://${hostname}:${port}`);
  });
})

Options

options.nextPath

Default: .next

nextPagesPreimport({ nextPath: 'build' });

This option may be useful when you set custom distDir in your next.config.js.

options.verbose

Default: false

nextPagesPreimport({ verbose: true });

When verbose is true all preimported modules are printed. Useful for debugging.