react-nativeexpometro-bundler

Expo 53 Upgrade. [runtime not ready]: TypeError: Cannot read property 'v1' of undefined, js engine: hermes


I'm trying to upgrade my Expo React Native app from V52.0 to V53.0.

After running npx expo install expo@latest and npx expo install --check to update the dependencies I start the server and I get this error as soon as I run it on Expo Go in my Iphone 13 Pro.

[runtime not ready]: TypeError: Cannot read property 'v1' of undefined, js engine: hermes

anonymous
    &platform=ios&dev=true&hot=false&lazy=true&transform.engine=hermes&transform.bytecode=1&transform.routerRoot=app&unstable_transformProfile=hermes-stable:436438:38
loadModuleImplementation
    &platform=ios&dev=true&hot=false&lazy=true&transform.engine=hermes&transform.bytecode=1&transform.routerRoot=app&unstable_transformProfile=hermes-stable:253:13
guardedLoadModule
    &platform=ios&dev=true&hot=false&lazy=true&transform.engine=hermes&transform.bytecode=1&transform.routerRoot=app&unstable_transformProfile=hermes-stable:162:37
metroRequire
    &platform=ios&dev=true&hot=false&lazy=true&transform.engine=hermes&transform.bytecode=1&transform.routerRoot=app&unstable_transformProfile=hermes-stable:82:91
anonymous
    &platform=ios&dev=true&hot=false&lazy=true&transform.engine=hermes&transform.bytecode=1&transform.routerRoot=app&unstable_transformProfile=hermes-stable:119969:21
loadModuleImplementation
    &platform=ios&dev=true&hot=false&lazy=true&transform.engine=hermes&transform.bytecode=1&transform.routerRoot=app&unstable_transformProfile=hermes-stable:253:13
guardedLoadModule
    &platform=ios&dev=true&hot=false&lazy=true&transform.engine=hermes&transform.bytecode=1&transform.routerRoot=app&unstable_transformProfile=hermes-stable:162:37
metroRequire
    &platform=ios&dev=true&hot=false&lazy=true&transform.engine=hermes&transform.bytecode=1&transform.routerRoot=app&unstable_transformProfile=hermes-stable:82:91
anonymous
    &platform=ios&dev=true&hot=false&lazy=true&transform.engine=hermes&transform.bytecode=1&transform.routerRoot=app&unstable_transformProfile=hermes-stable:119934:28
loadModuleImplementation
    &platform=ios&dev=true&hot=false&lazy=true&transform.engine=hermes&transform.bytecode=1&transform.routerRoot=app&unstable_transformProfile=hermes-stable:253:13
guardedLoadModule
    &platform=ios&dev=true&hot=false&lazy=true&transform.engine=hermes&transform.bytecode=1&transform.routerRoot=app&unstable_transformProfile=hermes-stable:162:37
metroRequire
    &platform=ios&dev=true&hot=false&lazy=true&transform.engine=hermes&transform.bytecode=1&transform.routerRoot=app&unstable_transformProfile=hermes-stable:82:91
anonymous
    &platform=ios&dev=true&hot=false&lazy=true&transform.engine=hermes&transform.bytecode=1&transform.routerRoot=app&unstable_transformProfile=hermes-stable:119722:30
loadModuleImplementation
    &platform=ios&dev=true&hot=false&lazy=true&transform.engine=hermes&transform.bytecode=1&transform.routerRoot=app&unstable_transformProfile=hermes-stable:253:13
guardedLoadModule
    &platform=ios&dev=true&hot=false&lazy=true&transform.engine=hermes&transform.bytecode=1&transform.routerRoot=app&unstable_transformProfile=hermes-stable:162:37
metroRequire
    &platform=ios&dev=true&hot=false&lazy=true&transform.engine=hermes&transform.bytecode=1&transform.routerRoot=app&unstable_transformProfile=hermes-stable:82:91
anonymous
    &platform=ios&dev=true&hot=false&lazy=true&transform.engine=hermes&transform.bytecode=1&transform.routerRoot=app&unstable_transformProfile=hermes-stable:119575:24
