피드로 돌아가기
끝까지 네이티브로, 텍스트가 필요해지기 전까지
GeekNewsGeekNews
Frontend

끝까지 네이티브로, 텍스트가 필요해지기 전까지

TextKit 2 기반 8ms 스타일링 달성 및 WebKit 렌더링 Trade-off 분석

neo2026년 5월 18일9advanced

Context

iOS/macOS 환경에서 Markdown 리치 텍스트의 고성능 렌더링과 스트리밍 처리를 구현하려는 시도. 기존 SwiftUI 및 네이티브 UI 프레임워크의 리치 텍스트 처리 성능 저하와 복잡한 인터랙션 구현의 한계가 병목 지점으로 작용함.

Technical Solution

  • TextKit 2 기반의 저수준 커스텀 구현을 통한 텍스트 스타일링 및 렌더링 최적화
  • Viewport 기반의 부분 렌더링 전략을 적용하여 전체 문서 스타일링 대비 25배의 성능 효율 확보
  • 리치 텍스트 렌더링의 복잡도 해결을 위해 OS 네이티브 프레임워크인 WebKit을 텍스트 레이아웃 엔진으로 활용하는 아키텍처 검토
  • SwiftUI 기반 Markdown 라이브러리의 p95 지연 시간 초과 문제를 해결하기 위한 저수준 글리프 API 및 커스텀 파서 적용
  • 스트리밍 텍스트 처리 시 UI 프리징 방지를 위해 비동기 파싱과 효율적인 표면 업데이트 로직 설계

- 120Hz 주사율 대응을 위해 프레임당 예산(

1

6.7ms) 내에 p95 지연 시간이 들어오는지 검증할 것 - 대용량 텍스트 처리 시 전체 렌더링 대신 Viewport 기반의 Partial Rendering 적용 검토 - 복잡한 Markdown/HTML 렌더링 요구사항이 있을 경우, SwiftUI의 추상화 비용과 WebKit의 메모리 오버헤드를 비교 분석하여 결정할 것 - 스트리밍 텍스트 구현 시 메인 스레드 블로킹을 방지하는 비동기 렌더링 파이프라인 구축

원문 읽기