Repository navigation
Conversation
…igation The settings page was the only authenticated route without a companion loading.tsx. During server-side fetch users saw a blank white area instead of a skeleton placeholder, inconsistent with every other route. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01MqwWGko8JFH2b2vDZ3faiV
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
📝 TLDR
Add a
loading.tsxskeleton to the settings route — the only authenticated route that was missing one.📝 Description
The settings page (
/settings) was the only authenticated route without a companionloading.tsxfile. During the server-side data fetch (api.wedding.getDetails(),getRequiredWedding()), users saw a completely blank content area instead of a meaningful placeholder — inconsistent with every other route in the app (budget, checklist, dashboard, events, guest-list, vendors, website all have companion skeletons).This Change
src/app/(authenicated)/settings/loading.tsxmatching the shape and spacing of the live settings pageSkeletonfrom the shared UI library, consistent with all other route-level loading files🧪 Testing
🧪 How to test as a user
Navigate to
/settingson a slow connection (or throttle in DevTools). You should now see a structured skeleton matching the page layout instead of a blank white area while the server fetch resolves.📚 Documentation
🎨 Style and code quality
biome checkon the new file — no errors📦 Dependencies
🚦 Ready for review
Recommendations Reviewed
Area: Settings route
Issue: No
loading.tsx— blank flash on every navigationRecommendation: Add a skeleton matching the four settings sections
Type: UX
Priority: Medium
Effort: Small
→ Selected for this PR
Area:
src/components/forms/guest/gift-section.tsxIssue: Uses raw
border-red-500/text-red-600/border-gray-300instead of design tokens; raw<input>instead of<Input>/<Checkbox>;sharedStylesmixingRecommendation: Replace with
border-destructive,text-destructive,border-border; use design-system componentsType: Frontend cleanup
Priority: Medium
Effort: Small
Area:
src/components/forms/rsvp-form-settings.tsxline 50Issue: Fixed
w-[800px]breaks on viewports narrower than 800 pxRecommendation: Replace with
w-full max-w-[800px]Type: UX
Priority: High
Effort: Small
Area:
src/components/forms/dashboard-settings-form.tsxIssue:
appearInSearchEnginestoggle is local state only — no mutation is called, change is lost on unmount; description labels are also invertedRecommendation: Wire toggle to backend mutation or remove it until the endpoint exists; fix label inversion
Type: Product flow
Priority: High
Effort: Medium
Area:
src/components/guest-list/v2/list/guest-cards-list.tsxIssue: Empty state is a bare
<Card>with a single text line — no icon, noAsyncStatedesign-system treatmentRecommendation: Replace with
<AsyncState isEmpty emptyText='…' />Type: UX
Priority: Low
Effort: Small
Area:
src/components/vendor/vendor-category-section.tsxIssue:
vendors.length === 0branch is dead code — parent filters to populated categories before renderingRecommendation: Remove the unreachable branch
Type: Frontend cleanup
Priority: Low
Effort: Small
Area:
src/components/guest-list/guests-view.tsx+src/components/forms/guest-form.tsxIssue: Discard-unsaved-changes and delete-party dialogs are duplicated across both files with near-identical markup
Recommendation: Extract to shared
<DiscardChangesDialog>and<DeletePartyDialog>componentsType: Frontend cleanup
Priority: Medium
Effort: Large
Future Recommendations
Recommendation: Fix non-functional SEO visibility toggle in
dashboard-settings-form.tsxPriority: High
Effort: Medium
Reason not included: Requires investigating the intended backend endpoint before any fix is safe; touching a non-functional control without knowing the full intent risks introducing a worse bug
Should become GitHub issue: Yes
Recommendation: Fix
w-[800px]mobile overflow inrsvp-form-settings.tsxPriority: High
Effort: Small
Reason not included: Selecting one targeted improvement per daily run
Should become GitHub issue: No (small enough for a follow-up daily run)
Recommendation: Replace raw Tailwind error colors in
gift-section.tsxwith design tokensPriority: Medium
Effort: Small
Reason not included: Selecting one targeted improvement per daily run
Should become GitHub issue: No
Recommendation: Extract duplicated discard/delete dialogs in guest form files
Priority: Medium
Effort: Large
Reason not included: Large refactor touching core guest-list flow — too risky for a single daily run
Should become GitHub issue: Yes
GitHub Issues Created or Proposed
No issues created this run. Two candidates identified above for future tracking (non-functional SEO toggle, duplicated dialog extraction). Both will be proposed in a follow-up if not captured by an open issue.
🤖 Generated with Claude Code
https://claude.ai/code/session_01MqwWGko8JFH2b2vDZ3faiV
Generated by Claude Code