From 4ad6e28663c6716aaaed969fd071aa4287f044f7 Mon Sep 17 00:00:00 2001 From: imccyu <276526105+imccyu@users.noreply.github.com> Date: Mon, 17 Aug 2026 19:26:35 +0800 Subject: [PATCH] fix(client): consume bootstrap handoff queue --- packages/client/modules/src/client/system.ts | 2 +- packages/client/modules/tests/loader.client.spec.ts | 1 + 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/packages/client/modules/src/client/system.ts b/packages/client/modules/src/client/system.ts index 49660b9ce3..79c3c0a2b8 100644 --- a/packages/client/modules/src/client/system.ts +++ b/packages/client/modules/src/client/system.ts @@ -88,7 +88,7 @@ export class ClientModuleSystem implements ClientModuleLoader { // Replace first: a bundle that executes while queued handoffs are draining // must register against the live sink rather than append behind the drain. win.__ModuleLoader__ = sink - for (const handoff of queued?.handoffs ?? []) sink.load(handoff) + for (const handoff of queued?.handoffs.splice(0) ?? []) sink.load(handoff) } /** Register one bundle factory, rejecting a script that executes twice without invalidation. */ diff --git a/packages/client/modules/tests/loader.client.spec.ts b/packages/client/modules/tests/loader.client.spec.ts index cef8fdea52..e43ea86b37 100644 --- a/packages/client/modules/tests/loader.client.spec.ts +++ b/packages/client/modules/tests/loader.client.spec.ts @@ -72,6 +72,7 @@ describe('lazy CJS arrival', () => { const b = bench([row('runtime')]) const exports = await b.loader.import('runtime', '', {}) expect((exports as { marker: string }).marker).toBe('preloaded') + expect(handoffs).toEqual([]) expect(b.fetched).toEqual([]) expect(win.__ModuleLoader__?.mode).toBe('live') })