Skip to content

chore(deps): bump orbit from 11.0.0 to 12.0.0 - #209

Open
dependabot[bot] wants to merge 1 commit into
mainfrom
dependabot/gradle/orbit-12.0.0
Open

chore(deps): bump orbit from 11.0.0 to 12.0.0#209
dependabot[bot] wants to merge 1 commit into
mainfrom
dependabot/gradle/orbit-12.0.0

Conversation

@dependabot

@dependabot dependabot Bot commented on behalf of github Aug 1, 2026

Copy link
Copy Markdown
Contributor

Bumps orbit from 11.0.0 to 12.0.0.
Updates org.orbit-mvi:orbit-compose from 11.0.0 to 12.0.0

Release notes

Sourced from org.orbit-mvi:orbit-compose's releases.

12.0.0

One container host to rule them all

The headline change in this release is the unification of Orbit's container host API. Until now, external state support lived in a parallel universe of types: ContainerHost sat alongside ContainerHostWithExternalState, Container alongside ContainerWithExternalState, and each pair dragged its own set of factory functions and extensions across the core, compose, viewmodel and test modules. Choosing to separate your internal and external state meant switching to an entirely different interface hierarchy, and the duplication made every feature twice as expensive to build and document.

That split is now gone. A single OrbitContainerHost<INTERNAL_STATE, EXTERNAL_STATE, SIDE_EFFECT> interface (backed by a matching OrbitContainer) covers both cases. A host that doesn't need the separation simply uses the same type for both state parameters — OrbitContainerHost<MyState, MyState, MySideEffect> — while a host that wants to keep a rich internal model and expose a lean UI-facing state declares two different types and supplies a transform to the new orbitContainer(initialState, transformState) factory. The container() factory functions on CoroutineScope and ViewModel have been renamed to orbitContainer() to match.

We decided to add the Orbit prefix to main library types, as the historical ones were too generic and this planned unification gave us a good opportunity to fix this.

Migration should be painless: the old names survive as deprecated typealiases with ReplaceWith guidance, so existing ContainerHost<S, SE> code compiles unchanged and the IDE can rewrite it for you. The withExternalState extension is deprecated in favour of the unified factory, and in the test module test() is deprecated in favour of testWithInternalState() and testWithExternalState(), whose assertion methods now say which state they mean (awaitInternalState(), expectExternalState(), and so on). The documentation has been rewritten around the unified API.

The unified path also picked up two correctness fixes along the way. Subscribing to a container's external state flows now triggers onCreate, which previously only fired for internal state and side effect subscriptions — despite the external flows being exactly what UI consumers collect. And testWithExternalState now seeds the initial external state correctly for hosts still built with the deprecated withExternalState, where it previously resolved the wrong transform and failed with a ClassCastException.

Side effect delivery modes

Side effects have historically assumed a single observer. This release introduces a SideEffectMode setting with three delivery strategies: FAN_OUT, the default, preserves the existing channel-based behaviour where each effect goes to exactly one consumer; FAN_OUT_STRICT does the same but throws if a second consumer ever attaches, turning a silent misconfiguration into a loud one; and the experimental BROADCAST delivers every effect to all active consumers and has a cache that holds effects while no one is listening with the same lossless backpressure as fan-out.

Configuring containers globally

Orbit.configureDefaults { } lets you set default container settings once at app startup instead of repeating them at every orbitContainer() call, with per-container settings still taking precedence. Relatedly, the dispatcher settings (eventLoopDispatcher, intentLaunchingDispatcher) are now factories of type () -> CoroutineDispatcher, invoked once per container — so an expression like Dispatchers.Default.limitedParallelism(1) in the global defaults gives each container its own dispatcher view rather than one shared app-wide. If you set these directly, wrap the value in a lambda.

Operators

runOn and subIntent have graduated to stable API and no longer require opting in to @OrbitExperimental. Joining them is the new experimental awaitRunOn<T>, designed for sealed-class states: where runOn returns immediately if the current state doesn't match, awaitRunOn suspends until the state becomes the requested subtype and then runs its block — handy for logic that should kick in once a Loading state resolves to Ready. Thank you to @​rubixhacker for the proposal and implementation.

Documentation

The docs website gained a version selector generated from release tags, so the site root always serves the docs for the latest release while unreleased documentation is published under /next/.

Detailed Changes

New Contributors

Full Changelog: orbit-mvi/orbit-mvi@11.0.0...12.0.0

