Skip to content

Feat/liquidglass optimization for iOS - #5

Merged
AndSanG merged 5 commits into
masterfrom
feat/liquidglass
May 29, 2026
Merged

Feat/liquidglass optimization for iOS #5
AndSanG merged 5 commits into
masterfrom
feat/liquidglass

Conversation

@AndSanG

@AndSanG AndSanG commented May 29, 2026

Copy link
Copy Markdown
Owner

Summary of what changed end-to-end:

  Before After
JS bundle 893KB 757KB (−136KB)
Framer Motion In critical path Completely removed
Initial render opacity:0 blank screen Content visible immediately
cv.md fetch Every page load Only when "View CV" is tapped
swift-logo 192KB PNG 16KB webp
Fluid blobs Animated on mobile Hidden on touch devices
backdrop-blur on cards Mobile + desktop Desktop only

AndSanG added 5 commits May 28, 2026 21:32
…mponents

Framer Motion baked opacity:0 into server-rendered HTML via initial="hidden",
making the page appear blank until JS hydrated (~20s on mobile). Fix:
- page-transition: no-op wrapper (content always visible)
- reveal, animated-skills, animated-stats: mounted guard renders plain HTML
  on SSR; switches to IntersectionObserver + CSS animation after hydration
CvDialog was fetching /cv.md on every page load (from GitHub CDN) just to
decide whether to show the button, blocking Safari's loading indicator
until the request resolved. Now fetches only when the user taps "View CV".
swift-logo.png: 192KB → 16KB (12× smaller)
tri.png: 12KB → 8KB
Both loaded on every page view in the fixed navbar.
- glass-card: backdrop-blur-2xl only on md+; mobile gets opaque background
- navbar pill: same — opaque on mobile, blur only on desktop
- fluid blobs: hidden on touch devices (filter:blur(50px) animated shapes)
- contact circles: removed backdrop-blur-md (over solid bg, no visual benefit)
- about glow: hidden on mobile (blur-[120px] on 600×600 div)
- globals.css: CSS keyframes for reveal, skill, stat, float, marquee, scroll-progress
  animations replacing Framer Motion equivalents
Framer Motion (~120KB) was pulled into the initial bundle by multiple
components in the critical render path, adding ~20s of JS parse/execution
time on mobile Safari.

Replacements:
- hero-image: CSS @Keyframes float animation
- animated-marquee: CSS @Keyframes infinite scroll
- back-to-top: CSS opacity/translate transition classes
- tactile-button: CSS active:scale-95
- use-glass-tilt: direct DOM style writes (no spring, CSS transition instead)
- experience-card + project-card: CSS grid-template-rows 0fr→1fr expand
- navbar: CSS scroll-driven progress bar, CSS max-height mobile menu,
  webp logo references, backdrop-blur deferred to md+ breakpoint

Framer Motion is now absent from all source files and the output bundle.
@AndSanG
AndSanG merged commit 527a25e into master May 29, 2026
2 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant