# texturegroup/texture

**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/texturegroup-texture).**

8,173 stars · 1,310 forks · Objective-C++ · NOASSERTION

## Links

- GitHub: https://github.com/TextureGroup/Texture
- Homepage: https://texturegroup.org/
- awesome-repositories: https://awesome-repositories.com/repository/texturegroup-texture.md

## Topics

`asyncdisplaykit` `pinterest` `rendering` `texture` `uikit`

## Description

Texture is an iOS framework for building user interfaces that render on background threads using thread-safe node abstractions. It provides an asynchronous display node architecture that constructs and composites view hierarchies off the main thread, then synchronises the final bitmap for presentation, enabling smooth and responsive apps. The framework replaces UIKit's standard view system with node-based hierarchies that can be created, configured, and mutated on any queue without locking the main thread.

The framework distinguishes itself through a precomputed rendering pipeline that decodes images, sizes text, and rasterises layers ahead of display, caching results to eliminate per-frame work during scrolling. It includes a Flexbox-based layout spec engine that declares view geometry using a CSS FlexBox-inspired constraint system, computing positions and sizes in a single pass on a background thread. Texture also provides a cell-node reuse abstraction that replaces UIKit's reuse-identifier pattern with node-based cell management, avoiding common bugs by decoupling cell identity from view recycling.

The framework supports building interfaces with thread-safe nodes, preloading data for scroll interfaces, and integrating nodes into existing UIKit view hierarchies through container classes that manage state transitions and efficient rendering. It covers scroll performance optimization by loading content ahead of display for scrollable views, and manages cell reuse to eliminate visible loading delays during scrolling.

## Tags

### Mobile Development

