Skip to content
Back to skills

Apply Material You Dynamic Colors

ASecurity

Wire up Material You dynamic colors (user's wallpaper drives app theme) in RN+Expo on Android 12+. Use when the user says 'material you', 'dynamic colors android', 'wallpaper theming', 'monet theming'.

  • 3 stars
  • 0 votes
  • 0 copies
  • 0 views
  • Added October 4, 2026
developmentgobashreact

Security analysis

A96/100
  • mediumInstalls packages at runtime which could introduce malicious dependencies

Pro scans all 2 files and shows the line behind each finding

Scanned October 4, 2026

npx -y skills add khadinakbarlabs/expo-mobile-app-builder --skill apply-material-you-dynamic-colors --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Apply Material You Dynamic Colors?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Apply Material You Dynamic Colors
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/khadinakbarlabs-apply-material-you-dynamic-colors/badge)](https://www.skillsdirectory.com/skills/khadinakbarlabs-apply-material-you-dynamic-colors)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
name: "apply-material-you-dynamic-colors"
description: "Wire up Material You dynamic colors (user's wallpaper drives app theme) in RN+Expo on Android 12+. Use when the user says 'material you', 'dynamic colors android', 'wallpaper theming', 'monet theming'."
---

# Apply Material You Dynamic Colors

User's Android wallpaper → app's color palette. Premium signal on Pixel devices.

## How it works
- Android 12+ extracts colors from wallpaper (Monet engine)
- System exposes 5 tonal palettes (primary, secondary, tertiary, neutral, neutral variant)
- Each palette has 13 tones (0, 10, 20, 30, 40, 50, 60, 70, 80, 90, 95, 99, 100)
- App reads these and themes accordingly

## RN+Expo setup

```bash
pnpm add @pchmn/expo-material3-theme
```

```tsx
// App.tsx
import { useMaterial3Theme } from '@pchmn/expo-material3-theme';
import { PaperProvider, MD3LightTheme, MD3DarkTheme } from 'react-native-paper';
import { useColorScheme } from 'react-native';

export default function App() {
  const colorScheme = useColorScheme();
  const { theme } = useMaterial3Theme({
    fallbackSourceColor: '#3E8260', // your brand color as fallback
  });

  const paperTheme = colorScheme === 'dark'
    ? { ...MD3DarkTheme, colors: theme.dark }
    : { ...MD3LightTheme, colors: theme.light };

  return (
    <PaperProvider theme={paperTheme}>
      <YourApp />
    </PaperProvider>
  );
}
```

## What you get

```tsx
theme.light.primary           // #6750A4 (user's wallpaper-derived)
theme.light.onPrimary         // text on primary
theme.light.primaryContainer  // softer version of primary
theme.light.onPrimaryContainer

theme.light.secondary
theme.light.tertiary
// ... and so on for all M3 color roles
```

## Devices that support dynamic colors

- Pixel 6+ on Android 12+
- Samsung One UI 4+ (Galaxy S20+, with some delay)
- OxygenOS 12+ (OnePlus)
- Other OEMs with Android 12+ skin

## Fallback strategy

For pre-Android 12 OR OEMs that don't support:
- Use your brand color as the source
- `@pchmn/expo-material3-theme` auto-falls back

## Should you opt OUT of dynamic colors?

Yes if:
- You're a strong brand (Spotify green, Netflix red)
- Your category is mood-specific (kids app, fitness motivator)

Then:
```tsx
const { theme } = useMaterial3Theme({
  sourceColor: '#YOUR_BRAND_COLOR',  // force, ignore wallpaper
});
```

## Test on different wallpapers

Real devices: change wallpaper, kill app, reopen → colors should re-derive.

Emulator: Settings → Wallpaper → change → restart app.

## Common gotchas

- `useMaterial3Theme` requires Android 12+ for dynamic; below = falls back
- React Native Paper v5+ uses M3 by default; v4 still MD2
- Don't hard-code colors anywhere — use theme tokens always
- Test in both light and dark modes after every wallpaper change

## Pair with
- `apply-material3` for component compliance
- `figma-to-rn-android` for design conversion
- `add-edge-to-edge-android` for full-screen rendering

Files in this skill

  • SKILL.md2.9 KB
  • agents/openai.yaml230 B

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…