Convert Figma logo to code with AI

onmyway133 logoawesome-ios-architecture

:japanese_castle: Better ways to structure iOS apps

5,118
526
5,118
2

Top Related Projects

A curated list of awesome iOS ecosystem, including Objective-C and Swift Projects

A collaborative list of awesome Swift libraries and resources. Feel free to contribute!

A curated list of awesome ARKit projects and resources. Feel free to contribute!

🚀 Awesome list of open source applications for macOS. https://t.me/s/opensourcemacosapps

5,148

Examples projects using SwiftUI released by WWDC2019. Include Layout, UI, Animations, Gestures, Draw and Data.

Good ideas for iOS development, by Futurice developers.

Quick Overview

The awesome-ios-architecture repository on GitHub is a curated list of iOS architecture patterns and best practices. It provides a comprehensive overview of various architectural approaches and design patterns commonly used in iOS app development.

Pros

  • Comprehensive Coverage: The repository covers a wide range of architectural patterns and design principles, making it a valuable resource for iOS developers.
  • Organized Structure: The content is well-organized, with clear categorization and descriptions for each architectural pattern.
  • Community Contributions: The project benefits from contributions from the iOS development community, ensuring the information is up-to-date and relevant.
  • Practical Examples: The repository includes links to sample code and real-world project examples, which can be helpful for understanding the practical application of the architectural patterns.

Cons

  • Lack of In-Depth Explanations: While the repository provides a good overview of the architectural patterns, it may not offer in-depth explanations or detailed implementation guidance.
  • Potential Outdated Information: As the iOS ecosystem evolves, some of the information in the repository may become outdated over time, requiring regular updates.
  • Subjective Recommendations: The choice of architectural patterns and design principles can be subjective, and developers may have different preferences or requirements.
  • Limited Code Examples: The repository primarily provides links to external resources and sample projects, rather than including comprehensive code examples within the repository itself.

Getting Started

Since this is a curated list of resources and not a code library, there are no specific getting started instructions. However, developers can explore the repository and navigate to the various architectural patterns and design principles that are relevant to their project requirements.

Competitor Comparisons

A curated list of awesome iOS ecosystem, including Objective-C and Swift Projects

Pros of awesome-ios

  • Broader scope, covering various aspects of iOS development beyond architecture
  • Larger community and more frequent updates
  • Includes sections on tools, testing, and other practical resources

Cons of awesome-ios

  • Less focused on architectural patterns and concepts
  • May be overwhelming for developers specifically looking for architecture-related resources
  • Requires more time to navigate and find relevant information on architecture

Code comparison

While both repositories primarily consist of curated lists and don't contain much code, here's a sample of how they might structure their content:

awesome-ios-architecture:

## Architecture
- MVVM
- VIPER
- Clean Architecture

awesome-ios:

