Discussions
UI Bug: Custom Rules Search UI Crash (Black Screen)
21 hours ago
A UI crash occurs on the Control D dashboard when typing any character into the search box on the custom rules page, resulting in a black screen.
1. Bug Description
- Location:
https://controld.com/dashboard/profiles/<profile_id>/custom-rules - Trigger: Typing any text/character into the search box at the top of the page.
- Symptom: The entire screen goes black immediately upon user input.
- Root Cause: A JavaScript runtime error (
TypeError) occurs in the array filtering logic becausee.commentis not a string (or does not contain thetoLowerCasemethod), causing the application to crash.
2. Technical
The Error
TypeError: e.comment?.toLowerCase is not a function
at _app-c72510e1bb5764da.js:15:175623
at Array.filter (<anonymous>)
Why it happens
- The search input filters the custom rules list.
- In the filter callback function (identified as
uin_app-c72510e1bb5764da.js), the code attempts to calle.comment?.toLowerCase()to perform a case-insensitive match. - While optional chaining (
?.) prevents crashes ife.commentisnullorundefined, it does not prevent crashes ife.commentexists but is of a type that lacks atoLowerCasemethod (such as aNumber,Boolean, orObject). - If a custom rule has a comment like
12345(parsed as a number) or is a non-string object,e.comment?.toLowerCaseevaluates toundefined, and calling it as a function (undefined()) throws theTypeError. - The React Error Boundary (
ChunkLoadErrorBoundary) catches the error but fails to render a graceful fallback UI, leading to the screen turning completely black.
3. Full Console Stack Trace
framework-e8fa52a7c58a62c9.js:1 TypeError: e.comment?.toLowerCase is not a function
at _app-c72510e1bb5764da.js:15:175623
at Array.filter (<anonymous>)
at u (_app-c72510e1bb5764da.js:15:175569)
at D (_app-c72510e1bb5764da.js:15:15794)
at ad (framework-e8fa52a7c58a62c9.js:1:69477)
at ud (framework-e8fa52a7c58a62c9.js:1:83772)
at i (framework-e8fa52a7c58a62c9.js:1:131232)
at oO (framework-e8fa52a7c58a62c9.js:1:110014)
at oM (framework-e8fa52a7c58a62c9.js:1:109884)
at ox (framework-e8fa52a7c58a62c9.js:1:106655)
a5 @ framework-e8fa52a7c58a62c9.js:1
a.componentDidCatch.t.callback @ framework-e8fa52a7c58a62c9.js:1
lX @ framework-e8fa52a7c58a62c9.js:1
uY @ framework-e8fa52a7c58a62c9.js:1
e @ framework-e8fa52a7c58a62c9.js:1
(anonymous) @ framework-e8fa52a7c58a62c9.js:1
oI @ framework-e8fa52a7c58a62c9.js:1
oC @ framework-e8fa52a7c58a62c9.js:1
r8 @ framework-e8fa52a7c58a62c9.js:1
oN @ framework-e8fa52a7c58a62c9.js:1
eM @ framework-e8fa52a7c58a62c9.js:1
ro @ framework-e8fa52a7c58a62c9.js:1
nU @ framework-e8fa52a7c58a62c9.js:1
nD @ framework-e8fa52a7c58a62c9.js:1
_app-c72510e1bb5764da.js:13 ChunkLoadErrorBoundary caught a non-chunk error: TypeError: e.comment?.toLowerCase is not a function
at _app-c72510e1bb5764da.js:15:175623
at Array.filter (<anonymous>)
at u (_app-c72510e1bb5764da.js:15:175569)
at D (_app-c72510e1bb5764da.js:15:15794)
at ad (framework-e8fa52a7c58a62c9.js:1:69477)
at ud (framework-e8fa52a7c58a62c9.js:1:83772)
at i (framework-e8fa52a7c58a62c9.js:1:131232)
at oO (framework-e8fa52a7c58a62c9.js:1:110014)
at oM (framework-e8fa52a7c58a62c9.js:1:109884)
at ox (framework-e8fa52a7c58a62c9.js:1:106655)
componentDidCatch @ _app-c72510e1bb5764da.js:13
a.componentDidCatch.t.callback @ framework-e8fa52a7c58a62c9.js:1
lX @ framework-e8fa52a7c58a62c9.js:1
uY @ framework-e8fa52a7c58a62c9.js:1
e @ framework-e8fa52a7c58a62c9.js:1
(anonymous) @ framework-e8fa52a7c58a62c9.js:1
oI @ framework-e8fa52a7c58a62c9.js:1
oC @ framework-e8fa52a7c58a62c9.js:1
r8 @ framework-e8fa52a7c58a62c9.js:1
oN @ framework-e8fa52a7c58a62c9.js:1
eM @ framework-e8fa52a7c58a62c9.js:1
ro @ framework-e8fa52a7c58a62c9.js:1
nU @ framework-e8fa52a7c58a62c9.js:1
nD @ framework-e8fa52a7c58a62c9.js:1
_app-c72510e1bb5764da.js:13 Component stack:
at D (https://controld.com/_next/static/chunks/pages/_app-c72510e1bb5764da.js:15:15642)
at div
at https://controld.com/_next/static/chunks/pages/_app-c72510e1bb5764da.js:16:3777
at https://controld.com/_next/static/chunks/pages/_app-c72510e1bb5764da.js:14:100997
at https://controld.com/_next/static/chunks/pages/_app-c72510e1bb5764da.js:14:101441
at P (https://controld.com/_next/static/chunks/pages/_app-c72510e1bb5764da.js:15:15097)
at div
at https://controld.com/_next/static/chunks/pages/_app-c72510e1bb5764da.js:16:3777
at https://controld.com/_next/static/chunks/pages/_app-c72510e1bb5764da.js:14:100997
at https://controld.com/_next/static/chunks/pages/_app-c72510e1bb5764da.js:14:101441
at fq (https://controld.com/_next/static/chunks/1642-c1a2b2761524a568.js:3:70291)
at div
at https://controld.com/_next/static/chunks/pages/_app-c72510e1bb5764da.js:16:3777
at https://controld.com/_next/static/chunks/pages/_app-c72510e1bb5764da.js:14:100997
at https://controld.com/_next/static/chunks/pages/_app-c72510e1bb5764da.js:14:101441
at f2 (https://controld.com/_next/static/chunks/1642-c1a2b2761524a568.js:3:76111)
at div
at https://controld.com/_next/static/chunks/pages/_app-c72510e1bb5764da.js:16:3777
at https://controld.com/_next/static/chunks/pages/_app-c72510e1bb5764da.js:14:100997
at https://controld.com/_next/static/chunks/pages/_app-c72510e1bb5764da.js:14:101441
at div
at https://controld.com/_next/static/chunks/pages/_app-c72510e1bb5764da.js:16:3777
at https://controld.com/_next/static/chunks/pages/_app-c72510e1bb5764da.js:14:100997
at https://controld.com/_next/static/chunks/pages/_app-c72510e1bb5764da.js:14:101441
at E (https://controld.com/_next/static/chunks/pages/_app-c72510e1bb5764da.js:1:42295)
at div
at https://controld.com/_next/static/chunks/pages/_app-c72510e1bb5764da.js:16:3777
at https://controld.com/_next/static/chunks/pages/_app-c72510e1bb5764da.js:14:100997
at https://controld.com/_next/static/chunks/pages/_app-c72510e1bb5764da.js:14:101441
at div
at https://controld.com/_next/static/chunks/pages/_app-c72510e1bb5764da.js:16:3777
at https://controld.com/_next/static/chunks/pages/_app-c72510e1bb5764da.js:14:100997
at https://controld.com/_next/static/chunks/pages/_app-c72510e1bb5764da.js:14:101441
at div
at https://controld.com/_next/static/chunks/pages/_app-c72510e1bb5764da.js:16:3777
at https://controld.com/_next/static/chunks/pages/_app-c72510e1bb5764da.js:14:100997
at https://controld.com/_next/static/chunks/pages/_app-c72510e1bb5764da.js:14:101441
at div
at https://controld.com/_next/static/chunks/pages/_app-c72510e1bb5764da.js:16:3777
at https://controld.com/_next/static/chunks/pages/_app-c72510e1bb5764da.js:14:100997
at https://controld.com/_next/static/chunks/pages/_app-c72510e1bb5764da.js:14:101441
at div
at https://controld.com/_next/static/chunks/pages/_app-c72510e1bb5764da.js:16:3777
at https://controld.com/_next/static/chunks/pages/_app-c72510e1bb5764da.js:14:100997
at https://controld.com/_next/static/chunks/pages/_app-c72510e1bb5764da.js:14:101441
at u (https://controld.com/_next/static/chunks/pages/_app-c72510e1bb5764da.js:15:26618)
at ee (https://controld.com/_next/static/chunks/pages/_app-c72510e1bb5764da.js:1:48978)
at f5 (https://controld.com/_next/static/chunks/1642-c1a2b2761524a568.js:3:79193)
at _ (https://controld.com/_next/static/chunks/pages/_app-c72510e1bb5764da.js:15:296226)
at j (https://controld.com/_next/static/chunks/pages/_app-c72510e1bb5764da.js:15:298287)
at y7
at _ (https://controld.com/_next/static/chunks/pages/_app-c72510e1bb5764da.js:15:296226)
at j (https://controld.com/_next/static/chunks/pages/_app-c72510e1bb5764da.js:15:298287)
at EY
at div
at https://controld.com/_next/static/chunks/pages/_app-c72510e1bb5764da.js:16:3777
at https://controld.com/_next/static/chunks/pages/_app-c72510e1bb5764da.js:14:100997
at https://controld.com/_next/static/chunks/pages/_app-c72510e1bb5764da.js:14:101441
at dQ (https://controld.com/_next/static/chunks/1642-c1a2b2761524a568.js:1:401640)
at div
at https://controld.com/_next/static/chunks/pages/_app-c72510e1bb5764da.js:16:3777
at https://controld.com/_next/static/chunks/pages/_app-c72510e1bb5764da.js:14:100997
at https://controld.com/_next/static/chunks/pages/_app-c72510e1bb5764da.js:14:101441
at div
at https://controld.com/_next/static/chunks/pages/_app-c72510e1bb5764da.js:16:3777
at https://controld.com/_next/static/chunks/pages/_app-c72510e1bb5764da.js:14:100997
at https://controld.com/_next/static/chunks/pages/_app-c72510e1bb5764da.js:14:101441
at dq (https://controld.com/_next/static/chunks/1642-c1a2b2761524a568.js:1:400894)
at EK
at ST (https://controld.com/_next/static/chunks/1642-c1a2b2761524a568.js:3:487371)
at SB (https://controld.com/_next/static/chunks/1642-c1a2b2761524a568.js:3:487510)
at div
at https://controld.com/_next/static/chunks/pages/_app-c72510e1bb5764da.js:16:3777
at w (https://controld.com/_next/static/chunks/pages/_app-c72510e1bb5764da.js:14:86045)
at A (https://controld.com/_next/static/chunks/pages/_app-c72510e1bb5764da.js:18:63240)
at O (https://controld.com/_next/static/chunks/pages/_app-c72510e1bb5764da.js:18:63816)
at w (https://controld.com/_next/static/chunks/pages/_app-c72510e1bb5764da.js:14:86045)
at b (https://controld.com/_next/static/chunks/pages/_app-c72510e1bb5764da.js:14:86163)
at u (https://controld.com/_next/static/chunks/pages/_app-c72510e1bb5764da.js:16:117856)
at ep (https://controld.com/_next/static/chunks/pages/_app-c72510e1bb5764da.js:16:165745)
at s (https://controld.com/_next/static/chunks/pages/_app-c72510e1bb5764da.js:13:345162)
at d (https://controld.com/_next/static/chunks/pages/_app-c72510e1bb5764da.js:15:277539)
at I (https://controld.com/_next/static/chunks/pages/_app-c72510e1bb5764da.js:15:297656)
at m (https://controld.com/_next/static/chunks/pages/_app-c72510e1bb5764da.js:15:332676)
at SP (https://controld.com/_next/static/chunks/1642-c1a2b2761524a568.js:3:487687)
at e
at g (https://controld.com/_next/static/chunks/pages/_app-c72510e1bb5764da.js:15:36425)
at tg (https://controld.com/_next/static/chunks/pages/_app-c72510e1bb5764da.js:13:344881)
at w (https://controld.com/_next/static/chunks/pages/_app-c72510e1bb5764da.js:14:86045)
at S (https://controld.com/_next/static/chunks/pages/_app-c72510e1bb5764da.js:18:61115)
at O (https://controld.com/_next/static/chunks/pages/_app-c72510e1bb5764da.js:18:63816)
at w (https://controld.com/_next/static/chunks/pages/_app-c72510e1bb5764da.js:14:86045)
at b (https://controld.com/_next/static/chunks/pages/_app-c72510e1bb5764da.js:14:86163)
at u (https://controld.com/_next/static/chunks/pages/_app-c72510e1bb5764da.js:16:117856)
at ep (https://controld.com/_next/static/chunks/pages/_app-c72510e1bb5764da.js:16:165745)
at eE (https://controld.com/_next/static/chunks/pages/_app-c72510e1bb5764da.js:13:44382)
at eT (https://controld.com/_next/static/chunks/pages/_app-c72510e1bb5764da.js:13:48765)
at y (https://controld.com/_next/static/chunks/pages/_app-c72510e1bb5764da.js:1:226236)
at ek (https://controld.com/_next/static/chunks/pages/_app-c72510e1bb5764da.js:13:43374)
at eI (https://controld.com/_next/static/chunks/pages/_app-c72510e1bb5764da.js:13:48995)
at tf (https://controld.com/_next/static/chunks/pages/_app-c72510e1bb5764da.js:13:342709)
at _ (https://controld.com/_next/static/chunks/main-1a9883c73ae77c63.js:1:42408)
at q (https://controld.com/_next/static/chunks/main-1a9883c73ae77c63.js:1:5753)
at V (https://controld.com/_next/static/chunks/main-1a9883c73ae77c63.js:1:7110)
at ef (https://controld.com/_next/static/chunks/main-1a9883c73ae77c63.js:1:9820)