Define and hot-reload UI styles for iOS apps using external YAML or JSON theme files.
Stylist is a Swift library for iOS that allows developers to define UI styles in external YAML or JSON theme files, enabling hot-reloading for instant visual updates without recompiling the app. It solves the problem of hardcoded styles by centralizing styling logic, making it easier to maintain and update app appearances dynamically.
iOS developers and teams building UIKit-based applications who need a flexible, maintainable way to manage UI styles and support dynamic theming.
Developers choose Stylist for its hot-reloading capability, which dramatically speeds up UI development, and its declarative, CSS-like approach that simplifies style management and enables runtime theme swapping.
Define UI styles for iOS apps in a hot-reloadable yaml or json file
Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.
Changes in YAML/JSON theme files are reflected immediately without recompiling, using the watch function with animation support to speed up UI iteration dramatically.
Uses CSS-like selectors and variables in external files, enabling a single source of truth for styles and easy dynamic theme swapping at runtime.
Works with UIKit classes and Interface Builder, allowing styles to be set programmatically or via IB attributes, as shown in the property inspector example.
Supports adding strongly typed custom properties for any view through the Styleable protocol, allowing dynamic styling of custom components with type safety.
As noted in the README, if a style property is removed from a theme, Stylist cannot revert the view to its previous state, potentially leaving inconsistent UI elements.
Designed exclusively for UIKit, making it incompatible with SwiftUI-based projects or cross-platform development, which limits adoption in modern iOS apps.
The CSS-like selector syntax for view hierarchies can be intricate and may lead to specificity conflicts or debugging challenges, especially in large codebases.