Open-Awesome
CategoriesAlternativesStacksSelf-HostedExplore
Open-Awesome

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

TermsPrivacyAboutGitHubRSS
  1. Home
  2. iOS
  3. Katana

Katana

MITSwift0.8.0

A modern Swift framework for writing testable and predictable iOS app logic, inspired by Redux.

Visit WebsiteGitHubGitHub
2.2k stars92 forks0 contributors

What is Katana?

Katana is a Swift framework for building iOS applications with a predictable and testable architecture. It manages app state using a Redux-inspired pattern, where the entire state is centralized and can only be modified through dispatched StateUpdaters. This approach eliminates race conditions and makes business logic easy to reason about.

Target Audience

iOS developers building medium-sized applications who need a structured, testable approach to state management and business logic.

Value Proposition

Developers choose Katana for its strict unidirectional data flow, built-in side effect handling with promises, and excellent testability through dependency injection. It scales well for production apps and integrates seamlessly with UIKit via companion libraries like Tempura.

Overview

Swift Apps in a Swoosh! A modern framework for creating iOS apps, inspired by Redux.

Use Cases

Best For

  • Implementing Redux-like state management in Swift iOS apps
  • Building testable business logic with dependency injection
  • Managing complex side effects and asynchronous operations
  • Creating predictable state updates with pure functions
  • Profiling app performance with Signpost integration
  • Scaling iOS applications with a maintainable architecture

Not Ideal For

  • Large-scale applications requiring highly modular and composable architecture
  • Teams heavily invested in SwiftUI who prefer native state management solutions
  • Projects needing rapid prototyping with minimal boilerplate and setup
  • Apps that prioritize reactive programming patterns like Combine over Redux-style unidirectional flow

Pros & Cons

Pros

Predictable State Updates

Centralized state and pure StateUpdaters enforce unidirectional data flow, eliminating race conditions as highlighted in the README's philosophy on predictability.

Testable Business Logic

Built-in dependency injection container allows mocking of dependencies, making side effects and state updaters easy to test in isolation, improving code quality.

Async Side Effects

Side effects leverage promises and async/await patterns via Hydra, simplifying asynchronous operations like API calls with clear error handling, as demonstrated in the code examples.

Performance Profiling

Integrated Signpost API provides detailed instrumentation in Instruments for monitoring dispatched items, aiding in performance optimization for production apps.

Cons

Modularity Challenges

The README admits that for growing applications, Katana's architecture can become less modular, leading its creators to migrate to The Composable Architecture for better scalability.

UI Integration Overhead

Katana requires companion libraries like Tempura for UI synchronization, adding complexity compared to native SwiftUI state management or other lightweight solutions.

Ecosystem Limitations

With the creators moving to TCA, community support and updates may lag, and the ecosystem is less mature compared to more popular state management libraries in Swift.

Frequently Asked Questions

Quick Stats

Stars2,236
Forks92
Contributors0
Open Issues0
Last commit3 years ago
CreatedSince 2016

Tags

#ios#testable-architecture#dependency-injection#side-effects#redux-pattern#ui#katana#unidirectional-data-flow#swift#mobile-apps#state-management#redux

Built With

H
Hydra
S
Swift

Links & Resources

Website

Included in

iOS51.7kSwift26.0k
Auto-fetched 1 day ago

Related Projects

RxSwiftRxSwift

Reactive Programming in Swift

Stars24,650
Forks4,163
Last commit2 months ago
ReactiveCocoaReactiveCocoa

Cocoa framework and Obj-C dynamism bindings for ReactiveSwift.

Stars19,839
Forks3,419
Last commit9 months ago
PromiseKitPromiseKit

Promises for Swift & ObjC.

Stars14,238
Forks1,457
Last commit5 days ago
ReSwiftReSwift

Unidirectional Data Flow in Swift - Inspired by Redux

Stars7,592
Forks520
Last commit2 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