Key changes
Hot reload Metro plugin
Wrap your Metro config with withNanoIcons and edited SVGs reload in the running dev app, without a native rebuild.
- Icon font hot reload in development by @stachbial in #74
- Metro: read the aggregated change event of metro-file-map 0.84.3 and newer by @huextrat in #75
Native symbols for tab bars
SVGs can now be generated as SF Symbols on iOS and VectorDrawables on Android, and used in react-navigation’s native tabs with nativeNanoSymbol. Requires react-navigation 8 and react-native-screens 4.29+.
- Native symbol support by @stachbial in #34
- Use react-navigation’s multicolor rendering mode for native symbols by @stachbial in #87
Animated size and color
size and color are now native props, so they can be animated with Reanimated or set through Unistyles.
- Animate size and color via a custom shadow node (Reanimated, Unistyles) by @stachbial in #79
Breaking changes
- React Native 0.81+ is required (was 0.74+).
- Regenerate fonts after upgrading (
npx react-native-nano-iconsornpx expo prebuild) and rebuild the native app. - CLI:
--dynamic --app-configis now--dynamic-app-config, and paths in.nanoicons.jsonresolve relative to the file.
- Bump the
react-nativepeer dependency to 0.81 for shadow node support by @stachbial in #84 - CLI: add
--help, a--dynamic-app-configflag and config-relative paths by @stachbial in #86
Improvements
- Colors: support
PlatformColorandDynamicColorIOSby @johankasperi in #55 - Colors: add
tintMode="currentColor"to color onlycurrentColorlayers by @yalanyali in #28 - Fonts: fingerprint every font build and verify it at runtime by @stachbial in #67
- Web: emit
.woff2fonts and render under the configured family by @stachbial in #68 - Web: forward
classNameto the container element by @lursz in #40 - CLI: report every broken icon with author-facing messages by @stachbial in #60
- Pipeline: replace Pyodide with a TypeScript port of picosvg by @stachbial in #58
- Pipeline: restructure the SVG flattening pipeline by @stachbial in #57
- Pipeline: compile icons in a worker pool by @stachbial in #64
- Pipeline: trim the tarball and shrink generated fonts by @stachbial in #61
Bug fixes
iOS
- Fix stale glyph scale and state leaks on recycled icon views by @huextrat in #47
- Place inline icons on the text baseline by @stachbial in #78
- Expose FabricComponents headers for inline baseline correction by @huextrat in #82
Android
- Fit the glyph to the view bounds so font scale applies by @huextrat in #49
- Skip the explicit Kotlin plugin when AGP registers the kotlin extension by @gabrieldonadel in #56
CLI and packaging
- Skip icons with
<text>,<style>,<foreignObject>,<a>or<switch>instead of failing the set by @stachbial in #83 - Resolve the iOS Info.plist from target build settings by @vanHoi in #53
- Scale the default safeZone with upm by @stachbial in #71
- Add the missing
react-nativeexport field by @lursz in #39 - Include codegen specs in the published package by @huextrat in #66
New contributors
- @huextrat made their first contribution in #47
- @vanHoi made their first contribution in #53
- @johankasperi made their first contribution in #55
- @yalanyali made their first contribution in #28
- @gabrieldonadel made their first contribution in #56
Source: v1.0.0 release notes on GitHub. Full changelog: v0.2.1...v1.0.0.
Release card