\

Show HN: Make SVGs interactive in React with 1 line

54 points - 04/01/2025


Hey HN

I built svggles (npm: interactive-illustrations), a React utility that makes it easy to add playful, interactive SVGs to your frontend.

It supports mouse-tracking, scroll, hover, and other common interactions, and it's designed to be lightweight and intuitive for React devs.

The inspiration came from my time playing with p5.js — I loved how expressive and fun it was to create interactive visuals. But I also wanted to bring that kind of creative freedom to everyday frontend work, in a way that fits naturally into the React ecosystem.

My goal is to help frontend developers make their UIs feel more alive — not just functional, but fun. I also know creativity thrives in community, so it's open source and I’d love to see contributions from artists, developers, or anyone interested in visual interaction.

Links: Website + Docs: svggles.vercel.app

GitHub: github.com/shantinghou/interactive-illustrations

NPM: interactive-illustrations

Let me know what you think — ideas, feedback, and contributions are all welcome

Source
  • paulirish

    04/02/2025

    I love playful interaction too, but you can get all this for free: SVGs are natively interactive.

    Here's your demo in 45 lines of SVG and CSS: https://codepen.io/paulirish/pen/gbOZXJp

      • culi

        04/03/2025

        From what I read of the docs, it's a pretty lightweight "library" that's actually mainly just a collection of css classes you can attach to an svg

    • yomielu

      04/01/2025

      Awesome work! Not sure if this is intentional but it looks like the (lack of) contrast on the text vs background color is making it hard to read anything on the landing page.

      • westurner

        04/01/2025

        MDN docs > SVG and CSS: https://developer.mozilla.org/en-US/docs/Web/SVG/Tutorials/S...

        • simlevesque

          04/01/2025

          This example doesn't seem to work, I hover it and nothing happens, in incognito, chrome latest: https://svggles.vercel.app/?tab=Documentation%2FHover%2FAnim...

            • nartho

              04/01/2025

              You need to hover the heart in the middle, not just the card.

              • 04/01/2025

            • tracker1

              04/02/2025

              Depending on what you're doing, I find SVG manipulation in React to come out pretty well. I've used it for overlays on scanned documents and basic charts without much issue at all.

                • culi

                  04/03/2025

                  I've used it for very complex visualizations and, as long as things are properly memoized, it has also turned out very well.

                  SVG a11y standards are pretty undeveloped however which is disappointing

              • khaki54

                04/01/2025

                Did you consider using lottie and its interactivity? What were the tradeoffs?

                • hersko

                  04/01/2025

                  Your landing page made my 9 year old laugh. Good work!

                  • 04/01/2025

                    • abdulyki

                      04/01/2025

                      Looks cool but isn't this just using gsap and having a wrapper around it?

                      • ckemere

                        04/01/2025

                        Doesn't seem to do anything in firefox either.

                          • jazzcomputer

                            04/01/2025

                            Try hovering over the symbols on the card - though I couldn't get the morph one to work on Firefox

                        • 1ilit

                          04/01/2025

                          looks cool, you should probably gitignore some of the dirs there though

                            • ge96

                              04/01/2025

                              Reminds me when I was new to dev, I committed and pushed node_modules up ahh good times

                                • 1ilit

                                  04/01/2025

                                  been there, done that

                          • recursive

                            04/01/2025

                            It seems unusual to make the package name so different from the project name.

                            Also, the instructions for converting svg to react component work sometimes. It won't work if your svg has any style attributes for example. React also warns on some valid svg attributes, such as this one.

                                <rect x="11" y="11" width="8" height="8" stroke="green" clip-path="circle() view-box" />
                            
                            I've spent at least a day cleaning up after devs who just dropped inline SVG content into react components without checking whether it works. If you actually had a reliable way of embedding SVG in JSX in such a way that it worked with react, I might have use for it on occasion.

                            The given code example is missing a right angle brace on the `<svg` line.

                              • cAtte_

                                04/01/2025

                                yeah, not sure why anyone would copy-paste SVG as JSX when SVGR exists: https://react-svgr.com/

                                • 04/01/2025