From b59b79fe321088b3e44eb5665ac946b33dd0590a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EC=9D=B4=EC=A2=85=EA=B2=BD?= Date: Mon, 9 Feb 2026 15:44:46 +0900 Subject: [PATCH 1/2] fix(prerender): add check for settled queue to skip empty prerender filter --- packages/start-plugin-core/src/prerender.ts | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/packages/start-plugin-core/src/prerender.ts b/packages/start-plugin-core/src/prerender.ts index 3986873c666..46bfd618d07 100644 --- a/packages/start-plugin-core/src/prerender.ts +++ b/packages/start-plugin-core/src/prerender.ts @@ -144,6 +144,11 @@ export async function prerender({ startConfig.pages.forEach((page) => addCrawlPageTask(page)) + if (queue.isSettled()) { + logger.info('No pages matched prerender filter; skipping.') + return Array.from(prerendered) + } + await queue.start() return Array.from(prerendered) From bc563a6930ce2301b9c2df4adf517b001f39ba48 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EC=9D=B4=EC=A2=85=EA=B2=BD?= Date: Mon, 9 Feb 2026 15:44:53 +0900 Subject: [PATCH 2/2] test(prerender): add test for resolving when prerender filter matches no pages --- .../tests/prerender-ssrf.test.ts | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/packages/start-plugin-core/tests/prerender-ssrf.test.ts b/packages/start-plugin-core/tests/prerender-ssrf.test.ts index 4a0551e8c31..397229f0f8a 100644 --- a/packages/start-plugin-core/tests/prerender-ssrf.test.ts +++ b/packages/start-plugin-core/tests/prerender-ssrf.test.ts @@ -65,7 +65,11 @@ function resetFetch() { function makeStartConfig(pagePath: string) { return { - prerender: { enabled: true, autoStaticPathsDiscovery: false }, + prerender: { + enabled: true, + autoStaticPathsDiscovery: false, + concurrency: 1, + }, pages: [{ path: pagePath }], router: { basepath: '' }, spa: { @@ -97,4 +101,13 @@ describe('prerender pages validation', () => { await expect(prerender({ startConfig, builder })).resolves.not.toThrow() }) + + it('resolves when prerender filter matches no pages', async () => { + resetFetch() + const startConfig = makeStartConfig('/about') + startConfig.prerender.filter = () => false + + await expect(prerender({ startConfig, builder })).resolves.not.toThrow() + expect(fetchMock).not.toHaveBeenCalled() + }) })