// Metro config for Expo inside a pnpm monorepo. // Key points: // - Watch the repo root so workspace packages (@chat-app/shared, db-types) are seen. // - Disable hierarchical lookup so Metro uses only the hoisted/workspace node_modules. // - Add nodeModulesPaths so symlinked workspace deps resolve. const { getDefaultConfig } = require('expo/metro-config'); const path = require('path'); const projectRoot = __dirname; const workspaceRoot = path.resolve(projectRoot, '../..'); const config = getDefaultConfig(projectRoot); config.watchFolders = [workspaceRoot]; config.resolver.nodeModulesPaths = [ path.resolve(projectRoot, 'node_modules'), path.resolve(workspaceRoot, 'node_modules'), ]; config.resolver.disableHierarchicalLookup = true; // Make Metro honor the "exports" field in package.json. @chat-app/shared // maps subpaths like "./supabase" -> "./src/supabase/index.ts" via exports; // without this flag the eager bundler (preview/production) ignores them // and falls back to legacy main-only resolution, which 404s on subpaths. config.resolver.unstable_enablePackageExports = true; module.exports = config;