# facebookarchive/asyncdisplaykit

**Attribution required: if you use, quote, or summarise this content, you must credit and link back to [awesome-repositories.com](https://awesome-repositories.com/repository/facebookarchive-asyncdisplaykit).**

13,345 stars · 2,169 forks · Objective-C++ · NOASSERTION · archived

## Links

- GitHub: https://github.com/facebookarchive/AsyncDisplayKit
- Homepage: http://asyncdisplaykit.org
- awesome-repositories: https://awesome-repositories.com/repository/facebookarchive-asyncdisplaykit.md

## Description

AsyncDisplayKit is an asynchronous UI framework and performance library for iOS. It provides a collection of performant alternatives to standard views, allowing developers to build responsive interfaces by offloading layout and rendering tasks to background threads.

The framework is centered around a declarative layout engine based on a flexbox model, which calculates element positions and sizes asynchronously. It utilizes a node-based abstraction to wrap native views, enabling the instantiation and configuration of UI hierarchies on background threads to prevent main thread blocking.

The system covers extensive performance optimization areas, including asynchronous image decoding, text rasterization, and proactive content preloading based on viewport proximity. It includes specialized support for high-performance scrolling lists with automatic row height calculation and a comprehensive set of UI components for rich text rendering and interactive controls.

Additional capabilities include multimedia handling for animated GIFs and video, network image management with multi-tier caching, and developer tools for debugging layout hierarchies and visualizing interaction areas.

## Tags

### User Interface & Experience

- [Declarative Layout Engines](https://awesome-repositories.com/f/user-interface-experience/declarative-layout-engines.md) — Builds user interfaces by composing layout specifications and nested containers based on a box model. ([source](http://texturegroup.org/docs/layout-engine.html))
- [Flexbox Layout Engines](https://awesome-repositories.com/f/user-interface-experience/flexbox-layout-engines.md) — Provides a declarative layout engine based on a flexbox model to calculate element positions and sizes asynchronously.
- [Flexbox Layout Models](https://awesome-repositories.com/f/user-interface-experience/flexbox-layout-models.md) — Implements a declarative layout system based on a flexbox model to automate sizing and positioning.
- [Asynchronous Remote Image Fetching](https://awesome-repositories.com/f/user-interface-experience/asynchronous-remote-image-fetching.md) — Fetches images from URLs on background threads to prevent interface blocking. ([source](http://texturegroup.org/docs/network-image-node.html))
- [Collection Rendering](https://awesome-repositories.com/f/user-interface-experience/collection-rendering.md) — Generates repeated UI elements for grids and lists using asynchronous layout and rendering. ([source](http://texturegroup.org/docs/containers-ascollectionnode.html))
- [Composition Hierarchies](https://awesome-repositories.com/f/user-interface-experience/composition-hierarchies.md) — Handles the addition and removal of subnodes automatically based on the layout requirements of a parent node. ([source](http://texturegroup.org/docs/adoption-guide-2-0-beta1.html))
- [View Hierarchies](https://awesome-repositories.com/f/user-interface-experience/composition-hierarchies/view-hierarchy-composition/view-hierarchies.md) — Hosts a node-based view hierarchy within a view controller to enable asynchronous layout and rendering. ([source](http://texturegroup.org/docs/containers-asdkviewcontroller.html))
- [Dimension Definitions](https://awesome-repositories.com/f/user-interface-experience/dimension-definitions.md) — Specifies element sizes using fixed point values, relative percentages, or automatic resolution. ([source](http://texturegroup.org/docs/layout2-api-sizing.html))
- [Element Stacking](https://awesome-repositories.com/f/user-interface-experience/element-stacking.md) — Positions children in horizontal or vertical stacks using a flexbox algorithm. ([source](http://texturegroup.org/docs/layout2-layoutspec-types.html))
- [High-Performance Rendering](https://awesome-repositories.com/f/user-interface-experience/high-performance-rendering.md) — Produces high-frame-rate views by offloading rendering tasks to eliminate dropped frames. ([source](http://texturegroup.org/))
- [Layout Composition Frameworks](https://awesome-repositories.com/f/user-interface-experience/layout-composition-frameworks.md) — Defines relationships between UI elements using container specifications to arrange children in stacks or overlays. ([source](http://texturegroup.org/docs/layout2-quickstart.html))
- [Linear Layouts](https://awesome-repositories.com/f/user-interface-experience/layout-managers/linear-layouts.md) — Arranges elements in horizontal or vertical stacks with configurable spacing and flexible growth behaviors. ([source](http://texturegroup.org/docs/automatic-layout-examples-2.html))
- [Asynchronous Rendering](https://awesome-repositories.com/f/user-interface-experience/layout-utilities/presentation-engines/list-rendering/asynchronous-rendering.md) — Offloads image decoding and text rasterization to background threads to eliminate frame drops during scrolling.
- [Network Image Renderers](https://awesome-repositories.com/f/user-interface-experience/network-image-renderers.md) — Fetches and displays images from remote web addresses while handling caching and progressive loading. ([source](http://texturegroup.org/docs/node-overview.html))
- [View Controller Lifecycle Management](https://awesome-repositories.com/f/user-interface-experience/presentation-frameworks/navigation-flow-controllers/navigation-controllers/view-controller-lifecycle-management.md) — Integrates asynchronous interface components into the standard view controller lifecycle. ([source](http://texturegroup.org/docs/subclassing.html))
- [Sizing Constraints](https://awesome-repositories.com/f/user-interface-experience/sizing-constraints.md) — Sets preferred, minimum, and maximum widths and heights for layout elements to control space occupancy. ([source](http://texturegroup.org/docs/layout2-layout-element-properties.html))
- [Virtual View Abstractions](https://awesome-repositories.com/f/user-interface-experience/ui-architecture/virtual-view-abstractions.md) — Uses a node-based abstraction to wrap native views, allowing UI hierarchies to be configured on background threads.
- [Visibility-Based Resource Management](https://awesome-repositories.com/f/user-interface-experience/visibility-based-resource-management.md) — Intelligently adjusts memory and data loading priorities based on the visibility depth of view controllers.
- [Automatic Node Hierarchy Management](https://awesome-repositories.com/f/user-interface-experience/visual-node-editors/layout-management/automatic-node-hierarchy-management.md) — Determines the presence of subnodes based on the layout specification to remove manual node management. ([source](http://texturegroup.org/docs/automatic-subnode-mgmt.html))
- [Layout Interpolators](https://awesome-repositories.com/f/user-interface-experience/animation-and-motion-systems/configuration-utility-helpers/animation-configuration/frame-execution-synchronization/animation-frame-rate-controls/frame-interpolation-engines/layout-interpolators.md) — Calculates and animates the difference between two layout specifications to smoothly reposition elements.
- [Background Display Preparation](https://awesome-repositories.com/f/user-interface-experience/background-display-preparation.md) — Executes text rasterization and image decoding in the background as elements approach the visible area. ([source](http://texturegroup.org/docs/intelligent-preloading.html))
- [Component Insets](https://awesome-repositories.com/f/user-interface-experience/component-insets.md) — Wraps a child element with a specified margin on each edge to create padding around content. ([source](http://texturegroup.org/docs/layout2-layoutspec-types.html))
- [Layer Flattening](https://awesome-repositories.com/f/user-interface-experience/composition-hierarchies/view-hierarchy-composition/hierarchy-flattening/layer-flattening.md) — Flattens complex node trees into single composited layers to reduce rendering overhead. ([source](http://texturegroup.org/docs/subtree-rasterization.html))
- [Aspect Ratio Constraints](https://awesome-repositories.com/f/user-interface-experience/constraint-layout-engines/aspect-ratio-constraints.md) — Scales components based on a fixed ratio relative to the available width or height. ([source](http://texturegroup.org/docs/layout2-layoutspec-types.html))
- [Element Centering](https://awesome-repositories.com/f/user-interface-experience/element-centering.md) — Positions child elements within available space based on specified horizontal and vertical centering options. ([source](http://texturegroup.org/docs/layout2-layoutspec-types.html))
- [Element Positioning](https://awesome-repositories.com/f/user-interface-experience/element-positioning.md) — Places child elements at specific bounds such as corners, edges, or the center of the layout area. ([source](http://texturegroup.org/docs/layout2-layoutspec-types.html))
- [Absolute Positioning](https://awesome-repositories.com/f/user-interface-experience/element-positioning/absolute-positioning.md) — Allows precise placement of elements using exact X and Y coordinates within a layout. ([source](http://texturegroup.org/docs/layout2-layout-element-properties.html))
- [Hybrid Synchronous-Asynchronous Cells](https://awesome-repositories.com/f/user-interface-experience/grid-cell-configurations/cell-access-optimizers/placeholder-cell-generation/view-cell-generators/hybrid-synchronous-asynchronous-cells.md) — Integrates standard collection cells and asynchronous nodes within a single collection view for flexible rendering. ([source](http://texturegroup.org/docs/uicollectionviewinterop.html))
- [Layout Alignment Utilities](https://awesome-repositories.com/f/user-interface-experience/layout-alignment-utilities.md) — Aligns elements centrally along X or Y axes using specific sizing constraints. ([source](http://texturegroup.org/docs/automatic-layout-examples-2.html))
- [Layout Animation Engines](https://awesome-repositories.com/f/user-interface-experience/layout-animation-engines.md) — Smoothly transitions the size and position of interface elements during bounds changes or device rotation. ([source](http://texturegroup.org/docs/layout-transition-api.html))
- [Layout Insets](https://awesome-repositories.com/f/user-interface-experience/layout-insets.md) — Adds padding around a component or a group of elements to create margins between content and edges. ([source](http://texturegroup.org/docs/automatic-layout-examples-2.html))
- [Layout Transition Libraries](https://awesome-repositories.com/f/user-interface-experience/layout-transition-libraries.md) — Animates changes between different layout states and provides the ability to cancel transitions. ([source](http://texturegroup.org/docs/adoption-guide-2-0-beta1.html))
- [Dynamic Item Size Calculators](https://awesome-repositories.com/f/user-interface-experience/measurement-tools/dynamic-size-calculators/dynamic-item-size-calculators.md) — Automatically calculates the scrollable area of a view based on its internal layout specification. ([source](http://texturegroup.org/docs/scroll-node.html))
- [Overlay Components](https://awesome-repositories.com/f/user-interface-experience/overlay-components.md) — Places elements directly on top of others, stretching the overlay to match the base child's dimensions. ([source](http://texturegroup.org/docs/layout2-layoutspec-types.html))
- [Collection Cell Constraints](https://awesome-repositories.com/f/user-interface-experience/resizable-panes/dimension-controllers/collection-cell-constraints.md) — Defines size boundaries for individual items within a collection to control layout growth and shrinkage. ([source](http://texturegroup.org/docs/containers-ascollectionnode.html))
- [Mixed-Node Cell Integration](https://awesome-repositories.com/f/user-interface-experience/reusable-cell-type-safety/mixed-node-cell-integration.md) — Integrates standard collection cells alongside asynchronous nodes to enable incremental migration from traditional view controllers. ([source](http://texturegroup.org/docs/containers-ascollectionnode.html))
- [Rich Text Renderers](https://awesome-repositories.com/f/user-interface-experience/rich-text-renderers.md) — Renders attributed strings with custom styling, truncation, and interactive hyperlinks. ([source](http://texturegroup.org/docs/text-node.html))
- [Interaction Depth Calculation](https://awesome-repositories.com/f/user-interface-experience/sidebars/sidebar-navigation-organization/visibility-controls/interaction-depth-calculation.md) — Calculates the number of user interactions required to make a view controller visible to adjust resource usage. ([source](http://texturegroup.org/docs/asvisibility.html))
- [Dynamic Height Calculation](https://awesome-repositories.com/f/user-interface-experience/styling-theming-systems/css-layout-systems/constraint-based-layouts/dynamic-height-calculation.md) — Provides automatic determination of list item heights based on content constraints to eliminate manual calculations. ([source](http://texturegroup.org/docs/containers-astablenode.html))
- [Visibility State Transitions](https://awesome-repositories.com/f/user-interface-experience/ui-architecture/immediate-mode-ui-development/ui-state-management/visibility-state-transitions.md) — Executes custom logic through callbacks as UI elements transition between preloading, display, and visible states. ([source](http://texturegroup.org/docs/intelligent-preloading.html))
- [Progressive Image Loading](https://awesome-repositories.com/f/user-interface-experience/ui-components/image-view-components/image-thumbnails/remote-image-loaders/progressive-image-loading.md) — Implements perceived loading speed improvements by swapping low-resolution placeholders for high-resolution versions. ([source](http://texturegroup.org/docs/multiplex-image-node.html))
- [View-Layer Hybrid Rendering](https://awesome-repositories.com/f/user-interface-experience/ui-layer-rendering/view-layer-hybrid-rendering.md) — Reduces rendering overhead by switching components between view-based and layer-based modes for non-interactive elements.
- [Custom Cell Subclassing](https://awesome-repositories.com/f/user-interface-experience/view-customizations/custom-cell-subclassing.md) — Supports the creation of flexible cell components for tables, collections, and pagers through custom subclassing. ([source](http://texturegroup.org/docs/cell-node.html))
- [Viewport Proximity Tracking](https://awesome-repositories.com/f/user-interface-experience/viewport-proximity-tracking.md) — Determines the proximity of view controllers to the screen to manage content loading and visibility. ([source](http://texturegroup.org/docs/containers-asdkviewcontroller.html))
- [Visibility-Driven Resource Management](https://awesome-repositories.com/f/user-interface-experience/visibility-driven-resource-management.md) — Reduces data and image ranges of views as they move deeper into the navigation stack to optimize memory. ([source](http://texturegroup.org/docs/asvisibility.html))

### Graphics & Multimedia

- [Flexbox and Grid Layouts](https://awesome-repositories.com/f/graphics-multimedia/web-standard-rendering/flexbox-and-grid-layouts.md) — Specifies the size and position of UI elements using a flexbox model for asynchronous measurement. ([source](http://texturegroup.org/docs/getting-started.html))
- [Asynchronous Image Effects](https://awesome-repositories.com/f/graphics-multimedia/asynchronous-image-effects.md) — Executes image transformations such as rounding and overlays on background threads before final display. ([source](http://texturegroup.org/docs/image-node.html))
- [Asynchronous Video Rendering](https://awesome-repositories.com/f/graphics-multimedia/asynchronous-video-rendering.md) — Displays video assets using a performant layer that maintains main thread responsiveness. ([source](http://texturegroup.org/docs/video-node.html))
- [Layer-Backed Rendering Optimization](https://awesome-repositories.com/f/graphics-multimedia/graphics-engines-rendering/rendering/vector-rendering-pipelines/vector-based-path-rendering/layer-backed-rendering-optimization.md) — Switches nodes from view-based to layer-based rendering to reduce overhead for non-interactive components. ([source](http://texturegroup.org/docs/layer-backing.html))
- [UI Overlay Layers](https://awesome-repositories.com/f/graphics-multimedia/visual-layer-composition/ui-overlay-layers.md) — Creates layered interfaces by placing layout elements directly on top of one another. ([source](http://texturegroup.org/docs/automatic-layout-examples-2.html))

### Mobile Development

- [Asynchronous Loading](https://awesome-repositories.com/f/mobile-development/android-image-loading/asynchronous-loading.md) — Performs image fetching and decoding on background threads to maintain smooth UI scrolling.
- [Asynchronous Layout Calculation](https://awesome-repositories.com/f/mobile-development/asynchronous-layout-calculation.md) — Computes the size and position of interface elements on background threads to prevent main thread freezes. ([source](http://texturegroup.org/docs/subclassing.html))
- [Asynchronous UI Frameworks](https://awesome-repositories.com/f/mobile-development/asynchronous-ui-frameworks.md) — Provides a complete framework for building responsive iOS interfaces by offloading layout and rendering.
- [iOS UI Components](https://awesome-repositories.com/f/mobile-development/ios-ui-components.md) — Offers a collection of performant alternative UI components for lists, buttons, and rich text.
- [List Scrolling Optimizations](https://awesome-repositories.com/f/mobile-development/list-scrolling-optimizations.md) — Builds complex lists and grids with asynchronous row height calculation and data preloading for seamless browsing.
- [UI Performance Libraries](https://awesome-repositories.com/f/mobile-development/ui-performance-libraries.md) — Reduces main thread blocking through asynchronous image decoding and text rasterization.
- [Animated GIF Playback](https://awesome-repositories.com/f/mobile-development/ios-animation-frameworks/animated-gif-playback.md) — Renders animated GIF files loaded from remote sources within the user interface on iOS. ([source](http://texturegroup.org/docs/network-image-node.html))

### Programming Languages & Runtimes

- [Scroll-Based Resource Loading](https://awesome-repositories.com/f/programming-languages-runtimes/dynamic-class-creation/class-loading-mechanisms/lazy-loading/scroll-based-resource-loading.md) — Triggers data fetching and layout calculations automatically as elements approach the visible viewport during scrolling.
- [Visibility-Based Resource Management](https://awesome-repositories.com/f/programming-languages-runtimes/automatic-memory-management/visibility-based-resource-management.md) — Automatically reduces data fetch and display ranges of child components when views move off screen. ([source](http://texturegroup.org/docs/containers-asdkviewcontroller.html))

### Software Engineering & Architecture

- [Background Thread Dispatchers](https://awesome-repositories.com/f/software-engineering-architecture/background-thread-dispatchers.md) — Routes the computation of interface positions and sizes to background threads to prevent main thread locking. ([source](http://texturegroup.org/))
- [Concurrent UI Construction](https://awesome-repositories.com/f/software-engineering-architecture/concurrent-ui-construction.md) — Instantiates and configures user interface components in parallel on background threads. ([source](http://texturegroup.org/docs/getting-started.html))
- [Logic and Presentation Separation](https://awesome-repositories.com/f/software-engineering-architecture/logic-and-presentation-separation.md) — Decouples data preloading and business logic from view classes using dedicated controller-managed node lifecycles. ([source](http://texturegroup.org/docs/containers-asnodecontroller.html))
- [UI Thread Responsiveness](https://awesome-repositories.com/f/software-engineering-architecture/performance-reliability/performance-optimization/frontend-rendering-loading/ui-thread-responsiveness.md) — Offloads layout and rendering tasks to background threads to prevent frame drops.
- [Asynchronous Image Decoding](https://awesome-repositories.com/f/software-engineering-architecture/task-scheduling/asynchronous-schedulers/asynchronous-thread-schedulers/custom-thread-executors/image-loading-thread-managers/asynchronous-image-decoding.md) — Decodes image data on background threads to prevent the main thread from blocking during UI updates. ([source](http://texturegroup.org/docs/image-node.html))
- [Layer-View Wrapping](https://awesome-repositories.com/f/software-engineering-architecture/layer-view-wrapping.md) — Encapsulates standard view subclasses within a node abstraction to integrate traditional components into an asynchronous system. ([source](http://texturegroup.org/docs/display-node.html))

### Web Development

- [Flexbox Layout Patterns](https://awesome-repositories.com/f/web-development/flexbox-layout-patterns.md) — Adjusts how children grow, shrink, and align within a stack, including flex basis and baseline alignment. ([source](http://texturegroup.org/docs/layout2-layout-element-properties.html))
- [Main Thread Offloading](https://awesome-repositories.com/f/web-development/main-thread-offloading.md) — Offloads view property configuration and construction to background threads to maintain UI responsiveness. ([source](http://texturegroup.org/docs/display-node.html))
- [Viewport Visibility State Tracking](https://awesome-repositories.com/f/web-development/asynchronous-state-management/loading-state-indicators/lifecycle-state-tracking/viewport-visibility-state-tracking.md) — Triggers callbacks when nodes enter or exit visibility states to optimize the timing of resource loading. ([source](http://texturegroup.org/docs/adoption-guide-2-0-beta1.html))
- [Viewport-Based Preloading](https://awesome-repositories.com/f/web-development/viewport-based-preloading.md) — Triggers layout measurement and data fetching in the background before elements enter the visible viewport. ([source](http://texturegroup.org/docs/containers-overview.html))

### Part of an Awesome List

- [UI Transition Animations](https://awesome-repositories.com/f/awesome-lists/media/animation-transitions/ui-transition-animations.md) — Creates fluid animations and interpolations between different layout states during content changes.

### Data & Databases

- [Network Image Caching](https://awesome-repositories.com/f/data-databases/data-caching/remote-dataset-caching/network-image-caching.md) — Stores downloaded images in a local cache to minimize redundant network requests. ([source](http://texturegroup.org/docs/network-image-node.html))
- [Preloading](https://awesome-repositories.com/f/data-databases/data-caching/remote-dataset-caching/network-image-caching/preloading.md) — Proactively fetches data from disks or APIs when UI elements enter a predefined proximity range. ([source](http://texturegroup.org/docs/intelligent-preloading.html))
- [Scroll-Based](https://awesome-repositories.com/f/data-databases/data-caching/remote-dataset-caching/network-image-caching/preloading/scroll-based.md) — Loads content and assets ahead of the current scroll position to ensure a seamless browsing experience. ([source](http://texturegroup.org/))
- [Batched Data Loading](https://awesome-repositories.com/f/data-databases/data-pipeline-orchestration/data-engineering-pipelines/batched-data-loading.md) — Triggers background data loading in batches as the user scrolls toward the end of a list. ([source](http://texturegroup.org/docs/batch-fetching-api.html))
- [Image Transformations](https://awesome-repositories.com/f/data-databases/file-storage-and-metadata-management/image-transformations.md) — Applies visual effects and drawing operations to images on background threads to avoid UI stutters. ([source](http://texturegroup.org/docs/image-modification-block.html))
