Skip to content

feat: add reusable loading skeletons for async sections (#3446)#5362

Merged
TheSkylancer merged 3 commits into
SandeepVashishtha:masterfrom
dhiraj-dev-19:feat-issue-3446-loading-skeletons
Jun 2, 2026
Merged

feat: add reusable loading skeletons for async sections (#3446)#5362
TheSkylancer merged 3 commits into
SandeepVashishtha:masterfrom
dhiraj-dev-19:feat-issue-3446-loading-skeletons

Conversation

@dhiraj-dev-19
Copy link
Copy Markdown
Contributor

Summary

This PR enhances perceived performance and loading UX by replacing text-based and spinner-based loading states with reusable skeleton loaders across key asynchronous sections of the application.

The implementation reuses Eventra's existing centralized skeleton system and focuses on reducing layout shifts (CLS), improving accessibility, and providing a smoother user experience during data loading.

Closes #3446

Changes Made

Contributors Carousel (ContributorsCarousel.js)

  • Replaced the plain "Loading contributors..." placeholder with responsive ContributorCardSkeleton components.
  • Integrated skeletons directly into the existing carousel structure to maintain layout parity.
  • Preserved responsive carousel sizing and spacing during loading.
  • Added localized screen-reader loading announcements where necessary.

Event Recommendation (EventRecommendation.jsx)

  • Replaced spinner-based loading states with a responsive grid of EventCardSkeleton placeholders.
  • Replaced AI Insights modal loading text with structured SkeletonBlock placeholders.
  • Improved loading-state consistency and reduced visible layout shifts.

Calendar Page (CalendarPage.jsx)

  • Replaced "Loading events for this day..." text with card-shaped skeleton placeholders.
  • Preserved sidebar dimensions while asynchronous content loads.

Shared Skeleton System (SkeletonLoaders.jsx)

  • Added aria-hidden="true" to shared skeleton root containers to ensure accessibility-safe rendering.
  • Reused the existing skeleton architecture without introducing new dependencies or libraries.

Accessibility

  • Skeleton placeholders are hidden from assistive technologies using aria-hidden="true".
  • Loading announcements remain localized and avoid duplicate screen-reader feedback.
  • Existing reduced-motion support remains fully compatible.

Verification

Layout Stability (CLS)

  • Contributors Carousel maintains layout consistency during loading.
  • Recommendation grid reserves space before content loads.
  • Calendar sidebar remains visually stable during async fetches.

Responsive Testing

Verified across:

  • 375px (mobile)
  • 640px
  • 768px (tablet)
  • 1024px+ (desktop)

Accessibility Testing

  • Verified skeletons are ignored by screen readers.
  • Verified keyboard navigation remains unaffected.
  • Verified no duplicate loading announcements.

Build Validation

npm run build

Build completed successfully with no compilation errors.

Visual Evidence

Contributors Carousel

  • Before: Plain loading text
  • After: Responsive contributor skeleton cards

Event Recommendation

  • Before: Spinner + loading text
  • After: Event card skeleton grid

AI Insights Modal

  • Before: Loading text
  • After: Structured SkeletonBlock placeholders

Calendar Sidebar

  • Before: Text-based loading state
  • After: Card-style skeleton placeholders

Scope

This PR intentionally avoids:

  • new dependencies
  • third-party skeleton libraries
  • dashboard rewrites
  • skeleton framework redesigns
  • unrelated refactoring
Screenshot (596) Screenshot (595) Screenshot (594) Screenshot (593)

@vercel
Copy link
Copy Markdown

vercel Bot commented Jun 1, 2026

@dhiraj-dev-19 is attempting to deploy a commit to the sandeepvashishtha's projects Team on Vercel.

A member of the Team first needs to authorize it.

@dhiraj-dev-19
Copy link
Copy Markdown
Contributor Author

@SandeepVashishtha @TheSkylancer , pls review PR and merge it.

@dhiraj-dev-19
Copy link
Copy Markdown
Contributor Author

@SandeepVashishtha @TheSkylancer all merge conflicts solved!!

@TheSkylancer TheSkylancer merged commit 0494b8a into SandeepVashishtha:master Jun 2, 2026
3 of 5 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Add Loading Skeletons for Event Cards and Async Dashboard Sections

2 participants