explaingit

facebookarchive/asyncdisplaykit

13,345Objective-C++Audience · developerComplexity · 3/5LicenseSetup · hard

TLDR

AsyncDisplayKit (now Texture) was a Facebook-created iOS framework that moved expensive UI work like image decoding and text layout to background threads, keeping apps smooth at 60 fps during heavy scrolling.

Mindmap

mindmap
  root((AsyncDisplayKit))
    What it does
      Background UI work
      Thread-safe nodes
      Smooth scrolling
    Core concepts
      Nodes
      Main thread
      Background thread
    Status
      Archived
      Renamed Texture
    Use cases
      Feed apps
      iOS performance
      Image-heavy UI
Click or tap to explore — scroll the page freely

Code map

Detail Auto

An interactive map of this repo's files and how they connect — its source is parsed live in your browser. Click Visualize to build it.

filefunction / class

Things people build with this

USE CASE 1

Study how Facebook solved main-thread overload in iOS apps with a background-thread-safe node abstraction

USE CASE 2

Migrate legacy AsyncDisplayKit code to the actively maintained Texture library using the README redirect

USE CASE 3

Understand the pattern of decoupling image decoding and text layout from the main thread in iOS

USE CASE 4

Reference the original BSD-licensed source for thread-safe iOS UI patterns before moving to Texture

Tech stack

Objective-C++Objective-CiOS

Getting it running

Difficulty · hard Time to first run · 1h+

This repository is archived, active development moved to the Texture repository under the TextureGroup GitHub organization.

Use freely for any purpose, including commercial use, as long as you retain the BSD license and copyright notice.

In plain English

AsyncDisplayKit was a framework for building smooth, responsive user interfaces in iOS apps. It was created by Facebook to solve a common problem: on a phone, all drawing and layout work typically runs on a single thread called the main thread, which is also responsible for responding to every tap and scroll. If the app tries to do too much on that thread at once, the screen stutters and frames get dropped, which makes the app feel slow or unresponsive. The library's core idea was to move expensive UI operations, such as decoding images, measuring text, and laying out views, off the main thread so they could happen in the background. It introduced a concept called "nodes," which are thread-safe versions of the standard iOS view building blocks. Because nodes could be created and configured on background threads, the main thread stayed free to handle user interaction and keep animations running at a smooth 60 frames per second. The framework also addressed practical annoyances in iOS development, such as bugs that arise when reusing table or collection view cells, and the complexity of preloading data before a user scrolls to it. It was used in production in apps including Facebook, Pinterest, and others that needed to handle large amounts of dynamic content. This repository is now archived. The project was renamed to Texture and moved to a new home under the TextureGroup organization on GitHub. The README here redirects visitors to that new location. If you are looking for the actively maintained version of this code, the Texture repository is where development continued after Facebook transferred ownership. The original code was BSD-licensed.

Copy-paste prompts

Prompt 1
Show me how AsyncDisplayKit nodes replace UIViews for background-thread layout in an iOS table view with many rows
Prompt 2
How do I migrate a UITableView using UITableViewCells to use ASTableNode and ASCellNode from AsyncDisplayKit?
Prompt 3
Explain how AsyncDisplayKit's preload mechanism works for loading images before a user scrolls to them in a feed
Prompt 4
What is the difference between the display pass and the layout pass in AsyncDisplayKit, and which thread does each run on?
Open on GitHub → Explain another repo

← facebookarchive on gitmyhub — every repo by this author, as a profile.

Verify against the repo before relying on details.