Best of KotlinMarch 2026

  1. 1
    Article
    Avatar of androiddevAndroid Developers Blog·7w

    Room 3.0 - Modernizing the Room

    Room 3.0 alpha has been released, marking a major breaking version of the Android database library. Key changes include dropping SupportSQLite APIs in favor of SQLiteDriver, exclusive Kotlin code generation (no more Java), dropping KAPT/annotation processing in favor of KSP only, and making coroutines mandatory for DAO functions. Room 3.0 adds Kotlin Multiplatform support for JavaScript and WebAssembly via a Web Worker-based SQLite driver using the Origin Private File System. The library moves to a new Maven package (androidx.room3). A new @DaoReturnTypeConverter annotation enables custom DAO return types. Room 2.x enters maintenance mode with only bug fix releases planned until Room 3 stabilizes. Migration paths include adopting SQLiteDriver APIs in Room 2.7+ and using the new room-sqlite-wrapper compatibility artifact.

  2. 2
    Article
    Avatar of codemotionCodemotion·4w

    Virtual Threads vs. Coroutines in 2026: Is Java Finally There?

    A preview of a Codemotion Madrid 2026 talk by JetBrains' Wout Werkman comparing Java's Virtual Threads (Project Loom, introduced in Java 21) with Kotlin's coroutines. The piece covers the history of Java's concurrency limitations, how Kotlin coroutines addressed them, and how Java responded with Virtual Threads, Scoped Values, and Structured Concurrency APIs. The central question is whether Java has finally closed the gap with Kotlin's long-standing concurrency model.

  3. 3
    Article
    Avatar of androiddevAndroid Developers Blog·4w

    Media3 1.10 is out

    Media3 1.10 has been released for Android, bringing several new features. The media3-ui-compose-material3 module gains a new Player Composable combining ContentFrame with customizable controls, a ProgressSlider Composable, and PlaybackSpeedControl/PlaybackSpeedToggleButton components. ExoPlayer adds support for Dolby Vision Profile 10 and VVC tracks in MP4 containers, plus IAMF binaural output. Ad playback reliability is improved with better HLS interstitial support and IMA SDK integration. MediaSessionService now extends LifecycleService. An experimental dynamic scheduling mode is available via experimentalSetDynamicSchedulingEnabled() for improved playback efficiency. Media editing gets more robust speed adjustments and a new setFrameRate() API. FrameExtractor has been moved to a new media3-inspector-frame module, and LottieOverlay has been separated into media3-effect-lottie.