@@ -79,6 +79,7 @@ import {
7979 createConfigLoader ,
8080 resolveEntryFiles ,
8181 configRouteToBranchRoute ,
82+ type PrerenderPaths ,
8283} from "../config/config" ;
8384import { getOptimizeDepsEntries } from "./optimize-deps-entries" ;
8485import { decorateComponentExportsWithProps } from "./with-props" ;
@@ -2659,7 +2660,7 @@ async function handlePrerender(
26592660 }
26602661
26612662 let buildRoutes = createPrerenderRoutes ( build . routes ) ;
2662- const { prerenderConcurrency = 1 } = reactRouterConfig
2663+ const concurrency = getPrerenderConcurrency ( reactRouterConfig . prerender ) ;
26632664 await pMap ( build . prerender , async path => {
26642665 // Ensure we have a leading slash for matching
26652666 let matches = matchRoutes ( buildRoutes , `/${ path } /` . replace ( / ^ \/ \/ + / , "/" ) ) ;
@@ -2733,7 +2734,7 @@ async function handlePrerender(
27332734 : undefined ,
27342735 ) ;
27352736 }
2736- } , { concurrency : prerenderConcurrency } ) ;
2737+ } , { concurrency } ) ;
27372738}
27382739
27392740function getStaticPrerenderPaths ( routes : DataRouteObject [ ] ) {
@@ -2921,6 +2922,10 @@ export async function getPrerenderPaths(
29212922 let prerenderPaths : string [ ] = [ ] ;
29222923 if ( prerender != null && prerender !== false ) {
29232924 let prerenderRoutes = createPrerenderRoutes ( routes ) ;
2925+ if ( typeof prerender === "object" ) {
2926+ prerender = ( prerender as { paths : PrerenderPaths } ) . paths
2927+ }
2928+
29242929 if ( prerender === true ) {
29252930 let { paths, paramRoutes } = getStaticPrerenderPaths ( prerenderRoutes ) ;
29262931 if ( logWarning && ! ssr && paramRoutes . length > 0 ) {
@@ -2947,6 +2952,17 @@ export async function getPrerenderPaths(
29472952 return prerenderPaths ;
29482953}
29492954
2955+ const DEFAULT_PRERENDER_CONCURRENCY = 1
2956+
2957+ function getPrerenderConcurrency (
2958+ prerender : ResolvedReactRouterConfig [ "prerender" ] ,
2959+ ) : number {
2960+ if ( typeof prerender === "object" ) {
2961+ return ( prerender as { unstable_concurrency ?: number } ) . unstable_concurrency || DEFAULT_PRERENDER_CONCURRENCY
2962+ }
2963+ return DEFAULT_PRERENDER_CONCURRENCY
2964+ }
2965+
29502966// Note: Duplicated from react-router/lib/server-runtime
29512967function groupRoutesByParentId ( manifest : GenericRouteManifest ) {
29522968 let routes : Record < string , Omit < RouteManifestEntry , "file" > [ ] > = { } ;
0 commit comments