Open-Awesome
CategoriesAlternativesStacksSelf-HostedExplore
Open-Awesome

© 2026 Open-Awesome. Curated for the developer elite.

TermsPrivacyAboutGitHubRSS
  1. Home
  2. Swift
  3. Stylist

Stylist

MITSwift0.3.0

Define and hot-reload UI styles for iOS apps using external YAML or JSON theme files.

GitHubGitHub
300 stars18 forks0 contributors

What is Stylist?

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.

Target Audience

iOS developers and teams building UIKit-based applications who need a flexible, maintainable way to manage UI styles and support dynamic theming.

Value Proposition

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.

Overview

Define UI styles for iOS apps in a hot-reloadable yaml or json file

Use Cases

Best For

  • Rapid UI iteration with hot-reloading during iOS app development
  • Building apps that require dynamic theme switching at runtime
  • Centralizing UI styles in a single source of truth for large iOS projects
  • Applying consistent styling across UIView and UIViewController hierarchies
  • Creating design systems with reusable style variables and inheritance
  • Styling custom UIKit components with strongly typed properties

Not Ideal For

  • iOS projects built entirely with SwiftUI, as Stylist is UIKit-specific and doesn't integrate with SwiftUI's declarative framework
  • Apps with very simple, static UIs where the overhead of external theme files and library dependency isn't justified
  • Teams that require all styling logic to be in Swift code for strict type safety without external parsing or file management

Pros & Cons

Pros

Instant Hot Reloading

Changes in YAML/JSON theme files are reflected immediately without recompiling, using the watch function with animation support to speed up UI iteration dramatically.

Centralized Declarative Styling

Uses CSS-like selectors and variables in external files, enabling a single source of truth for styles and easy dynamic theme swapping at runtime.

Seamless UIKit Integration

Works with UIKit classes and Interface Builder, allowing styles to be set programmatically or via IB attributes, as shown in the property inspector example.

Extensible Custom Properties

Supports adding strongly typed custom properties for any view through the Styleable protocol, allowing dynamic styling of custom components with type safety.

Cons

Cannot Revert Removed Styles

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.

UIKit-Only Limitation

Designed exclusively for UIKit, making it incompatible with SwiftUI-based projects or cross-platform development, which limits adoption in modern iOS apps.

Complex Selector System

The CSS-like selector syntax for view hierarchies can be intricate and may lead to specificity conflicts or debugging challenges, especially in large codebases.

Frequently Asked Questions

Quick Stats

Stars300
Forks18
Contributors0
Open Issues2
Last commit4 years ago
CreatedSince 2017

Tags

#design-system#ios#style#yaml#theme-management#styling#tvos#ui#declarative-ui#hot-reload#swift#ui-styling#json#css#uikit

Built With

Y
Yams
U
UIKit
S
Swift

Included in

Swift26.0k
Auto-fetched 55 minutes ago

Related Projects

SwiftThemeSwiftTheme

🎨 Powerful theme/skin manager for iOS 9+ 主题/换肤, 暗色模式

Stars2,532
Forks311
Last commit1 month ago
ThemesThemes

👕👚 Theme management in Swift

Stars243
Forks20
Last commit5 years ago
Community-curated · Updated weekly · 100% open source

Found a gem we're missing?

Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.

Submit a projectStar on GitHub