ロゴ
ToolkitsLabEfficiency Hub

SVG→JSX変換ツール

デザインデータをコードへ。SVGを貼り付けるだけで、props展開・型定義・属性補正済みの「そのまま使えるReactコンポーネント」を生成します。

変換結果がここに表示されます
コンポーネント名

TypeScript対応

currentColorに置換

色を親要素から継承

SVG→JSX変換ツールが選ばれる理由

デザインツールから書き出したSVGをReactプロジェクトに貼り付けると、「属性名が無効です」という警告やエラーに直面します。 本ツールはそれらを一瞬で解決するだけでなく、{...props} によるプロパティの透過(Spread Attributes)や、インラインスタイルの自動パースを行い、メンテナンス性の高いエンジニア品質のコードを提供します。

こんなシーンで便利です

アイコンライブラリの構築

プロジェクト専用のカスタムアイコンを、統一された命名規則と型定義を持つコンポーネントとして整理できます。

ダークモード対応の自動化

currentColor置換機能を使えば、CSSのcolorプロパティ一つでSVGの色を動的に変更できるコンポーネントが作れます。

複雑なSVGのクリーンアップ

不要なメタデータやReactで非推奨な属性を整理し、コードの見通しを良くします。

既存プロジェクトのTS化

JavaScriptで書かれた古いSVGコンポーネントを、TypeScriptの型安全な形式へアップデートする際にも有効です。

使い方は簡単 5ステップ

  1. デザインツール(Figma等)からSVGコードをコピーします。
  2. 左側の入力エリアにコードを貼り付けます。
  3. コンポーネント名やTypeScriptの有無をサイドパネルで設定します。
  4. 「currentColorに置換」をONにして、スタイル制御を柔軟にします。
  5. 生成されたJSXコードをコピーし、.jsx または .tsx ファイルとして保存します。

出力コードはES Modules形式(export const...)で生成されるため、名前付きインポートで効率よく管理できます。

ご利用時の注意点

  • 属性の補正:fill-rule → fillRule など、React仕様のキャメルケースに完全対応しています。
  • インラインスタイル:style='color: red' 形式の属性も、React用のオブジェクト形式 {{ color: 'red' }} に自動変換します。
  • サーバーサイド:Next.jsのServer Components環境下でも、クライアントサイド同様に軽量に動作するコードを出力します。

React/Next.js 向け SVG属性変換ガイド

本ツールが自動で行う、標準SVG属性からJSX(React)属性への主要な変換例です。

SVG標準属性JSX(React)属性変換の理由・メリット
classclassNameJavaScriptの予約語との衝突を回避し、Reactの仕様に準拠します。
stroke-widthstrokeWidthハイフン区切りの属性をキャメルケースに変換し、ランタイムエラーを防ぎます。
fill-opacityfillOpacityすべてのプレゼンテーション属性をReactが解釈可能な形式に統一します。
style="mask:none"style={{ mask: 'none' }}インライン文字列をオブジェクト形式にパースし、JSX内で動的制御を可能にします。
onclickonClickイベントハンドラをReactの合成イベント(SyntheticEvent)形式に補正します。
xmlns:xlinkxlinkHref名前空間を持つ属性をReact推奨のキャメルケース形式に修正します。

TypeScript (TSX) への対応と型定義

本ツールで「TypeScript」を有効にすると、コンポーネントに React.SVGProps<SVGSVGElement> 型が自動付与されます。これにより、width, height, fill などの標準的なSVG属性に対してエディタ上で強力な補完が効くようになり、型安全な開発が可能になります。

【Figma等からの移行】

Figmaの「Copy as SVG」で書き出したコードには、Reactでは不要な xmlnsxml:space 等が含まれます。これらを自動クリーンアップすることで、バンドルサイズの軽量化にも貢献します。

【Tailwind CSSとの親和性】

{...props} を展開する設計により、<Icon className="text-blue-500 w-6 h-6" /> のように、呼び出し側からTailwindのクラスを直接注入してスタイリングできます。

よくある質問(FAQ)

Q.propsを展開するのはなぜですか?

Q.

A. 生成されたコンポーネントを呼び出す際に、<Icon className='w-4 h-4' /> のように外部から属性を上書き・追加できるようにするためです。

Q.セキュリティ上の懸念はありますか?

Q.

A. 変換処理は完全にユーザーのブラウザ内(ローカル)で実行されます。コードが外部サーバーに送信されることは一切ありません。

Q.複数のパスがある複雑なSVGでも大丈夫ですか?

Q.

A. はい。パスの数に関わらず全ての属性をスキャンして置換するため、複雑なイラストレーションのSVGでも変換可能です。

User Feedback & Request

あなたの声で、
このツールをより鋭く。

「こんな機能が欲しい」「ここを直してほしい」といったご意見や、新しいツールのリクエストを募集しています。エンジニアが直接目を通し、開発の参考にさせていただきます。

フィードバックを送る