Skip to content

chore!: upgrade expo sdk#35

Merged
pchalupa merged 8 commits intomainfrom
chore/upgrade-expo-sdk
Feb 21, 2026
Merged

chore!: upgrade expo sdk#35
pchalupa merged 8 commits intomainfrom
chore/upgrade-expo-sdk

Conversation

@pchalupa
Copy link
Owner

@pchalupa pchalupa commented Feb 21, 2026

Description

Related Issues

I have tested my change on

iOS

  • Mobile simulator
  • Mobile device

Android

  • Mobile simulator
  • Mobile device
📦 Published PR as canary version: 1.0.0--canary.35.42713b3.0

✨ Test out this PR locally via:

npm install expo-text-extractor@1.0.0--canary.35.42713b3.0
# or 
yarn add expo-text-extractor@1.0.0--canary.35.42713b3.0

Summary by CodeRabbit

  • Dependencies

    • Updated core framework versions: React, React Native, Expo, TypeScript, and related packages
  • Build & Platform Support

    • Increased Android SDK min/compile/target levels
    • Bumped iOS Swift language requirement to 5.9
    • Adjusted platform configuration mappings
  • User Experience

    • Updated app layout with safe-area support, consolidated preview/results area, and clearer no-results messaging
  • Chores

    • Migrated ESLint to the new flat configuration format (old config removed)

@pchalupa pchalupa self-assigned this Feb 21, 2026
@coderabbitai
Copy link

coderabbitai bot commented Feb 21, 2026

No actionable comments were generated in the recent review. 🎉


📝 Walkthrough

Walkthrough

Migrates ESLint to a flat config, bumps Expo/React/React Native/TypeScript versions, updates Android SDK fallbacks, raises Swift to 5.9, renames ios platform key to apple, and refactors example app SafeArea usage and styling.

Changes

Cohort / File(s) Summary
ESLint configuration
\.eslintrc.js, eslint.config.js
Removed legacy .eslintrc.js and added eslint.config.js using defineConfig and Expo flat config; global ignore for build/*.
Root & example dependency updates
package.json, example/package.json
Bumped Expo (~52 → ~54), React (18.3.1 → 19.1.0), React Native (0.76.6 → 0.81.5), TypeScript (~5.3 → ~5.9); added react-native-safe-area-context, updated devDependencies and peers.
Android build settings
android/build.gradle
Increased fallback SDK values when unmanaged: compileSdkVersion 34→36, minSdkVersion 21→24, targetSdkVersion 34→36.
Platform/module config
expo-module.config.json
Renamed platform key from iosapple; preserved module mapping for ExpoTextExtractorModule and retained android entry.
iOS Podspec
ios/ExpoTextExtractor.podspec
Updated Podspec Swift language version from '5.4' to '5.9'.
Example app refactor
example/App.tsx
Switched SafeArea usage to react-native-safe-area-context (SafeAreaProvider/SafeAreaView), consolidated layout and styles, simplified image picker calls and results rendering.

Estimated code review effort

🎯 3 (Moderate) | ⏱️ ~22 minutes

Poem

🐰 I hopped through code with nimble paws,
Flat ESLint now obeys new laws,
Swift climbed to five point nine so bright,
SDKs and packages took flight,
A little hop, and everything's alright! 🥕

🚥 Pre-merge checks | ✅ 1 | ❌ 2

❌ Failed checks (2 warnings)

Check name Status Explanation Resolution
Description check ⚠️ Warning The PR description is incomplete. The 'Description' section is empty (only contains the template placeholder), and the 'Related Issues' section is also empty. While testing checkboxes are filled, the description lacks detail about what changes were made and why. Add a detailed description of the changes made during the Expo SDK upgrade, including which versions were updated and why (e.g., compatibility improvements, new features). Optionally link any related issues if applicable.
Docstring Coverage ⚠️ Warning Docstring coverage is 0.00% which is insufficient. The required threshold is 80.00%. Write docstrings for the functions missing them to satisfy the coverage threshold.
✅ Passed checks (1 passed)
Check name Status Explanation
Title check ✅ Passed The title 'chore!: upgrade expo sdk' directly and clearly summarizes the main change—upgrading the Expo SDK across multiple configuration and dependency files in the repository.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing Touches
  • 📝 Generate docstrings (stacked PR)
  • 📝 Generate docstrings (commit on current branch)
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Post copyable unit tests in a comment
  • Commit unit tests in branch chore/upgrade-expo-sdk

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

Copy link

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

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

Actionable comments posted: 2

🧹 Nitpick comments (1)
package.json (1)

43-47: Overly permissive peerDependencies wildcards provide no compatibility guidance.

Widening all three to * means package managers will never warn consumers about version mismatches. This library depends on Expo 54, React 19, and RN 0.81+ APIs — a consumer running React 18 or RN 0.76 will silently receive no conflict signal. Consider constraining to at minimum the lowest major version known to work:

📦 Suggested tighter peer range
  "peerDependencies": {
-   "expo": "*",
-   "react": "*",
-   "react-native": "*"
+   "expo": ">=54.0.0",
+   "react": ">=19.0.0",
+   "react-native": ">=0.81.0"
  }
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@package.json` around lines 43 - 47, The peerDependencies are too permissive
("*") for "expo", "react", and "react-native"; update the package.json
peerDependencies to use constrained semver ranges that reflect the versions you
support (e.g., set "expo" to a minimum of 54 like "^54.0.0", "react" to
"^19.0.0", and "react-native" to a 0.81+ range such as ">=0.81.0 <0.82.0" or
another appropriate range), replacing the "*" entries for
expo/react/react-native so package managers will warn on incompatible consumer
versions.
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.

Inline comments:
In `@android/build.gradle`:
- Around line 26-29: The change raises Android API usage: compileSdkVersion and
targetSdkVersion are set to 36 while minSdkVersion is bumped to 24; update the
release notes/changelog to explicitly call out this breaking change
(minSdkVersion 21→24) so consumers know Lollipop/Marshmallow apps will fail to
build, mark the release as a major bump, and include migration guidance (e.g.,
keep host app minSdk ≥24 or pin an older library version) and the exact symbols
affected (compileSdkVersion, targetSdkVersion, minSdkVersion) so maintainers and
integrators can quickly identify the impact.

In `@example/App.tsx`:
- Line 20: The App currently uses SafeAreaView without a SafeAreaProvider; wrap
your app root with SafeAreaProvider so SafeAreaView can read inset
context—either add <SafeAreaProvider> around SafeAreaView inside the App
component (locate the App function and SafeAreaView usage) or wrap the rendered
<App /> in index.ts with SafeAreaProvider; ensure you import SafeAreaProvider
from 'react-native-safe-area-context' and remove duplicate providers if any.

---

Nitpick comments:
In `@package.json`:
- Around line 43-47: The peerDependencies are too permissive ("*") for "expo",
"react", and "react-native"; update the package.json peerDependencies to use
constrained semver ranges that reflect the versions you support (e.g., set
"expo" to a minimum of 54 like "^54.0.0", "react" to "^19.0.0", and
"react-native" to a 0.81+ range such as ">=0.81.0 <0.82.0" or another
appropriate range), replacing the "*" entries for expo/react/react-native so
package managers will warn on incompatible consumer versions.

@pchalupa pchalupa merged commit cdee176 into main Feb 21, 2026
3 checks passed
pchalupa added a commit that referenced this pull request Feb 21, 2026
Bump swift version

Bump android sdk version

Rename platform

Upgrade example

Migrate to flat eslint config

Migrate to safe area context

Add context provider
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant