Android Chaos Lab
← Terug naar posts Android performance grafiek

Performance

Lag killer: 7 tweaks voor een supersnelle feed

Lag is zelden alleen het toestel

Stotterende scroll in een feed voelt voor gebruikers als een trage telefoon. In de praktijk zijn het vaak extra recompositions, werk op de main thread en gebrek aan ART-warmup. Deze zeven tweaks gebruiken we in echte projecten.

1. Meet eerst, optimaliseer daarna

Gebruik Android Studio Profiler (CPU, Memory, Energy) en leg een baseline vast op je doeldevice. Zonder cijfers optimaliseer je op gevoel — en dat lieg je regelmatig tegen.

2. Macrobenchmark voor cold start

Macrobenchmark maakt cold start en scroll jank zichtbaar tussen builds. Eén zware init in Application.onCreate kan honderden milliseconden kosten zonder dat je het in de UI meteen ziet.

3. Baseline Profiles niet overslaan

Genereer baseline profiles voor je belangrijkste flows: home, feed, checkout. ART compileert hot paths eerder, waardoor de eerste scroll merkbaar vloeiender wordt. Gratis winst die veel teams te laat ontdekken.

4. LazyColumn: keys en lichte items

Geef list items altijd een stabiele key. Zware parsing, datumformatting en mapping horen niet in elke recomposition van je card composable.

LazyColumn {
    items(posts, key = { it.id }) { post ->
        PostCard(post = post, onClick = onPostClick)
    }
}

5. Slim cache-en

Gebruik memory + persistent cache (Room/DataStore) om herhaalde network calls te vermijden. Voor images: Coil met resize naar de echte view-grootte. Geen 4K assets in een 360dp card.

6. Compose state: klein houden

Houd state zo dicht mogelijk bij de consumer. Een grote state blob op root-niveau triggert onnodige recompositions. Gebruik ViewModel + derivedStateOf waar je aggregaties nodig hebt zonder spam-updates.

7. Geen zware taken op main

Coroutines met de juiste dispatcher: IO voor disk/network, Default voor CPU. Geen synchrone parsing “even snel” in de UI-thread — daar beginnen ANR’s.

Conclusie

Snelheid is een teamgewoonte. Houd een perf-budget aan (bijv. cold start < 1.2s), benchmark na grote PR’s en ruil geen smooth scroll in voor nog een fullscreen animatie die niemand nodig heeft.