@svgr/core

The Node.js API that converts raw SVG markup into optimized, ready-to-use React components.

Library
npm
v8.1.0
11,059stars
MIT License

Repository Health

Pre-computed score based on development activity, maintenance, community, maturity, and trend momentum.How we score it →
53/100Fair
Development Activity4
Maintenance44
Community64
Maturity60
Momentum40

Technical Analysis

AI-assessed by reading the actual repository — architecture, code quality, innovation, and documentation.How we score it →
77/100Good
Architecture82
Code Quality78
Innovation62
Learning Curve85

@svgr/core is the programmatic engine behind SVGR, the universal SVG-to-React transform used across the ecosystem’s CLI, webpack loader, and Rollup plugin. It exposes a single transform() (and synchronous transform.sync()) function that takes raw SVG source and a config object and returns compilable JSX or TSX source, with no plugins bundled by default so consumers opt into exactly the processing they need.

Under the hood it wires together cosmiconfig-based .svgrrc resolution, a Babel-based JSX code generator (@svgr/babel-preset), and an ordered plugin pipeline — typically @svgr/plugin-svgo for SVG optimization, @svgr/plugin-jsx for component generation, and @svgr/plugin-prettier for output formatting. Because the transform is just a function over strings, it slots into any build tool: it’s the shared core that @svgr/webpack, @svgr/rollup, and @svgr/cli all call internally, and it can be used directly in custom Node scripts or build pipelines that need SVG-to-component conversion without pulling in a specific bundler integration.

What You Get

  • A transform/transform.sync API that turns an SVG string into React (or React Native) component source with a single function call
  • Automatic .svgrrc/svgr.config.js discovery via cosmiconfig, so project-wide defaults apply without repeating options at every call site
  • A composable plugin system (@svgr/plugin-svgo, @svgr/plugin-jsx, @svgr/plugin-prettier) that lets consumers pick exactly which processing steps run
  • Rich per-call configuration: TypeScript output, ref forwarding, memo wrapping, title/desc props, icon sizing, attribute replacement, and custom JSX templates
  • The shared foundation reused by @svgr/webpack, @svgr/rollup, and @svgr/cli, so behavior stays consistent across every SVGR integration

Common Use Cases

  • Writing a custom build step or codemod that batch-converts a directory of SVG icon files into React components
  • Building a bundler plugin or loader for a tool SVGR doesn’t already integrate with, by calling transform() directly
  • Generating typed React Native SVG components from a shared icon set for cross-platform apps
  • Embedding SVG-to-JSX conversion inside a design-system tool or Storybook/asset pipeline that needs programmatic control over output

Under The Hood

Architecture The library is a thin, deliberately linear pipeline: transform() in packages/core/src/transform.ts first resolves configuration by merging DEFAULT_CONFIG with caller-supplied options and any .svgrrc file found via cosmiconfig (config.ts), then expands the call’s state (deriving a PascalCase componentName from the file path when one isn’t given, in state.ts), and finally folds the SVG string through an ordered array of plugins resolved by plugins.ts — each plugin is just (code, config, state) => string, so the entire transform is a reduce over pure string-to-string functions with no shared mutable state between steps. This makes the core trivially embeddable: @svgr/webpack, @svgr/rollup, and @svgr/cli all just call the same transform/transform.sync entry point with different default plugin lists (via state.caller.defaultPlugins), so adding a new build-tool integration to the monorepo means writing an adapter, not touching the core.

Tech Stack Written in TypeScript and built with Rollup (build/rollup.config.mjs) into CJS output with generated .d.ts types. It depends on @babel/core and the workspace’s own @svgr/babel-preset for the actual SVG-to-JSX code generation, cosmiconfig for .svgrrc/svgr.config.js discovery, plus small utilities (camelcase, snake-case) for name derivation. The package lives in a pnpm/Lerna workspace monorepo alongside the other SVGR packages, versioned and published together.

