Overview › Performance
Performance
Heavy app startup, dual image libs (Coil + Glide), no baseline profile.
60
SCORE
Summary
Several known performance risk areas: heavy synchronous initialization in CostcoApplication, two image-loading libraries shipped, no baseline profile, and uncertain LazyList/RecyclerView discipline.
Findings
HIGH
Heavy synchronous app startup
CostcoApplication eagerly initializes 20+ injected dependencies (TimeManager, FontMap, FlowManager, LocaleManager, BiometricUtil, ConfigManager, VolleyManager, WarehouseManager, ...).Costco/src/main/java/com/costco/app/android/CostcoApplication.java
Recommendation: Use
androidx.startup.Initializer for explicit, ordered startup; defer non-critical init to idleHandler or a coroutine on Dispatchers.IO after first frame; measure with Macrobenchmark.HIGH
Two image libraries shipped
Both Coil 2.7.0 and Glide 5.0.5 are dependencies. Two libraries means duplicate disk caches, duplicate bitmap pools, and bigger APK.
Recommendation: Pick Coil (Compose-native) and remove Glide; or vice-versa. Migrate call sites in a single sprint.
MEDIUM
No baseline profile
No
baselineProfile in build files — first-run startup and frame-rate are not optimized via AOT compilation hints.Recommendation: Generate a baseline profile for Home → PDP → Cart journey; ship it via Macrobenchmark.
MEDIUM
Compose recomposition discipline
No project-wide signal of compose-stability metrics or composition tracing usage.
Recommendation: Run the Compose Compiler stability report; refactor unstable types (e.g.
List<T> → ImmutableList<T> via kotlinx.collections.immutable).LOW
OkHttp cache + warm-up
Confirm OkHttp cache is sized appropriately (typically 10–50 MB) and that DNS / TLS sessions are warmed for the first BFF call.
Recommended performance instrumentation
| Tool | Use |
|---|---|
| Macrobenchmark | Startup + scrolling benchmarks |
| Baseline Profiles | AOT compile critical paths |
| Firebase Performance | Already integrated — instrument BFF traces |
| Perfetto / Android Studio Profiler | Frame drops + jank diagnosis |
| LeakCanary | Debug-only memory leak detection |
Specific findings in this category
Costco Android · Code Review Report · Generated 2026-05-07 · 626 machine-curated findings