@Composable inline fun <VM : ViewModel> hiltViewModel( viewModelStoreOwner: ViewModelStoreOwner = checkNotNull(LocalViewModelStoreOwner.current) {
"No ViewModelStoreOwner was provided via LocalViewModelStoreOwner"
}, key: String? = null ): VM
Returns an existing HiltViewModel -annotated ViewModel or creates a new one scoped to the current navigation graph present on the {@link NavController} back stack.
If no navigation graph is currently present then the current scope will be used, usually, a fragment or an activity.
@Composable inline fun <VM : ViewModel, VMF : Any?> hiltViewModel( viewModelStoreOwner: ViewModelStoreOwner = checkNotNull(LocalViewModelStoreOwner.current) {
"No ViewModelStoreOwner was provided via LocalViewModelStoreOwner"
}, key: String? = null, noinline creationCallback: (VMF) -> VM ): VM
Returns an existing HiltViewModel -annotated ViewModel with an @AssistedInject-annotated constructor or creates a new one scoped to the current navigation graph present on the {@link NavController} back stack.
If no navigation graph is currently present then the current scope will be used, usually, a fragment or an activity.
Content and code samples on this page are subject to the licenses described in the Content License. Java and OpenJDK are trademarks or registered trademarks of Oracle and/or its affiliates.
Last updated 2025-07-10 UTC.
[null,null,["Last updated 2025-07-10 UTC."],[],[],null,["# androidx.hilt.navigation.compose\n================================\n\nTop-level functions summary\n---------------------------\n\n|-------------|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|\n| `inline VM` | `@`[Composable](/reference/kotlin/androidx/compose/runtime/Composable) `\u003cVM : `[ViewModel](/reference/kotlin/androidx/lifecycle/ViewModel)`\u003e `~~[hiltViewModel](/reference/kotlin/androidx/hilt/navigation/compose/package-summary#hiltViewModel(androidx.lifecycle.ViewModelStoreOwner,kotlin.String))~~`(` ` viewModelStoreOwner: `[ViewModelStoreOwner](/reference/kotlin/androidx/lifecycle/ViewModelStoreOwner)`,` ` key: `[String](https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-string/index.html)`?` `)` **This function is deprecated.** Moved to package: androidx.hilt.lifecycle.viewmodel.compose |\n| `inline VM` | `@`[Composable](/reference/kotlin/androidx/compose/runtime/Composable) `\u003cVM : `[ViewModel](/reference/kotlin/androidx/lifecycle/ViewModel)`, VMF : `[Any](https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-any/index.html)`?\u003e `~~[hiltViewModel](/reference/kotlin/androidx/hilt/navigation/compose/package-summary#hiltViewModel(androidx.lifecycle.ViewModelStoreOwner,kotlin.String,kotlin.Function1))~~`(` ` viewModelStoreOwner: `[ViewModelStoreOwner](/reference/kotlin/androidx/lifecycle/ViewModelStoreOwner)`,` ` key: `[String](https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-string/index.html)`?,` ` noinline creationCallback: (VMF) `-\u003e` VM` `)` **This function is deprecated.** Moved to package: androidx.hilt.lifecycle.viewmodel.compose |\n\nTop-level functions\n-------------------\n\n### hiltViewModel\n\nArtifact: [androidx.hilt:hilt-navigation-compose](/jetpack/androidx/releases/hilt) \n[View Source](https://cs.android.com/search?q=file:androidx/hilt/navigation/compose/HiltViewModel.kt+function:hiltViewModel) \n\n```\n@Composable\ninline fun \u003cVM : ViewModel\u003e [hiltViewModel](/reference/kotlin/androidx/hilt/navigation/compose/package-summary#hiltViewModel(androidx.lifecycle.ViewModelStoreOwner,kotlin.String))(\n viewModelStoreOwner: ViewModelStoreOwner = checkNotNull(LocalViewModelStoreOwner.current) {\n \"No ViewModelStoreOwner was provided via LocalViewModelStoreOwner\"\n },\n key: String? = null\n): VM\n```\n| **This function is deprecated.** \n| Moved to package: androidx.hilt.lifecycle.viewmodel.compose\n\nReturns an existing [HiltViewModel](https://dagger.dev/api/latest/dagger/hilt/android/lifecycle/HiltViewModel) -annotated [ViewModel](/reference/kotlin/androidx/lifecycle/ViewModel) or creates a new one scoped to the current navigation graph present on the {@link NavController} back stack.\n\nIf no navigation graph is currently present then the current scope will be used, usually, a fragment or an activity. \n\n```kotlin\nimport androidx.compose.runtime.remember\nimport androidx.hilt.navigation.compose.hiltViewModel\nimport androidx.lifecycle.ViewModel\nimport androidx.navigation.compose.NavHost\nimport androidx.navigation.compose.composable\nimport androidx.navigation.compose.rememberNavController\n\nval navController = rememberNavController()\nNavHost(navController, startDestination = \"ExampleRoute\") {\n composable(\"ExampleRoute\") {\n val viewModel = hiltViewModel\u003cExampleViewModel\u003e()\n }\n}\n``` \n\n```kotlin\nimport androidx.compose.runtime.remember\nimport androidx.hilt.navigation.compose.hiltViewModel\nimport androidx.lifecycle.ViewModel\nimport androidx.navigation.compose.NavHost\nimport androidx.navigation.compose.composable\nimport androidx.navigation.compose.rememberNavController\nimport androidx.navigation.navigation\n\nval navController = rememberNavController()\nNavHost(navController, startDestination = \"Parent\") {\n navigation(startDestination = \"InnerRouteA\", route = \"Parent\") {\n composable(\"InnerRouteA\") {\n val parentEntry = remember { navController.getBackStackEntry(\"Parent\") }\n val viewModel = hiltViewModel\u003cParentViewModel\u003e(parentEntry)\n }\n composable(\"InnerRouteB\") {\n val parentEntry = remember { navController.getBackStackEntry(\"Parent\") }\n val viewModel = hiltViewModel\u003cParentViewModel\u003e(parentEntry)\n }\n }\n}\n``` \n\n### hiltViewModel\n\nArtifact: [androidx.hilt:hilt-navigation-compose](/jetpack/androidx/releases/hilt) \n[View Source](https://cs.android.com/search?q=file:androidx/hilt/navigation/compose/HiltViewModel.kt+function:hiltViewModel) \n\n```\n@Composable\ninline fun \u003cVM : ViewModel, VMF : Any?\u003e [hiltViewModel](/reference/kotlin/androidx/hilt/navigation/compose/package-summary#hiltViewModel(androidx.lifecycle.ViewModelStoreOwner,kotlin.String,kotlin.Function1))(\n viewModelStoreOwner: ViewModelStoreOwner = checkNotNull(LocalViewModelStoreOwner.current) {\n \"No ViewModelStoreOwner was provided via LocalViewModelStoreOwner\"\n },\n key: String? = null,\n noinline creationCallback: (VMF) -\u003e VM\n): VM\n```\n| **This function is deprecated.** \n| Moved to package: androidx.hilt.lifecycle.viewmodel.compose\n\nReturns an existing [HiltViewModel](https://dagger.dev/api/latest/dagger/hilt/android/lifecycle/HiltViewModel) -annotated [ViewModel](/reference/kotlin/androidx/lifecycle/ViewModel) with an @AssistedInject-annotated constructor or creates a new one scoped to the current navigation graph present on the {@link NavController} back stack.\n\nIf no navigation graph is currently present then the current scope will be used, usually, a fragment or an activity. \n\n```kotlin\nimport androidx.compose.runtime.remember\nimport androidx.hilt.navigation.compose.hiltViewModel\nimport androidx.lifecycle.ViewModel\nimport androidx.navigation.compose.NavHost\nimport androidx.navigation.compose.composable\nimport androidx.navigation.compose.rememberNavController\n\nval navController = rememberNavController()\nNavHost(navController, startDestination = \"ExampleRoute\") {\n composable(\"ExampleRoute\") {\n val viewModel = hiltViewModel\u003cExampleViewModel\u003e()\n }\n}\n``` \n\n```kotlin\nimport androidx.compose.runtime.remember\nimport androidx.hilt.navigation.compose.hiltViewModel\nimport androidx.lifecycle.ViewModel\nimport androidx.navigation.compose.NavHost\nimport androidx.navigation.compose.composable\nimport androidx.navigation.compose.rememberNavController\nimport androidx.navigation.navigation\n\nval navController = rememberNavController()\nNavHost(navController, startDestination = \"Parent\") {\n navigation(startDestination = \"InnerRouteA\", route = \"Parent\") {\n composable(\"InnerRouteA\") {\n val parentEntry = remember { navController.getBackStackEntry(\"Parent\") }\n val viewModel = hiltViewModel\u003cParentViewModel\u003e(parentEntry)\n }\n composable(\"InnerRouteB\") {\n val parentEntry = remember { navController.getBackStackEntry(\"Parent\") }\n val viewModel = hiltViewModel\u003cParentViewModel\u003e(parentEntry)\n }\n }\n}\n```"]]