Skip to content

Commit aab0d33

Browse files
mdvaccameta-codesync[bot]
authored andcommitted
Add a Log error to discourage usages of getJSModule(RCTEventEmitter) in new architecture (facebook#54038)
Summary: Pull Request resolved: facebook#54038 This diff adds a Log error to discourage usages of getJSModule(RCTEventEmitter) in new architecture, recommending migration to new API changelog: [Android][Changed] Add Log error to discourage usages of getJSModule(RCTEventEmitter) API Reviewed By: shwanton Differential Revision: D83523928 fbshipit-source-id: d967456087a59366a3bca9590cb4d6d1fdd5b60d
1 parent 36a9b7e commit aab0d33

File tree

1 file changed

+11
-0
lines changed

1 file changed

+11
-0
lines changed

packages/react-native/ReactAndroid/src/main/java/com/facebook/react/runtime/BridgelessReactContext.kt

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@ import com.facebook.react.bridge.JavaScriptModuleRegistry
2020
import com.facebook.react.bridge.NativeArray
2121
import com.facebook.react.bridge.NativeModule
2222
import com.facebook.react.bridge.ReactApplicationContext
23+
import com.facebook.react.bridge.ReactSoftExceptionLogger.logSoftException
2324
import com.facebook.react.bridge.UIManager
2425
import com.facebook.react.common.annotations.FrameworkAPI
2526
import com.facebook.react.common.annotations.UnstableReactNativeAPI
@@ -30,6 +31,8 @@ import com.facebook.react.modules.core.DefaultHardwareBackBtnHandler
3031
import com.facebook.react.turbomodule.core.interfaces.CallInvokerHolder
3132
import com.facebook.react.uimanager.events.EventDispatcher
3233
import com.facebook.react.uimanager.events.EventDispatcherProvider
34+
import com.facebook.react.uimanager.events.RCTEventEmitter
35+
import java.lang.IllegalArgumentException
3336
import java.lang.reflect.InvocationHandler
3437
import java.lang.reflect.Method
3538
import java.lang.reflect.Proxy
@@ -124,6 +127,14 @@ internal class BridgelessReactContext(context: Context, private val reactHost: R
124127

125128
override fun <T : JavaScriptModule> getJSModule(jsInterface: Class<T>): T? {
126129
mInteropModuleRegistry?.getInteropModule(jsInterface)?.let {
130+
if (jsInterface == RCTEventEmitter::class.java) {
131+
logSoftException(
132+
TAG,
133+
IllegalArgumentException(
134+
"getJSModule(RCTEventEmitter) is not recommended in the new architecture and will stop working with interop disabled. Please use UIManagerHelper.getEventDispatcher or UIManagerHelper.getEventDispatcherForReactTag instead"
135+
),
136+
)
137+
}
127138
return it
128139
}
129140

0 commit comments

Comments
 (0)