Course contentsShow
← React Native
Lesson 226 of 1,5553. Core Primitive ComponentsFree lesson

Creating Accessible Contrast Modes

Learners will optimize color palettes for high-contrast accessibility requirements.

In this lesson, you will learn how to optimize your app's color palette to ensure your text and UI elements meet high-contrast accessibility standards.

Why Contrast Matters

For users with low vision or color blindness, low-contrast UI elements—like light gray text on a white background—can be impossible to read. Accessibility guidelines (such as WCAG) require a specific ratio between the foreground color (your text) and the background. When you build your app, you should provide a "High Contrast" mode that makes these differences much more distinct.

Implementing Accessible Contrast

Since we have already learned about Building Context-Aware Themes (Lesson 17), we can leverage that pattern to toggle high-contrast styles. Instead of hardcoding colors, we use a theme object that updates based on the user's settings.

Here is a simple example of how to define high-contrast color values:

const theme = {
  light: {
    background: '#FFFFFF',
    text: '#333333', // Low contrast
  },
  highContrast: {
    background: '#000000',
    text: '#FFFF00', // High contrast yellow-on-black
  }
};

const MyComponent = ({ isHighContrast }) => {
  const colors = isHighContrast ? theme.highContrast : theme.light;

  return (
    <View style={{ backgroundColor: colors.background }}>
      <Text style={{ color: colors.text }}>
        This text is now readable for everyone!
      </Text>
    </View>
  );
};

Testing Your Contrast

The goal is to ensure the "luminance" of your text is significantly different from your background. You don’t need to do complex math manually; there are many free online "Contrast Checkers" where you can plug in your Hex codes. If the tool reports a ratio of at least 4.5:1 for standard text, you are on the right track!

Remember, accessibility isn't just about color. You should also ensure that your UI doesn't rely only on color to convey information (e.g., using a red border to show an error might be invisible to a color-blind user; pair that red border with an icon or a label).

Key Takeaway: Use context-aware themes to swap your standard color palette for a high-contrast mode that ensures every user can clearly distinguish your text from the background.