Skip to content

fix(onboarding): verify-socials renders a skeleton while the roster loads (chat#1889 row 11)#1893

Open
sweetmantech wants to merge 1 commit into
mainfrom
feat/verify-socials-skeleton
Open

fix(onboarding): verify-socials renders a skeleton while the roster loads (chat#1889 row 11)#1893
sweetmantech wants to merge 1 commit into
mainfrom
feat/verify-socials-skeleton

Conversation

@sweetmantech

@sweetmantech sweetmantech commented Jul 27, 2026

Copy link
Copy Markdown
Collaborator

Matrix row 11 in chat#1889. Small, independent of every other row.

Why

VerifySocialsStep destructured only { sorted } from useArtistProvider — no isLoading. So a direct visit to /setup/socials (the welcome email's step 2 link) rendered:

  • an empty socials list, and
  • a live "Looks good, continue" button

until the roster arrived. It read as broken, and a user who clicked through early skipped verifying socials they never saw.

What changed

Mirrors the sibling ConfirmRosterStep: read isLoading, render two skeletons, and hold the continue button until the roster resolves.

Verification

TDD, red → green:

```

RED — no skeleton while loading, continue button already live

× renders a loading skeleton instead of an empty step while the roster loads
Tests 1 failed | 1 passed (2)

GREEN

pnpm exec vitest run components/Onboarding
Test Files passed
Tests passed
```

The second test guards the other direction — no skeletons once resolved, continue button present — so this can't regress into a permanent skeleton.

pnpm exec tsc --noEmit clean for the touched file. Preview click-through pending.

Tracked in chat#1889 (matrix row 11).


Summary by cubic

Fixes the onboarding socials step by showing loading skeletons while the roster loads and delaying the continue button until ready. Prevents an empty step and early skip when visiting /setup/socials directly (chat#1889, row 11).

  • Bug Fixes
    • VerifySocialsStep now reads isLoading from useArtistProvider, renders two Skeletons, and only shows the "Looks good — continue" button when not loading (mirrors ConfirmRosterStep).
    • Added tests for loading and loaded states.

Written for commit 41babbe. Summary will update on new commits.

Review in cubic

…oads

chat#1889 matrix row 11.

VerifySocialsStep destructured only `sorted` from useArtistProvider, so a direct
/setup/socials visit — the welcome email's step 2 link — rendered an empty step
with a live "Looks good, continue" button until the roster arrived. It read as
broken, and continuing early skipped socials the user never saw.

Mirrors ConfirmRosterStep: read isLoading, render skeletons, and hold the
continue button until the roster resolves.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
@cursor

cursor Bot commented Jul 27, 2026

Copy link
Copy Markdown
Contributor

Bugbot is not enabled for your account, so this pull request was not reviewed.

Enable Bugbot in the Cursor dashboard to get automatic reviews on future PRs.

@vercel

vercel Bot commented Jul 27, 2026

Copy link
Copy Markdown
Contributor

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated (UTC)
chat Ready Ready Preview Jul 27, 2026 4:52am

Request Review

@coderabbitai

coderabbitai Bot commented Jul 27, 2026

Copy link
Copy Markdown
Contributor

Warning

Review limit reached

@sweetmantech, you've reached your PR review limit, so we couldn't start this review.

Next review available in: 35 minutes

Enable usage-based reviews in Billing to review now. Otherwise, wait until the next included review is available.
You're only billed for reviews past your plan's rate limits ($0.25/file).

How can I continue?

After more reviews become available, a review can be triggered using the @coderabbitai review command as a PR comment. Alternatively, push new commits to this PR.

To avoid repeated limits, reduce automatic review volume by pausing incremental auto-reviews earlier, using label-based review opt-in, excluding WIP or generated PR titles, or requesting reviews manually when the PR is ready. If your team needs uninterrupted high-volume reviews, an organization admin can enable usage-based reviews.

How do review limits work?

CodeRabbit enforces per-developer PR review limits for each organization. Most developers receive the normal plan review availability.

For paid Pro and Pro+ PR reviews, CodeRabbit uses adaptive limits for sustained high-volume activity. When a developer's recent PR review activity reaches the 95th percentile or higher among CodeRabbit users, additional reviews become available more gradually as earlier reviews age out of the rolling window.

Please refer docs for additional details.

Review details
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Pro Plus

Run ID: 17fe240d-8c28-4726-87e5-f14873f80ca8

📥 Commits

Reviewing files that changed from the base of the PR and between a2d8cf8 and 41babbe.

⛔ Files ignored due to path filters (1)
  • components/Onboarding/__tests__/VerifySocialsStep.test.tsx is excluded by !**/*.test.* and included by components/**
📒 Files selected for processing (1)
  • components/Onboarding/VerifySocialsStep.tsx
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch feat/verify-socials-skeleton

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 41babbe681

ℹ️ About Codex in GitHub

Codex has been enabled to automatically review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

When you sign up for Codex through ChatGPT, Codex can also answer questions or update the PR, like "@codex address that feedback".

))}
{isLoading ? (
<>
<Skeleton className="h-[104px] w-full rounded-xl" />

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Badge Announce the loading state to assistive technology

On a direct /setup/socials visit while the roster is pending, these Skeleton components render as empty, non-semantic <div> elements and the continue button is removed, so screen-reader users receive no indication that content is loading and still encounter an apparently blank step. Add an accessible status announcement, such as a visually hidden message in a live region, while keeping the decorative skeletons hidden from assistive technology.

AGENTS.md reference: AGENTS.md:L74-L78

Useful? React with 👍 / 👎.

@cubic-dev-ai cubic-dev-ai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

1 issue found across 2 files

Confidence score: 4/5

  • In components/Onboarding/VerifySocialsStep.tsx, the loading state shows only visual Skeleton elements and removes the continue button without announcing progress, so screen-reader users on /setup/socials may experience a silent, confusing dead-end during load — add an accessible loading announcement (for example via aria-busy/live region text) and keep a perceivable status message until content is ready.
Prompt for AI agents (unresolved issues)

Check if these issues are valid — if so, understand the root cause of each and fix them. If appropriate, use sub-agents to investigate and fix each issue separately.


<file name="components/Onboarding/VerifySocialsStep.tsx">

<violation number="1" location="components/Onboarding/VerifySocialsStep.tsx:40">
P2: The loading branch renders decorative `Skeleton` divs and hides the continue button, but provides no indication to assistive technology that content is loading. Screen-reader users visiting `/setup/socials` directly will encounter an apparently blank step with no actionable elements and no status announcement.

Consider adding a visually-hidden live-region message (e.g., `<span role="status" className="sr-only">Loading roster…</span>`) alongside the skeletons, and marking the skeletons themselves with `aria-hidden="true"` so they don't pollute the accessibility tree.</violation>
</file>

Reply with feedback, questions, or to request a fix.

Re-trigger cubic

))}
{isLoading ? (
<>
<Skeleton className="h-[104px] w-full rounded-xl" />

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2: The loading branch renders decorative Skeleton divs and hides the continue button, but provides no indication to assistive technology that content is loading. Screen-reader users visiting /setup/socials directly will encounter an apparently blank step with no actionable elements and no status announcement.

Consider adding a visually-hidden live-region message (e.g., <span role="status" className="sr-only">Loading roster…</span>) alongside the skeletons, and marking the skeletons themselves with aria-hidden="true" so they don't pollute the accessibility tree.

Prompt for AI agents
Check if this issue is valid — if so, understand the root cause and fix it. At components/Onboarding/VerifySocialsStep.tsx, line 40:

<comment>The loading branch renders decorative `Skeleton` divs and hides the continue button, but provides no indication to assistive technology that content is loading. Screen-reader users visiting `/setup/socials` directly will encounter an apparently blank step with no actionable elements and no status announcement.

Consider adding a visually-hidden live-region message (e.g., `<span role="status" className="sr-only">Loading roster…</span>`) alongside the skeletons, and marking the skeletons themselves with `aria-hidden="true"` so they don't pollute the accessibility tree.</comment>

<file context>
@@ -29,19 +35,28 @@ const VerifySocialsStep = ({ onConfirmed }: { onConfirmed: () => void }) => {
-        ))}
+        {isLoading ? (
+          <>
+            <Skeleton className="h-[104px] w-full rounded-xl" />
+            <Skeleton className="h-[104px] w-full rounded-xl" />
+          </>
</file context>

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant