Files
bsky-social-app/assets/nano-icons/nanoicons/app-icons.glyphmap.json
T
Tomek Zawadzki 3606c48f02 Migrate feed and tab bar icons to react-native-nano-icons
react-native-svg materialises three native views per icon (SvgView + Group +
Path). Feed screens render around a thousand icons, so that is ~2400 views and
~2400 shadow nodes of pure overhead per profile load.

Move the 28 icons that repeat on feed screens - the post action bar, feed row
reason, post embeds, the loading skeleton and the bottom tab bar - to
react-native-nano-icons, which draws each icon as a single native text glyph.

The SVG sources are generated from the existing icon path data so the geometry
is unchanged, and `createNanoIcon` mirrors the `useCommonSVGProps` contract so
call sites are one-line import swaps.

Measured on a Samsung Galaxy A16 (SM-A165F, Android 16) with release builds,
10 runs per condition: native views -20.6%, icon construction -45.3%,
JS-thread CPU -6.1%, main-thread CPU -3.3%.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-08-24 19:45:04 +02:00

1 line
1.1 KiB
JSON

{"m":{"f":"app-icons","u":1024,"z":1020,"s":59648,"h":"f31796d2f6d13414a394ceff67db6d504f46e260cf1e305618733472f96c181d"},"i":{"arrow-top-right":[1024,[[59648,"#000"]]],"bell-filled":[1024,[[59649,"#000"]]],"bell":[1024,[[59650,"#000"]]],"bookmark-filled":[1024,[[59651,"#000"]]],"bookmark":[1024,[[59652,"#000"]]],"bubble":[1024,[[59653,"#000"]]],"circle-check":[1024,[[59654,"#000"]]],"clock":[1024,[[59655,"#000"]]],"earth":[1024,[[59656,"#000"]]],"heart-filled":[1024,[[59657,"#000"]]],"heart":[1024,[[59658,"#000"]]],"home-filled":[1024,[[59659,"#000"]]],"home":[1024,[[59660,"#000"]]],"inbox":[1024,[[59661,"#000"]]],"menu":[1024,[[59662,"#000"]]],"message-filled":[1024,[[59663,"#000"]]],"message":[1024,[[59664,"#000"]]],"mute":[1024,[[59665,"#000"]]],"pause":[1024,[[59666,"#000"]]],"pin":[1024,[[59667,"#000"]]],"play":[1024,[[59668,"#000"]]],"reply":[1024,[[59669,"#000"]]],"repost-corner2":[1024,[[59670,"#000"]]],"repost":[1024,[[59671,"#000"]]],"search-filled":[1024,[[59672,"#000"]]],"search":[1024,[[59673,"#000"]]],"share":[1024,[[59674,"#000"]]],"unmute":[1024,[[59675,"#000"]]]}}