diff --git a/.changeset/weak-maps-dress.md b/.changeset/weak-maps-dress.md new file mode 100644 index 00000000..5d6471fe --- /dev/null +++ b/.changeset/weak-maps-dress.md @@ -0,0 +1,7 @@ +--- +"@opennextjs/cloudflare": minor +--- + +Add the `routePreloadingBehavior` to the options of `defineCloudflareConfig`. + +The default is set to "none" as other values might increase CPU usage on cold starts. diff --git a/packages/cloudflare/src/api/config.ts b/packages/cloudflare/src/api/config.ts index aadc50d2..c92365da 100644 --- a/packages/cloudflare/src/api/config.ts +++ b/packages/cloudflare/src/api/config.ts @@ -3,6 +3,7 @@ import { BaseOverride, LazyLoadedOverride, OpenNextConfig as AwsOpenNextConfig, + type RoutePreloadingBehavior, } from "@opennextjs/aws/types/open-next"; import type { CDNInvalidationHandler, @@ -45,6 +46,13 @@ export type CloudflareOverrides = { * @default false */ enableCacheInterception?: boolean; + + /** + * Route preloading behavior. + * Using a value other than "none" can result in higher CPU usage on cold starts. + * @default "none" + */ + routePreloadingBehavior?: RoutePreloadingBehavior; }; /** @@ -54,7 +62,14 @@ export type CloudflareOverrides = { * @returns the OpenNext configuration object */ export function defineCloudflareConfig(config: CloudflareOverrides = {}): OpenNextConfig { - const { incrementalCache, tagCache, queue, cachePurge, enableCacheInterception = false } = config; + const { + incrementalCache, + tagCache, + queue, + cachePurge, + enableCacheInterception = false, + routePreloadingBehavior = "none", + } = config; return { default: { @@ -67,7 +82,7 @@ export function defineCloudflareConfig(config: CloudflareOverrides = {}): OpenNe queue: resolveQueue(queue), cdnInvalidation: resolveCdnInvalidation(cachePurge), }, - routePreloadingBehavior: "withWaitUntil", + routePreloadingBehavior, }, // node:crypto is used to compute cache keys edgeExternals: ["node:crypto"],