react-native-portal breaks app after install & setup
Author: ettmetalCreated Aug 13, 2026Updated Aug 13, 2026
Current Behavior
Following instructions from https://tamagui.dev/ui/portal to install react-native-portal as recommended, the app builds and reports an error:
- iOS: "Unimplemented component: " with a red screen overlay. The app continues to work underneath the overlay, though no portal-using components funciton
- android: "Can't find ViewManager 'PortalView' nor 'RCTPortalView' in ViewManagerRegistry, existing names are...[truncated]" as a dismissible error - dismissing shows the expo default screen
N.B: removing tamagui's setup import restores functionality, but does not allow portalled components access to contexts.
Expected Behavior
Portal-using components continue to work, and now have access to context values.
Tamagui Version
2.7.6Platform (Web, iOS, Android)
iOS, AndroidReproduction
In an existing tamagui / expo project:
`$ npx expo install --check`
`$ npx tamagui check`
`$ npm i react-native-portal`
Place `import '@tamagui/native/setup-teleport';` as first import in root of app
`$ npx expo prebuild --clean`
`$ npx expo start`System Info
System:
OS: macOS 15.7.7
CPU: (14) arm64 Apple M4 Pro
Memory: 217.13 MB / 48.00 GB
Shell: 5.9 - /bin/zsh
Binaries:
Node: 25.2.0 - /Users/[redacted]/.local/share/mise/installs/node/latest/bin/node
npm: 11.19.0 - /Users/[redacted]/.local/share/mise/installs/node/latest/bin/npm
Watchman: 2026.06.29.00 - /opt/homebrew/bin/watchman
Browsers:
Firefox: 153.0.3
Safari: 26.5.2
npmPackages:
@babel/core: ^7.25.2 => 7.29.7
@expo/vector-icons: ^15.0.2 => 15.1.1
@react-navigation/bottom-tabs: ^7.3.10 => 7.18.16
@react-navigation/elements: ^2.3.8 => 2.9.38
@react-navigation/native: ^7.1.6 => 7.3.16
@tamagui/babel-plugin: ^2.0.0 => 2.7.6
@tamagui/cli: ^2.7.6 => 2.7.6
@tamagui/config: ^2.0.0 => 2.7.6
@tamagui/lucide-icons-2: ^2.0.0 => 2.7.6
@tamagui/metro-plugin: ^2.0.0 => 2.7.6
@tamagui/portal: ^2.0.0 => 2.7.6
@types/lodash: ^4.17.24 => 4.17.25
@types/react: ~19.2.4 => 19.2.18
eslint: ^9.39.5 => 9.39.5
eslint-config-expo: ~57.0.1 => 57.0.1
eslint-plugin-react-hooks: ^7.1.1 => 7.1.1
expo: ^57.0.10 => 57.0.12
expo-blur: ~57.0.2 => 57.0.2
expo-constants: ~57.0.9 => 57.0.10
expo-font: ~57.0.1 => 57.0.1
expo-haptics: ~57.0.1 => 57.0.1
expo-image: ~57.0.2 => 57.0.2
expo-linking: ~57.0.5 => 57.0.5
expo-router: ~57.0.10 => 57.0.12
expo-splash-screen: ~57.0.5 => 57.0.6
expo-status-bar: ~57.0.1 => 57.0.1
expo-symbols: ~57.0.1 => 57.0.2
expo-system-ui: ~57.0.2 => 57.0.2
expo-web-browser: ~57.0.2 => 57.0.2
globals: ^17.9.0 => 17.11.0
lodash: ^4.17.21 => 4.18.1
prettier: ~3.6.2 => 3.6.2
react: 19.2.3 => 19.2.3
react-dom: 19.2.3 => 19.2.3
react-native: ~0.86.2 => 0.86.2
react-native-gesture-handler: ~2.32.0 => 2.32.0
react-native-reanimated: 4.5.1 => 4.5.1
react-native-safe-area-context: ~5.7.0 => 5.7.0
react-native-screens: ~4.26.0 => 4.26.2
react-native-svg: 15.15.4 => 15.15.4
react-native-teleport: ^1.1.12 => 1.1.12
react-native-web: ^0.21.2 => 0.21.2
react-native-webview: 13.16.1 => 13.16.1
react-native-worklets: 0.10.1 => 0.10.1
tamagui: ^2.0.0 => 2.7.6
type-fest: ^4.41.0 => 4.41.0
typedash: ^3.2.5 => 3.3.3
typescript: ~6.0.3 => 6.0.3
typescript-eslint: ^8.66.0 => 8.67.0Source: tamagui/tamagui