From c0fa590a03665e2a52b23272cba3cf5fc0aaee6d Mon Sep 17 00:00:00 2001 From: Dan Abramov Date: Fri, 30 Aug 2019 18:08:28 -0700 Subject: [PATCH] Fix Redbox on iOS Summary: Looks like we broke iOS redbox in D16812212. It stopped showing up because the feature detection stopped working, and we started calling noops. The fix is an explicit platform check. Fixes #26260 Reviewed By: motiz88 Differential Revision: D17139310 fbshipit-source-id: 829eec23cbb49151ac250889c34ab28d36b05e6a --- Libraries/Core/NativeExceptionsManager.js | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/Libraries/Core/NativeExceptionsManager.js b/Libraries/Core/NativeExceptionsManager.js index f75c91999f6..cbbc151e9f4 100644 --- a/Libraries/Core/NativeExceptionsManager.js +++ b/Libraries/Core/NativeExceptionsManager.js @@ -46,16 +46,19 @@ export interface Spec extends TurboModule { stack: Array, exceptionId: number, ) => void; + // TODO(T53311281): This is a noop on iOS now. Implement it. +reportException?: (data: ExceptionData) => void; +updateExceptionMessage: ( message: string, stack: Array, exceptionId: number, ) => void; - // Android only + // TODO(T53311281): This is a noop on iOS now. Implement it. +dismissRedbox?: () => void; } +const Platform = require('../Utilities/Platform'); + const NativeModule = TurboModuleRegistry.getEnforcing( 'ExceptionsManager', ); @@ -83,12 +86,14 @@ const ExceptionsManager = { NativeModule.updateExceptionMessage(message, stack, exceptionId); }, dismissRedbox(): void { - if (NativeModule.dismissRedbox) { + if (Platform.OS !== 'ios' && NativeModule.dismissRedbox) { + // TODO(T53311281): This is a noop on iOS now. Implement it. NativeModule.dismissRedbox(); } }, reportException(data: ExceptionData): void { - if (NativeModule.reportException) { + if (Platform.OS !== 'ios' && NativeModule.reportException) { + // TODO(T53311281): This is a noop on iOS now. Implement it. NativeModule.reportException(data); return; }