awesome iOS architecture 
Better ways to structure apps

let buzzWords = [
"Model", "View", "Controller", "Entity", "Router", "Clean", "Reactive",
"Presenter", "Interactor", "Megatron", "Coordinator", "Flow", "Manager"
]
let architecture = buzzWords.shuffled().takeRandom()
let acronym = architecture.makeAcronym()
Content
MVC
Model View Controller
Posts
Repos
- MVCTodo A very simple "To Do" app to illustrate the principles from my "A Better MVC" talk
MVP
Model View Presenter
Posts
Repos
MVVM
Model View ViewModel
Posts
Repos
Composable Architecture
Repos
- swift-composable-architecture A library for building applications in a consistent and understandable way, with composition, testing, and ergonomics in mind.
Clean Architecture
Posts
Repos
Unidirectional Data Flow
Posts
Repos
- ReSwift Unidirectional Data Flow in Swift - Inspired by Redux ⭐
- Reactor Unidirectional data flow in Swift
- Aftermath Stateless message-driven micro-framework in Swift
- Renderer Swift and UIKit a la React.
- Few.swift Views as functions of their state.
- SwiftFlux A type-safe Flux implementation for Swift
- katana-swift Swift Apps in a Swoosh
- Dispatch Multi-store Flux implementation in Swift.
- ReactorKit A framework for reactive and unidirectional Swift application architecture 🚀 🚀
- RxFeedback Architecture for RxSwift
- tea-in-swift The Elm Architecture in Swift
- Suas-iOS Unidirectional data flow architecture implementation for iOS, macOS, tvOS and watchOS http://suas.readme.io
- ReactComponentKit ReactComponentKit is a library for building UIViewController based on Components.
- Highway Fast and simple multi-store Redux-like architecture for iOS/OSX applications
- Mobius.swift A functional reactive framework for managing state evolution and side-effects from Uber
- ReCombine A Swift Redux library utilizing Apple's Combine Framework
- SwiftRex Swift + Redux + (Combine|RxSwift|ReactiveSwift) -> SwiftRex
- tempura-swift A holistic approach to iOS development, inspired by Redux and MVVM
- OneWay A Swift library for state management with unidirectional data flow.
VIPER
View Interactor Presenter Entity Router
Posts
Repos
- iOS-Viper-Architecture A detailed sample app that implements VIPER architecture
- iOS Viper XCode Templates Another detailed sample app that implements VIPER architecture with code generation templates
- iOSSwiftStarter A sample iOS app written in Swift using the VIPER architecture.
- VIPER-TDD A sample iOS app written in Swift 4 using VIPER architecture with unit tests.
VIP
View Interactor Presenter
Posts
SwiftUI
Posts
Repos
- Harvest Harvest: Apple's Combine.framework + State Machine, inspired by Elm.
- Stinsen Coordinators in SwiftUI. Simple, powerful and elegant.
- FlowStacks FlowStacks allows you to hoist SwiftUI navigation and presentation state into a Coordinator
Data Source
Posts
Repos
- Mensa Smart, modern table and collection views on iOS.
- RLDTableViewSuite Reusable table view controller, data source and delegate for all your UITableView needs
- PagedArray A Swift data structure for easier pagination
- ReadingList An example on using the Mantle Modeling Framework with Overcoat AFNetworking extension.
- DTTableViewManager Protocol-oriented UITableView management, powered by generics and associated types.
- Spots Spots is a view controller framework that makes your setup and future development blazingly fast ⭐
- JSQDataSourcesKit Type-safe, value-oriented, composable data source objects that keep your view controllers light
- HubFramework Spotify’s component-driven UI framework for iOS
- ComponentKit A React-inspired view framework for iOS
- IGListKit A data-driven UICollectionView framework for building fast and flexible lists.
- JASONETTE-iOS Native App over HTTP ⭐⭐🚀
- StackScrollView iOS Form UI Builder in Swift (powered by UICollectionView)
- ScrollingStackViewController A view controller that uses root views of child view controllers as views in a UIStackView.
- ScrollingStackContainer Efficient Scrolling UIStackView in Swift
- Flow A new declarative approach to UITableView
- FlowKit Declarative type-safe manager for UITableView & UICollectionView
- Static Simple static table views for iOS in Swift.
- Bento Swift library for building component-based interfaces on top of UITableView
- ReactiveLists React-like API for UITableView & UICollectionView
- LiveCollections
- AloeStackView A simple class for laying out a collection of views with a convenient API, while leveraging the power of Auto Layout ⭐
- Carbon A declarative library for building component-based user interfaces in UITableView and UICollectionView
- Owl A declarative type-safe framework for building fast and flexible lists with Tables & Collections
- Collor A MVVM data-oriented framework for UICollectionView with great and useful features.
- FunctionalTableData Declarative UITableViewDataSource implementation
- Upstream ⛲️ Adapted Data Source in Swift and a little bit more 🚀 🚀
- Micro Fast diffing and type safe SwiftUI style data source for UICollectionView 🚀 🚀
- Epoxy - Epoxy is a suite of declarative UI APIs for building UIKit applications in Swift
Best Practices
General
API Design
Dependency Injection
Refactoring
Model
View and Model
AppDelegate
Repos
- Logician Logic programming in Swift
- modular-architecture Examples of iOS Modular Architecture in Swift
- Delta Delta takes an app that has custom state management spread throughout all the VCs and simplifies it by providing a simple interface to change state and subscribe to its changes.
- eigen The Art World in Your Pocket or Your Trendy Tech Company's Tote, Artsy's iOS app
- ENGINEERING THE ARCHITECTURE BEHIND UBER’S NEW RIDER APP
- RIBs Uber's cross-platform mobile architecture framework.
- Alicerce A base for iOS Applications by Mindera
- Flint The Flint framework for building apps on Apple platforms using Feature Driven Development
- ios-architecture A collection of iOS architectures - MVC, MVVM, MVVM+RxSwift, VIPER, RIBs and many others
- SwiftHub GitHub iOS client in RxSwift and MVVM-C clean architecture
Sync
Cache
Asynchronous/Reactive Programming
Navigation/Coordinator/FlowController
Analytics
SDK
Functional
Types
Protocols
Code
- Splash A fast, lightweight and flexible Swift syntax highlighter for blogs, tools and fun!
Separation of Concerns
Testing
Generic
Remote Config / Feature Flagging
Licence
This project is released under the MIT license. See LICENSE.md.