Skeleton UI


Published on March 09, 2025 by Eunbi.N

Skeleton UI Loading UX Performance UI Design

Skeleton UI

  • 콘텐츠 로딩 중 표시되는 플레이스홀더 UI
  • 인지된 성능 향상: 실제 로딩 시간은 동일하지만 더 빠르게 느껴짐
  • 레이아웃 시프트 방지: 콘텐츠 로드 시 화면 깜빡임과 레이아웃 변화 최소화
  • 사용자 기대감 관리: 로딩될 콘텐츠의 구조를 미리 보여줌
  • 점진적 로딩: 부분적으로 로드된 콘텐츠를 단계적으로 표시
  • 접근성 향상: 스크린 리더 사용자에게 로딩 상태 명확히 전달

구현 방식 - CSS Animation vs JavaScript

스켈레톤 애니메이션 효과를 만드는 기술적 접근법

  • CSS Animation: 순수 CSS 기반 애니메이션

    • @keyframeslinear-gradient로 shimmer 효과 구현
    • 하드웨어 가속과 부드러운 성능
    • 간단한 스켈레톤과 성능 최적화가 중요한 경우에 적합
  • JavaScript Libraries: 라이브러리 기반 구현

    • react-loading-skeleton, vue-content-placeholders 등 활용
    • 동적 스켈레톤 생성과 복잡한 레이아웃 지원
    • 다양한 콘텐츠 타입과 커스터마이징이 필요한 경우에 적합

디자인 패턴 - Shape-based vs Content-aware

스켈레톤의 형태와 구조를 결정하는 디자인 전략

  • Shape-based Skeleton: 기본 도형 조합

    • 직사각형, 원형 등 단순한 형태로 구성
    • 빠른 구현과 일관된 디자인 시스템
    • 범용적인 로딩 상태와 프로토타이핑에 적합
  • Content-aware Skeleton: 실제 콘텐츠 구조 반영

    • 텍스트 길이, 이미지 비율 등 실제 데이터 구조 모방
    • 더 자연스러운 사용자 경험과 높은 완성도
    • 특정 콘텐츠 타입과 프리미엄 UX가 중요한 경우에 적합

로딩 전략 - Progressive vs Batch

데이터 로딩과 스켈레톤 표시 타이밍 관리

  • Progressive Loading: 점진적 콘텐츠 로딩

    • 로드된 부분부터 순차적으로 스켈레톤 제거
    • 빠른 피드백과 인터랙티브한 경험
    • 대용량 데이터와 사용자 참여가 중요한 피드에 적합
  • Batch Loading: 일괄 콘텐츠 로딩

    • 모든 데이터 로드 완료 후 한 번에 스켈레톤 제거
    • 일관된 레이아웃과 완성된 화면 제공
    • 작은 데이터셋과 완성도가 중요한 대시보드에 적합

성능 최적화 - Static vs Dynamic

스켈레톤 렌더링 방식에 따른 성능 고려사항

  • Static Skeleton: 정적 스켈레톤 컴포넌트

    • 미리 정의된 스켈레톤 레이아웃 재사용
    • 빠른 렌더링과 메모리 효율성
    • 표준화된 레이아웃과 성능이 중요한 모바일 앱에 적합
  • Dynamic Skeleton: 동적 스켈레톤 생성

    • 데이터 스키마 기반 자동 스켈레톤 생성
    • 유연한 레이아웃과 개발 생산성 향상
    • 다양한 콘텐츠 타입과 CMS 기반 애플리케이션에 적합