<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Muhammad Ammar</title>
    <description>The latest articles on DEV Community by Muhammad Ammar (@smammar14).</description>
    <link>https://dev.to/smammar14</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3753391%2Fee90f9d6-1ef0-4ca0-89a8-2e9f3d167c5f.jpg</url>
      <title>DEV Community: Muhammad Ammar</title>
      <link>https://dev.to/smammar14</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/smammar14"/>
    <language>en</language>
    <item>
      <title>I built an open source library of animated icons for React, all using motion and Phosphor icons</title>
      <dc:creator>Muhammad Ammar</dc:creator>
      <pubDate>Fri, 07 Aug 2026 11:30:53 +0000</pubDate>
      <link>https://dev.to/smammar14/i-built-an-open-source-library-of-animated-icons-for-react-all-using-motion-and-phosphor-icons-325p</link>
      <guid>https://dev.to/smammar14/i-built-an-open-source-library-of-animated-icons-for-react-all-using-motion-and-phosphor-icons-325p</guid>
      <description>&lt;p&gt;I kept running into the same small annoyance. I'd need one animated icon, so I'd hand-roll it in Motion, and the result never quite matched the rest of my icon set. Stroke weight slightly off, optical size a bit different, timing eyeballed differently every time. One icon is fine. Ten icons and you've lost a day to something that should have taken five minutes.&lt;/p&gt;

&lt;p&gt;So I built Iconimate.&lt;/p&gt;

&lt;h2&gt;
  
  
  What it is
&lt;/h2&gt;

&lt;p&gt;A curated set of animated SVG icons that drop in as React components. Hover animations, state transitions, that kind of thing. You import the component and use it:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight jsx"&gt;&lt;code&gt;&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nx"&gt;Bell&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="k"&gt;from&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;iconimate&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;

&lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nx"&gt;Bell&lt;/span&gt; &lt;span class="nx"&gt;size&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="mi"&gt;24&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="sr"&gt;/&lt;/span&gt;&lt;span class="err"&gt;&amp;gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;That's the whole API surface for basic use. Motion runs underneath but you never write animation code.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why the Phosphor 256 grid matters
&lt;/h2&gt;

&lt;p&gt;This is the part I actually care about, and it's the reason the project exists.&lt;/p&gt;

&lt;p&gt;Most animated icon sets are drawn on their own grid. That's fine in isolation, but the moment you put one next to your existing icons it looks almost right, which is worse than looking clearly different. Stroke weights don't match. Optical centers drift. Your eye catches it even if you can't name what's wrong.&lt;/p&gt;

&lt;p&gt;Every Iconimate icon is drawn on the Phosphor 256 grid, the same one Phosphor Icons uses. So if you're already on Phosphor, these sit in the same interface without any adjustment. Same stroke weight, same optical alignment, same visual density.&lt;/p&gt;

&lt;p&gt;As far as I've found, no other animated icon set does this.&lt;/p&gt;

&lt;h2&gt;
  
  
  What it isn't
&lt;/h2&gt;

&lt;p&gt;It's a fixed curated collection, not a tool for animating arbitrary icons. You can't feed it your own SVG and get an animation out. That's a deliberate scope choice: getting an animation to feel right takes hand-tuning, and a generic animator would produce results that feel generic.&lt;/p&gt;

&lt;h2&gt;
  
  
  Stack
&lt;/h2&gt;

&lt;p&gt;React, Motion for animation, Phosphor Icons for base geometry, Next.js for the site.&lt;/p&gt;

&lt;h2&gt;
  
  
  Where it's at
&lt;/h2&gt;

&lt;p&gt;Live, open source, and I'm adding new icons weekly. The list is mostly driven by what people request.&lt;/p&gt;

&lt;p&gt;Site: &lt;a href="https://iconimate.app" rel="noopener noreferrer"&gt;iconimate.app&lt;/a&gt;&lt;br&gt;
GitHub: [&lt;a href="https://github.com/smammar100/Iconimate" rel="noopener noreferrer"&gt;https://github.com/smammar100/Iconimate&lt;/a&gt;]&lt;/p&gt;

&lt;p&gt;The thing I'm still second-guessing is animation timing. A few feel a touch slow to me but I've stared at them too long to judge. If you scrub through some and any stand out as off, I'd like to hear it. Icon requests welcome too.&lt;/p&gt;

&lt;p&gt;And if you end up using it, a star on GitHub helps a lot.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>webdev</category>
      <category>animation</category>
      <category>opensource</category>
    </item>
  </channel>
</rss>
