Skip to content

Conversation

@teodorciuraru
Copy link
Contributor

@teodorciuraru teodorciuraru commented Nov 20, 2025

Summary

Migrated bare React Native CLI quickstart to latest template (0.82.1) and integrated Ditto SDK 4.13.0. This is a periodic update of packages that unlock RN goodies.

Migrated by moving diffs from the RN Upgrade Helper.

Key Changes

Breaking Changes

  • React Native: 0.79.1 → 0.82.1
  • React: 19.0.0 → 19.1.1

Features

  • Integrated Ditto SDK 4.13.0
  • Add Safe Area View for better aesthetics.

Removed

  • [Temporary] macOS support — no longer in React Native 0.82+ template. We'll readd it when it gets upgraded.

Testing

  • ✅ iOS builds and runs on simulator
  • ✅ Android builds and runs on emulator
  • ✅ Task CRUD operations verified on both platforms

🤖 Generated with Claude Code

Migrated bare React Native CLI to latest template (0.82.1) and integrated Ditto SDK 4.13.0.

BREAKING CHANGE: React Native upgraded from 0.79.1 to 0.82.1, React upgraded from 19.0.0 to 19.1.1

- Migrated to React Native 0.82.1 template (from 0.79.1)
- Upgraded React to 19.1.1
- Integrated Ditto SDK 4.13.0
- Added react-native-dotenv for environment variable loading from parent .env
- Fixed Android packaging conflicts with pickFirst '**/*.so' for duplicate Ditto native libraries
- Removed macOS support (no longer in template)
- Verified iOS and Android builds working on simulator and emulator

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <[email protected]>
@teodorciuraru teodorciuraru self-assigned this Nov 20, 2025
Teodor Ciuraru and others added 4 commits November 20, 2025 18:36
Restored files that should not have been removed:
- .maestro test flows for iOS and Android
- LICENSE file

Added macOS support:
- Restored macOS directory with project files
- Added react-native-macos 0.79.1 (latest available)
- Added macOS scripts to package.json

Note: macOS support is currently non-functional due to compatibility issues between React Native 0.82.1 and react-native-macos 0.79.1 (codegen error). A README in the macos/ directory documents this limitation. macOS will work once Microsoft releases react-native-macos 0.82.x.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <[email protected]>
The migration accidentally kept the generic React Native template README.
Restored the original README with Ditto app information, screenshots,
documentation links, and setup instructions.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <[email protected]>
The migration used TempRNProject as the placeholder name. Restored the
original project name DittoReactNativeSampleApp for iOS and Android.

- Renamed iOS Xcode project and workspace
- Renamed Android package from com.temprnproject to com.dittoreactnativesampleapp
- Updated app.json with correct display name
- Updated Podfile and rebuilt pods for RN 0.82.1

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <[email protected]>
- Replace react-native SafeAreaView with react-native-safe-area-context
- Add SafeAreaProvider wrapper to provide context
- Add SafeAreaView to apply safe area insets as padding
- Ensures UI respects device notches, status bars, and system UI

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <[email protected]>
Teodor Ciuraru and others added 4 commits November 20, 2025 23:04
- Restore react-native/types/env.d.ts for @env module types
- Regenerate Gemfile.lock with bundler for consistent gem versions
- Without env.d.ts, TypeScript can't resolve @env imports

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <[email protected]>
- Add ruby/setup-ruby@v1 action to build-ios job
- Use Ruby 3.3 to match local development environment
- Enable bundler-cache for faster CI builds
- Fixes: CFPropertyList-3.0.9 Ruby version incompatibility

Resolves CI error: "CFPropertyList-3.0.9 requires ruby version < 3.2,
which is incompatible with the current version, ruby 3.3.10p183"

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <[email protected]>
- Update ruby requirement from >= 2.6.10 to >= 3.2
- Add CFPropertyList >= 3.1.0 for Ruby 3.3 compatibility
- Remove old Gemfile.lock (will be regenerated by CI with Ruby 3.3)

This allows CFPropertyList 4.0.0 which supports Ruby 3.2+, resolving
the version conflict where:
- CFPropertyList 3.0.9 requires Ruby < 3.2
- CFPropertyList 4.0.0 requires Ruby >= 3.2

