피드로 돌아가기
Meet @vysmo/text - 243 text animation presets in 3 KB
Dev.toDev.to
Frontend

Tree-shaking 기반 3KB 초경량 텍스트 애니메이션 라이브러리 설계

Meet @vysmo/text - 243 text animation presets in 3 KB

TommyDee2026년 5월 19일7intermediate

Context

기존 텍스트 애니메이션 라이브러리의 무거운 번들 크기와 복잡한 Timeline 설정 방식에 따른 개발 오버헤드 발생. 특히 Grapheme 분석 부재로 인한 이모지 및 다국어 텍스트 렌더링 깨짐 현상이 주요 기술적 한계로 작용.

Technical Solution

  • ES Module 단위의 Preset 설계를 통한 Tree-shaking 최적화로 미사용 애니메이션 코드 배제
  • Intl.Segmenter API 도입을 통한 Grapheme-safe 텍스트 슬라이싱으로 다국어 및 이모지 클러스터 무결성 보장
  • Preset을 단순 데이터 객체(JSON shape)로 정의하여 상속 없는 유연한 커스텀 및 확장 구조 구현
  • .seek(progress) 메서드 제공을 통해 스크롤 이벤트와 애니메이션 타임라인의 정밀한 동기화 구현
  • String 기반 Registry 방식과 Reference 기반 import 방식을 동시 제공하여 개발자 경험(DX)과 번들 최적화 선택지 제공
  • stagger 및 staggerOrder 제어 변수를 통한 런타임 애니메이션 템포 및 방향성 제어 로직 설계

1. 글로벌 서비스 대상 텍스트 처리 시 단순 split('') 대신 Intl.Segmenter 사용 검토

2. 라이브러리 설계 시 설정값(Configuration)을 데이터 객체로 분리하여 Tree-shaking 가능 구조인지 확인

3. 애니메이션 제어 시 Timeline API 대신 progress(0~1) 기반의 seek 메서드 도입을 통한 인터랙션 확장성 고려

원문 읽기