Turn SVG into React components, without Babel.
convertStyleToAttrs
enable. You can also use the web version and toggle Style to attributes
.
While svgr is great, it uses AST transformation from Babel, which is too slow (~300ms per SVG). This plugin uses regex manipulations and dangerouslySetInnerHTML
, which is almost instantaneous. It's working well for SVG optimized by svgo.
npm i -D vite-plugin-fast-react-svg
In your vite config:
import { defineConfig } from "vite";
import { svgPlugin } from "vite-plugin-fast-react-svg";
export default defineConfig({
plugins: [svgPlugin()],
});
In tsconfig.json
:
{
compilerOptions: {
types: ["vite-plugin-fast-react-svg/types", "vite/client"],
},
}
If you use a custom .d.ts
file instead of tsconfig.json
to include Vite Client Types, you will need to modify it accordingly:
/// <reference types="vite-plugin-fast-react-svg/types" />
/// <reference types="vite/client" />
N.B: You only need to include Vite Client Types via
tsconfig.json
or a customd.ts
file. Both are not needed, so if you have included the types intsconfig.json
you can safely delete your.d.ts
file.
import Logo from "./logo.svg";
const Example = () => (
<>
<Logo />
</>
);