Expo doctor reports android/ios module directories as gitignored after pnpm upgrade (10.22 ā 11.5.2)
After I updated pnpm from 10.22 to 11.5.2, expo-doctor now reports a failed check that wasn't failing before.
My project is a monorepo:
/app
/shared
/web
The error from expo-doctor:
18/19 checks passed. 1 checks failed. Possible issues detected:
Use the --verbose flag to see more details about passed checks.
ā Check for common project setup issues
The "android" and/or "ios" directories (./modules/your-module/[android|ios])
for local Expo modules are gitignored, and they should not be. This is often
due to overly general gitignore rules.
Advice:
Use patterns like "/android" and "/ios" in your .gitignore file to exclude
only the top-level "android" and "ios" directories, and not those in the
modules directory.
1 check failed, indicating possible issues with the project.
My root .gitignore:
# dependencies
node_modules/
# local task/worktree scratch files
.ji/
# Expo
.expo/
dist/
dist-test/
web-build/
expo-env.d.ts
# Native
.kotlin/
*.orig.*
*.jks
*.p8
*.p12
*.key
*.mobileprovision
# Metro
.metro-health-check*
# debug
npm-debug.*
yarn-debug.*
yarn-error.*
# macOS
.DS_Store
*.pem
# local env files
.env*.local
.settings.local.*
# typescript
*.tsbuildinfo
playwright/
test-results
# Turborepo
.turbo
# App builds
app/ios
app/android
# Security reports
.ash/
# Git worktrees
.worktrees/
My app/.gitignore:
# @generated expo-cli sync-2b81b286409207a5da26e14c78851eb30d8ccbdb
# The following patterns were generated by expo-cli
expo-env.d.ts
# @end expo-cli
.claude/settings.local.json
My app/modules/[my-module]/.gitignore:
build/
**/build/
*.iml
Why is this happening, and which rule is causing the android/ios module directories to be ignored?