fix(website): add loading skeleton to match other authenticated page routes - #263
Merged
Merged
Conversation
…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.
Contributor
|
The latest updates on your projects. Learn more about Vercel for GitHub.
|
Contributor
This branch had an error being deployed
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Daily Product Improvement
Summary
Adds a
loading.tsxskeleton to the/websiteroute so it shows a structured placeholder during server-side data fetching, consistent with every other authenticated route in the app.Recommendations Reviewed
Area:
/websiterouteIssue: No
loading.tsxexists. 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.tsxIssue: When
collectRsvpis 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.tsxIssue: The ratings breakdown popup uses raw CSS
block/hiddentoggling instead of a Radix-based Popover. It has no keyboard navigation, focus management, or click-outside-to-close.Recommendation: Replace with the project's
Popovercomponent.Type: UX/UI + Frontend cleanup
Priority: Medium
Effort: Medium
Area:
src/app/(authenicated)/website/page.tsxIssue: 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%stemplate.Type: Frontend cleanup
Priority: Low
Effort: Small
Area:
src/app/(authenicated)/checklist/_components/checklist-page-client.tsxIssue: The task delete
AlertDialogCancel button is not disabled whiledeleteTask.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.tsxtosrc/app/(authenicated)/website/.Why This Was Selected
Every other authenticated route — dashboard, events, checklist, budget, guest-list, vendors — ships a
loading.tsxskeleton. The website page is the only one missing it, meaning users who navigate to/websitesee 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
src/app/(authenicated)/website/loading.tsxwith a skeleton that mirrors the page's actual layout:Files Changed
src/app/(authenicated)/website/loading.tsx(new file)Verification
tsc --noEmit) passes with no new errors.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).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.isPendingPriority: 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