loadModuleImplementation
    &platform=ios&dev=true&hot=false&lazy=true&transform.engine=hermes&transform.bytecode=1&transform.routerRoot=app&unstable_transformProfile=hermes-stable:253:13
guardedLoadModule
    &platform=ios&dev=true&hot=false&lazy=true&transform.engine=hermes&transform.bytecode=1&transform.routerRoot=app&unstable_transformProfile=hermes-stable:162:37
metroRequire
    &platform=ios&dev=true&hot=false&lazy=true&transform.engine=hermes&transform.bytecode=1&transform.routerRoot=app&unstable_transformProfile=hermes-stable:82:91
anonymous
    &platform=ios&dev=true&hot=false&lazy=true&transform.engine=hermes&transform.bytecode=1&transform.routerRoot=app&unstable_transformProfile=hermes-stable:117333:49
loadModuleImplementation
    &platform=ios&dev=true&hot=false&lazy=true&transform.engine=hermes&transform.bytecode=1&transform.routerRoot=app&unstable_transformProfile=hermes-stable:253:13
guardedLoadModule
    &platform=ios&dev=true&hot=false&lazy=true&transform.engine=hermes&transform.bytecode=1&transform.routerRoot=app&unstable_transformProfile=hermes-stable:162:37
metroRequire
    &platform=ios&dev=true&hot=false&lazy=true&transform.engine=hermes&transform.bytecode=1&transform.routerRoot=app&unstable_transformProfile=hermes-stable:82:91
anonymous
    &platform=ios&dev=true&hot=false&lazy=true&transform.engine=hermes&transform.bytecode=1&transform.routerRoot=app&unstable_transformProfile=hermes-stable:107257:45
loadModuleImplementation
    &platform=ios&dev=true&hot=false&lazy=true&transform.engine=hermes&transform.bytecode=1&transform.routerRoot=app&unstable_transformProfile=hermes-stable:253:13
guardedLoadModule
    &platform=ios&dev=true&hot=false&lazy=true&transform.engine=hermes&transform.bytecode=1&transform.routerRoot=app&unstable_transformProfile=hermes-stable:162:37
metroRequire
    &platform=ios&dev=true&hot=false&lazy=true&transform.engine=hermes&transform.bytecode=1&transform.routerRoot=app&unstable_transformProfile=hermes-stable:82:91
anonymous
    &platform=ios&dev=true&hot=false&lazy=true&transform.engine=hermes&transform.bytecode=1&transform.routerRoot=app&unstable_transformProfile=hermes-stable:3845:22
loadModuleImplementation
    &platform=ios&dev=true&hot=false&lazy=true&transform.engine=hermes&transform.bytecode=1&transform.routerRoot=app&unstable_transformProfile=hermes-stable:253:13
guardedLoadModule
    &platform=ios&dev=true&hot=false&lazy=true&transform.engine=hermes&transform.bytecode=1&transform.routerRoot=app&unstable_transformProfile=hermes-stable:155:46
metroRequire
    &platform=ios&dev=true&hot=false&lazy=true&transform.engine=hermes&transform.bytecode=1&transform.routerRoot=app&unstable_transformProfile=hermes-stable:82:91
global
    &platform=ios&dev=true&hot=false&lazy=true&transform.engine=hermes&transform.bytecode=1&transform.routerRoot=app&unstable_transformProfile=hermes-stable:595139:3

This is my package.json:

