Skip to content

SVG library for React Native, React Native Web, and plain React web projects.

License

Notifications You must be signed in to change notification settings

julia-script/react-native-svg

This branch is 327 commits behind software-mansion/react-native-svg:main.

Folders and files

NameName
Last commit message
Last commit date
Nov 7, 2022
Aug 16, 2022
Nov 15, 2022
Nov 15, 2022
Nov 15, 2022
Sep 15, 2022
Nov 7, 2022
Nov 15, 2022
Nov 3, 2022
Aug 4, 2019
Sep 9, 2019
Aug 16, 2022
Dec 8, 2022
Dec 5, 2022
Aug 16, 2022
Jan 29, 2019
Nov 26, 2020
Sep 9, 2019
Jul 14, 2022
Nov 3, 2022
Jan 17, 2016
Mar 7, 2022
Nov 13, 2019
Aug 26, 2019
Mar 7, 2022
Oct 23, 2019
Dec 10, 2019
Jul 25, 2022
Jan 27, 2016
Nov 30, 2022
Nov 3, 2022
Aug 16, 2022
Nov 3, 2022
Jul 14, 2022
Nov 15, 2022
Nov 3, 2022
Jul 22, 2022
Nov 3, 2022

Repository files navigation

React Native SVG at Software Mansion

Version NPM

react-native-svg provides SVG support to React Native on iOS, Android, macOS, Windows, and a compatibility layer for the web.

Check out the Example app

Features

  1. Supports most SVG elements and properties (Rect, Circle, Line, Polyline, Polygon, G ...).
  2. Easy to convert SVG code to react-native-svg.

Installation

With expo-cli

✅ The Expo client app comes with the native code installed!

Install the JavaScript with:

expo install react-native-svg

📚 See the Expo docs for more info or jump ahead to Usage.

With react-native-cli

  1. Install library

    from npm

    npm install react-native-svg

    from yarn

    yarn add react-native-svg
  2. Link native code

    cd ios && pod install

Supported react-native versions

react-native-svg react-native
3.2.0 0.29
4.2.0 0.32
4.3.0 0.33
4.4.0 0.38
4.5.0 0.40
5.1.8 0.44
5.2.0 0.45
5.3.0 0.46
5.4.1 0.47
5.5.1 >=0.50
>=6 >=0.50
>=7 >=0.57.4
>=8 >=0.57.4
>=9 >=0.57.4
>=12.3.0 >=0.64.0

Support for Fabric

Fabric is React Native's new rendering system. As of version 13.0.0 of this project, Fabric is supported only for react-native 0.69.0+. Support for earlier versions is not possible due to breaking changes in configuration.

react-native-svg react-native
>=13.0.0 0.69.0+
>=13.6.0 0.70.0+

Troubleshooting

Problems with Proguard

When Proguard is enabled (which it is by default for Android release builds), it causes runtime error. To avoid this, add an exception to android/app/proguard-rules.pro:

-keep public class com.horcrux.svg.** {*;}

If you have build errors, then it might be caused by caching issues, please try:

watchman watch-del-all
rm -fr $TMPDIR/react-*
react-native start --reset-cache

Or,

rm -rf node_modules
yarn
react-native start --reset-cache

Unexpected behavior

If you have unexpected behavior, please create a clean project with the latest versions of react-native and react-native-svg

react-native init CleanProject
cd CleanProject/
yarn add react-native-svg
cd ios && pod install && cd ..

Make a reproduction of the problem in App.js

react-native run-ios
react-native run-android

Adding Windows support

  1. npx react-native-windows-init --overwrite
  2. cd windows\<AppName>
  3. Open <AppName>.vcxproj

RN 0.68+

  1. Scroll to the bottom until you find:
    <ItemGroup>
       <PackageReference Include="Microsoft.Windows.CppWinRT" Version="X.X.XXXXXX.X" />
    </ItemGroup>
  2. Add the following to that <ItemGroup>
    <PackageReference Include="Win2D.uwp" Version="1.26.0" />

Pre RN 0.68

  1. Scroll to the bottom until you find:

    <ImportGroup Label="ExtensionTargets">
  2. Add the following to that <ImportGroup>

    <Import Project="$(SolutionDir)\packages\Win2D.uwp.1.26.0\build\native\Win2D.uwp.targets" Condition="Exists('$(SolutionDir)\packages\Win2D.uwp.1.26.0\build\native\Win2D.uwp.targets')" />

Opening issues

Verify that it is still an issue with the latest version as specified in the previous step. If so, open a new issue, include the entire App.js file, specify what platforms you've tested, and the results of running this command:

react-native info

If you suspect that you've found a spec conformance bug, then you can test using your component in a react-native-web project by forking this codesandbox, to see how different browsers render the same content: https://codesandbox.io/s/pypn6mn3y7 If any evergreen browser with significant userbase or other svg user agent renders some svg content better, or supports more of the svg and related specs, please open an issue asap.

Usage

To check how to use the library, see USAGE.md

TODO:

  1. Filters (connected PR)

Known issues:

  1. Unable to apply focus point of RadialGradient on Android.

About

SVG library for React Native, React Native Web, and plain React web projects.

Resources

License

Code of conduct

Stars

Watchers

Forks

Packages

No packages published

Languages

  • Java 38.5%
  • TypeScript 23.3%
  • Objective-C++ 20.3%
  • C++ 12.1%
  • Objective-C 4.1%
  • JavaScript 0.7%
  • Other 1.0%