From dce528372df64f73a4325711aedaf4c7525b838f Mon Sep 17 00:00:00 2001 From: bintangakbarRK Date: Tue, 4 Aug 2026 14:03:02 +0700 Subject: [PATCH] fix: remove dead promise polyfill import Since Hermes is the only supported JS engine and always provides a native Promise implementation, the `else` branch in polyfillPromise.js that imports the `promise` package via `../Promise` is dead code that can never execute (`hasPromise()` is always true). This dead import causes the bundler to include the entire `promise` package (~15KB) in every app's JS bundle despite it never being used. Remove the dead branch and the unused `polyfillGlobal` import. Fixes #57702 --- .../Libraries/Core/polyfillPromise.js | 27 +++++++------------ 1 file changed, 10 insertions(+), 17 deletions(-) diff --git a/packages/react-native/Libraries/Core/polyfillPromise.js b/packages/react-native/Libraries/Core/polyfillPromise.js index 5bfec271d1c5..14124d809dc5 100644 --- a/packages/react-native/Libraries/Core/polyfillPromise.js +++ b/packages/react-native/Libraries/Core/polyfillPromise.js @@ -10,29 +10,22 @@ 'use strict'; -const {polyfillGlobal} = require('../Utilities/PolyfillFunctions'); - /** - * Set up Promise. The native Promise implementation throws the following error: - * ERROR: Event loop not supported. + * Set up Promise. Hermes provides a native Promise implementation that + * satisfies all requirements of React Native. * * If you don't need these polyfills, don't use InitializeCore; just directly * require the modules you need from InitializeCore for setup. */ -// If global.Promise is provided by Hermes, we are confident that it can provide -// all the methods needed by React Native, so we can directly use it. -if (global?.HermesInternal?.hasPromise?.()) { - const HermesPromise = global.Promise; +// Hermes is the only supported JS engine and always provides Promise natively. +const HermesPromise = global.Promise; - if (__DEV__) { - if (typeof HermesPromise !== 'function') { - console.error('HermesPromise does not exist'); - } - global.HermesInternal?.enablePromiseRejectionTracker?.( - require('../promiseRejectionTrackingOptions').default, - ); +if (__DEV__) { + if (typeof HermesPromise !== 'function') { + console.error('HermesPromise does not exist'); } -} else { - polyfillGlobal('Promise', () => require('../Promise').default); + global.HermesInternal?.enablePromiseRejectionTracker?.( + require('../promiseRejectionTrackingOptions').default, + ); }