From 3b638714a052bd35a788f17c4a4b876151854fca Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Rub=C3=A9n=20Norte?= Date: Fri, 13 Dec 2024 07:40:05 -0800 Subject: [PATCH] Lazy load Fabric renderer in Fantom (#48261) Summary: Changelog: [internal] This avoids initializing the renderer if the caller doesn't invoke any of the methods that use it. Differential Revision: D67199972 --- packages/react-native-fantom/src/index.js | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/packages/react-native-fantom/src/index.js b/packages/react-native-fantom/src/index.js index 0c3b79f7dbcd3b..fcd2bf1a3da0df 100644 --- a/packages/react-native-fantom/src/index.js +++ b/packages/react-native-fantom/src/index.js @@ -15,7 +15,6 @@ import type { import type {MixedElement} from 'react'; import getFantomRenderedOutput from './getFantomRenderedOutput'; -import ReactFabric from 'react-native/Libraries/Renderer/shims/ReactFabric'; let globalSurfaceIdCounter = 1; @@ -23,6 +22,15 @@ const nativeRuntimeScheduler = global.nativeRuntimeScheduler; const schedulerPriorityImmediate = nativeRuntimeScheduler.unstable_ImmediatePriority; +let ReactFabric = null; +function getReactFabric() { + if (ReactFabric == null) { + ReactFabric = + require('react-native/Libraries/Renderer/shims/ReactFabric').default; + } + return ReactFabric; +} + class Root { #surfaceId: number; #hasRendered: boolean = false; @@ -38,7 +46,7 @@ class Root { this.#hasRendered = true; } - ReactFabric.render(element, this.#surfaceId, () => {}, true); + getReactFabric().render(element, this.#surfaceId, () => {}, true); } getMountingLogs(): Array {