-
-
Notifications
You must be signed in to change notification settings - Fork 0
Changelog
Kunal Das edited this page Sep 9, 2026
·
1 revision
Migration instructions are in the migration guide. Dependency coordinates are in the installation guide.
-
StartupTask.invoke()wraps ordinary initializer failures inStartupException, retaining the original throwable ascause. ExistingStartupExceptioninstances pass through unchanged. Kotlin callers that handle task errors directly should inspectcause; Swift can now catch ordinary task failures without process termination. - Runner documentation distinguishes dependency order from thread access: declaring an edge does not make engine lookups from worker threads safe.
- Reorganize the README around a complete quick start, with focused Android, Swift, runtime, migration, sample, and contributor guides.
- Record duplicate task invocations even when a runner catches the rejection, including concurrent duplicates while the original invocation is still running.
- Detect cycles entered through factories or
dependencies()callbacks before recursive planning exhausts the stack. Preserve valid nested lookups, cycle paths across planning and creation, and cleanup for retry after failure. - Refuse reentry into an enclosing initialization from a nested wave without attributing a false cycle to unrelated sibling tasks.
- Preserve original failure causes and component attribution when wrapping task failures for transport through a runner.
- Validate the Android requirements documented in README.md and CLAUDE.md against the library and
AndroidX AARs, and declare those documents as inputs to
checkAndroidFloors.
- Change
WaveRunner.runfromList<() -> Unit>toList<StartupTask>, exposing each task's component and a public constructor for runner tests. - Enforce skipped-task and swallowed-failure checks, reject repeated invocation, and retain successful products from failed waves.
- Reject engine lookups made by wave tasks on worker threads instead of waiting indefinitely. Allow installing-thread reads of earlier-wave results and reject current-wave lookups.
- Add
initializeComponentOrNullfor runtime keys and nullable products; give typed null-product reads a namedStartupException. - Add the Kotlin
CoroutineInitializerblocking bridge for Android, JVM, and native targets. - Export fallible API calls to Swift with
@Throws(StartupException::class); Swift callers now needtry.
- Require factories to construct exactly the class named by their registration key.
- Add
WaveRunnerandStartup.install(context, manifest, runner)for non-Android wave execution.
- Remove the eight APIs deprecated in 1.1.0: initializer state/order/manifest accessors, Android metadata and drift helpers, and the Objective-C class-object key overload. See the replacement table.
- Deprecate the eight APIs removed in 2.0.0, with warnings and migration alternatives.
- Introduce the multiplatform startup API, with AndroidX aliases on Android, a portable initializer manifest, and deterministic dependency planning for non-Android targets.
Source: CHANGELOG.md at v3.0.1.
Documentation for startup v3.0.1. Source repository.