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

Open
#114 0 comments 0 reactions 0 assignees View on GitHub
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

Open the contributing 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

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.