Update orbitMVI to v12#43
Open
renovate[bot] wants to merge 1 commit into
Open
Conversation
renovate
Bot
force-pushed
the
renovate/major-orbitmvi
branch
from
May 18, 2023 12:50
5acaf20 to
f11a482
Compare
renovate
Bot
force-pushed
the
renovate/major-orbitmvi
branch
from
September 19, 2023 19:35
f11a482 to
9b61a22
Compare
renovate
Bot
force-pushed
the
renovate/major-orbitmvi
branch
from
February 29, 2024 19:19
9b61a22 to
1eb9f5c
Compare
renovate
Bot
force-pushed
the
renovate/major-orbitmvi
branch
from
March 22, 2024 14:57
1eb9f5c to
27832f8
Compare
renovate
Bot
force-pushed
the
renovate/major-orbitmvi
branch
from
March 26, 2024 12:23
27832f8 to
4f46c87
Compare
renovate
Bot
force-pushed
the
renovate/major-orbitmvi
branch
from
April 22, 2024 17:47
4f46c87 to
64cc6c2
Compare
renovate
Bot
force-pushed
the
renovate/major-orbitmvi
branch
2 times, most recently
from
May 23, 2024 09:45
6d2ed1a to
c25ec55
Compare
renovate
Bot
force-pushed
the
renovate/major-orbitmvi
branch
from
July 7, 2024 20:54
c25ec55 to
25db208
Compare
renovate
Bot
force-pushed
the
renovate/major-orbitmvi
branch
from
May 23, 2025 11:54
25db208 to
97691aa
Compare
renovate
Bot
force-pushed
the
renovate/major-orbitmvi
branch
from
November 8, 2025 12:32
97691aa to
18a0951
Compare
renovate
Bot
force-pushed
the
renovate/major-orbitmvi
branch
from
July 13, 2026 20:51
18a0951 to
da34ac1
Compare
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
This PR contains the following updates:
4.6.1→12.0.04.6.1→12.0.0Release Notes
orbit-mvi/orbit-mvi (org.orbit-mvi:orbit-viewmodel)
v12.0.0Compare Source
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:
ContainerHostsat alongsideContainerHostWithExternalState,ContaineralongsideContainerWithExternalState, 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 matchingOrbitContainer) 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 neworbitContainer(initialState, transformState)factory. Thecontainer()factory functions onCoroutineScopeandViewModelhave been renamed toorbitContainer()to match.We decided to add the
Orbitprefix 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
ReplaceWithguidance, so existingContainerHost<S, SE>code compiles unchanged and the IDE can rewrite it for you. ThewithExternalStateextension is deprecated in favour of the unified factory, and in the test moduletest()is deprecated in favour oftestWithInternalState()andtestWithExternalState(), 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. AndtestWithExternalStatenow seeds the initial external state correctly for hosts still built with the deprecatedwithExternalState, where it previously resolved the wrong transform and failed with aClassCastException.Side effect delivery modes
Side effects have historically assumed a single observer. This release introduces a
SideEffectModesetting with three delivery strategies:FAN_OUT, the default, preserves the existing channel-based behaviour where each effect goes to exactly one consumer;FAN_OUT_STRICTdoes the same but throws if a second consumer ever attaches, turning a silent misconfiguration into a loud one; and the experimentalBROADCASTdelivers 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 everyorbitContainer()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 likeDispatchers.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
runOnandsubIntenthave graduated to stable API and no longer require opting in to@OrbitExperimental. Joining them is the new experimentalawaitRunOn<T>, designed for sealed-class states: whererunOnreturns immediately if the current state doesn't match,awaitRunOnsuspends until the state becomes the requested subtype and then runs its block — handy for logic that should kick in once aLoadingstate resolves toReady. 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-3-SNAPSHOT
v11.0.0: Orbit internal/external state supportCompare Source
We added a new
ContainerHostWithExternalStateto support mapping internal ContainerHost states into something more easily consumed by UIs :)What's Changed
New Contributors
Full Changelog: orbit-mvi/orbit-mvi@10.0.0...11.0.0-SNAPSHOT
v10.0.0Compare Source
New features
expectStateOnto better support sealed class state testingAPI changes
orbit-core
blockingIntentis now an extension function.orbit-compose
ContainerHostExtensionsKtorbit-test
expectInitialState().TestSettings.autoCheckInitialStatecan be used to override this behaviour.expectStateOnadded.orbit-viewmodel
What's Changed
Full Changelog: orbit-mvi/orbit-mvi@9.0.0...10.0.0
v9.0.0Compare Source
What's Changed
Full Changelog: orbit-mvi/orbit-mvi@8.0.0...9.0.0
Breaking changes
Syntax extension functions have been pulled up to reduce internal complexity and open up new functionality, such as reified types on
runOn.Migration guide
ContainerHost.intentContainerHostinterfaceContainerHost.blockingIntentContainerHostinterfaceContainerHost.subIntentContainerHostinterfaceSimpleSyntax.postSideEffectSyntaxclassSimpleSyntax.reduceSyntaxclassSimpleSyntax.repeatOnSubscriptionSyntaxclassSimpleSyntax.runOnSyntaxclassSimpleSyntax.runOnrunOn(ExampleState.Ready::class)runOn<ExampleState.Ready>v8.0.0Compare Source
What's Changed
Breaking changes
The old testing framework has been deprecated for a long while. The time has come to prune it from the library.
In case your project is still using old style tests, use https://github.com/orbit-mvi/orbit-mvi/tree/7.2.0 until your tests are migrated to the new test style.
Alternatively, you can copy the testing classes from https://github.com/orbit-mvi/orbit-mvi/tree/7.2.0 into your project to unlock the upgrade to
8.0.0and beyond. Please note no support will be provided for the old testing framework.Full Changelog: orbit-mvi/orbit-mvi@7.2.0...8.0.0
v7.2.0Compare Source
What's Changed
Full Changelog: orbit-mvi/orbit-mvi@7.1.0...7.2.0
v7.1.1Compare Source
What's Changed
New Contributors
Full Changelog: orbit-mvi/orbit-mvi@7.1.0...7.1.1
v7.1.0Compare Source
What's Changed
Full Changelog: orbit-mvi/orbit-mvi@7.0.1...7.1.0
v7.0.1Compare Source
What's Changed
Full Changelog: orbit-mvi/orbit-mvi@7.0.0...7.0.1
v7.0.0Compare Source
What's Changed
New Contributors
Full Changelog: orbit-mvi/orbit-mvi@6.1.1...7.0.0
v6.1.1Compare Source
What's Changed
Full Changelog: orbit-mvi/orbit-mvi@6.1.0...6.1.1
v6.1.0Compare Source
This is a maintenance release. We've made some (non-breaking) changes to the new tests API to clean it up a little.
What's Changed
New Contributors
Full Changelog: orbit-mvi/orbit-mvi@6.0.0...6.1.0-SNAPSHOT
v6.0.0: New test framework stableCompare Source
Description
New testing framework
The new testing framework has been proved in a real project, tested, cleaned up and released as Stable!
Check out the documentation here:
https://orbit-mvi.org/Test/new
The old testing framework is now deprecated and will be removed in 7.0.0, as we want to encourage the transition.
OnCreate changes
The onCreate lambda is now an intent to improve consistency and enable improved testing functionality.
Deprecated functions removed
Some variants of test livetest and container have been removed.
Functional changes
onCreatelambda incontainerfactory functions is now an implicitintent. This creates more consistency in the APIs and supports new test functionality.intentnow returns a coroutineJobrunOnCreateandinvokeIntentnow return a coroutineJobto allow us to join or cancel the job for that intent in tests.test,liveTestandcontainerfunctionsWhat's Changed
New Contributors
Full Changelog: orbit-mvi/orbit-mvi@5.0.0...6.0.0
v5.0.0: Dependency updatesCompare Source
Notable changes:
Below are potentially breaking changes depending on your project setup:
1.8.211.7.1What's Changed
Full Changelog: orbit-mvi/orbit-mvi@4.6.1...5.0.0
Configuration
📅 Schedule: (UTC)
🚦 Automerge: Disabled by config. Please merge this manually once you are satisfied.
♻ Rebasing: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.
🔕 Ignore: Close this PR and you won't be reminded about these updates again.
This PR was generated by Mend Renovate. View the repository job log.