Releases: kotlitecture/template-multiplatform-compose
Releases · kotlitecture/template-multiplatform-compose
v0.6.0
Changes
- Added new feature 'SQLite Room'. Integration with Jetpack Room for Kotlin Multiplatform. It targets Mobile and Desktop only and can be configured via Kotli as an alternative to SQLDelight integration.
- Removed some unused version catalog dependencies to include into the generated structure only what is required.
v0.5.0
Changes
In keeping with the best traditions of the KMP team, everything has been changed:
- Updated packages structure in app module to follow standard layout with domain/data/presentation structure.
app
├── domain
├── data
│ ├── source
│ └── repository
├── presentation
│ ├── theme
│ ├── navigation
│ ├── loader
│ ├── app
│ └── feature...
├── di
│ ├── data
│ └── presentation
- Renamed some classes, specific for DI configuration (previously it was ProvidesSomething, now it is SomethingModule.
- Moved ViewModelFactory of app layer to DI package as it is mostly based on injections from DI.
- Updated documentation to be aligned with the changes 💀.
v0.4.0
Changes
- Added new configurable feature In-Memory Cache API (ported from Android template to become Multiplatform). The API is thread-safe and can be utilized as an L1 Cache when managing HTTP requests (but not limited), offering an efficient means to present data without delays, but with the ability to update based on expiration and other conditions.
v0.3.0
Changes
- Added new target - Ktor Server (Backend, #4). The target is optional (so can be included/excluded in wizard as well). When it is included, the extra module will be added to serve common domain logic between client and server (
shared/domain
). - Added new feature
SQLDelight Datasource
. The integration is preconfigured for all client platforms and includes showcases. It also supports paging usingCash App Paging Library
(paging logic and appropriate showcases will be included if Paging Library is added via online tool). - Renamed client module
composeApp
toapp
. The template itself is based on Compose Multiplatform with 100% logic shared across all targets (iOS, Android, JVM, Web/JS), so no need to write this prefix in client app). - Refactored some core components to be more simple to use.
- Updated documentation, showcases and diagrams.
- The root README.MD is slightly updated to describe how to get started with the template.
v0.2.1
Changes
- Updated generated docs
- Use common XML-based vector icons instead of SVGs with platform specific logic. Now all resources are truly Multiplatform:)
v0.2.0
v0.1.2
Changes
Fixed issues with the Android target related to the usage of SVG resources from commonMain
sources (using SVG resources in this way is not possible by design 💀). Now, all shared SVGs are used on all platforms except Android. For Android, the same SVGs are wrapped as XML vector drawables.
The logic to provide icons is implemented as part of the Design System (design
module).
v0.1.1
Changes
- Gradle updated to 8.8.
- Ktor updated to 2.3.11.
- Kotlin Coroutines updated to 1.9.0-RC.
- Refactored Versions Catalog (
versions.toml
) to use common naming conventions for plugins block. - For Platforms added
usage.md
with either the command example or a reference on official instruction (for example, iOS target can be run from Android Studio following the link in theusage.md
file). - Fixed proguard configuration for Android release builds.
v0.1.0
IMPORTANT
This is a Kotli template. The latest changes will be applied to newly generated projects only (at least now).
Changes
- Migrated to Kotlin 2.0 and Compose Multiplatform 1.6.10 (all related artifacts updated as well to the latest versions).
- Module
shared/design
(Design System) does not have dependency oncompose.materialIconsExtended
anymore. This dependency lead to unpredictable release js bundle size (when using./gradlew jsBrowserProductionebpack
). Now all required resources included directly as SVG and exposed via AppIcons helper class to use in other modules. Now js bundle has a predictable size and compilation time. - method
provideViewModel
uses either provided ViewModelFactory orLocalViewModelFactory
configured with CompositionLocalProvider viaViewModelProvider
helper composable. It is useful if you, for example, uses feature-based approach and want to construct module specific view models independently from the main app. - DI injected components can be provided now via
get()
instead ofinject()
.
Thanks!