Files
2nd/10_Wiki/Topics/Frontend/Impeller.md
T

4.3 KiB

category, tags, title, description, last_updated
category tags title description last_updated
Frontend
auto-wikified
technical-documentation
frontend
Impeller Impeller는 모바일 개발 프레임워크 Flutter에서 기존의 Skia 엔진을 대체하기 위해 새롭게 도입된 자체 그래픽 렌더링 엔진이다 [1-3]. 2026-05-04

Impeller

📌 Brief Summary

Impeller는 모바일 개발 프레임워크 Flutter에서 기존의 Skia 엔진을 대체하기 위해 새롭게 도입된 자체 그래픽 렌더링 엔진이다 [1-3]. 기존 런타임 환경에서 셰이더(Shader)를 컴파일할 때 발생하던 프레임 끊김(Jank) 문제를 해결하기 위해, 빌드 시점에 셰이더를 미리 컴파일하는 방식을 채택했다 [2, 4, 5]. 이를 통해 첫 프레임부터 일관되고 부드러운 UI 렌더링과 최적화된 성능을 제공하는 것이 핵심적인 특징이다 [4, 5].

📖 Core Content

  • 셰이더 컴파일 최적화 및 Jank 문제 해결: 과거 Flutter의 기본 그래픽 엔진이었던 Skia는 사용자가 앱과 상호작용할 때 런타임에서 UI를 네이티브 코드로 컴파일해야 했고, 이로 인해 처음 복잡한 애니메이션이 실행될 때 심각한 버벅임(Shader compilation jank)이 발생했다 [2, 3, 5]. Impeller는 애플리케이션 빌드 단계에서 더 작고 단순하며 최적화된 셰이더 세트를 미리 컴파일(Pre-compile)해 두어 이러한 렌더링 병목 현상을 근본적으로 제거한다 [4-6].
  • 자체 렌더링 철학 유지: React Native처럼 플랫폼의 네이티브 컴포넌트(iOS의 UIKit 등)에 의존하지 않고, Impeller를 통해 화면의 모든 픽셀을 직접 그린다 [7-9]. 이를 통해 플랫폼에 구애받지 않는 일관된 커스텀 위젯과 '픽셀 퍼펙트(Pixel-perfect)' 룩앤필을 구현할 수 있다 [7, 10].
  • 최신 모바일 GPU 최적화: Impeller는 테셀레이션(Tessellation) 기반 렌더링 방식을 사용하여 최신 모바일 GPU에 맞춰 설계되었다 [5]. 또한 Metal, Vulkan과 같은 고급 GPU API를 활용하도록 만들어져 더 낮은 전력 소비와 효율적인 렌더링 효율성을 자랑한다 [3].
  • 극대화된 애니메이션 성능: 셰이더가 이미 준비된 상태로 앱이 실행되기 때문에, 고주사율 기기에서도 일관된 60fps 또는 120fps의 프레임 속도를 매끄럽게 보장한다 [4, 11, 12]. 이로 인해 시각적으로 복잡한 전환 및 애니메이션 구현에 탁월한 강점을 지닌다 [4].
  • 진행 및 성숙도: 2023년 Flutter 3.10 버전부터 iOS 환경에서는 기본 렌더러로 안정화되어 프로덕션 레벨에 투입되었으며 [5, 13], Android 환경에서도 지속적인 발전을 거치며 적용을 확대하고 있다 [2, 5, 11, 13]. 향후 업데이트에서는 커스텀 셰이더 지원 및 3D 지원 기능까지 확장될 계획이다 [14].

⚖️ Trade-offs & Caveats

  • 기본 앱 용량(APK Size) 증가: 기기에 앱을 배포할 때 Dart 런타임과 함께 자체 Impeller 렌더링 엔진 자체가 파일에 포함되어야 한다 [12]. 이로 인해 최소 앱 크기가 약 812MB 정도로 형성되며, 네이티브 뷰를 직접 활용하여 별도의 렌더링 엔진 탑재가 필요 없는 프레임워크(예: React Native의 58MB)에 비해 베이스라인 파일 크기가 상대적으로 크다 [12].
  • 메모리 사용량 오버헤드: 플랫폼의 네이티브 UI 컴포넌트를 사용하지 않고 독자적인 위젯 트리, 레이어 트리 및 Impeller 렌더링 파이프라인을 유지해야 하므로 기본적으로 메모리 오버헤드가 발생한다 [15]. 대다수 앱에서 20~50MB 정도의 메모리 차이가 나며, 플래그십 기기에서는 무시할 만한 수준이지만 저사양 기기에서는 유의미한 단점이 될 수 있다 [15].
  • 플랫폼별 도입 속도의 불균형: iOS 생태계에서는 이미 문제점들이 해결되어 기본값으로 훌륭히 작동하고 있으나, Android 플랫폼의 경우 상대적으로 프리뷰 단계에서 출발하여 빠르게 성숙해 나가는 과정에 있다 [5, 11]. 따라서 플랫폼 간 Impeller의 최적화 수준이나 적용 시기에 일시적인 과도기적 불균형이 존재할 수 있다 [5, 13].

Last updated: 2026-05-03