appwrite / appwrite/sdk-for-react-native
App crashes at launch on Expo SDK 54: expo-file-system@18 pin conflicts with the app's expo-file-system 19
- Dominant language
- TypeScript
- Stars
- 4.3k
- Forks
- 36
- Avg merge
- 2h 50m
- Merged PRs (30d)
- 1
Description
## 👟 Reproduction steps
```bash
npx create-expo-app@latest myapp --template blank-typescript # Expo SDK 54
cd myapp
npm install react-native-appwrite # 0.34.0
npx expo prebuild --platform android --no-install
./android/gradlew -p android assembleRelease
# install and launch the APK on a device/emulator
```
## 👎 Actual Behavior
The app crashes immediately at launch:
```
FATAL EXCEPTION: pool-2-thread-1
Process: io.appwrite.connectqa
java.lang.NoClassDefFoundError: Failed resolution of: Lexpo/modules/filesystem/FilePermissionModule;
at expo.modules.filesystem.FileSystemPackage.createInternalModules(FileSystemPackage.kt:9)
at expo.modules.adapters.react.ReactModuleRegistryProvider.get(ReactModuleRegistryProvider.java:47)
...
```
`react-native-appwrite@0.34.0` declares a hard dependency:
```json
"dependencies": {
"expo-file-system": "18.*.*"
}
```
Expo SDK 54 apps use expo-file-system 19.x, so npm installs a second, nested copy of 18.x under `node_modules/react-native-appwrite/`. Expo autolinking then mixes the two versions' native code — `FilePermissionModule` was removed/relocated in 19.x — and module registration dies at startup.
## 👍 Expected Behavior
The SDK works on current Expo SDK releases. `expo-file-system` should likely be a peer dependency (or at least a range matching the host app's Expo SDK) instead of a hard `18.*.*` pin.
## 🎲 SDK version
react-native-appwrite 0.34.0, Expo SDK 54, React Native 0.8x, Android (release build)
## 💭 Additional context
Caught by the Connect snippets QA in appwrite/vibes — the react-native Android lane scaffolds with `create-expo-app@latest`, adds the SDK, and the built APK crashes before rendering anything (Maestro screenshots show the launcher home screen instead of the app).
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Contributor guide
Research direction
Start by reproducing the Expo SDK 54 Android release crash, then inspect react-native-appwrite@0.34.0's dependency declaration for the hard expo-file-system 18.*.* pin. Compare the package's dependency behavior with the host app's Expo file-system 19.x installation. Done means a current Expo SDK app can build, launch, and register the file-system module without the NoClassDefFoundError.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- react-native, typescript
- Domain
- mobile
- Issue type
- Bug
- Difficulty
- 3/5
- Estimated time
- 1-2 days
- Activity status
- Quiet
- Clarity
- Mostly clear
- Newbie friendliness
- 65/100