---
title: "staticCompositionLocalOf"
description: "Create a [CompositionLocal] key that can be provided using [CompositionLocalProvider].

Unlike [compositionLocalOf], reads of a [staticCompositionLocalOf] are not tracked by the
composer and changing the value provided in the [CompositionLocalProvider] call will cause the
entirety of the content to be recomposed instead of just the places where in the composition the
local value is used. This lack of tracking, however, makes a [staticCompositionLocalOf] more
efficient when the value provided is highly unlikely to or will never change. For example, the
android context, font loaders, or similar shared values, are unlikely to change for the
components in the content of a the [CompositionLocalProvider] and should consider using a
[staticCompositionLocalOf]. A color, or other theme like value, might change or even be animated
therefore a [compositionLocalOf] should be used.

[staticCompositionLocalOf] creates a [ProvidableCompositionLocal] which can be used in a a call
to [CompositionLocalProvider]. Similar to [MutableList] vs. [List], if the key is made public as
[CompositionLocal] instead of [ProvidableCompositionLocal], it can be read using
[CompositionLocal.current] but not re-provided."
type: "function"
---

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


<a id='references'></a>
<div class='sourceset sourceset-common'>Common</div>


```kotlin
public fun <T> staticCompositionLocalOf(defaultFactory: () -> T): ProvidableCompositionLocal<T>
```


Create a `CompositionLocal` key that can be provided using `CompositionLocalProvider`.

Unlike `compositionLocalOf`, reads of a `staticCompositionLocalOf` are not tracked by the
composer and changing the value provided in the `CompositionLocalProvider` call will cause the
entirety of the content to be recomposed instead of just the places where in the composition the
local value is used. This lack of tracking, however, makes a `staticCompositionLocalOf` more
efficient when the value provided is highly unlikely to or will never change. For example, the
android context, font loaders, or similar shared values, are unlikely to change for the
components in the content of a the `CompositionLocalProvider` and should consider using a
`staticCompositionLocalOf`. A color, or other theme like value, might change or even be animated
therefore a `compositionLocalOf` should be used.

`staticCompositionLocalOf` creates a `ProvidableCompositionLocal` which can be used in a a call
to `CompositionLocalProvider`. Similar to `MutableList` vs. `List`, if the key is made public as
`CompositionLocal` instead of `ProvidableCompositionLocal`, it can be read using
`CompositionLocal.current` but not re-provided.

#### Parameters

| | |
| --- | --- |
| defaultFactory | a value factory to supply a value when a value is not provided. This factory is called when no value is provided through a `CompositionLocalProvider` of the caller of the component using `CompositionLocal.current`. If no reasonable default can be provided then consider throwing an exception. |




