npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

react-svg-icon-components

v0.0.4

Published

Tool for optimizing and transforming SVG to JSX components ready to use right away

Downloads

4

Readme

React Icon Components Generator

A tool for transforming and optimizing SVG files into React components. Works seamlessly with both React and Next.js since it simply generates standard React components, avoiding any bundler-specific issues. You just pass your SVG files, and it generates ready-to-use, optimized React icon components—without needing complex configurations that depend on your bundler like Webpack, Turbopack, or Vite. This library is a preconfigured install-and-use solution that helps you avoid bundler issues effortlessly.

📦 Installation

npm install react-svg-icon-components --save-dev

🚀 Usage

  1. Create a config file in your project root:
touch react-svg-icon-components.json
  1. Define your settings inside react-svg-icon-components.json:
{
  "iconsPath": "icons",
  "outputDir": "src/ui-kit/icons",
  "jsxRuntime": "classic",
  "typescript": false,
  "useDefaultOptimization": true,
  "componentPrefix": "Icon"
}
  1. Run the generator:
npx react-svg-icon-components

⚙️ Configuration Options

| Option | Type | Default | Description | | ------------------------ | --------------------------- | -------------------- | ------------------------------------------------------------------------------------------------- | | iconsPath | string | "icons" | Path to the folder containing SVG files. | | outputDir | string | "src/ui-kit/icons" | Path where the generated React components will be saved. | | jsxRuntime | "classic" / "automatic" | "classic" | JSX runtime mode: "classic" requires import React, "automatic" removes the need for import. | | typescript | boolean | false | If true, generates .tsx files instead of .jsx. | | useDefaultOptimization | boolean | true | If true, applies built-in safe SVGO optimization. | | componentPrefix | string | "Icon" | Prefix for component names (e.g., "IconClose", "IconArrow"). | | svgoConfig | object | undefined | Optional custom SVGO config. If provided, it overrides the default optimization. |

📌 Example

If you have these SVG files inside icons/:

icons/
 ├── close.svg
 ├── arrow.svg

And your react-svg-icon-components.json looks like this:

{
  "iconsPath": "icons",
  "outputDir": "src/ui-kit/icons",
  "jsxRuntime": "classic",
  "typescript": false,
  "useDefaultOptimization": true,
  "componentPrefix": "Icon"
}

Then running the generator:

npx react-svg-icon-components

Will generate:

src/ui-kit/icons/
 ├── IconClose.jsx
 ├── IconArrow.jsx
 ├── index.js

🛠 Example Generated Component (IconClose.jsx)

import React from "react";

const IconClose = (props) => (
  <svg
    viewBox="0 0 24 24"
    fill="none"
    {...props}
    xmlns="http://www.w3.org/2000/svg"
  >
    <path
      d="M7 7L17 17M7 17L17 7"
      stroke="currentColor"
      strokeWidth={2.5}
      strokeLinecap="round"
      strokeLinejoin="round"
    />
  </svg>
);

export default IconClose;

❓ FAQ

How do I generate TypeScript components?

Set "typescript": true in your react-svg-icon-components.json:

{
  "typescript": true
}

This will generate .tsx instead of .jsx.

What if I have multi-color SVGs?

Multi-color SVGs won't be changed, but single-color SVGs will automatically use currentColor unless you disable it.

How do I optimize SVGs differently?

Set "useDefaultOptimization": false and define "svgoConfig" (see SVGO Plugin Documentation for details):

{
  "useDefaultOptimization": false,
  "svgoConfig": {
    "plugins": [
      { "name": "removeDimensions" },
      { "name": "convertColors", "params": { "currentColor": false } }
    ]
  }
}