Uh oh!
There was an error while loading. Please reload this page.
improvement(landing): react-doctor health pass across the landing surface - #5326
Conversation
…face - shared JsonLd server component with HTML-safe serialization (replaces 32 inline dangerouslySetInnerHTML JSON-LD sites; structured-data output semantically identical, XSS hardened) - state/effect fixes: derive-instead-of-sync, phase state machines, useSyncExternalStore for media query, handler-only state to refs - structural splits for one-component-per-file and non-component export isolation - mechanical: combined iterations, hoisted Intl formatters/static values, immutable sorts, stable keys, a11y labels, focus rings, SVG precision - ES2023 lib for apps/sim to allow toSorted/toReversed
The latest updates on your projects. Learn more about Vercel for GitHub. |
PR SummaryLow Risk Overview Structured data: A shared server React correctness: Structure & tooling: Splits (hero Mechanical polish: Hoisted static callouts and JSON-LD graphs, module-scoped Reviewed by Cursor Bugbot for commit 5f55b8b. Configure here. |
Uh oh!
There was an error while loading. Please reload this page.
Greptile SummaryThis PR improves the landing surface and cleans up React health issues. The main changes are:
Confidence Score: 5/5This looks safe to merge.
Important Files Changed
Reviews (4): Last reviewed commit: "style(landing): convert added inline com..." | Re-trigger Greptile |
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
…ignup redirect) - guard the pending provider-status fetch with openRequestedRef so a late resolve can't reopen the modal or re-fire the opened event after dismiss - open synchronously (loader) when status is still loading so the click stays responsive - route to /login instead of /signup when registration is disabled and no modal providers are available
waleedlatif1
commented
Jul 1, 2026
@greptile review |
waleedlatif1
commented
Jul 1, 2026
@cursor review |
Uh oh!
There was an error while loading. Please reload this page.
- reactive isDesktop can re-run the demo effect on a 1024px resize; reset demoIndexRef to 0 so applyDemoStep(step 0) and scheduleNextStep read the same step, instead of replaying from a stale index and skipping beats - clarify why the chat reveal's previous-value ref is safe here (timer-driven, no concurrent-interruption boundary)
waleedlatif1
commented
Jul 1, 2026
@greptile review |
waleedlatif1
commented
Jul 1, 2026
@cursor review |
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
…mpt-row lookup - auth-modal: consume openRequestedRef on resolve so a queued double-click (or the shared mount prefetch) can't run openWithStatus twice (no duplicate auth_modal_opened / redundant setView) - landing-preview-knowledge: key connector icons by a stable slug instead of a component name that can be mangled/emptied under minification - workflow-data getEditorPrompt: single ordered pass preserves the original find() first-match-in-order semantics (Map lookup had preferred 'Prompt' over an earlier 'System Prompt')
waleedlatif1
commented
Jul 1, 2026
@greptile review |
waleedlatif1
commented
Jul 1, 2026
@cursor review |
There was a problem hiding this comment.
✅ Bugbot reviewed your changes and found no new issues!
Comment @cursor review or bugbot run to trigger another review on this PR
Reviewed by Cursor Bugbot for commit 5f55b8b. Configure here.
Uh oh!
There was an error while loading. Please reload this page.
…5340) toSorted/toReversed require Safari 16+/iOS 16+ and Next.js/SWC does not polyfill prototype methods (vercel/next.js#58421 closed unmerged), so #5326 broke sorting on the models page and landing preview for Safari 15/iOS 15 with a runtime TypeError. Revert the 6 call sites to [...arr].sort()/[...arr].reverse() (immutable, universally supported, matches the existing codebase idiom) and drop the ES2023 tsconfig lib override that only existed to type-check them.
Summary
<JsonLd>server component with HTML-safe serialization — replaces 32 inlinedangerouslySetInnerHTML={{ __html: JSON.stringify(...) }}JSON-LD sites. Structured-data output is JSON-semantically identical (crawlers parse the same graph) and now XSS-hardened. SEO unchanged.useSyncExternalStorefor the desktop media query, handler-only state moved to refs (contact honeypot-widget, changelog page cursor).Intlformatters + static values to module scope, immutable sorts, stable content-derived keys, accessible labels, focus-visible rings, rounded SVG path precision.apps/simTSlibbumped to ES2023 to allowtoSorted/toReversed(runtime already supports them).react-doctor on
app/(landing): score 52 → 66, 5 errors → 0, 150 findings → 32. Remaining are intentional animation/SSR patterns and correct semantic HTML; nothing hacky, no suppressions.Type of Change
Testing
Full
tscclean (0 errors),biome checkclean, react-doctor re-run. JSON-LD output verified byte-lossless (parses back to identical graph). Behavioral diffs audited for regressions.Checklist