# uber/ribs

**Attribution required: if you use, quote, or summarise this content, you must credit and link back to [awesome-repositories.com](https://awesome-repositories.com/repository/uber-ribs).**

7,923 stars · 911 forks · Kotlin · Apache-2.0

## Links

- GitHub: https://github.com/uber/RIBs
- Homepage: https://eng.uber.com/tag/ribs/
- awesome-repositories: https://awesome-repositories.com/repository/uber-ribs.md

## Topics

`android` `architectural-patterns` `architecture` `mobile` `mobile-app` `mobile-development` `mvc` `mvp` `mvvm` `viper`

## Description

RIBs is a mobile architecture framework that structures applications around isolated, lifecycle-managed units of business logic called RIBs. Each RIB separates routing, business logic, and construction into distinct classes through the Router-Interactor-Builder pattern, with hierarchical dependency injection scoping dependencies per node and static analysis enforcing architectural rules at build time.

The framework enforces automatic disposal of Rx subscriptions scoped to interactor lifecycles, blocking compilation when subscriptions lack proper disposal to prevent memory leaks. It supports viewless business logic nodes that manage routing and state independently from the view hierarchy, allowing deep logic scopes with shallow view trees. A workflow engine models multi-step navigation sequences as chains of asynchronous steps that traverse the component tree, handling deep link parsing, validation, and conditional waiting.

RIBs provides IDE-integrated scaffolding tools that generate boilerplate components and test stubs from templates for both iOS and Android, with cross-platform architecture synchronization keeping implementations aligned between platforms. The framework includes build-time static analysis that enforces null safety and structural constraints, along with generated helpers and mocks for unit testing interactor listener calls and router method invocations without device dependencies.

## Tags

### Software Engineering & Architecture

- [Router-Interactor-Builder Implementations](https://awesome-repositories.com/f/software-engineering-architecture/creational-design-patterns/builder-patterns/router-interactor-builder-implementations.md) — Defines the core Router-Interactor-Builder pattern that structures every component in the framework.
- [Architecture Rule Enforcement](https://awesome-repositories.com/f/software-engineering-architecture/architecture-rule-enforcement.md) — Runs build-time static analysis to enforce null safety, subscription disposal, and structural constraints across the component tree.
- [Lifecycle-Scoped Execution](https://awesome-repositories.com/f/software-engineering-architecture/business-logic-components/lifecycle-scoped-execution.md) — Scopes interactor subscriptions and state changes to active lifecycles, preventing stale updates and memory leaks. ([source](https://github.com/uber/RIBs/wiki))
- [Reactive Stream Lifecycles](https://awesome-repositories.com/f/software-engineering-architecture/control-and-data-flow-decoupling/reactive-stream-lifecycles.md) — Manages reactive stream subscriptions scoped to component lifecycles with automatic disposal.
- [iOS-Android Component Alignment](https://awesome-repositories.com/f/software-engineering-architecture/cross-platform-architectures/ios-android-component-alignment.md) — Synchronizes component structure and patterns across iOS and Android to maintain implementation alignment between platforms. ([source](https://cdn.jsdelivr.net/gh/uber/ribs@main/README.md))
- [Dependency Injection Frameworks](https://awesome-repositories.com/f/software-engineering-architecture/dependency-injection-frameworks.md) — Implements a hierarchical dependency injection system scoping dependencies per business logic node.
- [Component-Based Dependency Management](https://awesome-repositories.com/f/software-engineering-architecture/dependency-injection-providers/component-based-dependency-management.md) — Ships a component-based dependency injection system that scopes dependencies per business logic node. ([source](https://github.com/uber/RIBs/wiki/iOS-Specific-Questions))
- [Mobile Injection Frameworks](https://awesome-repositories.com/f/software-engineering-architecture/dependency-injection/mobile-injection-frameworks.md) — Provides a hierarchical dependency injection system optimized for mobile application lifecycles.
- [Business Logic Scopes](https://awesome-repositories.com/f/software-engineering-architecture/execution-control/namespace-isolation/module-isolation/architecture-isolation/logic-isolation/isolate-based-logic-scoping/business-logic-scopes.md) — Defines business scopes purely by application logic states, separate from view-based UI scopes. ([source](https://github.com/uber/RIBs/wiki/iOS-Specific-Questions))
- [Hierarchical Component Wiring](https://awesome-repositories.com/f/software-engineering-architecture/integration-extensibility/dependency-injection/automated-dependency-wiring/hierarchical-component-wiring.md) — Provides a hierarchical dependency injection system that wires parent builder components to child RIB dependencies. ([source](https://github.com/uber/RIBs/wiki/Android-Tutorial-1))
- [Protocol-Oriented Injection](https://awesome-repositories.com/f/software-engineering-architecture/integration-extensibility/dependency-injection/protocol-oriented-injection.md) — Passes builder and view controller dependencies through constructor injection using protocols for loose coupling and testability. ([source](https://github.com/uber/RIBs/wiki/iOS-Tutorial-2))
- [Dynamic Child Attachment](https://awesome-repositories.com/f/software-engineering-architecture/job-continuation-chaining/parent-child-dependencies/dynamic-child-attachment.md) — Dynamically attaches child RIBs to parent routers, giving interactors control over child appearance. ([source](https://github.com/uber/RIBs/wiki/Android-Tutorial-1))
- [Parent-Child Listener Communication](https://awesome-repositories.com/f/software-engineering-architecture/job-continuation-chaining/parent-child-dependencies/parent-child-listener-communication.md) — Uses listener interfaces for child-to-parent event communication, keeping child RIBs unaware of parent implementation details. ([source](https://github.com/uber/RIBs/wiki/Android-Tutorial-2))
- [Compile-Time Disposal Enforcement](https://awesome-repositories.com/f/software-engineering-architecture/memory-usage-analysis/memory-leak-prevention/subscription-cleanup/compile-time-disposal-enforcement.md) — Blocks compilation when Rx subscriptions lack AutoDispose scoping, preventing memory leaks at build time. ([source](https://github.com/uber/RIBs/wiki/Android-Tooling))
- [Cross-Platform Mobile Architectures](https://awesome-repositories.com/f/software-engineering-architecture/mobile-architecture-patterns/cross-platform-mobile-architectures.md) — Provides a shared architectural pattern across iOS and Android for aligned business logic and routing.
- [Batch Disposals](https://awesome-repositories.com/f/software-engineering-architecture/observer-patterns/disposable-observers/subscription-lifecycles/batch-disposals.md) — Disposes Rx subscriptions automatically when a child component detaches from its parent, preventing memory leaks. ([source](https://github.com/uber/RIBs/wiki/Android-Tutorial-3))
- [Lifecycle-Scoped Stream Subscriptions](https://awesome-repositories.com/f/software-engineering-architecture/reactive-state-subscriptions/lifecycle-scoped-stream-subscriptions.md) — Subscribes to observable data streams in interactors and automatically disposes subscriptions when deactivated. ([source](https://github.com/uber/RIBs/wiki/iOS-Tutorial-3))
- [Listener-Based Reactive Updates](https://awesome-repositories.com/f/software-engineering-architecture/reactive-update-scheduling/post-update-callbacks/listener-based-reactive-updates.md) — Updates parent state by passing data through listener callbacks and updating shared reactive streams. ([source](https://github.com/uber/RIBs/wiki/iOS-Tutorial-3))
- [Build-Time Null Check Verification](https://awesome-repositories.com/f/software-engineering-architecture/runtime-value-validation/null-value-validation/null-aware-code-generation/build-time-null-check-verification.md) — Verifies null safety at build time by checking that nullable values are handled before use, preventing null-pointer exceptions. ([source](https://github.com/uber/RIBs/wiki/Android-Tooling))
- [Scoped Stateful Object Sharing](https://awesome-repositories.com/f/software-engineering-architecture/shared-state-management/scoped-stateful-object-sharing.md) — Provides scoped singleton state sharing across a RIB and its child RIBs. ([source](https://github.com/uber/RIBs/wiki/iOS-Tutorial-3))
- [View-Independent Logic Trees](https://awesome-repositories.com/f/software-engineering-architecture/software-architecture/architectural-patterns/modular-decoupled-design/structural-design-paradigms/decoupled-logic-encapsulation/logic-decoupling/view-independent-logic-trees.md) — Decouples business logic from the view hierarchy, allowing deep logic scopes with a shallow view tree. ([source](https://cdn.jsdelivr.net/gh/uber/ribs@main/README.md))
- [Subscription Lifecycle Management](https://awesome-repositories.com/f/software-engineering-architecture/subscription-lifecycle-management.md) — Enforces automatic disposal of Rx subscriptions scoped to interactor lifecycles, blocking compilation on missing disposal.
- [Presenter-Mediated Event Routing](https://awesome-repositories.com/f/software-engineering-architecture/view-model-architectures/model-view-event-architectures/view-to-response-converters/presenter-mediated-event-routing.md) — Routes view events like button clicks to the interactor through a presenter interface for business logic processing. ([source](https://github.com/uber/RIBs/wiki/Android-Tutorial-1))
- [Ownership in Component Trees](https://awesome-repositories.com/f/software-engineering-architecture/object-reference-passing/ownership-in-component-trees.md) — Assigns strong and weak references between routers, interactors, and views to prevent retain cycles in the RIB tree. ([source](https://github.com/uber/RIBs/wiki/iOS-Specific-Questions))
- [RIB](https://awesome-repositories.com/f/software-engineering-architecture/scaffolding-generators/rib.md) — Generates Builder, Interactor, Router, and ViewController classes from Xcode templates. ([source](https://github.com/uber/RIBs/wiki/iOS-Tooling))
- [Shared State Management](https://awesome-repositories.com/f/software-engineering-architecture/shared-state-management.md) — Elevates shared state into an AppScope or designs RIB hierarchies independent of views for cross-service state access. ([source](https://github.com/uber/RIBs/wiki/Android-Specific-Questions))

### Web Development

- [Mobile Architecture Frameworks](https://awesome-repositories.com/f/web-development/component-based-architectures/component-based-architectures/mobile-component-architectures/mobile-architecture-frameworks.md) — Provides a complete mobile architecture framework with isolated business logic units and lifecycle-scoped state management.
- [Component-Based State Management](https://awesome-repositories.com/f/web-development/frontend-development-tools/state-data-management/component-lifecycle-utilities/component-state-management/component-based-state-management.md) — Manages application state through isolated, lifecycle-scoped business logic units in a tree hierarchy.
- [Lifecycle-Managed Child Routing](https://awesome-repositories.com/f/web-development/parent-to-child-data-transfer/lifecycle-managed-child-routing.md) — Implements a routing pattern where parent RIBs transfer control to child RIBs with full lifecycle management. ([source](https://github.com/uber/RIBs/wiki/iOS-Tutorial-1))

### Artificial Intelligence & ML

- [Navigation Workflows](https://awesome-repositories.com/f/artificial-intelligence-ml/agentic-systems-frameworks/agent-orchestration-multi-agent/autonomous-agents/autonomous-web-agents/multi-step-workflows/navigation-workflows.md) — Provides a workflow engine that models multi-step navigation sequences as chains of asynchronous steps traversing the RIB tree.
- [Sequential Step Orchestrators](https://awesome-repositories.com/f/artificial-intelligence-ml/step-based-schedulers/step-execution-engines/execution-step-controllers/sequential-step-orchestrators.md) — Links a series of actions so each step receives the result of the previous one and passes control to the next actionable item. ([source](https://github.com/uber/RIBs/wiki/Android-Tutorial-4))

### Part of an Awesome List

- [Viewless Components](https://awesome-repositories.com/f/awesome-lists/devtools/view-components/viewless-components.md) — Creates viewless RIB scopes that manage routing and business logic without allocating a view in the hierarchy. ([source](https://github.com/uber/RIBs/wiki/Android-Tutorial-2))
- [Viewless RIB Generators](https://awesome-repositories.com/f/awesome-lists/devtools/view-components/viewless-components/viewless-rib-generators.md) — Generates viewless RIBs with cleanup methods for manual view hierarchy management. ([source](https://github.com/uber/RIBs/wiki/iOS-Tooling))

### Data & Databases

- [Nested State Management](https://awesome-repositories.com/f/data-databases/application-state-management/nested-state-management.md) — Manages complex state transitions by attaching and detaching child RIBs in a tree hierarchy, scoping decisions per unit. ([source](https://github.com/uber/RIBs/wiki))
- [Immutable Reactive Stream Exposure](https://awesome-repositories.com/f/data-databases/read-only-resource-exposure/immutable-reactive-stream-exposure.md) — Exposes read-only reactive streams to child RIBs, allowing observation without mutation. ([source](https://github.com/uber/RIBs/wiki/iOS-Tutorial-3))

### Development Tools & Productivity

- [Static Analysis Rules](https://awesome-repositories.com/f/development-tools-productivity/code-quality-analysis/static-analysis-engines/static-analysis-tools/static-analysis-rules.md) — Enforces null safety and architectural rules through build-time static analysis across the component hierarchy.
- [Navigation Workflow Engines](https://awesome-repositories.com/f/development-tools-productivity/multi-step-workflow-runners/navigation-workflow-engines.md) — Ships a workflow engine that models multi-step navigation sequences and deep link handling across the RIB tree.
- [Navigation Workflow Runners](https://awesome-repositories.com/f/development-tools-productivity/multi-step-workflow-runners/navigation-workflow-runners.md) — Defines sequences of asynchronous steps that traverse the component tree to transition the app to a target state. ([source](https://github.com/uber/RIBs/wiki/iOS-Tutorial-4))
- [Conditional Navigation Waiting](https://awesome-repositories.com/f/development-tools-productivity/automation-wait-conditions/conditional-navigation-waiting.md) — Provides conditional waiting in workflow steps, blocking until asynchronous conditions are met before continuing navigation. ([source](https://github.com/uber/RIBs/wiki/iOS-Tutorial-4))
- [RIB Template Generators](https://awesome-repositories.com/f/development-tools-productivity/code-boilerplate-templates/rib-template-generators.md) — Creates standard RIB file sets from IDE templates to reduce manual boilerplate. ([source](https://github.com/uber/RIBs/wiki/Android-Tutorial-1))
- [Code Generation Tools](https://awesome-repositories.com/f/development-tools-productivity/code-generation-tools.md) — Provides IDE-integrated code generation for RIB components and test stubs from templates.
- [Test Scaffolding Generators](https://awesome-repositories.com/f/development-tools-productivity/code-generators/boilerplate-generators/test-scaffolding-generators.md) — Generates unit test scaffolding for Router and Interactor classes from Xcode templates. ([source](https://github.com/uber/RIBs/wiki/iOS-Tooling))
- [RIB Component Generators](https://awesome-repositories.com/f/development-tools-productivity/development-environment-management/environment-provisioning-configuration/developer-environment-tooling/workspace-generators/xcode-workspace-generation/xcode-project-generation-tools/rib-component-generators.md) — Provides Xcode templates for generating Router-Interactor-Builder units with optional view controllers. ([source](https://github.com/uber/RIBs/wiki/iOS-Tutorial-1))
- [IDE Code Generation Plugins](https://awesome-repositories.com/f/development-tools-productivity/ide-code-generation-plugins.md) — Provides IDE plugins that generate boilerplate RIB components and test stubs from templates. ([source](https://cdn.jsdelivr.net/gh/uber/ribs@main/README.md))
- [RIB Component Scaffolders](https://awesome-repositories.com/f/development-tools-productivity/ide-extensions/ide-project-generators/rib-component-scaffolders.md) — Generates complete RIB component sets including Builder, Interactor, Router, and View classes from IDE commands. ([source](https://github.com/uber/RIBs/wiki/Android-Tooling))
- [RIB Scaffolding Plugins](https://awesome-repositories.com/f/development-tools-productivity/project-scaffolding-config-code-generation/project-scaffolding-configuration/project-scaffolding/plugin-based-scaffolding/rib-scaffolding-plugins.md) — Ships IDE plugins that scaffold new RIBs and test files for both iOS and Android. ([source](https://github.com/uber/RIBs/wiki))
- [URL Scheme Handlers](https://awesome-repositories.com/f/development-tools-productivity/url-scheme-handlers.md) — Registers custom URL schemes and forwards incoming URLs to the root interactor for processing. ([source](https://github.com/uber/RIBs/wiki/iOS-Tutorial-4))

### DevOps & Infrastructure

- [Protocol-Based Dependency Declarations](https://awesome-repositories.com/f/devops-infrastructure/dependency-management/environment-scoping-controls/dependency-scoping/protocol-based-dependency-declarations.md) — Ships a protocol-based dependency declaration system where each RIB defines its required dependencies in a component class. ([source](https://github.com/uber/RIBs/wiki/iOS-Tutorial-3))

### Networking & Communication

- [Listener Interfaces](https://awesome-repositories.com/f/networking-communication/event-listeners/listener-interfaces.md) — Ships listener interfaces for child-to-parent event communication, enabling loose coupling between RIBs.
- [Deep Link Workflows](https://awesome-repositories.com/f/networking-communication/deep-linking/deep-link-workflows.md) — Implements multi-step asynchronous workflows for parsing, validating, and routing deep links.

### Testing & Quality Assurance

- [Business Logic Isolation](https://awesome-repositories.com/f/testing-quality-assurance/general-testing-utilities/test-isolation/logic-isolation-utilities/business-logic-isolation.md) — Encapsulates business logic, routing, and view logic into separate classes with distinct lifecycles for testability. ([source](https://github.com/uber/RIBs/wiki))
- [Interactor](https://awesome-repositories.com/f/testing-quality-assurance/software-testing/testing-frameworks/unit/unit-testing/interactor.md) — Tests interactor behavior using generated helpers and mocks to verify listener calls without device dependencies. ([source](https://github.com/uber/RIBs/wiki/Android-Tutorial-2))
- [Router Behavior](https://awesome-repositories.com/f/testing-quality-assurance/software-testing/testing-frameworks/unit/unit-testing/router-behavior.md) — Verifies routing logic by mocking builder and router dependencies and counting method invocations on those mocks. ([source](https://github.com/uber/RIBs/wiki/iOS-Tutorial-2))

### User Interface & Experience

- [Child RIB Routing](https://awesome-repositories.com/f/user-interface-experience/child-view-positioning/child-rib-routing.md) — Attaches and detaches child RIBs from parent routers to keep the RIB and view hierarchies consistent. ([source](https://github.com/uber/RIBs/wiki/iOS-Tutorial-2))
- [Dynamic Child Attachment and Detachment](https://awesome-repositories.com/f/user-interface-experience/child-view-positioning/dynamic-child-attachment-and-detachment.md) — Dynamically attaches and detaches child RIBs with their views to transition between application states. ([source](https://github.com/uber/RIBs/wiki/Android-Tutorial-2))
- [Builder Method Data Injection](https://awesome-repositories.com/f/user-interface-experience/component-architectures/component-communication-patterns/component-data-passing/builder-method-data-injection.md) — Passes dynamic data into RIB builder methods so child RIBs access them as scoped dependencies. ([source](https://github.com/uber/RIBs/wiki/Android-Tutorial-3))
- [Component Communication](https://awesome-repositories.com/f/user-interface-experience/component-utilities/ui-frameworks/component-apis/communication-data-flow/component-communication.md) — Passes data downward through reactive streams or build parameters and upward through listener interfaces between components. ([source](https://github.com/uber/RIBs/wiki))
- [State-Driven UI Rendering](https://awesome-repositories.com/f/user-interface-experience/event-driven-state-managers/event-driven-state-synchronizers/ui-state-recomposition/state-driven-ui-rendering.md) — Drives view rendering based on application state, such as showing a login screen when the user is logged out. ([source](https://github.com/uber/RIBs/wiki/iOS-Specific-Questions))
- [Parent-to-Child Data Flows](https://awesome-repositories.com/f/user-interface-experience/parent-to-child-data-flows.md) — Passes runtime data from parent RIBs to children through the dependency injection tree during build time. ([source](https://github.com/uber/RIBs/wiki/iOS-Tutorial-3))
- [Hierarchical Dependency Scopes](https://awesome-repositories.com/f/user-interface-experience/state-injection-patterns/scoped-dependency-injection/hierarchical-dependency-scopes.md) — Provides hierarchical dependency injection that scopes object lifetimes per business logic node in the component tree.
- [Per-Node Dependency Scopes](https://awesome-repositories.com/f/user-interface-experience/state-injection-patterns/scoped-dependency-injection/per-node-dependency-scopes.md) — Defines explicit dependencies per business logic node and injects them from parent nodes through hierarchical DI. ([source](https://cdn.jsdelivr.net/gh/uber/ribs@main/README.md))
- [Listener-Based Action Processing](https://awesome-repositories.com/f/user-interface-experience/user-input-processing/listener-based-action-processing.md) — Processes user actions by routing view events to interactors through listener protocols for business logic handling. ([source](https://github.com/uber/RIBs/wiki/iOS-Tutorial-1))
- [Viewless](https://awesome-repositories.com/f/user-interface-experience/visual-node-editors/node-execution-logic/business-logic-nodes/viewless.md) — Supports viewless business logic nodes that manage routing and state independently from the view hierarchy.
- [Viewless Component Cleanup](https://awesome-repositories.com/f/user-interface-experience/composition-hierarchies/view-hierarchy-composition/view-hierarchies/viewless-component-cleanup.md) — Automatically removes child views from the parent hierarchy when a viewless RIB is detached. ([source](https://github.com/uber/RIBs/wiki/iOS-Tutorial-2))
- [Independent Navigation Stacks](https://awesome-repositories.com/f/user-interface-experience/navigation-routing/independent-navigation-stacks.md) — Lets each RIB define its own back stack behavior with utility classes for common navigation strategies. ([source](https://github.com/uber/RIBs/wiki/Android-Specific-Questions))
- [Dependency-Injected Data Display](https://awesome-repositories.com/f/user-interface-experience/parent-to-child-data-flows/dependency-injected-data-display.md) — Displays data by injecting named string dependencies into child interactors and passing them to presenters. ([source](https://github.com/uber/RIBs/wiki/Android-Tutorial-3))

### Business & Productivity Software

- [Deep Link Data Validators](https://awesome-repositories.com/f/business-productivity-software/navigation-interfaces/deep-link-navigators/deep-link-data-validators.md) — Validates parsed deep link models and aborts workflows if required fields are missing. ([source](https://github.com/uber/RIBs/wiki/Android-Tutorial-4))
- [Deep Link Workflow Definitions](https://awesome-repositories.com/f/business-productivity-software/navigation-interfaces/deep-link-navigators/deep-link-workflow-definitions.md) — Defines multi-step navigation sequences in a single place that compile to chains of actions for deep link handling. ([source](https://github.com/uber/RIBs/wiki/Android-Tutorial-4))

### Game Development

- [Reactive Score Streams](https://awesome-repositories.com/f/game-development/score-tracking-systems/reactive-score-streams.md) — Tracks scores using mutable reactive streams scoped to parent RIBs with read-only observable interfaces for children. ([source](https://github.com/uber/RIBs/wiki/Android-Tutorial-3))

### Mobile Development

- [Workflow-Based Activity Launchers](https://awesome-repositories.com/f/mobile-development/activity-result-managers/workflow-based-activity-launchers.md) — Starts secondary activities from any RIB and delivers results back via workflows, handling process death and state restoration. ([source](https://github.com/uber/RIBs/wiki/Android-Specific-Questions))
- [Deep Link Routing](https://awesome-repositories.com/f/mobile-development/deep-link-routing.md) — Parses deep link parameters and navigates directly to the corresponding screen, skipping intermediate states. ([source](https://github.com/uber/RIBs/wiki/iOS-Tutorial-4))
- [Deep Link Intent Parsers](https://awesome-repositories.com/f/mobile-development/intent-based-navigation/deep-link-intent-parsers.md) — Extracts parameters from incoming intents into validated model objects that drive navigation workflows. ([source](https://github.com/uber/RIBs/wiki/Android-Tutorial-4))
