@@ -414,6 +414,63 @@ test.describe("Prerendering", () => {
414
414
expect ( await app . getHtml ( ) ) . toContain ( "<span>NOT-PRERENDERED-false</span>" ) ;
415
415
} ) ;
416
416
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
+
417
474
test ( "Renders down to the proper HydrateFallback" , async ( { page } ) => {
418
475
fixture = await createFixture ( {
419
476
prerender : true ,
0 commit comments