diff --git a/ReactAndroid/src/main/java/com/facebook/react/config/ReactFeatureFlags.java b/ReactAndroid/src/main/java/com/facebook/react/config/ReactFeatureFlags.java
index a9961cb2f4d..e0910b2fa91 100644
--- a/ReactAndroid/src/main/java/com/facebook/react/config/ReactFeatureFlags.java
+++ b/ReactAndroid/src/main/java/com/facebook/react/config/ReactFeatureFlags.java
@@ -116,17 +116,6 @@ public class ReactFeatureFlags {
/** Feature Flag to control RN Android scrollEventThrottle prop. */
public static boolean enableScrollEventThrottle = false;
- /**
- * Feature flag that controls how turbo modules are exposed to JS
- *
- *
- * - 0 = as a HostObject
- *
- 1 = as a plain object, backed with a HostObject as prototype
- *
- 2 = as a plain object, with all methods eagerly configured
- *
- */
- public static int turboModuleBindingMode = 0;
-
/**
* Feature Flag to enable View Recycling. When enabled, individual ViewManagers must still opt-in.
*/
diff --git a/ReactAndroid/src/main/java/com/facebook/react/turbomodule/core/jni/ReactCommon/TurboModuleManager.cpp b/ReactAndroid/src/main/java/com/facebook/react/turbomodule/core/jni/ReactCommon/TurboModuleManager.cpp
index a4d1c1289d9..04238f8eb8f 100644
--- a/ReactAndroid/src/main/java/com/facebook/react/turbomodule/core/jni/ReactCommon/TurboModuleManager.cpp
+++ b/ReactAndroid/src/main/java/com/facebook/react/turbomodule/core/jni/ReactCommon/TurboModuleManager.cpp
@@ -20,17 +20,6 @@
namespace facebook {
namespace react {
-constexpr static auto ReactFeatureFlagsJavaDescriptor =
- "com/facebook/react/config/ReactFeatureFlags";
-
-static int getFeatureFlagValue(const char *name) {
- static const auto reactFeatureFlagsJavaDescriptor =
- jni::findClassStatic(ReactFeatureFlagsJavaDescriptor);
- const auto field =
- reactFeatureFlagsJavaDescriptor->getStaticField(name);
- return reactFeatureFlagsJavaDescriptor->getStaticFieldValue(field);
-}
-
TurboModuleManager::TurboModuleManager(
jni::alias_ref jThis,
RuntimeExecutor runtimeExecutor,
@@ -180,13 +169,8 @@ void TurboModuleManager::installJSIBindings() {
return nullptr;
};
- TurboModuleBindingMode bindingMode = static_cast(
- getFeatureFlagValue("turboModuleBindingMode"));
TurboModuleBinding::install(
- runtime,
- std::move(turboModuleProvider),
- bindingMode,
- longLivedObjectCollection_);
+ runtime, std::move(turboModuleProvider), longLivedObjectCollection_);
});
}
diff --git a/ReactCommon/react/nativemodule/core/ReactCommon/TurboModuleBinding.cpp b/ReactCommon/react/nativemodule/core/ReactCommon/TurboModuleBinding.cpp
index 03c65ef2890..b73fdfd2207 100644
--- a/ReactCommon/react/nativemodule/core/ReactCommon/TurboModuleBinding.cpp
+++ b/ReactCommon/react/nativemodule/core/ReactCommon/TurboModuleBinding.cpp
@@ -24,16 +24,13 @@ namespace react {
TurboModuleBinding::TurboModuleBinding(
const TurboModuleProviderFunctionType &&moduleProvider,
- TurboModuleBindingMode bindingMode,
std::shared_ptr longLivedObjectCollection)
: moduleProvider_(std::move(moduleProvider)),
- longLivedObjectCollection_(std::move(longLivedObjectCollection)),
- bindingMode_(bindingMode) {}
+ longLivedObjectCollection_(std::move(longLivedObjectCollection)) {}
void TurboModuleBinding::install(
jsi::Runtime &runtime,
const TurboModuleProviderFunctionType &&moduleProvider,
- TurboModuleBindingMode bindingMode,
std::shared_ptr longLivedObjectCollection) {
runtime.global().setProperty(
runtime,
@@ -44,7 +41,6 @@ void TurboModuleBinding::install(
1,
[binding = TurboModuleBinding(
std::move(moduleProvider),
- bindingMode,
std::move(longLivedObjectCollection))](
jsi::Runtime &rt,
const jsi::Value &thisVal,
@@ -80,28 +76,15 @@ jsi::Value TurboModuleBinding::getModule(
module = moduleProvider_(moduleName);
}
if (module) {
- // Default behaviour
- if (bindingMode_ == TurboModuleBindingMode::HostObject) {
- return jsi::Object::createFromHostObject(runtime, std::move(module));
- }
-
auto &jsRepresentation = module->jsRepresentation_;
if (!jsRepresentation) {
jsRepresentation = std::make_unique(runtime);
- if (bindingMode_ == TurboModuleBindingMode::Prototype) {
- // Option 1: create plain object, with it's prototype mapped back to the
- // hostobject. Any properties accessed are stored on the plain object
- auto hostObject =
- jsi::Object::createFromHostObject(runtime, std::move(module));
- jsRepresentation->setProperty(
- runtime, "__proto__", std::move(hostObject));
- } else {
- // Option 2: eagerly install all hostfunctions at this point, avoids
- // prototype
- for (auto &propName : module->getPropertyNames(runtime)) {
- module->get(runtime, propName);
- }
- }
+ // Create plain object, with it's prototype mapped back to the hostobject.
+ // Any properties accessed are cached on the plain object.
+ auto hostObject =
+ jsi::Object::createFromHostObject(runtime, std::move(module));
+ jsRepresentation->setProperty(
+ runtime, "__proto__", std::move(hostObject));
}
return jsi::Value(runtime, *jsRepresentation);
} else {
diff --git a/ReactCommon/react/nativemodule/core/ReactCommon/TurboModuleBinding.h b/ReactCommon/react/nativemodule/core/ReactCommon/TurboModuleBinding.h
index 1791d4e272e..8d7742f3ff0 100644
--- a/ReactCommon/react/nativemodule/core/ReactCommon/TurboModuleBinding.h
+++ b/ReactCommon/react/nativemodule/core/ReactCommon/TurboModuleBinding.h
@@ -18,12 +18,6 @@ namespace react {
class JSCallInvoker;
-enum class TurboModuleBindingMode : uint8_t {
- HostObject = 0,
- Prototype = 1,
- Eager = 2,
-};
-
/**
* Represents the JavaScript binding for the TurboModule system.
*/
@@ -36,13 +30,11 @@ class TurboModuleBinding {
static void install(
jsi::Runtime &runtime,
const TurboModuleProviderFunctionType &&moduleProvider,
- TurboModuleBindingMode bindingMode,
std::shared_ptr longLivedObjectCollection);
private:
TurboModuleBinding(
const TurboModuleProviderFunctionType &&moduleProvider,
- TurboModuleBindingMode bindingMode,
std::shared_ptr longLivedObjectCollection);
virtual ~TurboModuleBinding();
@@ -58,7 +50,6 @@ class TurboModuleBinding {
TurboModuleProviderFunctionType moduleProvider_;
std::shared_ptr longLivedObjectCollection_;
- TurboModuleBindingMode bindingMode_;
};
} // namespace react
diff --git a/ReactCommon/react/nativemodule/core/platform/ios/RCTTurboModuleManager.mm b/ReactCommon/react/nativemodule/core/platform/ios/RCTTurboModuleManager.mm
index dffe85b24c0..bf0bdb1a06e 100644
--- a/ReactCommon/react/nativemodule/core/platform/ios/RCTTurboModuleManager.mm
+++ b/ReactCommon/react/nativemodule/core/platform/ios/RCTTurboModuleManager.mm
@@ -777,14 +777,12 @@ static Class getFallbackClassFromName(const char *name)
if (RCTGetTurboModuleCleanupMode() == kRCTGlobalScope ||
RCTGetTurboModuleCleanupMode() == kRCTGlobalScopeUsingRetainJSCallback) {
runtimeExecutor([turboModuleProvider = std::move(turboModuleProvider)](jsi::Runtime &runtime) {
- react::TurboModuleBinding::install(
- runtime, std::move(turboModuleProvider), TurboModuleBindingMode::HostObject, nullptr);
+ react::TurboModuleBinding::install(runtime, std::move(turboModuleProvider), nullptr);
});
} else if (RCTGetTurboModuleCleanupMode() == kRCTTurboModuleManagerScope) {
runtimeExecutor([turboModuleProvider = std::move(turboModuleProvider),
longLivedObjectCollection = _longLivedObjectCollection](jsi::Runtime &runtime) {
- react::TurboModuleBinding::install(
- runtime, std::move(turboModuleProvider), TurboModuleBindingMode::HostObject, longLivedObjectCollection);
+ react::TurboModuleBinding::install(runtime, std::move(turboModuleProvider), longLivedObjectCollection);
});
}
}