diff --git a/Libraries/JavaScriptAppEngine/Initialization/ExceptionsManager.js b/Libraries/JavaScriptAppEngine/Initialization/ExceptionsManager.js index 14bdc8240..a284ce6e3 100644 --- a/Libraries/JavaScriptAppEngine/Initialization/ExceptionsManager.js +++ b/Libraries/JavaScriptAppEngine/Initialization/ExceptionsManager.js @@ -80,6 +80,9 @@ function installConsoleErrorReporter() { console.reportException = reportException; console.errorOriginal = console.error.bind(console); console.error = function reactConsoleError() { + // Note that when using the built-in context executor on iOS (i.e., not + // Chrome debugging), console.error is already stubbed out to cause a + // redbox via RCTNativeLoggingHook. console.errorOriginal.apply(null, arguments); if (!console.reportErrorsAsExceptions) { return; @@ -88,6 +91,7 @@ function installConsoleErrorReporter() { if (str.slice(0, 10) === '"Warning: ') { // React warnings use console.error so that a stack trace is shown, but // we don't (currently) want these to show a redbox + // (Note: Logic duplicated in polyfills/console.js.) return; } var error: any = new Error('console.error: ' + str); diff --git a/packager/react-packager/src/DependencyResolver/polyfills/console.js b/packager/react-packager/src/DependencyResolver/polyfills/console.js index ff2ff39ff..e04597402 100644 --- a/packager/react-packager/src/DependencyResolver/polyfills/console.js +++ b/packager/react-packager/src/DependencyResolver/polyfills/console.js @@ -376,6 +376,12 @@ var str = Array.prototype.map.call(arguments, function(arg) { return inspect(arg, {depth: 10}); }).join(', '); + if (str.slice(0, 10) === "'Warning: " && level >= LOG_LEVELS.error) { + // React warnings use console.error so that a stack trace is shown, + // but we don't (currently) want these to show a redbox + // (Note: Logic duplicated in ExceptionsManager.js.) + level = LOG_LEVELS.warn; + } global.nativeLoggingHook(str, level); }; }