
This handles the full NativeWind v4 setup for Expo projects, from initial config through dark mode and third-party component styling. It walks you through the critical three-path setup (CSS file location, Metro input, app import) and includes a deterministic audit prompt you can drop into Claude to diagnose existing repos. The troubleshooting workflow is solid: always clear Metro cache first, verify Tailwind CLI compiles, then check path consistency before chasing platform quirks. Useful if you've hit the "className not applying" wall or need to configure cssInterop for library components. The checklist format makes it easy to validate you haven't missed a step in babel.config.js or metro.config.js.
npx -y skills add tristanmanchester/agent-skills --skill styling-nativewind-v4-expo --agent claude-codeInstalls into .claude/skills of the current project.
This is deliberately a v4 skill. On the review date, the official site labels v5 a prerelease; v5/Tailwind v4 configuration is a separate stack, not a drop-in refresh of these files. Inspect the lockfile before editing and keep this skill's dependency majors explicit.
Read package.json and the lockfile, the actual app entry, Expo config, Babel config, Metro config, Tailwind config, and the CSS entry. Identify Expo Router versus a classic entry and account for src/app, monorepos, or a custom project root.
Use references/expo-setup.md for the coordinated v4 setup. The invariant is:
nativewind@^4 with tailwindcss@^3.4.17; native peers resolved through the app's Expo SDK.nativewind/preset and content globs covering every source of complete utility strings.withNativeWind input and the real application entry.nativewind/babel in Babel presets, with jsxImportSource: "nativewind" on babel-preset-expo.nativewind-env.d.ts referencing nativewind/types, without shadowing the package/module name.Preserve unrelated Metro wrappers, Babel plugins, config plugins, and project module format. Do not replace a working app's configuration wholesale or install a second incompatible Reanimated/Worklets stack.
src/app/_layout.tsx.npx expo start --clear.Use references/troubleshooting.md for further diagnosis. Resolve bundled reference paths from this skill's directory, not the app's directory.
Use literal variant maps rather than dynamically constructing class names the scanner cannot see. references/patterns.md covers typed components, explicit override semantics, and accessible Pressable content. Concatenating class strings does not guarantee that the last conflicting utility wins.
Use references/third-party-components.md only when a component needs remapProps or cssInterop; configure interop once, not during every render. Use references/theming-dark-mode.md for the v4 colour-scheme and CSS-variable APIs.
Inspect the existing safe-area provider before adding another. Expo Router normally supplies the root integration; separate native roots or modal boundaries may need their own provider. Verify actual insets, nested navigation, and rotation rather than treating provider count as a universal rule.
Run the project's typecheck and Expo dependency checks, compile/bundle its actual targets, and inspect native/web rendering where those environments are available. Check dark mode, disabled/pressed states, font scaling, safe areas, and third-party components affected by the change. Report the resolved dependency versions, files changed, and platforms actually tested; static configuration inspection is not a device test.
Reviewed 2026-09-13 against NativeWind installation and custom components. For optional conflict merging, tailwind-merge explicitly directs Tailwind v3 users to its v2.6.0 line.