Zurück zum Blog

SVG in React Native importieren: react-native-svg + SvgXml

Zwei praxistaugliche Wege, SVG in React Native mit react-native-svg zu nutzen: transformerbasierte Importe und dynamisches Rendering mit SvgXml.

26. Jan. 2026React NativeSVGreact-native-svgMobile-EntwicklungSVG-Integrationreact-native-svg-transformer

SVG in React Native importieren: react-native-svg + SvgXml

SVG (Scalable Vector Graphics) ist in React-Native-Projekten zu einem wichtigen Grafikformat geworden. Im Vergleich zu klassischen Bitmap-Formaten wie PNG oder JPG bietet SVG verlustfreies Skalieren, kleinere Dateien und deutlich flexiblere Styling-Möglichkeiten. Dieser Artikel zeigt zwei gängige Methoden, um SVG-Dateien in React Native zu importieren und zu verwenden, ergänzt durch Codebeispiele und Hinweise zur Performance.

Warum SVG in React Native verwenden

SVG (Scalable Vector Graphics) bringt mehrere wichtige Vorteile für die Entwicklung mobiler Anwendungen mit sich:

  • Perfekte Skalierung: Grafiken bleiben unabhängig von Bildschirmgröße oder Auflösung gestochen scharf
  • Kleinere Dateigröße: SVG-Dateien sind in der Regel leichter als mehrere PNG-Asset-Sets
  • Dynamisches Styling: Farben, Größen und andere Attribute können dynamisch über Props angepasst werden
  • Konsistenz: Wird auf iOS- und Android-Plattformen identisch gerendert

Kernabhängigkeit: react-native-svg

Der erste Schritt zur Verwendung von SVG-Bildern in React Native ist die Installation der Bibliothek react-native-svg, mit der wir SVG-Dateien nativ in React-Native-Anwendungen rendern können.

npm install react-native-svg
# or
yarn add react-native-svg

Hinweis: Für React Native 0.60 und höher erfolgt das Linking in der Regel automatisch. Bei älteren Versionen müssen Sie native Module möglicherweise manuell verknüpfen.

Methode 1: Verwendung von react-native-svg-transformer

Das ist der am meisten empfohlene Ansatz, weil Sie SVG-Dateien direkt als Komponenten importieren können, genau wie in React-Projekten im Web.

Installation und Konfiguration

Installieren Sie zuerst den Transformer:

npm install --save-dev react-native-svg-transformer
# or
yarn add --dev react-native-svg-transformer

Erstellen oder bearbeiten Sie dann metro.config.js im Stammverzeichnis Ihres Projekts:

const { getDefaultConfig } = require("metro-config");

module.exports = (async () => {
  const {
    resolver: { sourceExts, assetExts },
  } = await getDefaultConfig();

  return {
    transformer: {
      babelTransformerPath: require.resolve("react-native-svg-transformer"),
    },
    resolver: {
      assetExts: assetExts.filter((ext) => ext !== "svg"),
      sourceExts: [...sourceExts, "svg"],
    },
  };
})();

Anwendungsbeispiel

Nach der Konfiguration können Sie SVG-Dateien direkt importieren:

import React from "react";
import { View } from "react-native";
import Logo from "./assets/logo.svg";

const MyComponent = () => (
  <View>
    <Logo width={100} height={100} fill="#3B82F6" />
  </View>
);

export default MyComponent;

Mit dieser Methode behandeln Sie SVG-Dateien wie normale React-Native-Komponenten, sodass sie sich in der gesamten App leicht importieren und wiederverwenden lassen.

Vorteile:

  • Typsicher mit hervorragender Developer Experience
  • Unterstützt dynamische Stilkontrolle über Props
  • Sehr gute Performance durch Transformation zur Build-Zeit

Einsatzfälle: Statische Icon-Bibliotheken, feste Assets in Design-Systemen

Methode 2: Verwendung von SvgXml für dynamisches Laden

Die Komponente SvgXml aus react-native-svg ermöglicht es Ihnen, SVGs aus XML-Strings zu rendern, was für dynamische Szenarien mehr Flexibilität bietet.

Grundlegende Verwendung

import React from "react";
import { SvgXml } from "react-native-svg";

const svgMarkup = `
  <svg width="100" height="100" viewBox="0 0 100 100">
    <circle cx="50" cy="50" r="40" fill="#10B981" />
  </svg>
`;

const DynamicIcon = () => <SvgXml xml={svgMarkup} width="100%" height="100%" />;

export default DynamicIcon;

Dynamisches Laden aus Dateien

SvgXml ist besonders nützlich, wenn Sie SVGs aus dem Dateisystem oder dem Netzwerk laden müssen:

import React, { useState, useEffect } from "react";
import { SvgXml } from "react-native-svg";
import RNFS from "react-native-fs";

const LoadableSvg = ({ filePath }) => {
  const [xml, setXml] = useState("");

  useEffect(() => {
    async function loadSvg() {
      try {
        const svgContent = await RNFS.readFile(filePath);
        setXml(svgContent);
      } catch (error) {
        console.error("Error loading SVG file", error);
      }
    }
    loadSvg();
  }, [filePath]);

  return xml ? <SvgXml xml={xml} width="100%" height="100%" /> : null;
};

