KVision 6.0.0 is released
Tags: kvision, kotlin, ballast
Published: 2022-12-31 10:18:16

---
title: KVision 6.0.0 is released
published: true
description: KVision is an open source web framework created for Kotlin/JS.
tags: kvision,kotlin,ballast
---

[KVision](https://kvision.io) is an open source web framework created for Kotlin/JS. It allows developers to build modern web applications with the Kotlin language.

I have released KVision 6.0.0. This is a major upgrade bringing a lot of significant changes and new features. 

Highlights of this release include:

- Java 17 or greater is now required.
- Upgraded dependencies (Kotlin 1.8.0, Spring Boot 3.0.1, Micronaut 3.8.0, Ktor 2.2.1, Koin 3.3.0, Vert.x 4.3.7, kotlin-wrappers 466, Chart.js 4.1.1, Npm-publish 3.2.0, Bootstrap-icons 1.10.3, OnsenUI 2.12.8, Tempus-dominus 6.2.10, Trix 2.0.4, Electron 22.0.0, Tabulator 5.4.3).
- Drop support for the deprecated legacy backend.
- Direct dependency on `kotlinx.coroutines` library.
- Support for returning `Result<T>` from fullstack remote methods.
- New `Upload` component based on browser file input API.
- New `Numeric` and `ImaskNumeric` components for handling decimal numbers.
- New `kvision-ballast` and `kvision-routing-ballast` modules integrating with [Ballast](https://github.com/copper-leaf/ballast) state management framework.
- A lot of other bugfixes, cleanups and optimizations.

For more details about this release see the [changelog](https://github.com/rjaros/kvision/releases/tag/6.0.0).

## Requirements

Following the path of Spring Boot, which from version 3.0 is targeting Java 17+, KVision also requires the latest LTS release of the JDK. Dropping support for the old, legacy backend is also a natural thing, since it's now deprecated in Kotlin 1.8.0. 

As a result, we've simplified the codebase, reduced the resulting bundle sizes, and improved the performance, stability and security of fullstack applications.

## Components

A few JavaScript libraries which were used by KVision components lost their support and proper maintenance. We had to remove those components and replace them with some other libraries. Fortunately the rich JS ecosystem provided good alternatives. New `TomSelect` and `TomTypeahead` components, based on the lightweight [TomSelect](https://tom-select.js.org/) library offer similar feature set to the old `Select` and `Typeahead` components, although the API is slightly different.

We've also put a lot of work to the numeric components. Instead of one spinner component, we now have three numeric components - `Spinner` for integer values, `Numeric` for fixed decimals and `ImaskNumeric` for decimal/float values with fully masked and configurable input.

## Integrations

New modules allow you to easily build KVision apps with the [Ballast](https://github.com/copper-leaf/ballast) opinionated application state management framework. You can see how Ballast (together with [Koin](https://insert-koin.io/)) can help you design your application architecture in the new [todomvc-ballast](https://github.com/rjaros/kvision-examples/tree/master/todomvc-ballast) example.

It's also easier to use coroutines in your projects, because `kotlinx.coroutines` library is now a direct dependency of all KVision applications (note: you can still develop apps without using coroutines without larger bundle size).

## Migration

As with any other major release there are breaking changes in 6.0.0. [A dedicated migration guide](https://kvision.gitbook.io/kvision-guide/migration/migration-from-5.x-to-6.x) is available, so be sure to read it before upgrading.

Don't forget to ⭐️ my [project](https://github.com/rjaros/kvision) if you like it!

As always, any feedback is appreciated!