OSKit-KMP 5.2.0-rc1 indexed Opinionated architecture library enables concurrent, reactive state management, platform-independent routing, and file handling. Includes typed result type for railway-oriented programming and helpful extensions.
Bring this to kpkg
This library is indexed from the KMP ecosystem and already resolves through kpkg.dev's Maven Central proxy. Maintainers can verify the namespace and publish future versions to kpkg for free hosting, real download stats, and signed-provenance pages.
Publishing coming soonMetadata
Owner outsidesource
Stars 0
Used by 1 libs
Health —
License MIT License
Latest 5.2.0-rc1
Repository github.com/outsidesource/OSKit-KMP
Updated 2026-06-20 Readme Changelog OSKit KMP
An opinionated architecture/library for Kotlin Multiplatform development with an implementation of the VISCE architecture
Abstract
OSKit is primarily a tool for us here at Outside Source. That being said, feel free to use this library in your own code.
We strive to adhere to semantic versioning.
Contributions
Contributions are appreciated and welcome, but we are a small team and make no guarantees that your changes will be
implemented.
Documentation
https://outsidesource.github.io/OSKit-KMP/
Features
Interactor An easy-to-use, concurrent, and reactive state management system
Router Platform independent routing with backstack management, deep link, and transition support
KmpFs Platform independent library for sandboxed and non-sandboxed file system interactions
Supported Platforms
Currently supported platforms include:
Android
JVM (MacOS/Windows/Linux)
iOS
WASM (browser primarily)
Installation
implementation ("com.outsidesource:oskit-kmp:{latestVersion}")
Example App
https://github.com/outsidesource/OSKit-Example-App-KMP
Changelog
5.1.0 - 2025-08-15
Added
Kotlin 2.2.0 support
RcCoroutine
KmpFs no longer depends on lwjgl for file pickers on the JVM
ByteArray.find
Collections.mapValuesNotNull
EnumSerializer for kotlinx.serialization allowing for deserialization into a default enum value
measureTimePrinted
ValueCache
Outcome.guard allows for syntactic sugar for unwrapOrReturn. val result = outcome guard { return it }
Breaking Changes
Renamed NumberFormatter to KmpNumberFormatter
5.0.0 - 2025-02-07
Added
Breaking Changes
4.6.0 - 2024-05-21
Added
InMemoryKmpStorageNode
withTimeoutOrOutcome
Deferrable code helpers
Deferrer/SuspendDeferrer
withDefer/withSuspendDefer
coroutineScopeWithDefer/coroutineScopeWithSuspendDefer
flowWithDefer/flowWithSuspendDefer
channelFlowWithDefer/channelFlowWithSuspendDefer
Updated
Default parameters in Coordinator
Fixed
KmpFileRef being broken after reboot on iOS
Large iOS KmpFileRef sink() writes
Issue when resolving KmpFileRef on desktop
Issue with resolving KmpFileRef directory on Linux
Issue with file pickers on Linux with Plasma
4.5.0 - 2024-03-23
Updated
Outcome.runOnOk and Outcome.runOnError now return the outcome specified
4.4.2 - 2024-03-18
Fixed
SemVer.fromString() only taking the first digit
Updated
Made dependencies and computed optional in createInteractor()
4.4.0 - 2024-03-06
Added
KmpStorage
Double.toFixed()
List extensions
Breaking Changes
renamed Outcome.unwrapOrElse to Outcome.unwrapOrReturn
4.3.0 - 2024-02-16
Added
KmpCapabilities Platform independent permissions and service enablement for common capabilities (Bluetooth, Location)
Outcome A result type with helpers for better railway oriented programming
Some general helpers and extensions we have found helpful over time
String.parseFloatOrNull()
Kotlin 2.1.0 support Support for the WASM target
All existing and new OsKit feature support all platforms unless explicitly said otherwise in documentation
Added some Promise helpers
Added some JsInterop helpers
KmpCapabilities for testing for permissions and enablement of some common platform services (Bluetooth, Location)
KmpFs Supports internal (sandboxed) and external (non-sandboxed) filesystem interactions
IKmpIoSource and IKmpIoSink interfaces and implementations for cross-platform asynchronous file interactions.
KmpScreenWakeLock Allows preventing a user's screen from sleeping
KmpDispatchers for a common IO dispatcher
Deferred<t>.awaitOutcome()
Queue for creating a queue of sequentially executing coroutines
BytesExt Allows converting common data types to and from byte arrays
LocalDateTime.kmpFormat() For a cross-platform date-time formatter
KmpUrl A multiplatform URL parser
Any?.printed() and printAll helpers
Updated Platform to add WebBrowser Router has been reworked and added a new transactional API for more flexibility and to clean up a lot of rarely used API surface
Added IWebRoute for handling path changes in the browser
Added deep link support
Adopted Upper Camel Case for all acronym prefixes on class and function names (i.e. KMP changed to Kmp)
Reworked/renamed KMPStorage to KmpKvStore
Coordinator has been reworked to fit the new Transaction API implemented in Router.
KmpDeepLink was deemed unnecessary and was removed
KMPFileHandler was renamed/repurposed into KmpFs
KMPFileRef was renamed/repurposed into KmpFsRef
LazyComputed was changed to use the invoke operator instead of value() function
Outcome.unwrapOrReturn() was changed to pass a parameter instead of this for the error
Reworked the Router API
KMPStorage was renamed/reworked into KmpKvStore
FileUtil was renamed to FsUtilRelated libraries Surfaced from shared tags and platforms — no rankings paid for.
arch-toolkit ★ 27
matheus-corregiari Toolkit offers reusable components like a state machine, recycler adapter, event observer, delegate properties, and foldable state handling to streamline software development. Shared: utility, state-management, language-extensions KeepLink ★ 30
motorro Manages deep-link definitions, parsing, and creation with a single source of truth for actions and data. Features type-safe link building, parsing, routing, and auto-generating consistent documentation to streamline development and marketing integration. Shared: utility, router, navigation compose_bloc ★ 18
beyondeye Enhances state management and navigation in Compose applications by integrating a port of the Flutter Bloc library with a modified Voyager navigation library, offering improved cross-platform capabilities. Shared: state-management, router, navigation kaluga ★ 397
splendo Offers modular tools for cross-platform mobile app development, including features like MVVM architecture, location services, permissions management, Bluetooth communication, and more, using coroutines and `Flow` for efficient design. Shared: device, architecture SimpleMVI ★ 224
arttttt Lightweight MVI library enables structured state management with unidirectional data flow, type safety, coroutine support, and clear separation between UI and domain logic. Shared: state-management, architecture macao-sdk ★ 130
pablichjenkov Offers a microframework with customizable navigation components and an application architecture module. Supports app startup, plug-in integration, and manual or Koin-based dependency injection. Shared: state-management, architecture