Vorteile:

  • Unterstützt dynamisches Laden zur Laufzeit
  • Kann SVGs von APIs oder entfernten Servern abrufen
  • Flexibler Umgang mit nutzergenerierten Inhalten

Zu beachten: Bei wiederholtem Rendern komplexer oder dynamischer SVGs kann es zu Performance-Problemen kommen, da XML zur Laufzeit geparst wird.

Speicherung und Organisation von SVG-Dateien

In React-Native-Projekten speichern Sie SVG-Dateien typischerweise in einem Assets-Ordner innerhalb der Projektstruktur und importieren sie dann wie andere Ressourcen.

Empfohlene Verzeichnisstruktur:

src/
  assets/
    icons/
      arrow-left.svg
      arrow-right.svg
    logos/
      brand-primary.svg
      brand-secondary.svg
  components/
    icon.tsx

Vorschau und Validierung im SVG Viewer

Bevor Sie SVGs in Ihr React-Native-Projekt integrieren, empfiehlt es sich, sie im SVG Viewer vorab zu prüfen und zu validieren:

  1. viewBox prüfen: Stellen Sie sicher, dass die viewBox korrekt gesetzt ist, um Abschneide- oder Skalierungsprobleme zu vermeiden
  2. Überflüssigen Code bereinigen: Entfernen Sie Metadaten und Editor-Attribute, die von Design-Tools hinzugefügt wurden
  3. Pfade überprüfen: Bestätigen Sie, dass die Pfaddaten vollständig und optimiert sind
  4. Skalierung testen: Prüfen Sie Vorschauen in unterschiedlichen Größen, um sicherzustellen, dass die visuelle Wirkung den Erwartungen entspricht

Mit einem SVG Viewer erkennen Sie Probleme schon während der Entwicklung und sparen später Zeit beim Debugging auf mobilen Geräten.

SVGs für bessere Performance optimieren

Wenn Sie SVGs in React Native verwenden, ist die Dateioptimierung besonders wichtig:

  1. Pfade vereinfachen: Verwenden Sie Tools wie SVG Optimizer oder SVGO, um Pfadpunkte zu reduzieren
  2. Ungenutzte Elemente entfernen: Löschen Sie ausgeblendete Ebenen und leere Gruppen
  3. Doppelte Styles zusammenführen: Extrahieren Sie wiederholte Attribute in gemeinsame Styles
  4. Präzision kontrollieren: Begrenzen Sie Pfadkoordinaten auf 2 bis 3 Dezimalstellen

Optimierte SVGs laden nicht nur schneller, sondern rendern auch besser, besonders in Szenarien mit hoher Frequenz wie beim Scrollen durch Listen.

Praktische Empfehlungen

Auf Basis realer Projekte haben sich diese Empfehlungen bewährt:

  1. Einheitliche Benennung: Legen Sie klare Benennungsregeln für SVG-Dateien fest, zum Beispiel icon-home.svg, logo-brand.svg
  2. Gemeinsame Komponenten kapseln: Erstellen Sie eine Icon-Komponente, um alle Icon-Importe und ihre Nutzung zentral zu verwalten
  3. Typdefinitionen: Ergänzen Sie TypeScript-Typdefinitionen für SVG-Komponenten, um die Developer Experience zu verbessern
  4. Lazy-Loading-Strategie: Ziehen Sie bei großen Icon-Sets bedarfsgesteuertes Laden in Betracht, anstatt alles in ein Bundle zu packen

Zusammenfassung

Es gibt mehrere Wege, SVG in React Native zu verwenden, und die richtige Methode hängt von Ihrem konkreten Einsatzszenario ab:

  • Statische Icon-Bibliotheken: Verwenden Sie react-native-svg-transformer für die beste Developer Experience
  • Dynamische Inhalte: Verwenden Sie SvgXml für das Laden und Verarbeiten zur Laufzeit
  • Performance-kritische Szenarien: Optimieren Sie SVG-Dateien im Voraus und kontrollieren Sie ihre Komplexität

Unabhängig von der gewählten Methode lohnt es sich, die Dateiqualität vorher in einem SVG Viewer zu prüfen, um auf mobilen Geräten saubere visuelle Ergebnisse zu erhalten. Mit dem richtigen Workflow und passenden Tools wird SVG zu einer verlässlichen Grafikressource in React-Native-Anwendungen.

Nächste Schritte

  • Verwenden Sie SVG Viewer, um viewBox, Ausrichtung und Skalierung vor dem Import zu prüfen.
  • Führen Sie SVG Optimizer aus, um die SVG-Komplexität für flüssigeres mobiles Rendering zu reduzieren.
  • Konvertieren Sie Assets mit SVG to React Native, wenn Sie sofort nutzbaren Komponenten-Code möchten.

Verwandte Artikel

Entdecken Sie weitere SVG-Workflows und Produktionstipps.