ArchitectureComponents

Architecture Components

A port of Android Architecture Components to iOS.

Motivation

When building an app for both iOS and Android, there are advantages to defining
a single app architecture and applying it on both platforms. Primarily, it
saves time by solving the data modeling and component interactions once for
both platforms. Additionally, maintenance is somewhat eased because changes
will be similar on both platforms.

Apple’s developer guides and the UIKit framework provide little concrete
guidance for architecting an app to be reliable and maintainable. This has lead
the iOS developer community to create many iOS app architectures and
have lively debates about their usefulness.

Android Architecture Components provide Android developers with a
general-purpose, clean, repeatable pattern for creating data-driven,
reactive-style apps. The components provide a clean separation of concerns and
abstract away many of the intricacies that arise when handling data updates
properly for every phase of the UI lifecycle. Finally, Google providesconcrete recommendations for common real-world app development
problems.

Since iOS lacks a first-party application architecture and Android now has
a very nice first-party application architecture, it seems reasonable to adopt
Android’s architecture on both platforms in instances when app delivery would
benefit from sharing an app architecture.

Roadmap

Next steps:

Improve automated test coverage

Provide full documentation comments

Improve README with getting started information

Create an example app

Setup continuous integration

Add logging

Implement Room Persistence Library

Implement Paging Library

Support tvOS, watchOS, macOS

Completed:

Implement Lifecycle components

Implement LiveData components

Enable Carthage and CocoaPods installation

Code of Conduct

Participation in this open source project is governed by the SPR Open Source
Code of Conduct, which outlines expectations for participation in SPR-managed
open source communities and steps for reporting unacceptable behavior. We are
committed to providing a welcoming and inspiring community for all. People
violating this code of conduct may be banned from the community.