Unistyles Runtime
Unistyles Runtime is a powerful feature that allows you to access platform specific values directly from JavaScript
.
It allows you to skip many dependencies and keep a lot of functionality under one object.
Usage
You can import UnistylesRuntime
from react-native-unistyles
:
and use it anywhere in your code, even outside a React component.
Available getters
Name | Type | Description |
---|---|---|
colorScheme | string | Get your device’s color scheme. Available options dark , light or unspecified |
hasAdaptiveThemes | boolean | Indicates if you have enabled adaptive themes |
themeName | string? | Name of the selected theme or undefined if you haven’t register any theme |
breakpoint | string? | Current breakpoint or undefined if you haven’t registered any |
breakpoints | Object | Your registered breakpoints |
screen | {width: number, height: number} | Screen dimensions |
isPortrait | boolean | Indicates if your device is in portrait mode |
isLandscape | boolean | Indicates if your device is in landscape mode |
contentSizeCategory | IOSContentSizeCategory or AndroidContentSizeCategory | Your device’s content size category |
insets | { top: number, bottom: number, left: number, right: number, ime: number } | Device insets which are safe to put content into |
statusBar | {width: number, height: number} | Status bar dimensions |
navigationBar | {width: number, height: number} | Navigation bar dimensions (Android) |
pixelRatio | number | Pixel density of the device |
fontScale | number | Font scale of the device |
rtl | boolean | Indicates if the device is in RTL mode |
getTheme | (themeName?: string) => Theme | Get theme by name or current theme if not specified |
Setters
Name | Type | Description |
---|---|---|
setTheme | (themeName: string) => void | Change the current theme |
setAdaptiveThemes | (enabled: boolean) => void | Toggle adaptive themes |
updateTheme | (themeName: string, updater: (currentTheme: Theme) => Theme) => void | Update the theme at runtime |
statusBar.setHidden | (hidden: boolean) => void | Show/hide status bar at runtime |
navigationBar.setHidden | (hidden: boolean) => void | Show/hide navigation bar at runtime |
setImmersiveMode | (enabled: boolean) => void | Enable/disable immersive mode (hiding both status and navigation bars) |
setRootViewBackgroundColor | (color: string) => void | set root view background color |
Why UnistylesRuntime
doesn’t re-render my component?
You should think of UnistylesRuntime
as a JavaScript object.
It’s not a React hook, so it doesn’t re-render your component when eg. screen size or breakpoint changes.
Instead it will return up to date value whenever you access it.
How to re-render my stylesheets based on UnistylesRuntime
?
You can do that while accessing miniRuntime in your StyleSheet
:
One example could be reading device width and height:
Learn more on how Unistyles re-calculates your styles.