🚨 Breaking Changes
- Requires Tamagui v2 (
@tamagui/core@^2.2.0) and React 19 - Requires
react-native-svg >= 15(peer dependency) - The package now ships built output (
distesm/cjs/native +types) instead of raw TypeScript source, with"type": "module" - Tamagui v1 users: stay on
tamagui-phosphor@0.1.x
✨ Features
Per-icon entry points
Every icon is now importable directly — essential for Metro and other bundlers without tree-shaking, so only the icons you import end up in your bundle:
import { House } from 'tamagui-phosphor/icons/House';Subpath imports are fully typed (each exports entry carries a types condition).
Metro users on React Native < 0.79 need
unstable_enablePackageExports: truein metro.config.js.
Verified tree-shaking on web
sideEffects: false + ESM build: bundling a single barrel import (import { House } from 'tamagui-phosphor') produces a 963-byte output containing only that icon (tested with esbuild; applies to Vite/webpack/Rollup).
🔧 Internal
- Package structure mirrors
@tamagui/lucide-icons-2:dist/esm/*.mjs+*.native.js+dist/cjs/*.cjs, built with@tamagui/build@2 - Generated icon files renamed kebab-case → PascalCase (
acorn-bold.tsx→AcornBold.tsx); root export names unchanged, so barrel imports are unaffected - Generator (
bin/generate.js) rewritten as ESM and now maintains the per-icon exports map (4536 entries) in package.json - Removed broken scaffold CI workflow and stale
yarn.lock
Full Changelog: v0.1.27...v2.0.0