Nebojša Vukšić
Software Engineer / JetBrains
Nebojša Vukšić is a software engineer at JetBrains with more than 10 years of experience in software development, mentoring, and building developer tooling. He works on the IntelliJ Platform ecosystem with a focus on Jewel, a Compose-based UI framework for building modern declarative UIs in IDEs. His past work includes Android plugin support and large-scale internal migrations from the Android Studio codebase into the IntelliJ monorepo, helping unify and modernize the platform’s Android tooling infrastructure.
Beyond his engineering work, Nebojša is active in the Kotlin community in Serbia, which he founded and continues to organize through regular meetups. He has delivered talks, contributed to local developer events, and taught a Kotlin course at the Faculty of Sciences in Novi Sad, helping students and developers adopt modern Kotlin practices in real-world applications.
His interests include Android development, developer tooling, UI frameworks, and large-scale IDE architecture, with a strong focus on improving developer experience through modern, composable UI systems.
Build for the Future, Stay Compatible with the Past
Once a library is published, every public API becomes a promise. Changing it carelessly can break users in surprising ways - sometimes not at compile time, but at runtime with errors like NoSuchMethodError.
In this talk we explore the practical art of evolving Kotlin APIs without breaking existing users. Based on the official backward-compatibility guidelines of Kotlin, we will look at the different forms of compatibility: binary, source, and behavioral and why even small changes like adding parameters or modifying return types can become breaking changes.
Using real examples from the Jewel UI toolkit and the IntelliJ Platform ecosystem, we will walk through common API evolution pitfalls and discuss strategies for safely evolving libraries while maintaining stability for downstream users.
Finally, we will briefly cover tooling that helps detect compatibility issues early, including Binary Compatibility Validator, Metalava, and japicmp, and how these tools can be integrated into CI to prevent accidental breaking changes.
By the end of the talk, you will walk away with practical guidelines and tooling strategies for designing Kotlin APIs that can evolve for years without breaking your users.
