uber / uber/RIBs-iOS

SceneDelegate and AppDelegate split

Open
#30 0 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

Dominant language
Swift
Stars
193
Forks
23
PR merge metrics
No merged PRs in 30d

Description

Original issue: https://github.com/uber/RIBs/issues/339

OS 13 introduces new SceneDelegate that suppose to take care of all UI related instantiations and takes that responsibility away from AppDelegate. Now app delegate suppose to setup dependencies and data for the app. Are there any plans to split things up the same way in RIBs architecture?

As it currently stands RootBuilder.build() creates an instance of LaunchRouting and then we give that instance a window to work with and draw content/VCs on. It seems like if this setup is preserved that means RootBuilder.build() should be called and LaunchRouting should be created for each scene instance. That makes sense because we would want to have a brand new RIBs tree for each window. But would it make sense to move shared dependency between those trees to AppDelegate? AppComponent that implements Component, RootDependency could potentially be created in AppDelegate and passed to ever new root for every new scene/window created.
Although I'm not sure how actual mechanics of this are going to work because as far as I can tell there is no way to pass things cleanly from app delegate instance to scene delegate instances.

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

The issue centers on RootBuilder.build(), LaunchRouting, AppComponent, AppDelegate, and SceneDelegate, with the original discussion linked for context. Start by reading those entry points and tracing how dependencies and windows are passed today. Done would require an agreed design for separate scene trees and shared app dependencies, but the issue does not define that design or name tests.

Written by the indexing model from the issue text.

Assessment

Tech stack
swift
Domain
mobile
Issue type
Feature
Difficulty
5/5
Estimated time
Over a week
Activity status
Stale
Clarity
Needs clarification
Newbie friendliness
25/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.