React Native
How do I fix "Tried to register two views with the same name" (RNCPicker, RNSVGCircle)?
Your app bundles two copies of the same native package, so its view gets registered twice. Find the duplicate with npx expo-doctor or yarn why, line up your version with npx expo install, and if a library still depends on its own copy, force a single one with resolutions or overrides.
Updated October 31, 2026
If you’ve just added or updated a library and now get a red screen that says “Invariant Violation: Tried to register two views with the same name RNSVGCircle”, the message makes it sound like your code did something wrong. It didn’t. The name at the end tells you which package is installed twice, and the fix is a change to your dependencies, not your code.
Why it happens
Each native view in a library is registered under a name when the library’s JavaScript loads, and each name can only be registered once. If your app’s bundle contains two copies of that library’s JavaScript, the second copy tries to register the same name, and the app stops with this error.
A second copy gets installed when version ranges don’t overlap. So if you install one version and a library you use depends on an incompatible one, the second copy ends up inside that library’s own node_modules folder. Only one version of a native module can be compiled into your app, but both copies of its JavaScript can end up in the bundle.
The name points at the package:
RNSVG...names, likeRNSVGCircleorRNSVGPath, come fromreact-native-svg.RNCPickercomes from@react-native-picker/picker. The older@react-native-community/picker, which was renamed to that package, registers the same name, so having both installed causes this too.
How to fix it
-
Find the duplicates. From SDK 54,
npx expo-doctorchecks for duplicate native modules and lists where each copy is installed. You can also ask your package manager why a package is there:npx expo-doctor npm why react-native-svg yarn why react-native-svgLook for two or more different versions.
-
Line up your own version with your Expo SDK.
npx expo install react-native-svginstalls the version SDK 55 expects (15.15.3), andnpx expo install --fixupdates every package that’s off. -
Deduplicate. Run
npm dedupe,yarn dedupe(Yarn 2 and newer), ornpx yarn-deduplicate && yarn(Yarn 1), then check again. -
Force one version if a library still depends on its own copy. Add a resolution to
package.jsonand reinstall. Yarn usesresolutions, and npm usesoverrideswith the same shape:{ "resolutions": { "react-native-svg": "15.15.3" } }This makes every copy that version, so keep it only as long as you need it, and check it again when you upgrade your SDK.
-
Remove the old picker if you have it, with
npm uninstall @react-native-community/picker, and change its imports to@react-native-picker/picker. -
Restart with a clean cache using
npx expo start --clear. If a native version changed, make a new development build too.
How you know it’s fixed
npx expo-doctor no longer reports a duplicate, the why command shows a single version, and the screen with the chart, icon, or picker opens on both platforms.
If it still happens
In a monorepo, each app can pull in its own copy. From SDK 55, experiments.autolinkingModuleResolution is on by default for apps in monorepos, which makes the bundle use the same copy of each native module that’s compiled into the app. Outside a monorepo you can set it yourself in app.json from SDK 54. It’s documented as a workaround for duplicates you can’t remove, though, and the duplicate stays in node_modules, so we’d still treat deduplicating as the real fix.
Ask the agent
If your app is in Draftbit, paste this into the agent, and it can read your code and make the change for you.
My app crashes with "Tried to register two views with the same name". Find which package is installed twice, make every copy use the version that matches our Expo SDK, and confirm the app opens on iOS and Android.