expo-video NativeVideoView.js served as empty file by Metro bundler in Expo SDK 55 / React Native 0.83
06:03 14 Apr 2026

After upgrading to Expo SDK 55 (React Native 0.83, New Architecture), my app crashes when loading any screen that uses expo-video. In React Native DevTools, NativeVideoView.js appears completely empty (just line 1, no content), and I get:
Failed to fetch source url "" for scriptId 5: Can't parse requested URL ""

The actual file on disk at node_modules/expo-video/build/NativeVideoView.js has correct content:

import { requireNativeViewManager } from 'expo-modules-core';
import { Platform } from 'react-native';
const defaultViewName = Platform.OS === 'android' ? 'SurfaceVideoView' : 'VideoView';
export default requireNativeViewManager('ExpoVideo', defaultViewName);

I have already tried the following things:

  • prebuild --clean + run:ios multiple times

  • Removed useFrameworks: "static" from app.config.ts and Podfile.properties.json

  • Cleared Metro cache with expo start -c

  • Deleted node_modulesios/Podsios/Podfile.lock and reinstalled

  • Cleared Xcode DerivedData

  • Added unstable_conditionNames: ['react-native', 'require', 'default'] to metro.config.js

My setup:

  • Expo SDK 55.0.15

  • expo-video55.0.15

  • react-native0.83.4

  • react-native-reanimated4.2.1

  • react-native-worklets0.7.2

expo-modules-core is not at top-level node_modules — it lives nested inside expo/node_modules/expo-modules-core

My metro config:
const { wrapWithReanimatedMetroConfig } = require('react-native-reanimated/metro-config');

const { getSentryExpoConfig } = require("@sentry/react-native/metro");

const config = getSentryExpoConfig(__dirname);

config.resolver.sourceExts.push('cjs');

config.resolver.unstable_conditionNames = ['react-native', 'require', 'default'];

module.exports = wrapWithReanimatedMetroConfig(config);

Why is Metro bundling NativeVideoView.js as an empty file, and how do I force it to resolve expo-modules-core to its .native.tsx platform-specific files correctly in Expo SDK 55?

react-native expo metro-bundler