# jank

Published articles for jank.

This is one page of public article previews, not the complete archive. Follow Next page to continue. Summaries are not the original full articles.

## Exploring PausableComposition internals in Jetpack Compose

DevFeed: [Exploring PausableComposition internals in Jetpack Compose](<https://devfeed.tech/articles/exploring-pausablecomposition-internals-in-jetpack-compose-25718.md>)

Original publisher: [Read original article](<https://blog.shreyaspatil.dev/exploring-pausablecomposition-internals-in-jetpack-compose/>)

Author: Shreyas Patil

Published: 2025-07-14T05:34:31Z

Content type: tutorial

Language: en

Sources: [Shreyas Patil's Blog](<https://devfeed.tech/sources/shreyas-patil-s-blog.md>)

Topics: [Compose](<https://devfeed.tech/topics/compose.md>), [Jetpack Compose](<https://devfeed.tech/topics/jetpack-compose.md>)

Tags: [android](<https://devfeed.tech/tags/android.md>), [android-app-development](<https://devfeed.tech/tags/android-app-development.md>), [code](<https://devfeed.tech/tags/code.md>), [compose](<https://devfeed.tech/tags/compose.md>), [declarative](<https://devfeed.tech/tags/declarative.md>), [internals](<https://devfeed.tech/tags/internals.md>), [jank](<https://devfeed.tech/tags/jank.md>), [jetpack-compose](<https://devfeed.tech/tags/jetpack-compose.md>), [kotlin](<https://devfeed.tech/tags/kotlin.md>), [kotlin-multiplatform](<https://devfeed.tech/tags/kotlin-multiplatform.md>), [main-thread](<https://devfeed.tech/tags/main-thread.md>), [performance](<https://devfeed.tech/tags/performance.md>), [performance-optimization](<https://devfeed.tech/tags/performance-optimization.md>), [ui](<https://devfeed.tech/tags/ui.md>), [uiux](<https://devfeed.tech/tags/uiux.md>)

### AI overview

This article explores the internals of PausableComposition, an internal API introduced in Compose 1.9.X. It explains how composition can be divided into smaller pieces and prepared asynchronously to reduce main-thread work and help prevent dropped frames during scrolling.

### Source excerpt

Explore the internals of PausableComposition in Jetpack Compose. Learn how Compose manages state and effects when a composition is paused or resumed.

## How Android Memory Leaks Cause Jank, Freezes, and ANRs

DevFeed: [How Android Memory Leaks Cause Jank, Freezes, and ANRs](<https://devfeed.tech/articles/freezes-anrs-check-memory-leaks-25624.md>)

Original publisher: [Read original article](<https://blog.p-y.wtf/freezes-anrs-check-memory-leaks>)

Author: Pierre-Yves Ricau

Published: 2023-07-20T22:09:53Z

Content type: tutorial

Language: en

Sources: [Py's blog](<https://devfeed.tech/sources/py-s-blog.md>)

Topics: [Android](<https://devfeed.tech/topics/android.md>), [Memory Leaks](<https://devfeed.tech/topics/memory-leaks.md>), [Latency](<https://devfeed.tech/topics/latency.md>), [navigation](<https://devfeed.tech/topics/navigation.md>), [Java](<https://devfeed.tech/topics/java.md>)

Tags: [android](<https://devfeed.tech/tags/android.md>), [jank](<https://devfeed.tech/tags/jank.md>), [latency](<https://devfeed.tech/tags/latency.md>), [main-thread](<https://devfeed.tech/tags/main-thread.md>), [memory-leak](<https://devfeed.tech/tags/memory-leak.md>), [memory-leaks](<https://devfeed.tech/tags/memory-leaks.md>), [navigation](<https://devfeed.tech/tags/navigation.md>), [outofmemory](<https://devfeed.tech/tags/outofmemory.md>), [performance](<https://devfeed.tech/tags/performance.md>)

### AI overview

This article explains how Android memory leaks can cause jank, freezes, and ANRs rather than immediate crashes. It describes tracking memory usage per navigation, correlating memory growth with navigation latency, and how garbage collection blocking the main thread affects UI responsiveness near the app memory limit.

### Source excerpt

In this article, I show how Android memory leaks lead to jank, freezes and ANRs more often than they lead to OutOfMemoryError crashes. Navigation Latency At Square, we've been tracking a User-Centric performance metric: Interaction Latency. We track ...

## The Anatomy of a Frame

DevFeed: [The Anatomy of a Frame](<https://devfeed.tech/articles/the-anatomy-of-a-frame-39440.md>)

Original publisher: [Read original article](<https://aerotwist.com/blog/the-anatomy-of-a-frame>)

Author: Paul Lewis

Published: 2016-02-15T00:00:00Z

Content type: tutorial

Language: en

Sources: [Paul Lewis](<https://devfeed.tech/sources/paul-lewis.md>)

Topics: [Chrome](<https://devfeed.tech/topics/chrome.md>), [browser](<https://devfeed.tech/topics/browser.md>), [Processes](<https://devfeed.tech/topics/processes.md>), [GPU](<https://devfeed.tech/topics/gpu.md>), [JavaScript](<https://devfeed.tech/topics/javascript.md>), [layout](<https://devfeed.tech/topics/layout.md>), [Web Development](<https://devfeed.tech/topics/web-development.md>)

Tags: [browser](<https://devfeed.tech/tags/browser.md>), [chrome](<https://devfeed.tech/tags/chrome.md>), [code](<https://devfeed.tech/tags/code.md>), [gpu](<https://devfeed.tech/tags/gpu.md>), [jank](<https://devfeed.tech/tags/jank.md>), [javascript](<https://devfeed.tech/tags/javascript.md>), [layout](<https://devfeed.tech/tags/layout.md>), [pixels](<https://devfeed.tech/tags/pixels.md>), [process](<https://devfeed.tech/tags/process.md>)

### AI overview

This reference explains how Chrome and Blink move content from browser processes and renderer threads to the screen. It describes the GPU process, compositor thread, main thread, tile workers, input handling, JavaScript, style, layout, paint, and frame delivery, while noting that the architecture may differ across browser vendors.

### Source excerpt

I'm often asked by other developers about parts of the pixel workflow, and what fires when and why, so I figured it might be worth putting up a little reference for what's involved in shipping pixels to screen.

## Using createImageBitmap to reduce image-decoding jank

DevFeed: [Using createImageBitmap to reduce image-decoding jank](<https://devfeed.tech/articles/the-hack-is-back-39441.md>)

Original publisher: [Read original article](<https://aerotwist.com/blog/the-hack-is-back>)

Author: Paul Lewis

Published: 2016-01-25T00:00:00Z

Content type: article

Language: en

Sources: [Paul Lewis](<https://devfeed.tech/sources/paul-lewis.md>)

Topics: [Decoding](<https://devfeed.tech/topics/decoding.md>), [browser](<https://devfeed.tech/topics/browser.md>), [Canvas](<https://devfeed.tech/topics/canvas.md>), [Chrome Canary](<https://devfeed.tech/topics/chrome-canary.md>), [Firefox](<https://devfeed.tech/topics/firefox.md>), [JavaScript](<https://devfeed.tech/topics/javascript.md>)

Tags: [browser](<https://devfeed.tech/tags/browser.md>), [canvas](<https://devfeed.tech/tags/canvas.md>), [chrome-canary](<https://devfeed.tech/tags/chrome-canary.md>), [decoding](<https://devfeed.tech/tags/decoding.md>), [firefox](<https://devfeed.tech/tags/firefox.md>), [images](<https://devfeed.tech/tags/images.md>), [jank](<https://devfeed.tech/tags/jank.md>), [main-thread](<https://devfeed.tech/tags/main-thread.md>), [perf](<https://devfeed.tech/tags/perf.md>), [pixel](<https://devfeed.tech/tags/pixel.md>)

### AI overview

The article explains how image decoding can block other paint tasks and cause checkerboarding or jank. It introduces createImageBitmap as a browser-managed way to decode images off the main paint flow, noting availability in Chrome Canary behind an experimental canvas flag and in Firefox 42 onward.

### Source excerpt

Image decoding can be a source of checkboarding and jank. What if there was a way to work around it without resorting to a cluster of horror hacks? Step right up and meet my new friend createImageBitmap!

## 60fps on the mobile web

DevFeed: [60fps on the mobile web](<https://devfeed.tech/articles/60fps-on-the-mobile-web-31888.md>)

Original publisher: [Read original article](<http://engineering.flipboard.com//2015/02/mobile-web>)

Author: https://twitter.com/bapjuseyo (Michael Johnston)

Published: 2015-02-10T00:00:00Z

Content type: article

Language: en

Sources: [Flipboard](<https://devfeed.tech/sources/flipboard.md>)

Topics: [Mobile](<https://devfeed.tech/topics/mobile.md>), [Web](<https://devfeed.tech/topics/web.md>), [Canvas](<https://devfeed.tech/topics/canvas.md>), [CSS](<https://devfeed.tech/topics/css.md>), [Document Object Model (DOM)](<https://devfeed.tech/topics/dom.md>), [ui](<https://devfeed.tech/topics/ui.md>), [HTML5](<https://devfeed.tech/topics/html5.md>)

Tags: [canvas](<https://devfeed.tech/tags/canvas.md>), [css](<https://devfeed.tech/tags/css.md>), [html5](<https://devfeed.tech/tags/html5.md>), [jank](<https://devfeed.tech/tags/jank.md>), [mobile](<https://devfeed.tech/tags/mobile.md>), [performance](<https://devfeed.tech/tags/performance.md>), [smartphone](<https://devfeed.tech/tags/smartphone.md>), [touchscreen](<https://devfeed.tech/tags/touchscreen.md>), [web](<https://devfeed.tech/tags/web.md>)

### AI overview

Flipboard describes bringing its mobile-first experience to the web and explains how it optimized scrolling and animation performance. The article discusses the limits of DOM updates during animation and considers hardware-accelerated HTML5 Canvas for building a user interface.

### Source excerpt

Flipboard launched during the dawn of the smartphone and tablet as a mobile-first experience, allowing us to rethink content layout principles from the web for a more elegant user experience on a variety of touchscreen form factors. Now we're coming full circle and bringing Flipboard to the web. Much of what we do at Flipboard has value independent of what device it's consumed on: curating the best stories from all the topics, sources, and people that you care about most. Bringing our service to the web was always a logical extension. As we began to tackle the project, we knew we wanted to adapt our thinking from our mobile experience to try and elevate content layout and interaction on the web. We wanted to match the polish and performance of our native apps, but in a way that felt true to the browser. Early on, after testing numerous prototypes, we decided our web experience should scroll. Our mobile apps are known for their book-like pagination metaphor, something that feels intuitive on a touch screen, but for a variety of reasons, scrolling feels most natural on the web. In order to optimize scrolling performance, we knew that we needed to keep paint times below 16ms and limit reflows and repaints. This is especially important during animations. To avoid painting during animations there are two properties you can safely animate: CSS transform and opacity. But that really limits your options. What if you want to animate the width of an element? How about a frame-by-frame scrolling animation? (Notice in the above image that the icons at the top transition from white to black. These are 2 separate elements overlaid on each other whose bounding boxes are clipped depending on the content beneath.) These types of animations have always suffered from jank on the web, particularly on mobile devices, for one simple reason: The DOM is too slow. It's not just slow, it's really slow. If you touch the DOM in any way during an animation you've already blown through your 16ms