From e299b1ec4e8fc94ebafc8902d94776a2b4b01279 Mon Sep 17 00:00:00 2001 From: Daniel Hurtado Date: Sat, 6 Jan 2024 18:21:43 -0300 Subject: [PATCH] fix: prevent loading and overriding CanvasKit multiple times --- package/src/web/LoadSkiaWeb.tsx | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/package/src/web/LoadSkiaWeb.tsx b/package/src/web/LoadSkiaWeb.tsx index 481cd5a310..c878ace74a 100644 --- a/package/src/web/LoadSkiaWeb.tsx +++ b/package/src/web/LoadSkiaWeb.tsx @@ -10,11 +10,14 @@ declare global { var CanvasKit: CanvasKitType; } +let ckSharedPromise: Promise; + export const LoadSkiaWeb = async (opts?: CanvasKitInitOptions) => { if (global.CanvasKit !== undefined) { return; } - const CanvasKit = await CanvasKitInit(opts); + ckSharedPromise = ckSharedPromise ?? CanvasKitInit(opts); + const CanvasKit = await ckSharedPromise; // The CanvasKit API is stored on the global object and used // to create the JsiSKApi in the Skia.web.ts file. global.CanvasKit = CanvasKit;