---
title: "findViewTreeComposeViewContext"
description: "Returns the [ComposeViewContext] used in this View's part of the hierarchy, or `null` if one
cannot be found or it doesn't match the values set for [View.findViewTreeLifecycleOwner] or
[View.findViewTreeSavedStateRegistryOwner]. For example, if there is a [ComposeView] set in the
hierarchy, [findViewTreeComposeViewContext] on a child of that View will normally return that
[ComposeViewContext]. However, if the child is within a Fragment, its [LifecycleOwner] differs
from the [ComposeView], so [findViewTreeComposeViewContext] will return `null`.

This can be used with [AbstractComposeView.createComposition] to compose without the
[ComposeView] being attached:"
type: "function"
---

<div class='type'>Function</div>


<a id='references'></a>
<div class='sourceset sourceset-android'>Android</div>


```kotlin
@ExperimentalComposeViewContextApi
fun View.findViewTreeComposeViewContext(): ComposeViewContext?
```


Returns the `ComposeViewContext` used in this View's part of the hierarchy, or `null` if one
cannot be found or it doesn't match the values set for `View.findViewTreeLifecycleOwner` or
`View.findViewTreeSavedStateRegistryOwner`. For example, if there is a `ComposeView` set in the
hierarchy, `findViewTreeComposeViewContext` on a child of that View will normally return that
`ComposeViewContext`. However, if the child is within a Fragment, its `LifecycleOwner` differs
from the `ComposeView`, so `findViewTreeComposeViewContext` will return `null`.

This can be used with `AbstractComposeView.createComposition` to compose without the
`ComposeView` being attached:



## Code Examples
### ComposeViewContextUnattachedSample
```kotlin
@OptIn(ExperimentalComposeViewContextApi::class)
fun ComposeViewContextUnattachedSample(attachedView: View) {
    val composeView = ComposeView(attachedView.context)
    composeView.setContent { Box(Modifier.fillMaxSize()) }
    // If a ComposeViewContext hasn't been attached to the hierarchy, create a new one for this view
    val composeViewContext =
        attachedView.findViewTreeComposeViewContext() ?: ComposeViewContext(attachedView)
    // start composing while composeView isn't attached
    composeView.createComposition(composeViewContext)
}
```

