[Android] 컴포즈 최적화를 위한 Compose Stability Analyzer 플러그인을 알아보자

오규성·2026년 3월 23일

Android Compose에서 리컴포지션과 skipping은 UI 업데이트와 성능 최적화의 핵심이다.

Compose는 각 Composable의 파라미터 안정성과 State 읽기 여부를 바탕으로 해당 Composable 을 Recompotion 할지, skip 할지를 결정한다.

  1. Immutable
  • 생성 이후 외부에서 관찰 가능한 값이 변하지 않는 타입이다.
  • Compose는 이를 stable 한 타입으로 간주한다.
  1. Stable
  • 값이 변할 수는 있지만, public property가 변하면 Composition이 그 변화를 감지
    할 수 있어야 하는 타입이다.
  • Compose는 이를 stable 한 타입으로 간주한다.
  1. Unstable
  • 위 안정성 계약을 만족하지 못하거나, Compose 컴파일러가 안정성을 증명하지 못
    한 타입이다.
  • 예: 일반적인 mutable 객체, 안정성이 보장되지 않은 컬렉션 타입 등이 존재한다.

Skipping 판단은 다음과 같다.

  1. Immutable, Stable
  • stable parameter로 취급되며, 이전 값과 현재 값을 equals() 기준으로 비교한다.
  1. Unstable + Strong Skipping Mode ON
  • skippable 대상이 될 수 있으며, 이전 값과 현재 값을 === 기준으로 비교한다.
  1. Unstable + Strong Skipping Mode OFF
  • 해당 Composable은 보통 unskippable 하다.
  • 따라서 그 호출 지점까지 recomposition 이 재진입하면 skip되지 않고 본문이 다시 실행된다.

또한 Composable이 읽은 State 값이 변경되면, 파라미터 동일 여부와 별개로 해당 scope는 invalidation 되어 recomposition 될 수 있다.

하지만 개발자가 Composable Parameter 로 쓰이는 객체들이 현재 Stable 한지, Unstable 한지를 알기 위해서 Compose Metrics Report 명령어를 통해 확인하는 것은 여간 불편한게 아니다. (나의 경우도 아주 가끔씩만 사용했었다.)

그러던 와중, Skydoves 님이 Compose Stability Analyzer 라는 플러그인을 개발해주셨다 ...!!!

Compose Stability Analyzer 가 뭔데?

개발 환경에서. 즉, Android Studio 내에서 개발을 진행하며 실시간으로 Composable function 의 Parameter 가 Stable 한지, Unstable 한지 등을 알 수 있게 해주는 플러그인이다.

현재 내 버전에서는 Strong Skipping Mode 자동으로 활성화되어 있다.
위를 살펴보면 AnalyzerTest Composable 의 각 파라미터 상태는 다음과 같다.

  1. param1 : List 는 read-only interface 이지만 구현체가 mutable 할 수 있기 때문에 Unstable 판정. Compose Runtime 이 동등성 검사를 통해 판단.
  2. param2 : Int 는 primitive type 이기에 Stable
  3. StableDataclass 는 내부 프로퍼티가 val 이고, primitive Type 이기 때문에 Stable
  4. UnstableDataClass 는 primitive Type 이지만 내부 프로퍼티가 var 이기 때문에 Unstable.
  5. UnstableRuntimeCheckDataClass 는 내부 프로퍼티가 val 이지만, List 여서 Unstable 판정. Compose Runtime 이 동등성 검사를 통해 판단.
  6. ImmutableDataClass 는 내부 프로퍼티가 val 이고 List 지만 Stable Marker 를 통해 고지하였으므로 Stable.

기존에는 일일이 클래스를 들어가 내부 프로퍼티를 확인하거나 Metrics Report 를 찾아봐야했지만, 이 플러그인을 사용하면 위와 같이 한 눈에 Stable 상태를 확인할 수 있어 매우 편리하다.

# 설치법

Android Studio - Settings - Plugins 에서 Compose Stability Analyzer 를 설치 후 재실행한다.

# 기타 설정법

Android Studio - Settings - Tools - Compose Stability Analyzer 에서 여러 설정이 가능하다.

Strong Skipping Mode 활성화 및 주의 문구, inline hint, 아이콘 활성화, stable, unstable, runtime 색상 변경 등 여러가지가 가능하다.


나온지 약 2~3개월 이상 된 플러그인이고, 이전에 글을 작성하려 해놓고 까먹고 글을 작성하지 않아서 지금와서야 작성하였다.
지금껏 사용해본 플러그인 중 거의 원탑수준으로 개발 편의성이 증가하여 매우 잘 쓰고 있는 플러그인이다. 컴포즈 개발자들에게 매우 권장함 !!

자세한 내용은 https://github.com/skydoves/compose-stability-analyzer 를 참고 !

profile
안드로이드 개발자 Gyu 의 개발 블로그 !

0개의 댓글