tamagui-best-practices

0xbigboss/claude-code · updated Apr 17, 2026

$npx skills add https://github.com/0xbigboss/claude-code --skill tamagui-best-practices
0 commentsdiscussion
summary

Tamagui v1.x patterns beyond fundamentals: Config v4, compiler optimization, compound components, and gotchas.

skill.md

Tamagui Best Practices

Tamagui v1.x patterns beyond fundamentals: Config v4, compiler optimization, compound components, and gotchas.

Reference Files — Read Before Writing Code

Context File What it covers
Dialog, Sheet, modal overlays @DIALOG_PATTERNS.md Adapt component, accessibility
Form, Input, Label, validation @FORM_PATTERNS.md zod integration
Animations, transitions @ANIMATION_PATTERNS.md drivers, enterStyle/exitStyle
Popover, Tooltip, Select @OVERLAY_PATTERNS.md overlay primitives
Compiler optimization @COMPILER_PATTERNS.md what the compiler can/cannot flatten
Design tokens, theming @DESIGN_SYSTEM.md palette, token structure

Config v4

Minimal setup with @tamagui/config/v4. Add styleCompat: 'react-native' for new projects to align flexBasis with React Native behavior:

import { defaultConfig } from '@tamagui/config/v4'
import { createTamagui } from 'tamagui'

export const config = createTamagui({
  ...defaultConfig,
  settings: { ...defaultConfig.settings, styleCompat: 'react-native' },
})

declare module 'tamagui' {
  interface TamaguiCustomConfig extends typeof config {}
}

For custom themes use createThemes with palette/accent/childrenThemes — see @DESIGN_SYSTEM.md.

Compiler Optimization Rules

  • Use styled() variants instead of inline conditionals — dynamic values break flattening.
  • Avoid style={{ ... }} with variables; use variant props instead.
  • The context pattern (createStyledContext) disables compiler flattening — use for higher-level components (Button, Card), not primitives.
// BAD — breaks compiler
<View backgroundColor={isDark ? '$gray1' : '$gray12'} />

// GOOD — use variants
const Box = styled(View, {
  variants: {
    dark: { true: { backgroundColor: '$gray1' }, false: { backgroundColor: '$gray12' } },
  },
})

styled() vs Inline

  • styled(): reusable components, variant-driven behavior, compiler-optimizable primitives.
  • Inline props: one-off layout adjustments on already-styled components.
  • Always use as const on variants objects (TypeScript limitation until inferred const generics).

Key Gotchas

Prop order determines override priority — props after a spread cannot be overridden by callers:

// width is locked; backgroundColor can be overridden
<View backgroundColor="$red10" {...props} width={200} />

Variant order matters — later props win:

<Component scale={3} huge />  // scale = 3 (scale listed first)
<Component huge scale={3} />  // scale = 2 (huge overrides, comes first in variants)

Use .styleable() when wrapping styled components — preserves variant inheritance:

const CorrectWrapper = StyledText.styleable((props, ref) => (
  <StyledText ref={ref} {...props} />
))

accept prop for non-standard token resolution (SVG fill/stroke, contentContainerStyle):

const StyledSVG = styled(SVG, {}, { accept: { fill: 'color', stroke: 'color' } as const })

Import consistencytamagui, @tamagui/core, and @tamagui/button are different packages; pick one approach per project.

Never mix RN StyleSheet with Tamagui — StyleSheet values don't resolve tokens.

Platform branching for Dialog/Sheet — use Adapt instead of Platform.OS checks (see @DIALOG_PATTERNS.md).

Quick Reference

Config v4 shorthands: bg backgroundColor, p padding, m margin, w width, h height, br borderRadius

Media breakpoints: $xs 660px, $sm 800px, $md 1020px, $lg 1280px, $xl 1420px

Animation drivers: css (web, default), react-native-reanimated (native, required)

Token $ prefix: use in props (color="$color"), omit in theme definitions ({ color: palette[11] })

Fetching Current Docs

curl -sL "https://tamagui.dev/docs/core/configuration.md"
curl -sL "https://tamagui.dev/llms.txt"  # full index

Discussion

Product Hunt–style comments (not star reviews)
  • No comments yet — start the thread.
general reviews

Ratings

4.871 reviews
  • Kiara Choi· Dec 28, 2024

    tamagui-best-practices is among the better-maintained entries we tried; worth keeping pinned for repeat workflows.

  • Zaid Thompson· Dec 24, 2024

    Registry listing for tamagui-best-practices matched our evaluation — installs cleanly and behaves as described in the markdown.

  • Ishan Reddy· Dec 20, 2024

    Useful defaults in tamagui-best-practices — fewer surprises than typical one-off scripts, and it plays nicely with `npx skills` flows.

  • Tariq Perez· Dec 20, 2024

    I recommend tamagui-best-practices for anyone iterating fast on agent tooling; clear intent and a small, reviewable surface area.

  • Arjun Yang· Dec 16, 2024

    We added tamagui-best-practices from the explainx registry; install was straightforward and the SKILL.md answered most questions upfront.

  • Pratham Ware· Dec 4, 2024

    tamagui-best-practices has been reliable in day-to-day use. Documentation quality is above average for community skills.

  • Sakshi Patil· Nov 23, 2024

    Solid pick for teams standardizing on skills: tamagui-best-practices is focused, and the summary matches what you get after install.

  • Maya Abebe· Nov 19, 2024

    Keeps context tight: tamagui-best-practices is the kind of skill you can hand to a new teammate without a long onboarding doc.

  • Nia Sethi· Nov 15, 2024

    tamagui-best-practices fits our agent workflows well — practical, well scoped, and easy to wire into existing repos.

  • Aarav Martinez· Nov 11, 2024

    We added tamagui-best-practices from the explainx registry; install was straightforward and the SKILL.md answered most questions upfront.

showing 1-10 of 71

1 / 8