/awesome-ios-architecture

:japanese_castle: Better ways to structure iOS apps

MIT LicenseMIT

awesome iOS architecture Awesome

❤️ Support my apps ❤️

❤️❤️😇😍🤘❤️❤️

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.

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.

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 🚀 🚀

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

Cross platform

Remote Config / Feature Flagging

Licence

This project is released under the MIT license. See LICENSE.md.