feat: skeleton loaders for public DevCard pages — shimmer animation, fade transitions & reduced-motion support#364
Open
Itzzavdheshh wants to merge 1 commit into
Open
feat: skeleton loaders for public DevCard pages — shimmer animation, fade transitions & reduced-motion support#364Itzzavdheshh wants to merge 1 commit into
Itzzavdheshh wants to merge 1 commit into
Conversation
…fade transitions & reduced-motion support
Contributor
Author
|
Hi @ShantKhatri & @Harxhit 👋 This PR delivers the complete skeleton loader system for public DevCard pages as described in the issue — every acceptance criterion met.
Happy to address any feedback! 🚀 |
51 tasks
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.
🚀 Program
GSSoC
📝 Description
Public DevCard pages (
/u/[username]and/devcard/[id]) showed empty or delayed content during hydration — no placeholder, no visual feedback. This PR adds polished skeleton loaders that match the real layouts, shimmer while loading, fade out smoothly when content is ready, and respectprefers-reduced-motion.What was built:
🔧
src/lib/components/SkeletonBlock.svelte— NEWwidth,height,roundedpropsbackground: linear-gradient+animation: shimmer@media (prefers-reduced-motion: reduce)— shimmer disabled, static muted block shown instead🔧
src/lib/components/ProfileSkeleton.svelte— NEW/u/[username]— avatar circle, name line, role line, bio lines, link tiles, footerSkeletonBlock— consistent sizing and spacing matches real profile layout🔧
src/lib/components/DevCardSkeleton.svelte— NEW/devcard/[id]— premium card block, connections section blocks🔧
src/routes/u/[username]/+page.svelte— MODIFIEDonMountsetshydrated = trueafter client hydration completesProfileSkeletonrendered as overlay untilhydrated— server-rendered immediately, visible from first paintopacity: 0,pointer-events: none) on hydrationopacity: 1) withtransition: opacity 300ms easeprefers-reduced-motion— transitions skipped, instant swap🔧
src/routes/devcard/[id]/+page.svelte— MODIFIEDonMount+hydratedpattern as profile pageDevCardSkeletonshown until hydration completesrel="noopener noreferrer")prefers-reduced-motionrespected🔗 Related Issue
Closes #278
🔄 Type of Change
🧪 How to Test
/u/[username]→ verify skeleton appears immediately on load before content/devcard/[id]→ verify DevCard skeleton appears during hydrationprefers-reduced-motionin OS/browser → verify instant swap, no animationpnpm --filter @devcard/web check→ verify 0 errors, 0 warnings📸 Screenshots
1.

/u/[username]— ProfileSkeleton during hydration2.

/u/[username]— real content after fade-in3.

/devcard/[id]— DevCardSkeleton during hydration4.

/devcard/[id]— real content after fade-in6.

pnpm check— 0 errors, 0 warnings7.

pnpm build— successful✅ Checklist
300msfade-out / fade-in transitions implementedprefers-reduced-motionrespected — instant swap, no animationpnpm --filter @devcard/web check— 0 errors, 0 warningspnpm --filter @devcard/web build— successful🙌 Contribution Note
Hi @ShantKhatri & @Harxhit 👋
This PR delivers the complete skeleton loader system for public DevCard pages as described in the issue — every acceptance criterion met.
onMount+hydratedpatternProfileSkeletonandDevCardSkeletonmatch real layout dimensions exactlySkeletonBlock; composable across both layouts300ms easefade-out on skeleton, fade-in on real contentprefers-reduced-motionskips all animation; instant swapsvelte-check+ build both pass cleanHappy to address any feedback! 🚀
Submitted as part of Open Source Contribution — GSSoC (GirlScript Summer of Code)