Version: next

PlatformColor

PlatformColor(color1, [color2, ...colorN]);

You can use the PlatformColor function to access native colors on the target platform by supplying the native color’s corresponding string value. You pass a string to the PlatformColor function and, provided it exists on that platform, it will return the corresponding native color, which you can apply in any part of your application.

If you pass more than one string value to the PlatformColor function, it will treat the first value as the default and the rest as fallback.

PlatformColor('bogusName', 'linkColor');

Since native colors can be sensitive to themes and/or high contrast, this platform specific logic also translates inside your components.

Developer Notes

If you’re familiar with design systems, another way of thinking about this is that PlatformColor lets you tap into the local design system's color tokens so your app can blend right in!

For a full list of the types of system colors supported, see:

Example

import React from 'react';
import {
Platform,
PlatformColor,
StyleSheet,
Text,
View
} from 'react-native';
export default (App = () => (
<View>
<Text style={styles.labelCell}>
I am a special label color!
</Text>
</View>
));
const styles = StyleSheet.create({
labelCell: {
flex: 1,
alignItems: 'stretch',
...Platform.select({
ios: { color: PlatformColor('label') },
android: {
color: PlatformColor('?attr/colorControlNormal')
},
default: { color: 'black' }
})
}
});

The string value provided to the PlatformColor function must match the string as it exists on the native platform where the app is running. In order to avoid runtime errors, the function should be wrapped in a platform check, either through a Platform.OS === 'platform' or a Platform.Select(), as shown on the example above.

Note: You can find a complete example that demonstrates proper, intended use of PlatformColor in PlatformColorExample.js.