Skip to main content

changelog

3.0.2 (2026-03-15)โ€‹

Bug Fixesโ€‹

  • cache: support MMKV v4.x remove() method (replaces deprecated delete()) (739d913)

3.0.1 (2026-03-12)โ€‹

Bug Fixesโ€‹

  • ci: ignore attw node10/esm rules for RN library (d3fdc69)

3.0.0 (2026-03-12)

  • feat!: core engine rewrite, typed errors, accessibility, performance (d471692)

Bug Fixesโ€‹

  • ci: pin react and react-native dev deps for strict npm ci (4518430)

BREAKING CHANGESโ€‹

  • IconRenderer rewritten with useReducer state machine. SVG colorization regex removed for native SvgXml color prop. Rotate prop widened to number. Dev exports moved to rn-iconify/dev. onError receives IconLoadError instead of Error.

3.0.0 (2026-03-12)

BREAKING CHANGESโ€‹

  • IconRenderer rewrite โ€” useReducer state machine replaces 4 independent useState calls. SVG colorization regex removed in favor of SvgXml native color prop (multi-color icons now render correctly).
  • Rotate prop โ€” IconRotation type widened from 0 | 90 | 180 | 270 to number (any degree value).
  • Dev exports moved โ€” IconExplorer and PerformanceMonitor runtime exports moved to rn-iconify/dev. Type-only exports remain in main entry.
  • Typed errors โ€” onError callback now receives IconLoadError (with .code: 'NOT_FOUND' | 'NETWORK' | 'TIMEOUT' | 'INVALID_SVG') instead of generic Error.

Featuresโ€‹

  • React.memo + forwardRef โ€” All icon components (createIconSet, createIconAliases) wrapped with React.memo and React.forwardRef for optimal re-render performance and ref access.
  • Auto accessibility โ€” accessibilityRole="image" and auto-generated labels on all icons. shouldDisableAnimations() respects system reduce motion. Auto 44dp minimum touch target via hitSlop.
  • O(1) LRU cache โ€” MemoryCache rewritten with Map insertion-order LRU. Eviction no longer requires O(n log n) sort.
  • Typed errors โ€” New IconLoadError class with code property for consumer-friendly error handling.
  • Deep imports โ€” import { Mdi } from 'rn-iconify/icons/Mdi' for per-icon-set tree-shaking.
  • Dev entry point โ€” rn-iconify/dev for IconExplorer and PerformanceMonitor (keeps production bundle lean).
  • Fuzzy matching โ€” __DEV__ mode shows "Did you mean X?" for misspelled icon names via Levenshtein distance.
  • Shimmer gradient โ€” Placeholder shimmer effect upgraded from single solid bar to 3 staggered opacity bars.
  • Accessibility โ€” isInvertColorsEnabled replaces incorrect isBoldTextEnabled proxy for high contrast detection.

Bug Fixesโ€‹

  • Theme infinite loop โ€” useState + useEffect anti-pattern replaced with useMemo approach. Inline theme props no longer cause infinite re-renders.
  • Animation rotate โ€” Interpolation now uses config.from/config.to instead of hardcoded [0, 360].
  • Animation sequence โ€” __DEV__ warning instead of silent null for unsupported sequence type.
  • CacheManager โ€” loadBundle() wrapped in try/finally to ensure isLoadingBundle flag is always reset.
  • Network abort โ€” Abort signal isolation for concurrent fetch deduplication.
  • Babel plugin โ€” Stale build detection (>60s auto-reset) with try/finally cleanup in post() hook.
  • Scanner โ€” O(n) single-pass regex replaces nested iteration.
  • CLI โ€” Version reads from package.json instead of hardcoded '1.0.0'. Parser uses full 200+ component prefix map.

Package Qualityโ€‹

  • 797 tests across 25 suites (was 523/20 in v2.2.1)
  • 81% statement coverage with enforced thresholds
  • 38.5 MB unpacked (source maps excluded)
  • publint โ€” 1 warning (bob tooling limitation)
  • size-limit โ€” Full bundle 687 kB, single icon set 36 kB
  • ESM/CJS โ€” Proper dual package with lib/module/package.json {"type":"module"}
  • Conditional exports โ€” Nested import/require types for correct module resolution

2.2.1 (2026-02-04)โ€‹

Bug Fixesโ€‹

  • resolve project root, scanner validation, and multi-worker dedup (ddecd27)

2.2.0 (2026-02-03)

