@@ -414,6 +414,63 @@ test.describe("Prerendering", () => {
414414 expect ( await app . getHtml ( ) ) . toContain ( "<span>NOT-PRERENDERED-false</span>" ) ;
415415 } ) ;
416416
417+ test ( "Does not encounter header limits on large prerendered data" , async ( {
418+ page,
419+ } ) => {
420+ fixture = await createFixture ( {
421+ // Even thogh we are prerendering, we want a running server so we can
422+ // hit the pre-rendered HTML file and a non-prerendered route
423+ prerender : false ,
424+ files : {
425+ ...files ,
426+ "vite.config.ts" : js `
427+ import { defineConfig } from "vite";
428+ import { reactRouter } from "@react-router/dev/vite";
429+
430+ export default defineConfig({
431+ build: { manifest: true },
432+ plugins: [
433+ reactRouter({
434+ prerender: ["/", "/about"],
435+ })
436+ ],
437+ });
438+ ` ,
439+ "app/routes/about.tsx" : js `
440+ import { useLoaderData } from 'react-router';
441+ export function loader({ request }) {
442+ return {
443+ prerendered: request.headers.has('X-React-Router-Prerender') ? 'yes' : 'no',
444+ // 24999 characters
445+ data: new Array(5000).fill('test').join('-'),
446+ };
447+ }
448+
449+ export default function Comp() {
450+ let data = useLoaderData();
451+ return (
452+ <>
453+ <h1 data-title>Large loader</h1>
454+ <p data-prerendered>{data.prerendered}</p>
455+ <p data-length>{data.data.length}</p>
456+ </>
457+ );
458+ }
459+ ` ,
460+ } ,
461+ } ) ;
462+ appFixture = await createAppFixture ( fixture ) ;
463+
464+ let app = new PlaywrightFixture ( appFixture , page ) ;
465+ await app . goto ( "/about" ) ;
466+ await page . waitForSelector ( "[data-mounted]" ) ;
467+ expect ( await app . getHtml ( "[data-title]" ) ) . toContain ( "Large loader" ) ;
468+ expect ( await app . getHtml ( "[data-prerendered]" ) ) . toContain ( "yes" ) ;
469+ expect ( await app . getHtml ( "[data-length]" ) ) . toBe (
470+ '<p data-length="true">24999</p>'
471+ ) ;
472+ } ) ;
473+
417474 test ( "Renders down to the proper HydrateFallback" , async ( { page } ) => {
418475 fixture = await createFixture ( {
419476 prerender : true ,
0 commit comments