Skip to content

v2.0.0 — Tamagui v2

Latest

Choose a tag to compare

@alantoa alantoa released this 10 Jun 17:57
62f183f

🚨 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 (dist esm/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: true in 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.tsxAcornBold.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