Code Quality The package has direct unit test coverage for its three core modules — transform.test.ts, config.test.ts, and plugins.test.ts — using Jest with snapshot assertions for generated component output, and each async API is mirrored by an explicit sync-mode test via a describe.each(['sync', 'async']) pattern. The whole monorepo runs a shared ESLint config (@typescript-eslint, eslint-plugin-react) and Prettier check in CI, and CI itself runs the test suite across a matrix of Node 14/16/18/19, giving reasonable confidence in cross-version compatibility. Types are used throughout the public API surface (Config, State, Plugin), though a few internal spots opt out of strict typing with any and @ts-ignore.

API Design The public surface is intentionally minimal: two functions (transform, transform.sync) plus a handful of exported types, with every option living in one Config interface documented inline via TypeScript types. Because no plugins are bundled by default, first-time use requires explicitly listing plugins: ['@svgr/plugin-svgo', '@svgr/plugin-jsx', '@svgr/plugin-prettier'] — a small amount of upfront boilerplate compared to higher-level entry points like @svgr/cli, but it keeps the core dependency-free for consumers who only need a subset of the pipeline.

Used by 9 apps in this directory

TypeScript
94%
MIT

Actual

Invoicing Finance

28,593

Local-first personal finance with envelope budgeting, end-to-end encryption, and multi-device sync — no subscription required.

View details
93
Repo Health
85
Technical
77
Dependency
Built with
TypeScript94%
Updated today
TypeScript
68%
Apache 2.0

Appsmith

Developer Tools · Automation · No Code Platforms

40,825

Open-source low-code platform to build admin panels, dashboards, and internal tools connected to any database or API.

View details
93
Repo Health
79
Technical
66
Dependency
Built with
TypeScript68%
Java21%
Updated 3 days ago
JavaScript
100%
Other

Automatisch

Automation · No Code Platforms

13,964

Self-hosted, no-code workflow automation that keeps your data on your own servers—a privacy-first alternative to Zapier with 90+ integrations.

View details
49
Repo Health
78
Technical
63
Dependency
Built with
JavaScript100%
Updated 6 months ago
TypeScript
99%
AGPL 3.0

Cherry Studio

AI Assistants

51,521

All-in-one AI desktop client with 300+ assistants and multi-model support

View details
89
Repo Health
84
Technical
71
Dependency
Built with
TypeScript99%
Updated today
JavaScript
90%
Other

CodeSandbox

Code Editors · Developer Tools

13,640

Instantly ready browser-based IDE that runs full npm dependency resolution and transpilation entirely client-side, with no server needed.

View details
69
Repo Health
76
Technical
62
Dependency
Built with
JavaScript90%
Updated 1 weeks ago
TypeScript
71%
Other

highlight.io

Developer Tools · Analytics · Monitoring

9,372

Open-source full-stack monitoring that unifies session replay, error tracking, logging, and distributed tracing so you can stop context-switching between tools.

View details
69
Repo Health
78
Technical
65
Dependency
Built with
TypeScript71%
Go16%
Updated 2 weeks ago
TypeScript
86%
MIT

medusa

Ecommerce

36,163

The most flexible open-source commerce platform — build B2C, B2B, and marketplace applications with modular, composable commerce primitives.

View details
93
Repo Health
87
Technical
63
Dependency
Built with
TypeScript86%
JavaScript14%
Updated 2 days ago
TypeScript
99%
Other

Teable

Databases · No Code Platforms

21,759

A no-code PostgreSQL database with spreadsheet UX, real-time collaboration, and native AI agents — built for teams that outgrow Airtable.

View details
79
Repo Health
76
Technical
63
Dependency
Built with
TypeScript99%
Updated today
TypeScript
98%
Apache 2.0

TinaCMS

CMS

13,780

An open-source, Git-backed headless CMS that gives editors a live visual editing UI over Markdown, MDX, JSON, and YAML content while developers keep everything in version control.

View details
92
Repo Health
74
Technical
59
Dependency
Built with
TypeScript98%
Updated today

Join founders buildingwith open source

Opinionated takes, migration guides, cost-saving tips, and insights from the open source ecosystem.

Subscribe on Substack
Join 750+ subscribers

Search