import Document , { Head , Html , Main , NextScript } from 'next/document' ; import React from 'react' ; import { ServerStyleSheet } from 'styled-components' ; export default class MyDocument extends Document { static async getInitialProps ( ctx ) { const sheet = new ServerStyleSheet ( ) ; const originalRenderPage = ctx . renderPage ; try { ctx . renderPage = ( ) => originalRenderPage ( { enhanceApp : ( App ) => ( props ) => sheet . collectStyles ( < App { ... props } / > ) } ) ; const initialProps = await Document . getInitialProps ( ctx ) ; return { ... initialProps , styles : ( < > { initialProps . styles } { sheet . getStyleElement ( ) } < />) } ; } finally { sheet . seal ( ) ; } } render ( ) { return ( < Html lang = "en" > < Head > < link rel = "preload" href = "/assets/Calibre.woff2" as = "font" type = "font/woff2" crossOrigin = "anonymous" / > < link rel = "preload" href = "/assets/Calibre-Medium.woff2" as = "font" type = "font/woff2" crossOrigin = "anonymous" / > < link rel = "preload" href = "/assets/Calibre-SemiBold.woff2" as = "font" type = "font/woff2" crossOrigin = "anonymous" / > < link href = "/assets/critical.css" rel = "stylesheet" / > < /Head> < body > < Main /> < NextScript / > < /body> < /Html>); } }