{
 
  "dependencies": {
    "@expo/config-plugins": "~10.0.0",
    "@expo/metro-config": "~0.20.0",
    "@expo/metro-runtime": "~5.0.4",
    "@expo/react-native-action-sheet": "^4.0.1",
    "@react-native-community/datetimepicker": "8.3.0",
    "@react-navigation/bottom-tabs": "^6.5.7",
    "@react-navigation/material-top-tabs": "^6.6.14",
    "@react-navigation/native": "^6.1.6",
    "@react-navigation/native-stack": "^6.9.13",
    "@reduxjs/toolkit": "^1.9.5",
    "aws-sdk": "^2.1415.0",
    "axios": "^1.4.0",
    "d3-array": "^1.2.0",
    "d3-interpolate-path": "2.0.0",
    "d3-scale": "^1.0.6",
    "d3-shape": "^1.0.6",
    "expo": "^53.0.7",
    "expo-av": "~15.1.4",
    "expo-camera": "~16.1.6",
    "expo-checkbox": "~4.1.4",
    "expo-constants": "~17.1.5",
    "expo-dev-client": "~5.1.8",
    "expo-document-picker": "~13.1.5",
    "expo-file-system": "~18.1.9",
    "expo-font": "~13.3.1",
    "expo-image": "~2.1.6",
    "expo-image-manipulator": "~13.1.5",
    "expo-image-picker": "~16.1.4",
    "expo-linear-gradient": "~14.1.4",
    "expo-linking": "~7.1.4",
    "expo-notifications": "~0.31.1",
    "expo-secure-store": "~14.2.3",
    "expo-splash-screen": "~0.30.8",
    "expo-status-bar": "~2.2.3",
    "expo-store-review": "~8.1.5",
    "expo-updates": "~0.28.12",
    "expo-web-browser": "~14.1.6",
    "formik": "^2.4.2",
    "husky": "^9.1.7",
    "lint-staged": "^15.4.3",
    "metro-react-native-babel-transformer": "^0.77.0",
    "metro-runtime": "^0.79.1",
    "react": "19.0.0",
    "react-dom": "19.0.0",
    "react-native": "0.79.2",
    "react-native-confirmation-code-field": "^7.3.1",
    "react-native-country-picker-modal": "^2.0.0",
    "react-native-dropdown-picker": "^5.4.6",
    "react-native-gesture-handler": "~2.24.0",
    "react-native-get-random-values": "~1.11.0",
    "react-native-otp-entry": "^1.8.2",
    "react-native-pager-view": "6.7.1",
    "react-native-reanimated": "~3.17.4",
    "react-native-render-html": "^6.3.4",
    "react-native-responsive-screen": "^1.4.2",
    "react-native-root-toast": "^3.5.1",
    "react-native-safe-area-context": "5.4.0",
    "react-native-screens": "~4.10.0",
    "react-native-svg": "15.11.2",
    "react-native-svg-transformer": "^1.0.0",
    "react-native-tab-view": "^3.5.2",
    "react-native-web": "^0.20.0",
    "react-native-webview": "13.13.5",
    "react-phone-number-input": "^3.4.11",
    "react-query": "^3.39.3",
    "react-redux": "^8.1.1",
    "redux-logger": "^3.0.6",
    "redux-persist": "^6.0.0",
    "redux-saga": "^1.2.3",
    "styled-components": "^5.3.11",
    "yup": "^1.2.0"
  },
  "devDependencies": {
    "@babel/core": "^7.24.0",
    "@babel/plugin-proposal-export-namespace-from": "^7.18.9",
    "@commitlint/config-conventional": "^19.7.1",
    "@types/react": "~19.0.10",
    "@types/styled-components": "^5.1.26",
    "@typescript-eslint/eslint-plugin": "^6.7.0",
    "commitlint": "^19.7.1",
    "eslint": "^8.50.0",
    "eslint-config-prettier": "^8.8.0",
    "eslint-config-standard-with-typescript": "^39.1.0",
    "eslint-plugin-import": "^2.27.5",
    "eslint-plugin-n": "^15.7.0",
    "eslint-plugin-prettier": "^4.2.1",
    "eslint-plugin-promise": "^6.1.1",
    "prettier": "2.8.8",
    "react-native-dotenv": "^3.4.9",
    "typescript": "~5.8.3"
  },
  "name": "test",
  "version": "1.0.0",
  "private": true,
  "main": "index.tsx"
}

What I've tried so far:

Has anyone encountered this after upgrading?


Solution

  • Add into metro.config.js:

    config.resolver.unstable_enablePackageExports = false;
    

    Example content of this file:

    const { getDefaultConfig } = require('expo/metro-config');
    
    /** @type {import('expo/metro-config').MetroConfig} */
    const config = getDefaultConfig(__dirname);
    
    config.resolver.unstable_enablePackageExports = false;
    
    module.exports = config;