... (truncated)

Commits
  • a2f377e Fix ContainerLifecycleTest compilation after dispatcher factory change (#342)
  • 705f011 Add docs version selector generated from release tags (#340)
  • a2d4c8d Fix testWithExternalState initial state seeding for deprecated withExternalSt...
  • 2f9543a Document awaitRunOn and stabilise runOn/subIntent (#338)
  • 8316593 Make dispatcher settings per-container factories (#337)
  • 4099137 Fix broadcast side effect re-firing on re-subscription (#335)
  • 22e5fe6 Add awaitRunOn<T> for sealed class states (#325)
  • e781219 Add global default container settings (#336)
  • 3416a6d Trigger onCreate when subscribing to external state flows (#334)
  • 3617f92 Add a strict fan out mode that errors on multiple consumers (#330)
  • Additional commits viewable in compare view

Updates org.orbit-mvi:orbit-core from 11.0.0 to 12.0.0

Release notes

Sourced from org.orbit-mvi:orbit-core's releases.

12.0.0

One container host to rule them all

The headline change in this release is the unification of Orbit's container host API. Until now, external state support lived in a parallel universe of types: ContainerHost sat alongside ContainerHostWithExternalState, Container alongside ContainerWithExternalState, and each pair dragged its own set of factory functions and extensions across the core, compose, viewmodel and test modules. Choosing to separate your internal and external state meant switching to an entirely different interface hierarchy, and the duplication made every feature twice as expensive to build and document.

That split is now gone. A single OrbitContainerHost<INTERNAL_STATE, EXTERNAL_STATE, SIDE_EFFECT> interface (backed by a matching OrbitContainer) covers both cases. A host that doesn't need the separation simply uses the same type for both state parameters — OrbitContainerHost<MyState, MyState, MySideEffect> — while a host that wants to keep a rich internal model and expose a lean UI-facing state declares two different types and supplies a transform to the new orbitContainer(initialState, transformState) factory. The container() factory functions on CoroutineScope and ViewModel have been renamed to orbitContainer() to match.

We decided to add the Orbit prefix to main library types, as the historical ones were too generic and this planned unification gave us a good opportunity to fix this.

Migration should be painless: the old names survive as deprecated typealiases with ReplaceWith guidance, so existing ContainerHost<S, SE> code compiles unchanged and the IDE can rewrite it for you. The withExternalState extension is deprecated in favour of the unified factory, and in the test module test() is deprecated in favour of testWithInternalState() and testWithExternalState(), whose assertion methods now say which state they mean (awaitInternalState(), expectExternalState(), and so on). The documentation has been rewritten around the unified API.

The unified path also picked up two correctness fixes along the way. Subscribing to a container's external state flows now triggers onCreate, which previously only fired for internal state and side effect subscriptions — despite the external flows being exactly what UI consumers collect. And testWithExternalState now seeds the initial external state correctly for hosts still built with the deprecated withExternalState, where it previously resolved the wrong transform and failed with a ClassCastException.

Side effect delivery modes

Side effects have historically assumed a single observer. This release introduces a SideEffectMode setting with three delivery strategies: FAN_OUT, the default, preserves the existing channel-based behaviour where each effect goes to exactly one consumer; FAN_OUT_STRICT does the same but throws if a second consumer ever attaches, turning a silent misconfiguration into a loud one; and the experimental BROADCAST delivers every effect to all active consumers and has a cache that holds effects while no one is listening with the same lossless backpressure as fan-out.

Configuring containers globally

Orbit.configureDefaults { } lets you set default container settings once at app startup instead of repeating them at every orbitContainer() call, with per-container settings still taking precedence. Relatedly, the dispatcher settings (eventLoopDispatcher, intentLaunchingDispatcher) are now factories of type () -> CoroutineDispatcher, invoked once per container — so an expression like Dispatchers.Default.limitedParallelism(1) in the global defaults gives each container its own dispatcher view rather than one shared app-wide. If you set these directly, wrap the value in a lambda.

Operators

runOn and subIntent have graduated to stable API and no longer require opting in to @OrbitExperimental. Joining them is the new experimental awaitRunOn<T>, designed for sealed-class states: where runOn returns immediately if the current state doesn't match, awaitRunOn suspends until the state becomes the requested subtype and then runs its block — handy for logic that should kick in once a Loading state resolves to Ready. Thank you to @​rubixhacker for the proposal and implementation.

Documentation

The docs website gained a version selector generated from release tags, so the site root always serves the docs for the latest release while unreleased documentation is published under /next/.

Detailed Changes

New Contributors

Full Changelog: orbit-mvi/orbit-mvi@11.0.0...12.0.0

... (truncated)

Commits
  • a2f377e Fix ContainerLifecycleTest compilation after dispatcher factory change (#342)
  • 705f011 Add docs version selector generated from release tags (#340)
  • a2d4c8d Fix testWithExternalState initial state seeding for deprecated withExternalSt...
  • 2f9543a Document awaitRunOn and stabilise runOn/subIntent (#338)
  • 8316593 Make dispatcher settings per-container factories (#337)
  • 4099137 Fix broadcast side effect re-firing on re-subscription (#335)
  • 22e5fe6 Add awaitRunOn<T> for sealed class states (#325)
  • e781219 Add global default container settings (#336)
  • 3416a6d Trigger onCreate when subscribing to external state flows (#334)
  • 3617f92 Add a strict fan out mode that errors on multiple consumers (#330)
  • Additional commits viewable in compare view

Updates org.orbit-mvi:orbit-viewmodel from 11.0.0 to 12.0.0

Release notes

Sourced from org.orbit-mvi:orbit-viewmodel's releases.

12.0.0

One container host to rule them all

The headline change in this release is the unification of Orbit's container host API. Until now, external state support lived in a parallel universe of types: ContainerHost sat alongside ContainerHostWithExternalState, Container alongside ContainerWithExternalState, and each pair dragged its own set of factory functions and extensions across the core, compose, viewmodel and test modules. Choosing to separate your internal and external state meant switching to an entirely different interface hierarchy, and the duplication made every feature twice as expensive to build and document.

That split is now gone. A single OrbitContainerHost<INTERNAL_STATE, EXTERNAL_STATE, SIDE_EFFECT> interface (backed by a matching OrbitContainer) covers both cases. A host that doesn't need the separation simply uses the same type for both state parameters — OrbitContainerHost<MyState, MyState, MySideEffect> — while a host that wants to keep a rich internal model and expose a lean UI-facing state declares two different types and supplies a transform to the new orbitContainer(initialState, transformState) factory. The container() factory functions on CoroutineScope and ViewModel have been renamed to orbitContainer() to match.

We decided to add the Orbit prefix to main library types, as the historical ones were too generic and this planned unification gave us a good opportunity to fix this.

Migration should be painless: the old names survive as deprecated typealiases with ReplaceWith guidance, so existing ContainerHost<S, SE> code compiles unchanged and the IDE can rewrite it for you. The withExternalState extension is deprecated in favour of the unified factory, and in the test module test() is deprecated in favour of testWithInternalState() and testWithExternalState(), whose assertion methods now say which state they mean (awaitInternalState(), expectExternalState(), and so on). The documentation has been rewritten around the unified API.

The unified path also picked up two correctness fixes along the way. Subscribing to a container's external state flows now triggers onCreate, which previously only fired for internal state and side effect subscriptions — despite the external flows being exactly what UI consumers collect. And testWithExternalState now seeds the initial external state correctly for hosts still built with the deprecated withExternalState, where it previously resolved the wrong transform and failed with a ClassCastException.

Side effect delivery modes

Side effects have historically assumed a single observer. This release introduces a SideEffectMode setting with three delivery strategies: FAN_OUT, the default, preserves the existing channel-based behaviour where each effect goes to exactly one consumer; FAN_OUT_STRICT does the same but throws if a second consumer ever attaches, turning a silent misconfiguration into a loud one; and the experimental BROADCAST delivers every effect to all active consumers and has a cache that holds effects while no one is listening with the same lossless backpressure as fan-out.

Configuring containers globally

Orbit.configureDefaults { } lets you set default container settings once at app startup instead of repeating them at every orbitContainer() call, with per-container settings still taking precedence. Relatedly, the dispatcher settings (eventLoopDispatcher, intentLaunchingDispatcher) are now factories of type () -> CoroutineDispatcher, invoked once per container — so an expression like Dispatchers.Default.limitedParallelism(1) in the global defaults gives each container its own dispatcher view rather than one shared app-wide. If you set these directly, wrap the value in a lambda.

Operators

runOn and subIntent have graduated to stable API and no longer require opting in to @OrbitExperimental. Joining them is the new experimental awaitRunOn<T>, designed for sealed-class states: where runOn returns immediately if the current state doesn't match, awaitRunOn suspends until the state becomes the requested subtype and then runs its block — handy for logic that should kick in once a Loading state resolves to Ready. Thank you to @​rubixhacker for the proposal and implementation.

Documentation

The docs website gained a version selector generated from release tags, so the site root always serves the docs for the latest release while unreleased documentation is published under /next/.

Detailed Changes

New Contributors

Full Changelog: orbit-mvi/orbit-mvi@11.0.0...12.0.0

... (truncated)

Commits
  • a2f377e Fix ContainerLifecycleTest compilation after dispatcher factory change (#342)
  • 705f011 Add docs version selector generated from release tags (#340)
  • a2d4c8d Fix testWithExternalState initial state seeding for deprecated withExternalSt...
  • 2f9543a Document awaitRunOn and stabilise runOn/subIntent (#338)
  • 8316593 Make dispatcher settings per-container factories (#337)
  • 4099137 Fix broadcast side effect re-firing on re-subscription (#335)
  • 22e5fe6 Add awaitRunOn<T> for sealed class states (#325)
  • e781219 Add global default container settings (#336)
  • 3416a6d Trigger onCreate when subscribing to external state flows (#334)
  • 3617f92 Add a strict fan out mode that errors on multiple consumers (#330)
  • Additional commits viewable in compare view

Updates org.orbit-mvi:orbit-test from 11.0.0 to 12.0.0

Release notes

Sourced from org.orbit-mvi:orbit-test's releases.

12.0.0

One container host to rule them all

The headline change in this release is the unification of Orbit's container host API. Until now, external state support lived in a parallel universe of types: ContainerHost sat alongside ContainerHostWithExternalState, Container alongside ContainerWithExternalState, and each pair dragged its own set of factory functions and extensions across the core, compose, viewmodel and test modules. Choosing to separate your internal and external state meant switching to an entirely different interface hierarchy, and the duplication made every feature twice as expensive to build and document.

That split is now gone. A single OrbitContainerHost<INTERNAL_STATE, EXTERNAL_STATE, SIDE_EFFECT> interface (backed by a matching OrbitContainer) covers both cases. A host that doesn't need the separation simply uses the same type for both state parameters — OrbitContainerHost<MyState, MyState, MySideEffect> — while a host that wants to keep a rich internal model and expose a lean UI-facing state declares two different types and supplies a transform to the new orbitContainer(initialState, transformState) factory. The container() factory functions on CoroutineScope and ViewModel have been renamed to orbitContainer() to match.

We decided to add the Orbit prefix to main library types, as the historical ones were too generic and this planned unification gave us a good opportunity to fix this.

Migration should be painless: the old names survive as deprecated typealiases with ReplaceWith guidance, so existing ContainerHost<S, SE> code compiles unchanged and the IDE can rewrite it for you. The withExternalState extension is deprecated in favour of the unified factory, and in the test module test() is deprecated in favour of testWithInternalState() and testWithExternalState(), whose assertion methods now say which state they mean (awaitInternalState(), expectExternalState(), and so on). The documentation has been rewritten around the unified API.

The unified path also picked up two correctness fixes along the way. Subscribing to a container's external state flows now triggers onCreate, which previously only fired for internal state and side effect subscriptions — despite the external flows being exactly what UI consumers collect. And testWithExternalState now seeds the initial external state correctly for hosts still built with the deprecated withExternalState, where it previously resolved the wrong transform and failed with a ClassCastException.

Side effect delivery modes

Side effects have historically assumed a single observer. This release introduces a SideEffectMode setting with three delivery strategies: FAN_OUT, the default, preserves the existing channel-based behaviour where each effect goes to exactly one consumer; FAN_OUT_STRICT does the same but throws if a second consumer ever attaches, turning a silent misconfiguration into a loud one; and the experimental BROADCAST delivers every effect to all active consumers and has a cache that holds effects while no one is listening with the same lossless backpressure as fan-out.

Configuring containers globally

Orbit.configureDefaults { } lets you set default container settings once at app startup instead of repeating them at every orbitContainer() call, with per-container settings still taking precedence. Relatedly, the dispatcher settings (eventLoopDispatcher, intentLaunchingDispatcher) are now factories of type () -> CoroutineDispatcher, invoked once per container — so an expression like Dispatchers.Default.limitedParallelism(1) in the global defaults gives each container its own dispatcher view rather than one shared app-wide. If you set these directly, wrap the value in a lambda.

Operators

runOn and subIntent have graduated to stable API and no longer require opting in to @OrbitExperimental. Joining them is the new experimental awaitRunOn<T>, designed for sealed-class states: where runOn returns immediately if the current state doesn't match, awaitRunOn suspends until the state becomes the requested subtype and then runs its block — handy for logic that should kick in once a Loading state resolves to Ready. Thank you to @​rubixhacker for the proposal and implementation.

Documentation

The docs website gained a version selector generated from release tags, so the site root always serves the docs for the latest release while unreleased documentation is published under /next/.

Detailed Changes

New Contributors

Full Changelog: orbit-mvi/orbit-mvi@11.0.0...12.0.0

... (truncated)

Commits
  • a2f377e Fix ContainerLifecycleTest compilation after dispatcher factory change (#342)
  • 705f011 Add docs version selector generated from release tags (#340)
  • a2d4c8d Fix testWithExternalState initial state seeding for deprecated withExternalSt...
  • 2f9543a Document awaitRunOn and stabilise runOn/subIntent (#338)
  • 8316593 Make dispatcher settings per-container factories (#337)
  • 4099137 Fix broadcast side effect re-firing on re-subscription (#335)
  • 22e5fe6 Add awaitRunOn<T> for sealed class states (#325)
  • e781219 Add global default container settings (#336)
  • 3416a6d Trigger onCreate when subscribing to external state flows (#334)
  • 3617f92 Add a strict fan out mode that errors on multiple consumers (#330)
  • Additional commits viewable in compare view

Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


Dependabot commands and options

You can trigger Dependabot actions by commenting on this PR:

  • @dependabot rebase will rebase this PR
  • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
  • @dependabot show <dependency name> ignore conditions will show all of the ignore conditions of the specified dependency
  • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
  • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
  • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)

Bumps `orbit` from 11.0.0 to 12.0.0.

Updates `org.orbit-mvi:orbit-compose` from 11.0.0 to 12.0.0
- [Release notes](https://github.com/orbit-mvi/orbit-mvi/releases)
- [Changelog](https://github.com/orbit-mvi/orbit-mvi/blob/main/CHANGELOG.md)
- [Commits](orbit-mvi/orbit-mvi@11.0.0...12.0.0)

Updates `org.orbit-mvi:orbit-core` from 11.0.0 to 12.0.0
- [Release notes](https://github.com/orbit-mvi/orbit-mvi/releases)
- [Changelog](https://github.com/orbit-mvi/orbit-mvi/blob/main/CHANGELOG.md)
- [Commits](orbit-mvi/orbit-mvi@11.0.0...12.0.0)

Updates `org.orbit-mvi:orbit-viewmodel` from 11.0.0 to 12.0.0
- [Release notes](https://github.com/orbit-mvi/orbit-mvi/releases)
- [Changelog](https://github.com/orbit-mvi/orbit-mvi/blob/main/CHANGELOG.md)
- [Commits](orbit-mvi/orbit-mvi@11.0.0...12.0.0)

Updates `org.orbit-mvi:orbit-test` from 11.0.0 to 12.0.0
- [Release notes](https://github.com/orbit-mvi/orbit-mvi/releases)
- [Changelog](https://github.com/orbit-mvi/orbit-mvi/blob/main/CHANGELOG.md)
- [Commits](orbit-mvi/orbit-mvi@11.0.0...12.0.0)

---
updated-dependencies:
- dependency-name: org.orbit-mvi:orbit-compose
  dependency-version: 12.0.0
  dependency-type: direct:production
  update-type: version-update:semver-major
- dependency-name: org.orbit-mvi:orbit-core
  dependency-version: 12.0.0
  dependency-type: direct:production
  update-type: version-update:semver-major
- dependency-name: org.orbit-mvi:orbit-viewmodel
  dependency-version: 12.0.0
  dependency-type: direct:production
  update-type: version-update:semver-major
- dependency-name: org.orbit-mvi:orbit-test
  dependency-version: 12.0.0
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
@dependabot dependabot Bot added dependencies Pull requests that update a dependency file java Pull requests that update java code labels Aug 1, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

dependencies Pull requests that update a dependency file java Pull requests that update java code

Projects

None yet

Development

Successfully merging this pull request may close these issues.

0 participants