Symlink Issue switching to SDK46 from 44

I started a new mobile app project and since we have our own mobile components for reusability, we also use symlinking from the local component to the Expo app to make sure it’s being developed properly. We have successfully linked prior Expo apps using SDK 44, but in this new project, we decided to use the most recent 46. It seems when I update the metro.config file the same as before, Expo crashes.

My laptop is an MacBook Pro with:

  • 12.5.1 (Monterey)
  • 2.4 GHz 8-Core Intel Core i9
  • 64 GB 2667 MHz DDR4

I have tried this in multiple repos, as well as my co-worker seeing the same issue.

I have also uninstalled Xcode & re-installed with the same outcome.

What platform(s) does this occur on?

iOS

SDK Version

^46.0.8

Environment

  expo-env-info 1.0.5 environment info:
    System:
      OS: macOS 12.5.1
      Shell: 5.8.1 - /bin/zsh
    Binaries:
      Node: 16.15.0 - ~/.nvm/versions/node/v16.15.0/bin/node
      Yarn: 1.22.5 - ~/.yarn/bin/yarn
      npm: 8.5.5 - ~/.nvm/versions/node/v16.15.0/bin/npm
    Managers:
      CocoaPods: 1.10.1 - /usr/local/bin/pod
    SDKs:
      iOS SDK:
        Platforms: DriverKit 21.4, iOS 15.4, macOS 12.3, tvOS 15.4, watchOS 8.5
    IDEs:
      Android Studio: 2021.2 AI-212.5712.43.2112.8512546
      Xcode: 13.3/13E113 - /usr/bin/xcodebuild
    npmPackages:
      expo: ^46.0.8 => 46.0.8 
      react: 18.0.0 => 18.0.0 
      react-dom: 18.0.0 => 18.0.0 
      react-native: ^0.69.4 => 0.69.4 
      react-native-web: ~0.18.7 => 0.18.7 
    npmGlobalPackages:
      expo-cli: 6.0.5
    Expo Workflow: managed

default metro.config

const { getDefaultConfig } = require('expo/metro-config');
const path = require('path');

// const workspaceRoot = path.resolve(__dirname, '../myComponentLib');  // this gets uncommented when using a link
const defaultConfig = getDefaultConfig(__dirname);

defaultConfig.transformer.babelTransformerPath = require.resolve(
  'react-native-svg-transformer',
);

const assetExts = defaultConfig.resolver.assetExts;
const sourceExts = defaultConfig.resolver.sourceExts;

defaultConfig.resolver = {
  assetExts: assetExts.filter((ext) => ext !== 'svg'),
  sourceExts: [...sourceExts, 'svg'],
};
defaultConfig.resolver.nodeModulesPaths = [
  path.resolve(__dirname, 'node_modules'),
  // path.resolve(workspaceRoot, 'packages/mobile/node_modules'), // this gets uncommented when using a link
];
// defaultConfig.watchFolders = [path.resolve(workspaceRoot)]; // this gets uncommented when using a link

module.exports = defaultConfig;

I am curious, is there a difference in linking between the different SDKs now?

Minimal reproducible example