From 13da1076fcc7c70ade68b93a8dddeeda02169498 Mon Sep 17 00:00:00 2001 From: Dan Abramov Date: Sun, 14 May 2017 02:59:12 +0100 Subject: [PATCH] Skip React frames that are too close --- .../react-error-overlay/src/utils/warnings.js | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/packages/react-error-overlay/src/utils/warnings.js b/packages/react-error-overlay/src/utils/warnings.js index b2fc34bb473..d714eb4f8b5 100644 --- a/packages/react-error-overlay/src/utils/warnings.js +++ b/packages/react-error-overlay/src/utils/warnings.js @@ -13,11 +13,26 @@ function massage( // Reassemble the stack with full filenames provided by React let stack = ''; + let lastFilename; + let lastLineNumber; for (let index = 0; index < frames.length; ++index) { const { fileName, lineNumber } = frames[index]; if (fileName == null || lineNumber == null) { continue; } + + // TODO: instead, collapse them in the UI + if ( + fileName === lastFilename && + typeof lineNumber === 'number' && + typeof lastLineNumber === 'number' && + Math.abs(lineNumber - lastLineNumber) < 3 + ) { + continue; + } + lastFilename = fileName; + lastLineNumber = lineNumber; + let { functionName } = frames[index]; functionName = functionName || '(anonymous function)'; stack += `in ${functionName} (at ${fileName}:${lineNumber})\n`;