- [Async UI Rendering Frameworks](https://awesome-repositories.com/f/mobile-development/async-ui-rendering-frameworks.md) — Provides an asynchronous display node architecture that constructs and composites view hierarchies off the main thread.
- [UIKit Interoperability](https://awesome-repositories.com/f/mobile-development/ios-apple-ecosystem/swiftui/uikit-interoperability.md) — Provides container classes that embed node-based views alongside standard UIKit components.
- [Node-Based UIKit Integration Layers](https://awesome-repositories.com/f/mobile-development/ios-apple-ecosystem/swiftui/uikit-interoperability/node-based-uikit-integration-layers.md) — Provides container classes that manage state transitions and efficient rendering of node-based views alongside UIKit views.
- [Thread-Safe Node Hierarchies](https://awesome-repositories.com/f/mobile-development/thread-safe-node-hierarchies.md) — Builds entire view trees from thread-safe node objects that can be created and mutated on any queue.
- [Node-Based UIKit Integration Containers](https://awesome-repositories.com/f/mobile-development/ios-apple-ecosystem/swiftui/uikit-interoperability/node-based-uikit-integration-containers.md) — Integrates node-based views into existing UIKit view hierarchies through container classes. ([source](https://texturegroup.org/docs/getting-started.html))
- [Node-Based UIKit Wrappers](https://awesome-repositories.com/f/mobile-development/ios-apple-ecosystem/swiftui/uikit-interoperability/node-based-uikit-wrappers.md) — Provides node containers that wrap UIKit views for lifecycle and state management.
- [Scrollable View Preloading](https://awesome-repositories.com/f/mobile-development/scrollable-view-preloading.md) — Preloads data for scroll interfaces to eliminate visible loading delays during scrolling.

### Data & Databases

- [UI Rendering](https://awesome-repositories.com/f/data-databases/data-aggregation-pipelines/precomputation-engines/ui-rendering.md) — Implements a precomputed rendering pipeline that caches image decoding and text sizing ahead of display.

### Software Engineering & Architecture

- [Background Thread Dispatchers](https://awesome-repositories.com/f/software-engineering-architecture/background-thread-dispatchers.md) — Renders UI by decoding images and sizing text on background threads. ([source](https://cdn.jsdelivr.net/gh/texturegroup/texture@master/README.md))
- [Thread-Safe Node Hierarchy Builders](https://awesome-repositories.com/f/software-engineering-architecture/background-thread-dispatchers/thread-safe-dispatchers/thread-safe-node-hierarchy-builders.md) — Enables building entire view hierarchies on background threads using thread-safe node abstractions. ([source](https://cdn.jsdelivr.net/gh/texturegroup/texture@master/README.md))
- [Thread-Safe UI Node Builders](https://awesome-repositories.com/f/software-engineering-architecture/background-thread-dispatchers/thread-safe-dispatchers/thread-safe-ui-node-builders.md) — Instantiates and configures entire view hierarchies in parallel on background threads. ([source](https://texturegroup.org/docs/getting-started.html))
- [UI Thread Responsiveness](https://awesome-repositories.com/f/software-engineering-architecture/performance-reliability/performance-optimization/frontend-rendering-loading/ui-thread-responsiveness.md) — Offloads image decoding, text sizing, and layout work to background threads for responsive UIs.
- [Display Node Architectures](https://awesome-repositories.com/f/software-engineering-architecture/task-scheduling/asynchronous-schedulers/asynchronous-thread-schedulers/display-node-architectures.md) — Provides an asynchronous display node architecture that renders UI on background threads.

### User Interface & Experience

- [Background Thread View Tree Builders](https://awesome-repositories.com/f/user-interface-experience/composition-hierarchies/view-hierarchy-composition/view-hierarchies/background-thread-view-tree-builders.md) — Constructs and configures entire view trees in parallel on background threads.
- [Thread-Safe Node](https://awesome-repositories.com/f/user-interface-experience/composition-hierarchies/view-hierarchy-composition/view-hierarchies/thread-safe-node.md) — Creates and configures entire view trees on background threads using thread-safe node abstractions. ([source](https://cdn.jsdelivr.net/gh/texturegroup/texture@master/README.md))
- [Flexbox Layout Engines](https://awesome-repositories.com/f/user-interface-experience/flexbox-layout-engines.md) — Declares view sizes and arrangements using a CSS FlexBox-inspired layout specification system.
- [Background Thread Layout Engines](https://awesome-repositories.com/f/user-interface-experience/flexbox-layout-engines/background-thread-layout-engines.md) — Includes a Flexbox-based layout spec engine that computes geometry on background threads.
- [Declarative Layout Spec Engines](https://awesome-repositories.com/f/user-interface-experience/flexbox-layout-engines/declarative-layout-spec-engines.md) — Declares node sizes and arrangements using layout specs modeled on CSS FlexBox. ([source](https://texturegroup.org/docs/getting-started.html))
- [iOS](https://awesome-repositories.com/f/user-interface-experience/flexbox-layout-engines/ios.md) — Ships a Flexbox-based layout spec engine that computes positions and sizes in a single pass on a background thread.
- [Scrolling Performance Optimizations](https://awesome-repositories.com/f/user-interface-experience/scrolling-performance-optimizations.md) — Preloads content ahead of display for scrollable views to eliminate visible loading delays. ([source](https://cdn.jsdelivr.net/gh/texturegroup/texture@master/README.md))
- [Node-Based Cell Reuse Managers](https://awesome-repositories.com/f/user-interface-experience/presentation-frameworks/lifecycle-state-management/component-lifecycle-management/cell-lifecycles/reuse-identifiers/node-based-cell-reuse-managers.md) — Manages cells with a node-based system that avoids common reuse-identifier bugs.
- [Node-Based Cell Reuse Systems](https://awesome-repositories.com/f/user-interface-experience/presentation-frameworks/lifecycle-state-management/component-lifecycle-management/cell-lifecycles/reuse-identifiers/node-based-cell-reuse-systems.md) — Manages cells with a node-based system that avoids common reuse-identifier bugs. ([source](https://cdn.jsdelivr.net/gh/texturegroup/texture@master/README.md))
- [Node-Based Cell Reuse Abstractions](https://awesome-repositories.com/f/user-interface-experience/reusable-cell-type-safety/mixed-node-cell-integration/node-based-cell-reuse-abstractions.md) — Ships a node-based cell reuse abstraction that avoids common UIKit reuse-identifier bugs.

### Web Development

- [Off-Main-Thread Layouts](https://awesome-repositories.com/f/web-development/high-performance/off-main-thread-layouts.md) — Decodes images, sizes text, and lays out views on background threads to keep the main thread responsive. ([source](https://cdn.jsdelivr.net/gh/texturegroup/texture@master/README.md))
- [iOS Off-Main-Thread Rendering](https://awesome-repositories.com/f/web-development/high-performance/off-main-thread-layouts/ios-off-main-thread-rendering.md) — Implements a precomputed rendering pipeline that decodes images, sizes text, and rasterises layers ahead of display.
