awesome-ios-architecture

by onmyway133

:japanese_castle: Better ways to structure iOS apps

4.0K Stars 437 Forks Last release: Not found MIT License 299 Commits 0 Releases

Available items

No Items, yet!

The developer of this repository has not created any items for sale yet. Need a bug fixed? Help with integration? A different license? Create a request here:

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 :star:
  • 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 :rocket: :rocket:
  • 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 :star:
  • 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 :star::star::rocket:
  • 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 :star:
  • 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 :rocket: :rocket:
  • Micro Fast diffing and type safe SwiftUI style data source for UICollectionView :rocket: :rocket:

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.

We use cookies. If you continue to browse the site, you agree to the use of cookies. For more information on our use of cookies please see our Privacy Policy.