Skip to content

Draft: Update Quickstart for React Native to v5 - DO NOT MERGE#267

Draft
Aaron LaBeau (biozal) wants to merge 3 commits intomainfrom
da-138-update-v5-react-native
Draft

Draft: Update Quickstart for React Native to v5 - DO NOT MERGE#267
Aaron LaBeau (biozal) wants to merge 3 commits intomainfrom
da-138-update-v5-react-native

Conversation

@biozal
Copy link
Copy Markdown
Contributor

@biozal Aaron LaBeau (biozal) commented Apr 20, 2026

Summary

  • Migrate React Native quickstart from Ditto SDK v4 to v5 API (Ditto.open, DittoConfig, auth, sync, store)
  • Upgrade Expo SDK 54 → 55 (React 19.2.0, React Native 0.83.4, Gradle 9.0)
  • Add init() call before Ditto.open() per v5 best practice
  • Add expo-build-properties dependency with Kotlin 2.1.20 (required by v5 Ditto Expo plugin)
  • Add missing DITTO_AUTH_URL / DITTO_WEBSOCKET_URL env type declarations
  • Fix all npm audit vulnerabilities to 0 (fast-xml-parser → 5.7.1, @tootallnate/once → 3.0.1, plus lodash, @xmldom/xmldom, brace-expansion, yaml)
  • Remove deprecated edgeToEdgeEnabled from app.json (mandatory in Android 16 / SDK 55)
  • Add Xcode 26.2 requirement to README
  • Add Expo-specific v5 migration guide (MIGRATION-EXPO-V5.md)

Build Verification

Platform Status Toolchain
iOS ✅ Built Xcode 26.2
Android ✅ Built Gradle 9.0, Kotlin 2.1.20, OpenJDK 17
TypeScript ✅ Clean tsc --noEmit
ESLint ✅ Clean expo lint
npm audit ✅ 0 vulnerabilities

Known Issues

  • @dittolive/ditto@5.0.0-rc.2 bundles fmt 11.0.2 which has a consteval compilation bug with Xcode 26.4's Clang. Build requires Xcode 26.2 or earlier.

Test plan

  • TypeScript check clean
  • ESLint clean
  • npm audit: 0 vulnerabilities
  • iOS build succeeds (Xcode 26.2)
  • Android build succeeds (Gradle 9.0, OpenJDK 17)
  • Manual: verify sync works on iOS device/simulator
  • Manual: verify sync works on Android device/emulator
  • Manual: verify P2P Bluetooth/WiFi sync between devices

🤖 Generated with Claude Code

- Migrate from Ditto v4 to v5 API (Ditto.open, DittoConfig, auth, sync, store)
- Remove DITTO_WEBSOCKET_URL (replaced by server URL in DittoConfig)
- Remove DQL_STRICT_MODE (defaults to false in v5)
- Update DittoInfo component to show databaseId instead of appId
- Add Android 12+ Bluetooth/WiFi Direct permissions for P2P sync
- Add npm overrides for transitive dependency audit vulnerabilities
- Add Jest test infrastructure (setup, mocks, config)
- Bump @dittolive/ditto to 5.0.0-rc.2

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Aaron LaBeau (biozal) and others added 2 commits April 20, 2026 19:00
Xcode 26.2 or lower required due to fmt consteval bug in Ditto SDK.
Gradle 8.12 or lower required with Kotlin 2.1.0.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
…lnerabilities

- Upgrade Expo SDK 54 → 55 (React 19.2, RN 0.83.4, Gradle 9.0)
- Add init() call before Ditto.open() per v5 best practice
- Add expo-build-properties with Kotlin 2.1.20 for Android builds
- Add missing DITTO_AUTH_URL/DITTO_WEBSOCKET_URL env type declarations
- Fix all npm audit vulnerabilities (fast-xml-parser → 5.7.1, @tootallnate/once → 3.0.1)
- Remove deprecated edgeToEdgeEnabled from app.json (mandatory in Android 16)
- Add Xcode 26.2 requirement to README
- Add Expo-specific v5 migration guide (MIGRATION-EXPO-V5.md)

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant