diff --git a/contributors.yml b/contributors.yml index 59d68d42a14..b970de8dce0 100644 --- a/contributors.yml +++ b/contributors.yml @@ -259,6 +259,7 @@ - penspinner - phishy - plastic041 +- plopix - princerajroy - prvnbist - ptitFicus diff --git a/templates/remix/app/entry.server.tsx b/templates/remix/app/entry.server.tsx index aa0aa0978b1..ba669ce5fdd 100644 --- a/templates/remix/app/entry.server.tsx +++ b/templates/remix/app/entry.server.tsx @@ -14,6 +14,23 @@ export default function handleRequest( responseHeaders.set("Content-Type", "text/html"); + // Add Link header for HTTP/2 Server Push + let http2PushLinksHeaders = remixContext.matches + .flatMap(({ route: { module, imports } }) => [module, ...(imports || [])]) + .filter(Boolean) + .concat([ + remixContext.manifest.url, + remixContext.manifest.entry.module, + ...remixContext.manifest.entry.imports, + ]); + responseHeaders.set( + "Link", + http2PushLinksHeaders + .map((link: string) => `<${link}>; rel=preload; as=script`) + .concat(responseHeaders.get("Link") as string) + .filter(Boolean) + .join(",") + ); return new Response("" + markup, { status: responseStatusCode, headers: responseHeaders,