KVision 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 0.0.37. After a few weeks of work a new module has been implemented, with support for creating mobile applications with Apache Cordova.

Building mobile apps with Kotlin is nothing new, of course. Probably most of Kotlin developers are targeting Android, because it is now a preferred language for this platform. There is new Jetpack Compose Kotlin toolkit designed to simplify mobile UI development. And the experimental Kotlin Native technology allows to compile Kotlin code to native iOS and Android applications.

So what could be the reason to build mobile applications with Kotlin/JS based framework and Apache Cordova? Are there any advantages resulting from compiling Kotlin app to JavaScript, just to run this JS code in the browser embedded inside native application?

Yes, there are some:

Cordova applications are fully cross-platform - you can run exactly the same code on Android and iOS. It's not possible with Kotlin/JVM, which lets you create Android apps only.

KVision gives you consistent, object-oriented UI library (it's really full-featured, even if it does not look natively). You can write your UI code once, unlike with Kotlin/Native, which lets you share the common application logic but forces you to implement dedicated UI code for all platforms.

It's extremely easy to port standard KVision web applications to mobile devices. In fact there is almost nothing to be done - you can just pack and run the application on your smartphone.

With Webpack's Hot Module Replacement (HMR) integrated to your toolchain, you get super fast hot-reload of your app inside the phone emulator during the development phase.

You can read the new chapter in the documentation if you want to find more information and usage examples.

It's really worth trying!

KVision 0.0.37 brings also some other notable features - look at the changelog and all closed GitHub issues.

Don't forget to ⭐️ my project if you like it!

Any feedback is appreciated!