Skip to main content
ThemeScope themes everything inside it, and takes the same props as the web library’s:
KuiTheme
A map of --kui-* properties to CSS values. A nested scope’s map applies over its parent’s.
'light' | 'dark'
Pins the scope to light or dark and paints its surface. Left unset, the scheme follows the scope around it, or the device’s appearance at the root.
To build a full theme from one colour, use the Material Theme Builder recipe: its output is a KuiTheme both libraries take.

Reading tokens

useTheme() reads the tokens in the values React Native styles take, under the keys of the web library’s token modules:
A value React Native cannot evaluate, such as calc() or color-mix(), keeps its property at the library’s default, and a development build names it in a warning.
What the library draws above the screen follows the scope it was opened in rather than the root’s, so a sheet opened inside a branded scope keeps that brand.

Fonts

Neither package ships a font. On iOS and Android a type role draws in the first family its token names when the app has registered that family with expo-font under that name, and in the system font otherwise.
Under React Native Web the token’s whole family list goes to CSS, as it does on the web.