Featuresโ€‹

  • babel: add project scanner, incremental bundles, and auto-inject (d9d86f1)
  • metro: add dev server plugin, warmup, fade-in, and package exports (e89eb4c)

2.1.1 (2026-01-07)โ€‹

Bug Fixesโ€‹

  • add CLAUDE.md, update test types, improve caching, CLI, and API handling (8505d7a)
  • bump dependencies and update version (2da32e2)
  • bump dependencies and update version (90cde1d)
  • enable trusted publishing for npm releases (cca7df5)

2.1.1 (2026-01-07)โ€‹

Bug Fixesโ€‹

  • add CLAUDE.md, update test types, improve caching, CLI, and API handling (8505d7a)
  • bump dependencies and update version (2da32e2)
  • bump dependencies and update version (90cde1d)

Changelog

All notable changes to this project will be documented in this file.

The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.

[2.1.0] - 2025-12-05โ€‹

Addedโ€‹

  • Pressable Icons - All icons now support onPress, onLongPress, onPressIn, onPressOut props
  • Press Feedback - New pressedStyle prop for custom visual feedback when pressed
  • Disabled State - New disabled prop to disable press interactions
  • NativeWind Support - New className prop for Tailwind CSS styling with NativeWind
  • Icon Sets Reference - New documentation page with all icon set prefixes and usage examples

Changedโ€‹

  • Icons are automatically wrapped in Pressable when onPress or onLongPress is provided (no wrapper needed otherwise)
  • Updated components.mdx documentation with new props and examples
  • Improved JSDoc documentation for IconProps interface

Fixedโ€‹

  • alias/Icon.tsx now correctly passes animation and press props to IconRenderer

[2.0.1] - 2025-12-04โ€‹

Changedโ€‹

  • Cache Location - Default cache output path changed to node_modules/.cache/rn-iconify (no more .rn-iconify-cache in project root)
  • Improved documentation build workflow and test coverage
  • Added Open Graph and Twitter meta tags for better social sharing

Fixedโ€‹

  • Logo image source in README

[2.0.0] - 2025-12-03โ€‹

Addedโ€‹

  • Theme System - IconThemeProvider and useIconTheme for global icon styling
  • Icon Aliases - createIconAliases and IconAliasProvider for custom icon name mappings
  • Animated Icons - AnimatedIcon component with 6 presets (spin, pulse, bounce, shake, ping, wiggle)
  • React Navigation Integration - createTabBarIcon, createDrawerIcon, createHeaderIcon helpers
  • Accessibility Support - AccessibilityProvider, useAccessibleIcon, high contrast mode, reduced motion
  • Performance Monitoring - PerformanceMonitor, getPerformanceReport, cache hit rate tracking
  • Icon Explorer - Interactive dev tool for browsing and testing 268,000+ icons
  • Placeholder System - Built-in loading states (skeleton, pulse, shimmer)
  • Babel Plugin - Build-time icon bundling for 0ms first render (rn-iconify/babel)
  • CLI Tools - npx rn-iconify bundle and npx rn-iconify analyze commands
  • Config Manager - configure() for API, cache, and performance settings
  • Bundle System - loadOfflineBundle for offline icon support
  • Documentation Website - Full docs at rn-iconify.vercel.app

Changedโ€‹

  • Simplified README (detailed documentation moved to website)
  • Enhanced CacheManager with bundle support and improved cache layers
  • Improved IconifyAPI with better error handling, timeout, and retry logic
  • Updated example app with comprehensive feature demos

Compatibilityโ€‹

  • React Native 0.60+ (Old Architecture)
  • React Native 0.72+ (New Architecture with TurboModules)
  • iOS 13.0+
  • Android API 21+

[1.0.0] - 2025-11-26โ€‹

Addedโ€‹

  • Initial release with 200+ icon sets and 268,000+ icons
  • Simple component API (<Mdi name="home" />)
  • Full TypeScript autocomplete for all icon names
  • MMKV-based disk caching (30x faster than AsyncStorage)
  • Memory caching with LRU eviction
  • Native module for background prefetching (iOS & Android)
  • TurboModule support for React Native New Architecture
  • Bridge module fallback for Old Architecture
  • Icon transformations (rotate, flip)
  • Loading states with fallback components
  • Accessibility support
  • Cache management utilities (prefetch, clear, stats)

Compatibilityโ€‹

  • React Native 0.60+ (Old Architecture)
  • React Native 0.72+ (New Architecture with TurboModules)
  • iOS 13.0+
  • Android API 21+