CI will generate the correct Gemfile.lock with compatible versions.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <[email protected]>
- Set Ruby 3.3.0 as local version via .ruby-version
- Revert Gemfile to match RN 0.79.1 template (Ruby >= 2.6.10)
- Remove incompatible CFPropertyList constraint
- Generate Gemfile.lock with resolved dependencies
- Add BuildConfig support for RN 0.79 edge-to-edge feature

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <[email protected]>
@teodorciuraru teodorciuraru marked this pull request as ready for review November 20, 2025 23:13
Copilot AI review requested due to automatic review settings November 20, 2025 23:13
Copilot finished reviewing on behalf of teodorciuraru November 20, 2025 23:16
Copy link
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull Request Overview

This PR upgrades the React Native quickstart from version 0.79.1 to 0.82.1 and integrates Ditto SDK 4.13.0. The upgrade includes breaking changes to React and React Native versions, removes macOS support temporarily due to version incompatibilities, and implements the react-native-safe-area-context library for better UI handling.

Key Changes:

  • Core Framework Updates: React Native 0.79.1 → 0.82.1, React 19.0.0 → 19.1.1, Ditto SDK 4.12.4 → 4.13.0
  • Build Configuration: Updated Android SDK levels, Kotlin version, Node.js minimum version (18 → 20), and Ruby version (2.6.10 → 3.3.0)
  • UI Improvements: Replaced React Native's built-in SafeAreaView with react-native-safe-area-context library and wrapped the app in SafeAreaProvider

Reviewed Changes

Copilot reviewed 16 out of 25 changed files in this pull request and generated 5 comments.

Show a summary per file
File Description
react-native/package.json Updated dependency versions including React Native, React, Ditto SDK, and CLI tools; added test script and safe-area-context library
react-native/tsconfig.json Simplified TypeScript configuration to extend @react-native/typescript-config with minimal overrides
react-native/types/env.d.ts Removed blank lines for cleaner formatting
react-native/metro.config.js Updated destructuring syntax to include spaces (formatting)
react-native/jest.config.js Removed transformIgnorePatterns configuration
react-native/ios/Podfile.lock Updated all React Native and Ditto dependencies to match 0.82.1 and 4.13.0 respectively
react-native/ios/DittoReactNativeSampleApp/Info.plist Added CADisableMinimumFrameDurationOnPhone and RCTNewArchEnabled flags
react-native/macos/README.md Added documentation explaining macOS incompatibility with React Native 0.82.1
react-native/macos/Podfile Removed unused flags configuration
react-native/android/build.gradle Updated build tools, SDK levels, and Kotlin version
react-native/android/gradle.properties Added edgeToEdgeEnabled property
react-native/android/app/build.gradle Added buildConfig feature flag and edge-to-edge configuration
react-native/index.js Updated import formatting to use spaces around braces
react-native/app.json Changed display name from "DittoReactNativeSampleApp" to "Ditto Task Sync"
react-native/App.tsx Replaced React Native SafeAreaView with react-native-safe-area-context implementation
react-native/tests/App.test.tsx Updated test to use ReactTestRenderer.act() with async pattern
react-native/.ruby-version Added Ruby 3.3.0 version specification
react-native/.prettierrc.js Removed bracketSameLine and bracketSpacing overrides
react-native/.gitignore Added .kotlin/ directory to ignore list
react-native/Gemfile Formatting cleanup (trailing newline)
react-native/Gemfile.lock Updated Ruby gems and locked Ruby version to 3.3.0
.github/workflows/react-native-ci.yml Added Ruby setup step with version 3.3 and bundler caching

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment on lines +9 to +10
test('renders correctly', async () => {
await ReactTestRenderer.act(() => {
Copy link

Copilot AI Nov 20, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The test has been changed from a synchronous it('renders correctly', ...) to an asynchronous test('renders correctly', async () => ...). While this aligns with React 18+ best practices and the use of ReactTestRenderer.act(), the test doesn't actually await any asynchronous operations within the act callback.

Consider whether the async keyword is necessary here. If there are no async operations to await, the test could remain synchronous:

test('renders correctly', () => {
  ReactTestRenderer.act(() => {
    ReactTestRenderer.create(<App />);
  });
});

However, if the App component or its children perform async operations during rendering, keeping it as async is correct.

Suggested change
test('renders correctly', async () => {
await ReactTestRenderer.act(() => {
test('renders correctly', () => {
ReactTestRenderer.act(() => {

Copilot uses AI. Check for mistakes.
Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Rejected. Trying to keep as close as possible to the RN template to minimize diffs and possible confusion.

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.

2 participants