## Table of Contents
- [Architecture](#architecture)
- [Testing](#testing)
- [Tools](#tools)

## Architecture
- [MVVM](#mvvm)
- [VIPER](#viper)

Summary

awesome-ios-architecture is more focused on iOS architectural patterns and concepts, making it easier for developers to find specific architecture-related resources. On the other hand, awesome-ios offers a comprehensive collection of iOS development resources, including architecture, but also covering other aspects like tools, testing, and practical guides. The choice between the two depends on whether you're specifically looking for architecture-related information or a broader range of iOS development resources.

A collaborative list of awesome Swift libraries and resources. Feel free to contribute!

Pros of awesome-swift

  • Broader scope, covering various aspects of Swift development beyond just architecture
  • More frequently updated with new resources and contributions
  • Larger community engagement and more stars on GitHub

Cons of awesome-swift

  • Less focused on specific architectural patterns and concepts
  • May be overwhelming for developers specifically looking for iOS architecture resources
  • Includes resources that may not be directly related to iOS development

Code comparison

While both repositories are curated lists and don't contain much code, here's a sample of how they structure their content:

awesome-swift:

## Contents
- [Guides](#guides)
- [Boilerplates](#boilerplates)
- [REPL](#repl)
- [Editor Support](#editor-support)

awesome-ios-architecture:

## Content

- [Architectural Patterns](#architectural-patterns)
- [Dependency Injection](#dependency-injection)
- [Functional Swift](#functional-swift)

Both repositories use similar Markdown formatting for their lists, but awesome-ios-architecture focuses more on architectural concepts, while awesome-swift covers a wider range of Swift-related topics.

A curated list of awesome ARKit projects and resources. Feel free to contribute!

Pros of Awesome-ARKit

  • Focused specifically on ARKit resources, providing a curated list of AR-related tools and projects
  • Regularly updated with new ARKit features and iOS versions
  • Includes a wide range of resources, from tutorials to open-source projects and commercial tools

Cons of Awesome-ARKit

  • Limited scope, focusing only on ARKit and AR-related topics
  • May not provide as much depth in general iOS architecture patterns and best practices
  • Less emphasis on architectural concepts and design patterns

Code Comparison

While a direct code comparison isn't relevant due to the nature of these repositories, here's an example of how they might differ in content:

Awesome-ARKit example (AR-related content):

import ARKit

let configuration = ARWorldTrackingConfiguration()
sceneView.session.run(configuration)

awesome-ios-architecture example (architectural pattern):

protocol ViewModelType {
    associatedtype Input
    associatedtype Output
    
    func transform(input: Input) -> Output
}

Both repositories serve different purposes, with Awesome-ARKit focusing on AR-specific resources and awesome-ios-architecture covering broader iOS architectural patterns and practices.

🚀 Awesome list of open source applications for macOS. https://t.me/s/opensourcemacosapps

Pros of open-source-mac-os-apps

  • Broader scope, covering macOS applications rather than just iOS architecture
  • Larger collection with more diverse categories of apps
  • Includes links to App Store for easy discovery of released versions

Cons of open-source-mac-os-apps

  • Less focused on architectural patterns and best practices
  • May be overwhelming for developers looking specifically for iOS architecture resources
  • Requires more filtering to find relevant projects for learning purposes

Code Comparison

While a direct code comparison isn't relevant for these curated lists, we can compare their README structures:

open-source-mac-os-apps:

## Applications

### Audio
* [AudioKit](https://github.com/audiokit/AudioKit) - Powerful audio synthesis...
...

### Video
* [Catch](https://github.com/mipstian/catch/) - Catch for macOS...

awesome-ios-architecture:

## Content

- [Architectural Patterns](#architectural-patterns)
- [Dependency Injection](#dependency-injection)
...

## Architectural Patterns

### MVVM
- [Vue.js](https://vuejs.org/) - Vue.js is a progressive...

The open-source-mac-os-apps repository organizes content by application type, while awesome-ios-architecture focuses on architectural concepts and patterns.

5,148

Examples projects using SwiftUI released by WWDC2019. Include Layout, UI, Animations, Gestures, Draw and Data.

Pros of SwiftUI

  • Focuses specifically on SwiftUI, providing a comprehensive resource for this modern UI framework
  • Includes ready-to-use examples and components, making it easier for developers to implement SwiftUI features
  • Regularly updated with new SwiftUI features and best practices

Cons of SwiftUI

  • Limited to SwiftUI, not covering other iOS architecture patterns or frameworks
  • May not be as comprehensive for developers looking for a broader overview of iOS architecture options
  • Less emphasis on architectural patterns and more on UI implementation

Code Comparison

SwiftUI example:

struct ContentView: View {
    var body: some View {
        Text("Hello, SwiftUI!")
    }
}

awesome-ios-architecture example (MVVM pattern):

class ViewModel {
    var model: Model
    var output: ((String) -> Void)?
    
    func updateView() {
        output?(model.data)
    }
}

The SwiftUI repository provides more concrete, UI-focused examples, while awesome-ios-architecture offers a broader range of architectural patterns and concepts. SwiftUI is ideal for developers specifically working with SwiftUI, while awesome-ios-architecture serves as a comprehensive resource for various iOS architecture approaches.

Good ideas for iOS development, by Futurice developers.

Pros of ios-good-practices

  • More comprehensive coverage of iOS development best practices
  • Includes practical tips for project management and workflow
  • Offers guidance on tools and continuous integration

Cons of ios-good-practices

  • Less focused on architectural patterns
  • Not as frequently updated as awesome-ios-architecture
  • Lacks detailed explanations of advanced concepts

Code Comparison

awesome-ios-architecture example (MVVM):

class ViewModel {
    var model: Model
    var output: ((String) -> Void)?
    
    func updateModel() {
        model.update()
        output?(model.description)
    }
}

ios-good-practices example (Dependency Injection):

protocol APIClient {
    func fetchData(completion: (Result<Data, Error>) -> Void)
}

class ViewController {
    let apiClient: APIClient
    
    init(apiClient: APIClient) {
        self.apiClient = apiClient
    }
}

Both repositories provide valuable resources for iOS developers, but they serve different purposes. awesome-ios-architecture focuses on various architectural patterns and their implementations, while ios-good-practices offers a broader range of development guidelines and best practices. Developers may find it beneficial to use both repositories in conjunction for a well-rounded approach to iOS development.

Convert Figma logo designs to code with AI

Visual Copilot

Introducing Visual Copilot: A new AI model to turn Figma designs to high quality code using your components.

Try Visual Copilot

README

awesome iOS architecture Awesome

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.
  • 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 :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:
  • 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

Cross platform

Remote Config / Feature Flagging

Licence

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