Android Performance
Fixing RecyclerView Jank in a Content-Heavy Screen
Published July 7, 2026
Englo's Vocabulary module has 102 chapters, and its Question Bank is built for BCS and admission prep — both are the kind of list that punishes a naive RecyclerView implementation. Loading everything at once caused visible frame drops on mid-range devices, exactly the hardware our actual users carry.
The fix was pagination at the adapter level: 20 items per scroll, fetched just before the user reaches the end of the current page, rather than an infinite-scroll listener firing on every pixel of movement. We applied the same pattern across QuestionBank, SearchBrowse, and ChapterList — three modules that looked different on screen but shared the identical underlying scroll problem.
A second, less obvious source of jank was our own quiz-loading logic. Early versions loaded a full question set upfront and filtered client-side to avoid repeats within a session. We replaced that with a one-by-one loading system using an askedIds exclude list sent to the backend, so the server does the filtering and the client only ever holds one question in memory at a time.
Neither fix is exotic. What mattered was profiling before guessing — the jank wasn't where we assumed it would be until we actually measured it.