Building Large-Scale Apps with SwiftUI: A Guide to Modular Architecture

Mohammad Azam
35 min readMar 1
Photo by Norbert Braun on Unsplash

Update (03/02/2023): Added View Specific Logic section.

Software architecture is always a topic for hot debate, specially when there are so many different choices. For the last 8–12 months, I have been experimenting with MV pattern to build client/server apps and wrote about it in my original article SwiftUI Architecture — A Complete Guide to MV Pattern Approach. In this article, I will discuss how MV pattern can be applied to build large scale client/server applications.

Architecture and patterns depends on the type of application you are building. No single architecture will work in all scenarios. Choose the best architecture suitable for your application needs.

The outline of this article is shown below:

  • Modular Architecture
  • Understanding the MV Pattern
  • Multiple Aggregate Models
  • View Specific Logic
  • Screens vs Views
  • Validation
  • Navigation
  • Grouping View Events
  • Testing

Modular Architecture

Modular architecture in software refers to the design and organization of software systems into small, self contained modules or components. These modules can be tested and maintained independently of one another. Each module serves a specific purpose and solve a specific business requirement.

Modular architecture also provides advantages when working on large projects consisting of multiple teams. Each team can work on a particular module, without interfering with each other.

If you are working on a module that will be consumed or used by other teams then make sure that you are communicating with them and not creating the module in complete isolation. A lot of problems in software development exists solely because of lack of communication between teams.

Modularity can be achieved in several different ways. You can expose each module as a package (SPM), which can be imported into different applications. Modularity can also be achieved by structuring your app based on specific grouping or folder…

Mohammad Azam

iOS Developer, speaker and educator. Top Udemy and LinkedIn instructor. Lead instructor at DigitalCrafts. https://www.udemy.com/user/mohammad-azam-2/

Recommended from Medium

Lists

See more recommendations