Привет! Давайте разберёмся, что там накатили в новом мажоре Room. На момент написания актуальная версия — 3.0.0-alpha02, а стабильный релиз, вероятно, будет к лету.

Если вдруг выпали из контекста: Room — это повсеместно используемая ORM-обёртка над SQLite. Раньше только для Android, с недавнего времени и для Kotlin Multiplatform.

Что изменилось?

  1. Новый пакет androidx.room -> androidx.room3.

  2. Убрана зависимость от Android-специфичного SQLite Driver API. Для публичного API появились задокументированные аналоги.

    // Было
    roomDatabase.query("select * from users").use { cursor -> ... }
    
    // Стало
    roomDatabase.useReaderConnection { connection ->
      connection.usePrepared("select * from users") { stmt -> ... }
    }
  3. Kotlin и Coroutines. Room2 генерировал Java-код через KAPT. Теперь всё — только через KSP. Плюс, всё API работы с DAO и внутрянка по-возможности переписаны на корутины.

  4. Поддержка Web. Раньше KMP-версия Room не дружила с wasm. Комьюнити поныло — и вот, дожали. Так что mobile web разработчики могут порадоваться, а те, кто тащил wasm на всякий случай — тоже не зря ждали.

  5. Почистили старые депрекейты.

Миграция

Тут всё довольно спокойно, без сюрпризов.

Что нужно сделать:

  1. Обновить зависимости и плагин (добавить «3»)

    // root build.gradle.kts
    plugins {
        id("androidx.room3") version "3.0.0-alpha02" apply false
    }
    
    // lib build.gradle.kts
    plugins {
        id("androidx.room3")
    }
    
    kotlin {
      sourceSets {
        commonMain {
          val room_version = "3.0.0-alpha02"
    
          // Для наглядности. Используйте version catalog
          implementation("androidx.room3:room3-runtime:$room_version")
          ksp("androidx.room3:room3-compiler:$room_version")   
        } 
      }
    }
    
    room3 {
        schemaDirectory("$projectDir/schemas")
    }
  2. Поменять пакеты (RoomDatabase, @Entity и прочее на room3).

  3. Дальше по классике — собрать -> получить ошибки -> исправить. Кое-где добавили suspend, поменяли нейминг. Должно быть просто.

Насколько это необходимо?

Поддержка web — давно пора. Котлин и корутины — бесценно для KMP разработки в 2026. Остальное приятно.

Так что — затаскиваем как будет стабильная версия.

А если появилось желание апгрейднуться сейчас — подсвечу, что это лишь альфа версия, и могут быть внезапные гугл мувы и изменения без обратной совместимости.

Только зарегистрированные пользователи могут участвовать в опросе. Войдите, пожалуйста.
Делаем?
0%Сейчас апну0
40%В пятницу вечером2
0%Без тикета не буду0
60%Только stable после остальных3
Проголосовали 5 пользователей. Воздержался 1 пользователь.