Skip to content

Conversation

@mfazekas
Copy link
Collaborator

@mfazekas mfazekas commented Nov 11, 2025

  • upgraded example to Expo SDK 54
  • resources other native changes done throughout config mods/plugins so future upgrade is easier (so iOS and android folders are generated using expo prebuilt -p android)

mfazekas and others added 14 commits November 11, 2025 17:20
- Move Rive assets from ios/Assets to assets/rive for better organization
- Delete iOS native directory (will be regenerated with expo prebuild)
- Update Android resource files and configuration
Major version upgrades:
- Expo SDK 53 → 54
- React Native 0.79.6 → 0.81.5
- React 19.0.0 → 19.1.0
- React Native Reanimated 3.17.5 → 4.1.1

Android updates:
- compileSdk 35 → 36 (Android 16)
- AGP 8.8.2 → 8.11.0
- Gradle 8.13 → 8.14.3
- Edge-to-edge rendering now mandatory

iOS updates:
- Regenerated with SDK 54 templates
- CocoaPods dependencies updated

This upgrade resolves the androidx.core:core-ktx:1.17.0 compatibility
issue that required AGP 8.9.1+ and compileSdk 36.

Breaking changes:
- SDK 54 is the last version supporting Legacy Architecture
- expo-file-system new API is now default
- Edge-to-edge is mandatory on Android
Upgrading from 2.11.1 to 2.11.4 to address potential picker text
visibility issues on Android 16 with edge-to-edge rendering.

Version 2.11.3+ includes critical fixes for React Native 0.81 and
new architecture compatibility.

This should resolve the light text on white background issue in the
Layout example screen. If the issue persists, will add Expo config
plugin to modify Android styles.xml.

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

Co-Authored-By: Claude <[email protected]>
Issue: After upgrading to Expo SDK 54 with Android 16 edge-to-edge,
picker text was invisible due to DayNight theme using dark colors.

Solution:
- Set userInterfaceStyle: "light" in app.config.js (for iOS and consistency)
- Created withLightTheme Expo config plugin using withAndroidStyles
- Plugin changes AppTheme parent from Theme.AppCompat.DayNight.NoActionBar
  to Theme.AppCompat.Light.NoActionBar during expo prebuild
- Ensures pickers have good contrast (dark text on light background)

The config plugin is needed because userInterfaceStyle alone doesn't
modify Android's theme parent in styles.xml.

Note: The app is not currently prepared for dark mode support, so
forcing Light theme is appropriate for now.

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

Co-Authored-By: Claude <[email protected]>
…ation

- Add expo prebuild step to build-ios and build-android jobs
- Exclude project.pbxproj from verify-prebuild check (Expo generates random UUIDs)
- Exclude Podfile.lock, .xcworkspace, PrivacyInfo.xcprivacy (generated files)
- Fixes iOS/Android build failures (native folders now generated in CI)
- Fixes verify-prebuild check (non-deterministic files excluded)

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

Co-Authored-By: Claude <[email protected]>
Expo generates random UUIDs in project.pbxproj on each prebuild run,
making it non-deterministic. This file is now excluded from verification
along with other generated files (Podfile.lock, .xcworkspace, PrivacyInfo.xcprivacy).

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

Co-Authored-By: Claude <[email protected]>
Native folders (ios/android) are committed to the repository,
so CI doesn't need to regenerate them before building.

The prebuild step is only needed in the verify-prebuild workflow
to check if committed folders match what would be generated.

This reverts the prebuild additions from commit 2e95635.

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

Co-Authored-By: Claude <[email protected]>
…ches

When Podfile.lock changes (e.g., after React Native upgrade), the cache
restore-keys can match an older cache with incompatible Pod versions.
This causes CocoaPods to fail with 'hermes-engine version differs from
Pods/Local Podspecs' error.

Now we detect partial cache matches and clear the Pods directory before
running pod install, ensuring clean installation with correct versions.

Also removed the most permissive restore-key to avoid matching caches
from completely different dependency versions.
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