Skip to content

Add loading skeletons across dashboard, passes, guilds, members, and activity pages #288

Description

@Lakes41

Difficulty: Intermediate
Type: UI/UX

Background
Currently, data (even mock data) likely renders instantly or with a blank/flash state, since there's no shared loading pattern across routes.

Problem
When data fetching is eventually async (real API), the UI has no consistent loading state, and even now, page transitions can flash empty content, hurting perceived performance and polish.

Expected outcome
Each main route (/dashboard, /passes, /guilds, /members, /activity) shows a skeleton loader matching its layout while data is loading, using Next.js 14's loading.tsx convention.

Suggested implementation

  • Create a shared Skeleton primitive component styled with Tailwind.
  • Add loading.tsx files per route segment under apps/dashboard/app/.
  • Compose route-specific skeletons (table skeleton, stat-card skeleton, list skeleton) from the shared primitive.

Acceptance criteria

  • Each of the five main routes has a matching skeleton loading state
  • Skeletons visually match the loaded layout (same grid/column structure)
  • No layout shift (CLS) when content replaces the skeleton

Likely affected files/directories

  • apps/dashboard/app/**/loading.tsx
  • apps/dashboard/components/ (new shared Skeleton component)

Metadata

Metadata

Assignees

No one assigned

    Labels

    GrantFox OSSGrantFox Open Source Sponsorship program tagMaybe RewardedIssue may qualify for a reward upon successful completion per campaign rulesOfficial Campaign | FWC26Official FWC26 campaign issue — eligible for campaign scoring and rewardsintermediateIntermediate difficulty tasks requiring solid experience and some contextui/uxUser interface or user experience improvements and design work

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions