Skip to content

fix(website): add loading skeleton to match other authenticated page routes - #263

Merged
dccakes merged 2 commits into
mainfrom
claude/sharp-feynman-rlthxk
Aug 23, 2026
Merged

dccakes merged 2 commits into
mainfrom
claude/sharp-feynman-rlthxk

Conversation

@dccakes

@dccakes dccakes commented Aug 18, 2026

Copy link
Copy Markdown
Owner

Daily Product Improvement

Summary

Adds a loading.tsx skeleton to the /website route so it shows a structured placeholder during server-side data fetching, consistent with every other authenticated route in the app.

Recommendations Reviewed

Area: /website route
Issue: No loading.tsx exists. The page does 3+ parallel server awaits (wedding data, existing website record, session) before rendering, leaving a blank screen during load.
Recommendation: Add a loading skeleton matching the page structure.
Type: UX/UI
Priority: Medium
Effort: Small


Area: src/app/(authenicated)/events/_components/event-card.tsx
Issue: When collectRsvp is true, both an "RSVPs" badge and the "Collect RSVPs" switch are shown — the badge is redundant since the switch already communicates state.
Recommendation: Remove the badge or repurpose it to convey something distinct (e.g., "Live").
Type: UX/UI
Priority: Low
Effort: Small


Area: src/components/vendor/vendor-card.tsx
Issue: The ratings breakdown popup uses raw CSS block/hidden toggling instead of a Radix-based Popover. It has no keyboard navigation, focus management, or click-outside-to-close.
Recommendation: Replace with the project's Popover component.
Type: UX/UI + Frontend cleanup
Priority: Medium
Effort: Medium


Area: src/app/(authenicated)/website/page.tsx
Issue: Page metadata still uses the old 'Website | Your Wedding Website' title pattern instead of just 'Website' with the root title template (similar to what PR #251 fixed for other pages).
Recommendation: Update to title: 'Website' to use the root %s template.
Type: Frontend cleanup
Priority: Low
Effort: Small


Area: src/app/(authenicated)/checklist/_components/checklist-page-client.tsx
Issue: The task delete AlertDialog Cancel button is not disabled while deleteTask.isPending, unlike the equivalent dialogs in budget and events which both guard the Cancel button.
Recommendation: Add disabled={deleteTask.isPending} to the Cancel button.
Type: UX/UI
Priority: Medium
Effort: Small

Selected Improvement

Add loading.tsx to src/app/(authenicated)/website/.

Why This Was Selected

Every other authenticated route — dashboard, events, checklist, budget, guest-list, vendors — ships a loading.tsx skeleton. The website page is the only one missing it, meaning users who navigate to /website see a blank white area while the server fetches data. The fix is a single new file, zero risk, and closes a visible consistency gap.

Changes Made

  • Created src/app/(authenicated)/website/loading.tsx with a skeleton that mirrors the page's actual layout:
    • Topbar (h-14, hamburger on mobile, theme toggle on right)
    • Page heading block (title + subtitle)
    • WebsiteManager card placeholder (published badge, URL bar, action buttons)
    • Four stacked card placeholders (password, RSVP toggle, template picker, editor sections)

Files Changed

  • src/app/(authenicated)/website/loading.tsx (new file)

Verification

  • TypeScript (tsc --noEmit) passes with no new errors.
  • Skeleton structure manually reviewed against website/page.tsx — widths, padding, and container classes match (max-w-2xl, space-y-6, px-4 py-5 lg:px-6 lg:py-6).
  • Topbar skeleton matches the pattern used by events, vendors, and checklist loading skeletons.

Future Recommendations

Recommendation: Replace raw CSS toggle on VendorCard ratings breakdown with Radix Popover
Priority: Medium
Effort: Medium
Reason not included: Not directly user-facing on the critical path; medium effort touches a complex interactive area and deserves its own focused PR.
Should become GitHub issue: No (minor polish, medium effort)

Recommendation: Fix task delete dialog — disable Cancel while deleteTask.isPending
Priority: Medium
Effort: Small
Reason not included: PR #243 may already address this under "delete dialog loading state"; verifying against that open PR first avoids duplicate work.
Should become GitHub issue: No

Recommendation: Remove redundant "RSVPs" badge from EventCard when RSVP switch is on
Priority: Low
Effort: Small
Reason not included: Low priority visual polish; deprioritised in favour of the loading state gap which affects all users on page load.
Should become GitHub issue: No

Recommendation: Update website page metadata to use root title template
Priority: Low
Effort: Small
Reason not included: PR #251 is already open for related metadata issues; this should be bundled there rather than opened as a separate PR.
Should become GitHub issue: No

GitHub Issues Created or Proposed

None. All unimplemented recommendations are either low priority, small enough to fold into existing open PRs, or already covered by a pending draft.


Generated by Claude Code

…routes

The /website page performed 3+ parallel server awaits (wedding data, existing
website, session) before rendering, with no intermediate skeleton. Every other
authenticated route — dashboard, events, checklist, budget, guest-list, vendors
— has a loading.tsx. This adds the missing one for /website, preventing a blank
screen during SSR and keeping the experience consistent.
@vercel

vercel Bot commented Aug 18, 2026 •

Copy link
Copy Markdown
Contributor

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

Project Deployment Actions Updated (UTC)
scv Error Error Aug 18, 2026 10:17am

@github-actions

Copy link
Copy Markdown
Contributor

Jest Test Coverage

Coverage Summary

Lines Statements Branches Functions
Coverage: 83%
83.07% (36152/43517) 81.96% (3777/4608) 69.3% (1068/1541)

@dccakes
dccakes marked this pull request as ready for review August 23, 2026 20:58
@dccakes
dccakes merged commit 1db2328 into main Aug 23, 2026
9 of 10 checks passed
@dccakes
dccakes deleted the claude/sharp-feynman-rlthxk branch August 23, 2026 20:58

This branch had an error being deployed

1 failed deployment
Preview — 2c36d050 Deployed Aug 18, 2026 by vercel[bot]
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