diff --git a/packages/react-error-overlay/src/utils/warnings.js b/packages/react-error-overlay/src/utils/warnings.js
index b2fc34bb473768f82f8247407d02253af171ce59..d714eb4f8b5d940e65c0c475bade0ad1a6ecdc45 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`;