A SwiftUI-inspired declarative UI framework for UIKit with Flexbox layout, compatible with iOS 10+ and Objective-C.
Render (CoreRender) is a declarative UI framework for UIKit that mimics SwiftUI's API, allowing developers to build user interfaces using a declarative syntax. It solves the problem of writing verbose, imperative UIKit code by introducing a virtual DOM-like reconciliation system that automatically updates the view hierarchy. The framework is compatible with iOS 10+ and Objective-C, making it suitable for projects that cannot yet adopt SwiftUI.
iOS developers working with UIKit who want to adopt declarative UI patterns without migrating to SwiftUI, especially those supporting iOS 10+ or mixed Objective-C/Swift codebases.
Developers choose Render for its ability to bring SwiftUI-like development experience to older iOS versions, its efficient diffing and reconciliation engine, and seamless integration with existing UIKit projects. It offers a pragmatic path to modern UI development while maintaining compatibility.
UIKit a-là SwiftUI.framework [min deployment target iOS10]
Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.
Enables SwiftUI-like declarative syntax for UIKit, reducing imperative code and automating view updates through diffing and reconciliation, as shown in the Counter-Example DSL.
Supports iOS 10+ and Objective-C, making it suitable for legacy projects that cannot yet adopt SwiftUI, as stated in the README's compatibility claims.
Integrates Facebook's Yoga engine for reliable Flexbox-based layouts, a battle-tested solution that handles complex UI arrangements robustly.
Allows embedding Render nodes in SwiftUI views via CoreRenderBridgeView, facilitating gradual migration or mixed-framework approaches, as demonstrated in the SwiftUI example.
Relies on Facebook's Yoga for layout, which adds an external dependency that could increase binary size or introduce compatibility issues in tightly controlled environments.
Requires adoption of declarative patterns and the coordinator model, which can be unfamiliar and challenging for UIKit veterans accustomed to direct view manipulation and lifecycle management.
Does not implement all SwiftUI features or newer iOS APIs, so advanced UI capabilities like some animations or modifiers might be missing or require workarounds.