@@ -296,16 +296,41 @@ async function serveSiteRoutes(requestURL: URL, request: NextRequest) {
296
296
requestHeaders . set ( MiddlewareHeaders . SiteURLData , JSON . stringify ( stableSiteURLData ) ) ;
297
297
298
298
// Preview of customization/theme
299
- const customization = siteRequestURL . searchParams . get ( 'customization' ) ;
299
+ const customizationCookie = request . cookies . get ( MiddlewareHeaders . Customization ) ;
300
+ const customization =
301
+ siteRequestURL . searchParams . get ( 'customization' ) ??
302
+ ( customizationCookie ? decodeURIComponent ( customizationCookie . value ) : undefined ) ;
300
303
if ( customization && validateSerializedCustomization ( customization ) ) {
301
304
routeType = 'dynamic' ;
302
305
// We need to encode the customization headers, otherwise it will fail for some customization values containing non ASCII chars on vercel.
303
306
requestHeaders . set ( MiddlewareHeaders . Customization , encodeURIComponent ( customization ) ) ;
307
+ cookies . push ( {
308
+ name : MiddlewareHeaders . Customization ,
309
+ value : encodeURIComponent ( customization ) ,
310
+ options : {
311
+ httpOnly : true ,
312
+ sameSite : 'lax' ,
313
+ maxAge : 10 * 60 , // 10 minutes
314
+ path : '/url/preview' , // Only send the cookie to preview routes
315
+ } ,
316
+ } ) ;
304
317
}
305
- const theme = siteRequestURL . searchParams . get ( 'theme' ) ;
318
+ const theme =
319
+ siteRequestURL . searchParams . get ( 'theme' ) ??
320
+ request . cookies . get ( MiddlewareHeaders . Theme ) ?. value ;
306
321
if ( theme === CustomizationThemeMode . Dark || theme === CustomizationThemeMode . Light ) {
307
322
routeType = 'dynamic' ;
308
323
requestHeaders . set ( MiddlewareHeaders . Theme , theme ) ;
324
+ cookies . push ( {
325
+ name : MiddlewareHeaders . Theme ,
326
+ value : theme ,
327
+ options : {
328
+ httpOnly : true ,
329
+ sameSite : 'lax' ,
330
+ maxAge : 10 * 60 , // 10 minutes
331
+ path : '/url/preview' , // Only send the cookie to preview routes
332
+ } ,
333
+ } ) ;
309
334
}
310
335
311
336
// We support forcing dynamic routes by setting a `gitbook-dynamic-route` cookie
0 commit comments