RIBs architecture's data flow
- So the data flow of RIBs architecture is basically from top to bottom. So does that mean all the data stream that child RIBs needs, need to be prepared/ready ahead of time at the Root RIBs?
If yes, which means all the APIs/networking calls/database operations are all happened within the Root RIBs? - If the Root RIBs stores the whole app state, are all those streams being initialized at the boot time? Can I lazy initialize part of them as some of them are not required if that particular child RIBs is not being attached to the tree yet?
- Referring to this article from Uber engineering blog
https://eng.uber.com/deep-scope-hierarchies/
New Rider App: Deep Scope Hierarchy
Given that two and three level scope hierarchies have major problems, we did not limit ourselves to a set number of scope layers when we were developing the new app. Instead, we created new intermediary scope layers wherever useful. For example, the PreRequest scope is used to store objects that need to be shared by all PreRequest screen states such as Home, ProductSelection, and RefinementSteps.
Are there any criteria, what kind of object/state or when should we use the intermediary scope layers
approach, but not creating a DI stream at Root and feed the child Ribs as a dependency?
What should we concern? Does that require API call? Not business logic related states, like UI logics?
The use case that comes up in my mind is maybe the registration section of an app.
We may need to create an intermediary scope layer
to store the information that user filled in (up until the user hit the register/finish button). If the user clicks the register button, that the user object will be sent back to the parent RIBs via listener? Correct?

add a comment |
- So the data flow of RIBs architecture is basically from top to bottom. So does that mean all the data stream that child RIBs needs, need to be prepared/ready ahead of time at the Root RIBs?
If yes, which means all the APIs/networking calls/database operations are all happened within the Root RIBs? - If the Root RIBs stores the whole app state, are all those streams being initialized at the boot time? Can I lazy initialize part of them as some of them are not required if that particular child RIBs is not being attached to the tree yet?
- Referring to this article from Uber engineering blog
https://eng.uber.com/deep-scope-hierarchies/
New Rider App: Deep Scope Hierarchy
Given that two and three level scope hierarchies have major problems, we did not limit ourselves to a set number of scope layers when we were developing the new app. Instead, we created new intermediary scope layers wherever useful. For example, the PreRequest scope is used to store objects that need to be shared by all PreRequest screen states such as Home, ProductSelection, and RefinementSteps.
Are there any criteria, what kind of object/state or when should we use the intermediary scope layers
approach, but not creating a DI stream at Root and feed the child Ribs as a dependency?
What should we concern? Does that require API call? Not business logic related states, like UI logics?
The use case that comes up in my mind is maybe the registration section of an app.
We may need to create an intermediary scope layer
to store the information that user filled in (up until the user hit the register/finish button). If the user clicks the register button, that the user object will be sent back to the parent RIBs via listener? Correct?

add a comment |
- So the data flow of RIBs architecture is basically from top to bottom. So does that mean all the data stream that child RIBs needs, need to be prepared/ready ahead of time at the Root RIBs?
If yes, which means all the APIs/networking calls/database operations are all happened within the Root RIBs? - If the Root RIBs stores the whole app state, are all those streams being initialized at the boot time? Can I lazy initialize part of them as some of them are not required if that particular child RIBs is not being attached to the tree yet?
- Referring to this article from Uber engineering blog
https://eng.uber.com/deep-scope-hierarchies/
New Rider App: Deep Scope Hierarchy
Given that two and three level scope hierarchies have major problems, we did not limit ourselves to a set number of scope layers when we were developing the new app. Instead, we created new intermediary scope layers wherever useful. For example, the PreRequest scope is used to store objects that need to be shared by all PreRequest screen states such as Home, ProductSelection, and RefinementSteps.
Are there any criteria, what kind of object/state or when should we use the intermediary scope layers
approach, but not creating a DI stream at Root and feed the child Ribs as a dependency?
What should we concern? Does that require API call? Not business logic related states, like UI logics?
The use case that comes up in my mind is maybe the registration section of an app.
We may need to create an intermediary scope layer
to store the information that user filled in (up until the user hit the register/finish button). If the user clicks the register button, that the user object will be sent back to the parent RIBs via listener? Correct?

- So the data flow of RIBs architecture is basically from top to bottom. So does that mean all the data stream that child RIBs needs, need to be prepared/ready ahead of time at the Root RIBs?
If yes, which means all the APIs/networking calls/database operations are all happened within the Root RIBs? - If the Root RIBs stores the whole app state, are all those streams being initialized at the boot time? Can I lazy initialize part of them as some of them are not required if that particular child RIBs is not being attached to the tree yet?
- Referring to this article from Uber engineering blog
https://eng.uber.com/deep-scope-hierarchies/
New Rider App: Deep Scope Hierarchy
Given that two and three level scope hierarchies have major problems, we did not limit ourselves to a set number of scope layers when we were developing the new app. Instead, we created new intermediary scope layers wherever useful. For example, the PreRequest scope is used to store objects that need to be shared by all PreRequest screen states such as Home, ProductSelection, and RefinementSteps.
Are there any criteria, what kind of object/state or when should we use the intermediary scope layers
approach, but not creating a DI stream at Root and feed the child Ribs as a dependency?
What should we concern? Does that require API call? Not business logic related states, like UI logics?
The use case that comes up in my mind is maybe the registration section of an app.
We may need to create an intermediary scope layer
to store the information that user filled in (up until the user hit the register/finish button). If the user clicks the register button, that the user object will be sent back to the parent RIBs via listener? Correct?


asked Nov 21 '18 at 0:18
Pang Ho MingPang Ho Ming
968826
968826
add a comment |
add a comment |
0
active
oldest
votes
Your Answer
StackExchange.ifUsing("editor", function () {
StackExchange.using("externalEditor", function () {
StackExchange.using("snippets", function () {
StackExchange.snippets.init();
});
});
}, "code-snippets");
StackExchange.ready(function() {
var channelOptions = {
tags: "".split(" "),
id: "1"
};
initTagRenderer("".split(" "), "".split(" "), channelOptions);
StackExchange.using("externalEditor", function() {
// Have to fire editor after snippets, if snippets enabled
if (StackExchange.settings.snippets.snippetsEnabled) {
StackExchange.using("snippets", function() {
createEditor();
});
}
else {
createEditor();
}
});
function createEditor() {
StackExchange.prepareEditor({
heartbeatType: 'answer',
autoActivateHeartbeat: false,
convertImagesToLinks: true,
noModals: true,
showLowRepImageUploadWarning: true,
reputationToPostImages: 10,
bindNavPrevention: true,
postfix: "",
imageUploader: {
brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
allowUrls: true
},
onDemand: true,
discardSelector: ".discard-answer"
,immediatelyShowMarkdownHelp:true
});
}
});
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53403558%2fribs-architectures-data-flow%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
0
active
oldest
votes
0
active
oldest
votes
active
oldest
votes
active
oldest
votes
Thanks for contributing an answer to Stack Overflow!
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
To learn more, see our tips on writing great answers.
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53403558%2fribs-architectures-data-flow%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown