You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
A headless-browser render audit of all 189 showcase previews found 27 apps with confirmed runtime crashes (react pageerrors, Babel/syntax errors, or blank renders). These are user-visible: clicking the app in the showcase shows a broken or error screen.
Method: rendered each /api/preview/{chatId} in headless Chromium, captured console/pageerrors + DOM size. Only errors with concrete messages are listed (loading-race false positives excluded).
The biggest class is undefined access/refs (groups A+B): generated code calls .toLowerCase() etc. on possibly-undefined values, or references variables/functions it never declared (sensorData, kanbanTasks, getDealsByStageData). The codegen system prompt warns about defensive access but it isn't enforced.
Recommended fix: a post-generation validation/autoFixCode pass that (1) rejects/repairs undefined variable references, (2) wraps unguarded property access, (3) de-dupes imports — before an app is saved or marked is_showcase. Consider a lightweight headless render smoke-check in the validation gate so crashing apps never reach the showcase.
Separately, ~19 apps flagged as nav-timeout in the raw audit are likely false positives (loading-state race in the harness) and need re-verification; not included above.
Summary
A headless-browser render audit of all 189 showcase previews found 27 apps with confirmed runtime crashes (react pageerrors, Babel/syntax errors, or blank renders). These are user-visible: clicking the app in the showcase shows a broken or error screen.
Method: rendered each
/api/preview/{chatId}in headless Chromium, captured console/pageerrors + DOM size. Only errors with concrete messages are listed (loading-race false positives excluded).Confirmed crashes by root cause
A. Unguarded property access (undefined) (7)
TypeError: Cannot read properties of undefined (reading 'toLowerCase')preview: https://builder.ainative.studio/api/preview/zdbtest-1784597561
TypeError: Cannot read properties of undefined (reading 'toLowerCase')preview: https://builder.ainative.studio/api/preview/GGnR1n8W40OTKwVX-b4H4
TypeError: Cannot read properties of undefined (reading 'toLowerCase')preview: https://builder.ainative.studio/api/preview/sw-storefront-1784587448
TypeError: Cannot read properties of undefined (reading 'toLocaleString')preview: https://builder.ainative.studio/api/preview/dJldLLfVnistdpHDdD-m-
TypeError: Cannot read properties of undefined (reading 'toFixed')preview: https://builder.ainative.studio/api/preview/qW0U13ZYFZ8G19RGOYihy
TypeError: Cannot read properties of undefined (reading 'map')preview: https://builder.ainative.studio/api/preview/NYICQ7050RtcMxqZ7pa12
TypeError: Cannot read properties of undefined (reading 'code')preview: https://builder.ainative.studio/api/preview/FDq1vpuaS5bxMNslClrqQ
B. Undefined variable reference (5)
ReferenceError: idx is not definedpreview: https://builder.ainative.studio/api/preview/newcode-smoke-1784398431
ReferenceError: FitnessLandingPage is not definedpreview: https://builder.ainative.studio/api/preview/ump8hDq5DLMLiiwmaU3g4
ReferenceError: sensorData is not definedpreview: https://builder.ainative.studio/api/preview/ixYNDWAAHRAVYJk79UNeF
ReferenceError: getDealsByStageData is not definedpreview: https://builder.ainative.studio/api/preview/KVEqII4xk5kD-vtognCvq
ReferenceError: kanbanTasks is not definedpreview: https://builder.ainative.studio/api/preview/UwYqnQpwmmzZFJnzHhGFz
C. Codegen syntax error (7)
Audio Transcription Studio With A File —
(blank render, no console error)preview: https://builder.ainative.studio/api/preview/VQpSTEi8U3T7x2ebJAxey
ZeroMemory Inspector Showing Working, Ep — `[Preview] Babel error: unknown: Unterminated JSX contents. (638:171)
636 | `
preview: https://builder.ainative.studio/api/preview/EbszVfhB9ryHqA4GvX_l2
Crypto Portfolio Tracker With Holdings T —
(blank render, no console error)preview: https://builder.ainative.studio/api/preview/GzYvo3ZjJqWBeL3_yymEr
FAQ Accordion Section —
(blank render, no console error)preview: https://builder.ainative.studio/api/preview/clean-1784492841
Product Page With A Button That —
SyntaxError: Failed to execute 'appendChild' on 'Node': Identifier 'products' hapreview: https://builder.ainative.studio/api/preview/m3eYxf2DuQOMDbKLcgTUA
Fitness Tracker With Daily Stats MetricC —
SyntaxError: Failed to execute 'appendChild' on 'Node': Identifier 'MetricCard'preview: https://builder.ainative.studio/api/preview/imSRKEmThul_HUSNo0rA1
E-commerce Product Listing With AIKitHea —
(blank render, no console error)preview: https://builder.ainative.studio/api/preview/o9Sj5r9Oot4C1TXtVA7Lp
D. Duplicate identifier/import (2)
SyntaxError: Identifier 'FolderOpen' has already been declaredpreview: https://builder.ainative.studio/api/preview/ZUWtgB_8G2rKp1nUXc8Z0
SyntaxError: Identifier 'DialogOverlay' has already been declaredpreview: https://builder.ainative.studio/api/preview/ocHjePpkrwYr4s66OkuQ2
E. Object rendered as React child (1)
Error: Objects are not valid as a React child (found: object with keys {title, dpreview: https://builder.ainative.studio/api/preview/VQ89CGhOW2irKItSxK_aS
F. Blank render (no error captured) (4)
(blank render, no console error)preview: https://builder.ainative.studio/api/preview/za41Bw8DWn0OcQ51dxfqH
(blank render, no console error)preview: https://builder.ainative.studio/api/preview/kqhHzxhLYCpKEdSE9UO7E
(blank render, no console error)preview: https://builder.ainative.studio/api/preview/xZl7cl6Oi08PJP65qaazp
(blank render, no console error)preview: https://builder.ainative.studio/api/preview/_YUqNPrNL9aHe3wFbA3Re
G. Other (1)
TypeError: Failed to construct 'Document': Please use the 'new' operator, this Dpreview: https://builder.ainative.studio/api/preview/PTSrk3nQ9wxI8hIq4vMBL
Notes
.toLowerCase()etc. on possibly-undefined values, or references variables/functions it never declared (sensorData,kanbanTasks,getDealsByStageData). The codegen system prompt warns about defensive access but it isn't enforced.is_showcase. Consider a lightweight headless render smoke-check in the validation gate so crashing apps never reach the showcase.nav-timeoutin the raw audit are likely false positives (loading-state race in the harness) and need re-verification; not included above.