ios-architecture
  • June 11, 2025

Apps


app-uiapp-ui

Architectures


This repository hosts each sample app in separate directory.⭐ Click the title of example to see detailed README information about specific architecture.
Multiple screens app examples
🔒 ** If you want to login, use username iostest and password test.**If you’re a themoviedb user, please use your own account and API key!
Example Description
tmdb-mvvm-rxswift-pure Uses RxSwift and observables as binding mechanism between ViewController and ViewModel. Also, it uses simple navigator pattern for transitions between screens. (README in progress)

Single screen app examples

The purpose of having examples with single page applications is highlighting connection between view code and business logic code.

Example Description
mvc Standard MVC pattern recommended by Apple. Uses composition design pattern to make ViewController smaller. (README in progress)
mvp Standard MVP pattern. (README in progress)
mvvm-rxswift-pure Uses RxSwift and observables as binding mechanism between ViewController and ViewModel.
mvvm-rxswift-functions-subjects-observables Uses RxSwift and observables as outputs from ViewModelViewModel inputs are defined as subjects wrapped in functions.
mvvm-rxswift-subjects-observables Uses RxSwift with observables as ViewModel outputs and subjects as ViewModel inputs.
mvvm-closures Binds ViewController and ViewModel using closures and swift functions (README in progress)
rxfeedback-mvc Uses RxFeedback in MVC architecture (README in progress)
viper Uses VIPER architecture (README in progress)

Examples in progress

Example Description
reactorkit In Progress
mvvm+rxfeedback In Progress
mvvm-reactive-swift In Progress
reswift In Progress
viper-rxswift In Progress
ribs In Progress

Sample apps


Apps in this repository are split into 2 groups – single screen and multiscreen.

Simple one screen apps aim to be simple enough that you can understand crucial bits about given architecture (i.e. bindings between ViewModel and ViewController in MVVM examples). However, some other architectures require more complexity (i.e. RIBs architecture) and this is the reason of having multiscreen examples in this project.

Single screen app

Single screen app is a simple list of repositories fetched from GitHub and a text field that makes queries for new data.

Multiscreen app

Multiscreen app is a simple themoviedb client. It lets user to authenticate, view popular movies/tv shows or actors and see details about each movie. Also, it has a search screen that allows you to browse movies or actors.

Open in Xcode


Clone the repository:

git clone git@github.com:tailec/ios-architecture.git

Go to example directory, for example:

cd mvvm-pure-swift

Install pods:

pod install

Note: Some of the examples don’t use external libraries so pod install is not required.

GitHub


View Github

#ios #redux #swift
YOU MIGHT ALSO LIKE...
🧭 NavigationKit

NavigationKit is a lightweight library which makes SwiftUI navigation super easy to use. 💻 Installation 📦 Swift Package Manager Using Swift Package Manager, add ...

swiftui-navigation-stack

An alternative SwiftUI NavigationView implementing classic stack-based navigation giving also some more control on animations and programmatic navigation. NavigationStack Installation ...

Stinsen

Simple, powerful and elegant implementation of the Coordinator pattern in SwiftUI. Stinsen is written using 100% SwiftUI which makes it ...

SwiftUI Router

With SwiftUI Router you can power your SwiftUI app with path-based routing. By utilizing a path-based system, navigation in your app becomes ...

FlowStacks

This package takes SwiftUI's familiar and powerful NavigationStack API and gives it superpowers, allowing you to use the same API not just ...