0

I'm trying to use SVG icons in my react native android app (running Expo). I've tried cleaning up the builds, starting fresh but it just does not work at all. Here is a sample source code I've used, package.json and the screenshot of the error that appears.

    import Svg, { Circle } from 'react-native-svg'

     <View style={styles.iconContainer}>
              <Ionicons name="mail" size={60} color="#4CAF50" />
            </View>

            <Svg height="100" width="100" viewBox="0 0 100 100">
              <Circle cx="50" cy="50" r="45" stroke="blue" strokeWidth="2.5" fill="green" />
            </Svg>

this is my package.json

    {
      "name": "********",
      "main": "expo-router/entry",
      "version": "1.0.0",
      "scripts": {
        "start": "expo start",
        "reset-project": "node ./scripts/reset-project.js",
        "android": "expo run:android",
        "ios": "expo run:ios",
        "web": "expo start --web",
        "lint": "expo lint",
        "format": "prettier --write **/*.{js,ts,tsx,json}"
      },
      "dependencies": {
        "@expo/vector-icons": "^14.1.0",
        "@react-native-async-storage/async-storage": "2.1.2",
        "@react-navigation/bottom-tabs": "^7.3.10",
        "@react-navigation/elements": "^2.3.8",
        "@react-navigation/native": "^7.1.6",
        "expo": "~53.0.22",
        "expo-blur": "~14.1.5",
        "expo-constants": "~17.1.7",
        "expo-dev-client": "~5.2.4",
        "expo-haptics": "~14.1.4",
        "expo-image": "~2.4.0",
        "expo-linking": "~7.1.7",
        "expo-router": "~5.1.5",
        "expo-splash-screen": "~0.30.10",
        "expo-status-bar": "~2.2.3",
        "expo-symbols": "~0.4.5",
        "expo-system-ui": "~5.0.11",
        "expo-web-browser": "~14.2.0",
        "lucide-react-native": "^0.542.0",
        "prettier": "^3.6.2",
        "react": "19.0.0",
        "react-dom": "19.0.0",
        "react-native": "0.79.5",
        "react-native-gesture-handler": "~2.24.0",
        "react-native-mmkv": "^3.3.1",
        "react-native-nitro-modules": "^0.29.3",
        "react-native-reanimated": "~3.17.4",
        "react-native-safe-area-context": "5.4.0",
        "react-native-screens": "~4.11.1",
        "react-native-web": "~0.20.0",
        "react-native-webview": "13.13.5",
        "react-native-worklets": "^0.5.0",
        "react-native-svg": "15.11.2"
      },
      "devDependencies": {
        "@babel/core": "^7.25.2",
        "@types/react": "~19.0.10",
        "eslint": "^9.25.0",
        "eslint-config-expo": "~9.2.0",
        "typescript": "~5.8.3"
      },
      "private": true
    }

And this is the error I'm facing: enter image description here

Either I get the above error or

ViewManagerREsolver returned null for either RNSVGViewAndroid or RCTRNSVGSvgViewAndroid

This is also my metro config

    const { getDefaultConfig } = require('expo/metro-config');

    module.exports = (() => {
      const config = getDefaultConfig(__dirname);
      
      // For inline SVG components, use default configuration
      return config;
    })();

and my babel config

    module.exports = function (api) {
      api.cache(true);
      return {
        presets: ['babel-preset-expo'],
        plugins: ['react-native-reanimated/plugin', 'react-native-worklets/plugin'],
      };
    };

What could be the issue? Thanks!

1
  • Are you using the Expo managed workflow or the bare workflow? Commented Sep 9 at 12:18

1 Answer 1

0

react-native-svg is a native dependency, and after installing native dependencies, you need to run npx expo run:android again.

You can also try deleting the app, and running npx expo prebuild --clean to regenerate the native code.

Sign up to request clarification or add additional context in comments.

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.