diff --git a/compose/compiler/compiler-hosted/build.gradle b/compose/compiler/compiler-hosted/build.gradle
index 3fb0d02b3..9c6e4e3 100644
--- a/compose/compiler/compiler-hosted/build.gradle
+++ b/compose/compiler/compiler-hosted/build.gradle
@@ -16,10 +16,8 @@
 
 import org.jetbrains.kotlin.gradle.tasks.KotlinCompile
 
-import static androidx.build.dependencies.DependenciesKt.*
 import androidx.build.LibraryGroups
 import androidx.build.LibraryType
-import androidx.build.LibraryVersions
 
 plugins {
     id("AndroidXPlugin")
@@ -27,8 +25,8 @@
 }
 
 dependencies {
-    compileOnly(KOTLIN_STDLIB)
-    compileOnly("org.jetbrains.kotlin:kotlin-compiler:$KOTLIN_VERSION")
+    compileOnly(libs.kotlinStdlib)
+    compileOnly(libs.kotlinCompiler)
 }
 
 tasks.withType(KotlinCompile).configureEach {
diff --git a/compose/compiler/compiler-hosted/integration-tests/build.gradle b/compose/compiler/compiler-hosted/integration-tests/build.gradle
index 8947252..6d0d0cc8 100644
--- a/compose/compiler/compiler-hosted/integration-tests/build.gradle
+++ b/compose/compiler/compiler-hosted/integration-tests/build.gradle
@@ -17,7 +17,6 @@
 
 import org.jetbrains.kotlin.gradle.tasks.KotlinCompile
 
-import static androidx.build.dependencies.DependenciesKt.*
 import androidx.build.Publish
 
 plugins {
@@ -27,18 +26,18 @@
 }
 
 dependencies {
-    implementation(KOTLIN_STDLIB)
-    testImplementation(JUNIT)
-    testImplementation(ROBOLECTRIC)
+    implementation(libs.kotlinStdlib)
+    testImplementation(libs.junit)
+    testImplementation(libs.robolectric)
 
-    testCompileOnly("org.jetbrains.kotlin:kotlin-compiler:$KOTLIN_VERSION")
+    testCompileOnly(libs.kotlinCompiler)
     testRuntimeOnly(
         project(
            ":compose:compiler:compiler-hosted:integration-tests:kotlin-compiler-repackaged"
         )
     )
 
-    testImplementation(KOTLIN_STDLIB)
+    testImplementation(libs.kotlinStdlib)
     testImplementation(project(":compose:androidview:androidview"))
     testImplementation(project(":compose:compiler:compiler-hosted"))
     testImplementation(projectOrArtifact(":compose:material:material"))
diff --git a/compose/compiler/compiler-hosted/integration-tests/kotlin-compiler-repackaged/build.gradle b/compose/compiler/compiler-hosted/integration-tests/kotlin-compiler-repackaged/build.gradle
index 273b204..5fb10af 100644
--- a/compose/compiler/compiler-hosted/integration-tests/kotlin-compiler-repackaged/build.gradle
+++ b/compose/compiler/compiler-hosted/integration-tests/kotlin-compiler-repackaged/build.gradle
@@ -17,15 +17,13 @@
 import androidx.build.Publish
 import com.github.jengelman.gradle.plugins.shadow.tasks.ShadowJar
 
-import static androidx.build.dependencies.DependenciesKt.getKOTLIN_VERSION
-
 plugins {
     id("java")
     id("AndroidXPlugin")
 }
 
 dependencies {
-    compileOnly("org.jetbrains.kotlin:kotlin-compiler:$KOTLIN_VERSION")
+    compileOnly(libs.kotlinCompiler)
 }
 
 // This task exists to work around https://youtrack.jetbrains.com/issue/KT-44876
diff --git a/compose/compiler/compiler/build.gradle b/compose/compiler/compiler/build.gradle
index aba7d48..25393c5 100644
--- a/compose/compiler/compiler/build.gradle
+++ b/compose/compiler/compiler/build.gradle
@@ -16,7 +16,6 @@
 
 import androidx.build.LibraryGroups
 import androidx.build.LibraryType
-import androidx.build.LibraryVersions
 import com.github.jengelman.gradle.plugins.shadow.tasks.ShadowJar
 
 plugins {
diff --git a/compose/runtime/runtime-lint/build.gradle b/compose/runtime/runtime-lint/build.gradle
index 30b5400..a7754a6d 100644
--- a/compose/runtime/runtime-lint/build.gradle
+++ b/compose/runtime/runtime-lint/build.gradle
@@ -14,12 +14,11 @@
  * limitations under the License.
  */
 
+
 import androidx.build.BundleInsideHelper
 import androidx.build.LibraryGroups
 import androidx.build.LibraryType
 
-import static androidx.build.dependencies.DependenciesKt.*
-
 plugins {
     id("AndroidXPlugin")
     id("kotlin")
@@ -28,15 +27,15 @@
 BundleInsideHelper.forInsideLintJar(project)
 
 dependencies {
-    compileOnly(LINT_API_MIN)
-    compileOnly(KOTLIN_STDLIB)
+    compileOnly(libs.androidLintMinApi)
+    compileOnly(libs.kotlinStdlib)
     bundleInside(project(":compose:lint:common"))
 
-    testImplementation(KOTLIN_STDLIB)
-    testImplementation(LINT_CORE)
-    testImplementation(LINT_TESTS)
-    testImplementation(JUNIT)
-    testImplementation(TRUTH)
+    testImplementation(libs.kotlinStdlib)
+    testImplementation(libs.androidLint)
+    testImplementation(libs.androidLintTests)
+    testImplementation(libs.junit)
+    testImplementation(libs.truth)
 }
 
 androidx {
diff --git a/compose/runtime/runtime-livedata/build.gradle b/compose/runtime/runtime-livedata/build.gradle
index f8dd6e6..0087f25 100644
--- a/compose/runtime/runtime-livedata/build.gradle
+++ b/compose/runtime/runtime-livedata/build.gradle
@@ -14,11 +14,10 @@
  * limitations under the License.
  */
 
+
 import androidx.build.LibraryGroups
 import androidx.build.LibraryType
 
-import static androidx.build.dependencies.DependenciesKt.*
-
 plugins {
     id("AndroidXPlugin")
     id("com.android.library")
@@ -29,7 +28,7 @@
 dependencies {
     kotlinPlugin(project(":compose:compiler:compiler"))
 
-    implementation(KOTLIN_STDLIB)
+    implementation(libs.kotlinStdlib)
 
     api(project(":compose:runtime:runtime"))
     api("androidx.lifecycle:lifecycle-livedata:2.2.0")
@@ -37,9 +36,9 @@
 
     androidTestImplementation(project(":compose:ui:ui-test-junit4"))
     androidTestImplementation(project(":compose:test-utils"))
-    androidTestImplementation(ANDROIDX_TEST_RUNNER)
-    androidTestImplementation(JUNIT)
-    androidTestImplementation(TRUTH)
+    androidTestImplementation(libs.testRunner)
+    androidTestImplementation(libs.junit)
+    androidTestImplementation(libs.truth)
 }
 
 androidx {
diff --git a/compose/runtime/runtime-livedata/samples/build.gradle b/compose/runtime/runtime-livedata/samples/build.gradle
index 0a78ea6..ca86aab 100644
--- a/compose/runtime/runtime-livedata/samples/build.gradle
+++ b/compose/runtime/runtime-livedata/samples/build.gradle
@@ -14,11 +14,10 @@
  * limitations under the License.
  */
 
+
 import androidx.build.LibraryGroups
 import androidx.build.LibraryType
 
-import static androidx.build.dependencies.DependenciesKt.*
-
 plugins {
     id("AndroidXPlugin")
     id("com.android.library")
@@ -29,7 +28,7 @@
 dependencies {
     kotlinPlugin(project(":compose:compiler:compiler"))
 
-    implementation(KOTLIN_STDLIB)
+    implementation(libs.kotlinStdlib)
     compileOnly(project(":annotation:annotation-sampled"))
     implementation(project(":compose:foundation:foundation"))
     implementation(project(":compose:material:material"))
diff --git a/compose/runtime/runtime-rxjava2/build.gradle b/compose/runtime/runtime-rxjava2/build.gradle
index fedae8c..de35bdee 100644
--- a/compose/runtime/runtime-rxjava2/build.gradle
+++ b/compose/runtime/runtime-rxjava2/build.gradle
@@ -14,11 +14,10 @@
  * limitations under the License.
  */
 
+
 import androidx.build.LibraryGroups
 import androidx.build.LibraryType
 
-import static androidx.build.dependencies.DependenciesKt.*
-
 plugins {
     id("AndroidXPlugin")
     id("com.android.library")
@@ -29,16 +28,16 @@
 dependencies {
     kotlinPlugin(project(":compose:compiler:compiler"))
 
-    implementation(KOTLIN_STDLIB)
+    implementation(libs.kotlinStdlib)
 
     api(project(":compose:runtime:runtime"))
-    api(RX_JAVA)
+    api(libs.rxjava2)
 
     androidTestImplementation(project(":compose:ui:ui-test-junit4"))
     androidTestImplementation(project(":compose:test-utils"))
-    androidTestImplementation(ANDROIDX_TEST_RUNNER)
-    androidTestImplementation(JUNIT)
-    androidTestImplementation(TRUTH)
+    androidTestImplementation(libs.testRunner)
+    androidTestImplementation(libs.junit)
+    androidTestImplementation(libs.truth)
 }
 
 androidx {
diff --git a/compose/runtime/runtime-rxjava2/samples/build.gradle b/compose/runtime/runtime-rxjava2/samples/build.gradle
index 96fb0fe..58ad64c 100644
--- a/compose/runtime/runtime-rxjava2/samples/build.gradle
+++ b/compose/runtime/runtime-rxjava2/samples/build.gradle
@@ -14,11 +14,10 @@
  * limitations under the License.
  */
 
+
 import androidx.build.LibraryGroups
 import androidx.build.LibraryType
 
-import static androidx.build.dependencies.DependenciesKt.*
-
 plugins {
     id("AndroidXPlugin")
     id("com.android.library")
@@ -29,7 +28,7 @@
 dependencies {
     kotlinPlugin(project(":compose:compiler:compiler"))
 
-    implementation(KOTLIN_STDLIB)
+    implementation(libs.kotlinStdlib)
     compileOnly(project(":annotation:annotation-sampled"))
     implementation(project(":compose:foundation:foundation"))
     implementation(project(":compose:material:material"))
diff --git a/compose/runtime/runtime-rxjava3/build.gradle b/compose/runtime/runtime-rxjava3/build.gradle
index c56f6dc..f4d26d2 100644
--- a/compose/runtime/runtime-rxjava3/build.gradle
+++ b/compose/runtime/runtime-rxjava3/build.gradle
@@ -14,11 +14,10 @@
  * limitations under the License.
  */
 
+
 import androidx.build.LibraryGroups
 import androidx.build.LibraryType
 
-import static androidx.build.dependencies.DependenciesKt.*
-
 plugins {
     id("AndroidXPlugin")
     id("com.android.library")
@@ -29,16 +28,16 @@
 dependencies {
     kotlinPlugin(project(":compose:compiler:compiler"))
 
-    implementation(KOTLIN_STDLIB)
+    implementation(libs.kotlinStdlib)
 
     api(project(":compose:runtime:runtime"))
-    api(RX_JAVA3)
+    api(libs.rxjava3)
 
     androidTestImplementation(project(":compose:ui:ui-test-junit4"))
     androidTestImplementation(project(":compose:test-utils"))
-    androidTestImplementation(ANDROIDX_TEST_RUNNER)
-    androidTestImplementation(JUNIT)
-    androidTestImplementation(TRUTH)
+    androidTestImplementation(libs.testRunner)
+    androidTestImplementation(libs.junit)
+    androidTestImplementation(libs.truth)
 }
 
 androidx {
diff --git a/compose/runtime/runtime-rxjava3/samples/build.gradle b/compose/runtime/runtime-rxjava3/samples/build.gradle
index d028c13..b924a86 100644
--- a/compose/runtime/runtime-rxjava3/samples/build.gradle
+++ b/compose/runtime/runtime-rxjava3/samples/build.gradle
@@ -14,11 +14,10 @@
  * limitations under the License.
  */
 
+
 import androidx.build.LibraryGroups
 import androidx.build.LibraryType
 
-import static androidx.build.dependencies.DependenciesKt.*
-
 plugins {
     id("AndroidXPlugin")
     id("com.android.library")
@@ -29,7 +28,7 @@
 dependencies {
     kotlinPlugin(project(":compose:compiler:compiler"))
 
-    implementation(KOTLIN_STDLIB)
+    implementation(libs.kotlinStdlib)
     compileOnly(project(":annotation:annotation-sampled"))
     implementation(project(":compose:foundation:foundation"))
     implementation(project(":compose:material:material"))
diff --git a/compose/runtime/runtime-saveable-lint/build.gradle b/compose/runtime/runtime-saveable-lint/build.gradle
index dca4aab..54d62df 100644
--- a/compose/runtime/runtime-saveable-lint/build.gradle
+++ b/compose/runtime/runtime-saveable-lint/build.gradle
@@ -14,12 +14,11 @@
  * limitations under the License.
  */
 
+
 import androidx.build.BundleInsideHelper
 import androidx.build.LibraryGroups
 import androidx.build.LibraryType
 
-import static androidx.build.dependencies.DependenciesKt.*
-
 plugins {
     id("AndroidXPlugin")
     id("kotlin")
@@ -28,15 +27,15 @@
 BundleInsideHelper.forInsideLintJar(project)
 
 dependencies {
-    compileOnly(LINT_API_MIN)
-    compileOnly(KOTLIN_STDLIB)
+    compileOnly(libs.androidLintMinApi)
+    compileOnly(libs.kotlinStdlib)
     bundleInside(project(":compose:lint:common"))
 
-    testImplementation(KOTLIN_STDLIB)
-    testImplementation(LINT_CORE)
-    testImplementation(LINT_TESTS)
-    testImplementation(JUNIT)
-    testImplementation(TRUTH)
+    testImplementation(libs.kotlinStdlib)
+    testImplementation(libs.androidLint)
+    testImplementation(libs.androidLintTests)
+    testImplementation(libs.junit)
+    testImplementation(libs.truth)
 }
 
 androidx {
diff --git a/compose/runtime/runtime-saveable/build.gradle b/compose/runtime/runtime-saveable/build.gradle
index 2c030ea..a9c7dde 100644
--- a/compose/runtime/runtime-saveable/build.gradle
+++ b/compose/runtime/runtime-saveable/build.gradle
@@ -19,12 +19,10 @@
 import androidx.build.LibraryGroups
 import androidx.build.LibraryType
 
-import static androidx.build.dependencies.DependenciesKt.*
-
 plugins {
     id("AndroidXPlugin")
-    id("com.android.library")
     id("AndroidXUiPlugin")
+    id("com.android.library")
 }
 
 AndroidXUiPlugin.applyAndConfigureKotlinPlugin(project)
@@ -38,29 +36,27 @@
         api project(":compose:runtime:runtime")
         api "androidx.annotation:annotation:1.1.0"
 
-        implementation(KOTLIN_STDLIB)
+        implementation(libs.kotlinStdlib)
 
-        testImplementation(JUNIT)
-        testImplementation(TRUTH)
-        testImplementation(ANDROIDX_TEST_CORE)
-        testImplementation(ANDROIDX_TEST_RULES)
+        testImplementation(libs.junit)
+        testImplementation(libs.truth)
+        testImplementation(libs.testCore)
+        testImplementation(libs.testRules)
 
         androidTestImplementation project(':compose:ui:ui')
         androidTestImplementation project(":compose:ui:ui-test-junit4")
         androidTestImplementation project(":compose:test-utils")
         androidTestImplementation "androidx.fragment:fragment:1.3.0"
         androidTestImplementation project(":activity:activity-compose")
-        androidTestImplementation(ANDROIDX_TEST_UIAUTOMATOR)
-        androidTestImplementation(ANDROIDX_TEST_CORE)
-        androidTestImplementation(ANDROIDX_TEST_RULES)
-        androidTestImplementation(ANDROIDX_TEST_RUNNER)
-        androidTestImplementation(ESPRESSO_CORE)
-        androidTestImplementation(JUNIT)
-        androidTestImplementation(TRUTH)
-        androidTestImplementation(DEXMAKER_MOCKITO, excludes.bytebuddy)
-        // DexMaker has it"s own MockMaker
-        androidTestImplementation(MOCKITO_CORE, excludes.bytebuddy)
-        // DexMaker has it"s own MockMaker
+        androidTestImplementation(libs.testUiautomator)
+        androidTestImplementation(libs.testCore)
+        androidTestImplementation(libs.testRules)
+        androidTestImplementation(libs.testRunner)
+        androidTestImplementation(libs.espressoCore)
+        androidTestImplementation(libs.junit)
+        androidTestImplementation(libs.truth)
+        androidTestImplementation(libs.dexmakerMockito)
+        androidTestImplementation(libs.mockitoCore)
 
         lintPublish(project(":compose:runtime:runtime-saveable-lint"))
     }
@@ -75,21 +71,21 @@
             corresponding block above */
         sourceSets {
             commonMain.dependencies {
-                implementation(KOTLIN_STDLIB_COMMON)
+                implementation(libs.kotlinStdlibCommon)
 
                 api project(":compose:runtime:runtime")
             }
 
             androidMain.dependencies {
-                implementation(KOTLIN_STDLIB)
+                implementation(libs.kotlinStdlib)
                 api "androidx.annotation:annotation:1.1.0"
             }
 
             androidTest.dependencies {
-                implementation(ANDROIDX_TEST_RULES)
-                implementation(ANDROIDX_TEST_RUNNER)
-                implementation(JUNIT)
-                implementation(TRUTH)
+                implementation(libs.testRules)
+                implementation(libs.testRunner)
+                implementation(libs.junit)
+                implementation(libs.truth)
             }
 
             androidAndroidTest.dependencies {
@@ -98,17 +94,15 @@
                 implementation project(":compose:test-utils")
                 implementation "androidx.fragment:fragment:1.3.0"
                 implementation project(":activity:activity-compose")
-                implementation(ANDROIDX_TEST_UIAUTOMATOR)
-                implementation(ANDROIDX_TEST_CORE)
-                implementation(ANDROIDX_TEST_RULES)
-                implementation(ANDROIDX_TEST_RUNNER)
-                implementation(ESPRESSO_CORE)
-                implementation(JUNIT)
-                implementation(TRUTH)
-                implementation(DEXMAKER_MOCKITO, excludes.bytebuddy)
-                // DexMaker has it"s own MockMaker
-                implementation(MOCKITO_CORE, excludes.bytebuddy)
-                // DexMaker has it"s own MockMaker
+                implementation(libs.testUiautomator)
+                implementation(libs.testCore)
+                implementation(libs.testRules)
+                implementation(libs.testRunner)
+                implementation(libs.espressoCore)
+                implementation(libs.junit)
+                implementation(libs.truth)
+                implementation(libs.dexmakerMockito)
+                implementation(libs.mockitoCore)
             }
         }
     }
diff --git a/compose/runtime/runtime-saveable/samples/build.gradle b/compose/runtime/runtime-saveable/samples/build.gradle
index 8d35a98..36f1cdd 100644
--- a/compose/runtime/runtime-saveable/samples/build.gradle
+++ b/compose/runtime/runtime-saveable/samples/build.gradle
@@ -14,11 +14,10 @@
  * limitations under the License.
  */
 
+
 import androidx.build.LibraryGroups
 import androidx.build.LibraryType
 
-import static androidx.build.dependencies.DependenciesKt.*
-
 plugins {
     id("AndroidXPlugin")
     id("com.android.library")
@@ -29,7 +28,7 @@
 dependencies {
     kotlinPlugin project(":compose:compiler:compiler")
 
-    implementation(KOTLIN_STDLIB)
+    implementation(libs.kotlinStdlib)
 
     compileOnly project(":annotation:annotation-sampled")
 
diff --git a/compose/runtime/runtime/build.gradle b/compose/runtime/runtime/build.gradle
index fa051e4..cbd8c24 100644
--- a/compose/runtime/runtime/build.gradle
+++ b/compose/runtime/runtime/build.gradle
@@ -14,13 +14,12 @@
  * limitations under the License.
  */
 
+
 import androidx.build.AndroidXUiPlugin
 import androidx.build.LibraryGroups
 import androidx.build.LibraryType
 import org.jetbrains.kotlin.gradle.tasks.KotlinCompile
 
-import static androidx.build.dependencies.DependenciesKt.*
-
 plugins {
     id("AndroidXPlugin")
     id("AndroidXUiPlugin")
@@ -38,22 +37,22 @@
          * corresponding block below
          */
 
-        api(KOTLIN_COROUTINES_ANDROID)
+        api(libs.kotlinCoroutinesAndroid)
 
         implementation("androidx.annotation:annotation:1.1.0")
-        implementation(KOTLIN_STDLIB)
+        implementation(libs.kotlinStdlib)
 
-        testImplementation(KOTLIN_TEST_JUNIT)
-        testImplementation(JUNIT)
-        testImplementation(ROBOLECTRIC)
-        testImplementation(KOTLIN_COROUTINES_TEST)
+        testImplementation(libs.kotlinTestJunit)
+        testImplementation(libs.junit)
+        testImplementation(libs.robolectric)
+        testImplementation(libs.kotlinCoroutinesTest)
 
-        androidTestImplementation(KOTLIN_TEST_JUNIT)
-        androidTestImplementation(ANDROIDX_TEST_EXT_JUNIT)
-        androidTestImplementation(ANDROIDX_TEST_RULES)
-        androidTestImplementation(ANDROIDX_TEST_RUNNER)
-        androidTestImplementation(JUNIT)
-        androidTestImplementation(TRUTH)
+        androidTestImplementation(libs.kotlinTestJunit)
+        androidTestImplementation(libs.testExtJunit)
+        androidTestImplementation(libs.testRules)
+        androidTestImplementation(libs.testRunner)
+        androidTestImplementation(libs.junit)
+        androidTestImplementation(libs.truth)
 
         lintChecks(project(":compose:runtime:runtime-lint"))
         lintPublish(project(":compose:runtime:runtime-lint"))
@@ -71,16 +70,16 @@
          */
         sourceSets {
             commonMain.dependencies {
-                implementation(KOTLIN_STDLIB_COMMON)
-                implementation(KOTLIN_COROUTINES_CORE)
+                implementation(libs.kotlinStdlibCommon)
+                implementation(libs.kotlinCoroutinesCore)
             }
             jvmMain.dependencies {
-                implementation(KOTLIN_STDLIB)
-                api(KOTLIN_COROUTINES_CORE)
+                implementation(libs.kotlinStdlib)
+                api(libs.kotlinCoroutinesCore)
             }
             androidMain {
                 dependencies {
-                    api(KOTLIN_COROUTINES_ANDROID)
+                    api(libs.kotlinCoroutinesAndroid)
                     api("androidx.annotation:annotation:1.1.0")
                 }
                 dependsOn(jvmMain)
@@ -91,13 +90,13 @@
 
             commonTest.dependencies {
                 implementation(kotlin("test-junit"))
-                implementation(KOTLIN_COROUTINES_TEST)
+                implementation(libs.kotlinCoroutinesTest)
             }
             androidAndroidTest.dependencies {
-                implementation(ANDROIDX_TEST_EXT_JUNIT)
-                implementation(ANDROIDX_TEST_RULES)
-                implementation(ANDROIDX_TEST_RUNNER)
-                implementation(TRUTH)
+                implementation(libs.testExtJunit)
+                implementation(libs.testRules)
+                implementation(libs.testRunner)
+                implementation(libs.truth)
             }
         }
     }
diff --git a/compose/runtime/runtime/compose-runtime-benchmark/build.gradle b/compose/runtime/runtime/compose-runtime-benchmark/build.gradle
index 2bcb7e7..81d1ef7 100644
--- a/compose/runtime/runtime/compose-runtime-benchmark/build.gradle
+++ b/compose/runtime/runtime/compose-runtime-benchmark/build.gradle
@@ -13,9 +13,6 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-
-import static androidx.build.dependencies.DependenciesKt.*
-
 plugins {
     id("AndroidXPlugin")
     id("com.android.library")
@@ -45,13 +42,13 @@
     androidTestImplementation(project(":compose:ui:ui-text"))
     androidTestImplementation(project(":compose:ui:ui-util"))
 
-    androidTestImplementation(JUNIT)
-    androidTestImplementation(ANDROIDX_TEST_EXT_JUNIT)
-    androidTestImplementation(ANDROIDX_TEST_CORE)
-    androidTestImplementation(ANDROIDX_TEST_RUNNER)
-    androidTestImplementation(ANDROIDX_TEST_RULES)
-    androidTestImplementation(KOTLIN_STDLIB)
-    androidTestImplementation(KOTLIN_REFLECT)
+    androidTestImplementation(libs.junit)
+    androidTestImplementation(libs.testExtJunit)
+    androidTestImplementation(libs.testCore)
+    androidTestImplementation(libs.testRunner)
+    androidTestImplementation(libs.testRules)
+    androidTestImplementation(libs.kotlinStdlib)
+    androidTestImplementation(libs.kotlinReflect)
     androidTestImplementation(project(":benchmark:benchmark-junit4"))
     androidTestImplementation("androidx.activity:activity:1.2.0")
     androidTestImplementation(project(":activity:activity-compose"))
diff --git a/compose/runtime/runtime/integration-tests/build.gradle b/compose/runtime/runtime/integration-tests/build.gradle
index 7d12b90..4154a6b 100644
--- a/compose/runtime/runtime/integration-tests/build.gradle
+++ b/compose/runtime/runtime/integration-tests/build.gradle
@@ -18,8 +18,6 @@
 import androidx.build.AndroidXUiPlugin
 import org.jetbrains.kotlin.gradle.tasks.KotlinCompile
 
-import static androidx.build.dependencies.DependenciesKt.*
-
 plugins {
     id("AndroidXPlugin")
     id("com.android.library")
@@ -38,15 +36,15 @@
         androidTestImplementation(project(":compose:test-utils"))
         androidTestImplementation(project(":activity:activity-compose"))
 
-        androidTestImplementation(JUNIT)
-        androidTestImplementation(KOTLIN_TEST_JUNIT)
-        androidTestImplementation(ANDROIDX_TEST_EXT_JUNIT)
-        androidTestImplementation(ANDROIDX_TEST_CORE)
-        androidTestImplementation(ANDROIDX_TEST_RUNNER)
-        androidTestImplementation(ANDROIDX_TEST_RULES)
-        androidTestImplementation(KOTLIN_STDLIB)
-        androidTestImplementation(KOTLIN_REFLECT)
-        androidTestImplementation(TRUTH)
+        androidTestImplementation(libs.junit)
+        androidTestImplementation(libs.kotlinTestJunit)
+        androidTestImplementation(libs.testExtJunit)
+        androidTestImplementation(libs.testCore)
+        androidTestImplementation(libs.testRunner)
+        androidTestImplementation(libs.testRules)
+        androidTestImplementation(libs.kotlinStdlib)
+        androidTestImplementation(libs.kotlinReflect)
+        androidTestImplementation(libs.truth)
     }
 }
 
@@ -61,17 +59,17 @@
          */
         sourceSets {
             commonMain.dependencies {
-                implementation(KOTLIN_STDLIB_COMMON)
-                implementation(KOTLIN_COROUTINES_CORE)
+                implementation(libs.kotlinStdlibCommon)
+                implementation(libs.kotlinCoroutinesCore)
                 implementation(project(":compose:ui:ui"))
             }
             jvmMain.dependencies {
-                implementation(KOTLIN_STDLIB)
-                api(KOTLIN_COROUTINES_CORE)
+                implementation(libs.kotlinStdlib)
+                api(libs.kotlinCoroutinesCore)
             }
             androidMain {
                 dependencies {
-                    api(KOTLIN_COROUTINES_ANDROID)
+                    api(libs.kotlinCoroutinesAndroid)
                     api("androidx.annotation:annotation:1.1.0")
 
                     implementation("androidx.core:core-ktx:1.1.0")
@@ -80,7 +78,7 @@
             }
             desktopMain {
                 dependencies {
-                    api(KOTLIN_COROUTINES_SWING)
+                    api(libs.kotlinCoroutinesSwing)
                 }
                 dependsOn(jvmMain)
             }
@@ -93,10 +91,10 @@
                 implementation(project(":compose:ui:ui-test-junit4"))
                 implementation(project(":compose:test-utils"))
                 implementation(project(":activity:activity-compose"))
-                implementation(ANDROIDX_TEST_EXT_JUNIT)
-                implementation(ANDROIDX_TEST_RULES)
-                implementation(ANDROIDX_TEST_RUNNER)
-                implementation(TRUTH)
+                implementation(libs.testExtJunit)
+                implementation(libs.testRules)
+                implementation(libs.testRunner)
+                implementation(libs.truth)
             }
         }
     }
diff --git a/compose/runtime/runtime/samples/build.gradle b/compose/runtime/runtime/samples/build.gradle
index f2f2226..e989a93 100644
--- a/compose/runtime/runtime/samples/build.gradle
+++ b/compose/runtime/runtime/samples/build.gradle
@@ -14,11 +14,10 @@
  * limitations under the License.
  */
 
+
 import androidx.build.LibraryGroups
 import androidx.build.LibraryType
 
-import static androidx.build.dependencies.DependenciesKt.*
-
 plugins {
     id("AndroidXPlugin")
     id("com.android.library")
@@ -29,7 +28,7 @@
 dependencies {
     kotlinPlugin(project(":compose:compiler:compiler"))
 
-    implementation(KOTLIN_STDLIB)
+    implementation(libs.kotlinStdlib)
 
     compileOnly(project(":annotation:annotation-sampled"))
     implementation(project(":compose:foundation:foundation-layout"))
diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml
index 893a5df..b695822 100644
--- a/gradle/libs.versions.toml
+++ b/gradle/libs.versions.toml
@@ -78,6 +78,7 @@
 gradleIncapHelper = { module = "net.ltgt.gradle.incap:incap", version.ref = "incap" }
 gradleIncapHelperProcessor = { module = "net.ltgt.gradle.incap:incap-processor", version.ref = "incap" }
 kotlinAnnotationProcessingEmbeddable = { module = "org.jetbrains.kotlin:kotlin-annotation-processing-embeddable", version.ref = "kotlin" }
+kotlinCompiler = { module = "org.jetbrains.kotlin:kotlin-compiler", version.ref = "kotlin" }
 kotlinCompilerEmbeddable = { module = "org.jetbrains.kotlin:kotlin-compiler-embeddable", version.ref = "kotlin" }
 kotlinCompileTesting = { module = "com.github.tschuchortdev:kotlin-compile-testing", version.ref = "kotlinCompileTesting" }
 kotlinCompileTestingKsp = { module = "com.github.tschuchortdev:kotlin-compile-testing-ksp", version.ref = "kotlinCompileTesting" }
