Skip to content

chore(deps): update dependencies - #703

Open
jokerttu wants to merge 15 commits into
mainfrom
library-updates
Open

jokerttu wants to merge 15 commits into
mainfrom
library-updates

Conversation

@jokerttu

@jokerttu jokerttu commented Nov 4, 2026 •

Copy link
Copy Markdown
Contributor

Applies the open Dependabot updates that build and pass tests, each as its own commit, and upgrades TypeScript to 6.0.3. Updates that need a migration, or that conflict with React Native or the library, are left out and listed below with the reason.

Nothing here changes what apps receive in a breaking way: the peer range stays react-native: >=0.87.0, and the only shipped source change is the codegen spec imports, which generate the same native code (details under TypeScript 6.0.3).

Included

Commit Update Scope Source
chore(deps): bump GitHub Actions actions-dependencies group CI #689
chore(deps): bump example androidx appcompat and datastore appcompat 1.1.0 → 1.8.0, datastore-core 1.2.1 → 1.3.0 Example #699
chore(deps): bump example Kotlin to 2.4.21 Kotlin Gradle plugin and ext.kotlinVersion 2.3.21 → 2.4.21 Example #699
chore(deps): bump example ktfmt plugin to 0.27.0 ktfmt Gradle plugin 0.21.0 → 0.27.0 Repo tooling #699
chore(deps): bump transitive npm packages qs, joi, ip-address, body-parser, fast-uri, launch-editor, compression, handlebars, shell-quote, moment, @babel/core (7.x) yarn.lock #702, #701, #694, #693, #692, #686, #685, #684, #681, #680, #676
chore(deps): bump example concurrent-ruby and activesupport concurrent-ruby 1.3.3 → 1.3.7 (Gemfile limit < 1.3.8), activesupport 6.1.7.10 → 7.2.4 Example #620, #554
chore(deps): bump example @types/node to 26 @types/node ^26.6.5 Example #690
chore(deps): bump commitlint to 21 commitlint and config-conventional ^21.2.4 Repo tooling #690
chore(deps): bump Lefthook to 2 @evilmartians/lefthook ^2.2.2 Repo tooling #690
chore(deps): bump del-cli to 8 del-cli ^8.0.1 Repo tooling #690
chore(deps): bump builder-bob to 0.44.1 react-native-builder-bob ^0.44.1 Builds lib/ #690
chore(deps): bump example Jest to 30 jest ^30.5.2, @types/jest ^30.0.0 Example #690
chore(deps): bump example monorepo config react-native-monorepo-config ^0.4.0 Example #690
chore(deps): bump example native libraries gesture-handler 3.4.0, pager-view ^9.0.10, screens 4.30.0 Example #690
chore(deps): bump TypeScript to 6.0.3 See below Repo tooling, codegen specs —

concurrent-ruby and activesupport move together: concurrent-ruby 1.3.5+ no longer loads logger, which breaks pod install on activesupport older than 7.1.

Bob 0.44.1 generates byte-for-byte identical lib/ output to 0.40.15.

TypeScript 6.0.3

  • typescript ~6.0.3 (not ^6: @typescript-eslint supports TypeScript <6.1.0), @typescript-eslint/eslint-plugin and parser ^8.58.0 (installed 8.72.1), ts-jest 29.4.15 within its existing range. React Native's own template for 0.87 and 0.88 uses typescript ^6.0.3.
  • The codegen specs in src/native/ import CodegenTypes and codegenNativeComponent from react-native, as the 0.87 Strict TypeScript API docs describe, instead of react-native/Libraries/... deep imports. React Native's exports map gives those deep paths no types, which TypeScript 6 enforces.
  • The codegen schema generated from the specs is byte-for-byte identical before and after, with @react-native/codegen 0.87.1 and with 0.87.0 (the lowest version the peer range allows), so apps generate the same native code.
  • The generated declarations change only in the four spec files, which src/index.ts does not export. They no longer contain deep imports, so apps on TypeScript 6 with the Strict API can resolve them. With skipLibCheck, the declarations compile with 0 errors on TypeScript 5.9.3 and 6.0.3.
  • example/src/controls/NavigationActionPath.tsx types its delay promise as Promise<void>.

Not included

Update Source Reason
Gradle wrapper 9.4.1 → 9.8.2 #699 Gradle 9.8.2 bundles Kotlin 2.4 metadata, which React Native's Gradle plugin (compiled with Kotlin 2.2) cannot read; every Android build fails. The wrapper follows React Native's template (9.4.1 for 0.87 and 0.88).
Guava 31.0.1 → 33.7.2 #659 api dependency exposed to apps. Guava 33's nullness annotations break Kotlin code with nullable type arguments; the example's ImmutableMap<Int?, Int?> no longer compiles. Needs a separate decision.
React Native 0.87.1 → 0.88.0, React 19.3.1, @react-native/* 0.88.1 #690 Builds on both platforms but failed lint, types, and the library build on the deep codegen imports; those are fixed by the TypeScript 6 commit, but a React Native upgrade belongs in its own PR.
TypeScript 7.0.2 #690 @typescript-eslint supports TypeScript <6.1.0; superseded here by 6.0.3.
ESLint 8 → 10 #690 ESLint 10 no longer reads .eslintrc.js; needs a flat-config migration.
eslint-plugin-react-hooks 5 → 7 #690 New React Compiler rules report 3 errors ("Cannot access refs during render").
turbo 1 → 2 #690, #595 turbo.json needs pipeline renamed to tasks, and CI's cache check depends on turbo.
Babel 8 (@babel/core, preset-env, runtime in the example) #690 @react-native/babel-preset and ts-jest require Babel 7.
@testing-library/react-native 14 #690 Requires a test-renderer package the repo does not have; nothing in the repo imports it.

Already on main

These Dependabot PRs target versions that main already has or exceeds: #619 (tar), #618 (ws), #605 (tmp), #589 (@babel/plugin-transform-modules-systemjs), #564 (fast-xml-parser), #561 (lodash), #556 (picomatch), #553 (flatted), #544 (minimatch), #426 (@babel/helpers), #378 (nanoid), #265 (serve-static), #562 (addressable).

Checks run locally

  • Each update tested on its own after a clean build of the affected platform.
  • Final branch: yarn install --immutable, yarn lint, yarn test:types, yarn build, release JS bundles for Android and iOS, ./scripts/format-kotlin.sh --check, Lefthook pre-commit hooks, commitlint, yarn clean, clean yarn example build:android, pod install and clean yarn example build:ios.
  • Detox release tests on the final branch: Android 24/24; iOS 23/24 in the full run; the failing ELT01 then passed twice on this branch and twice on the previous commit, so the timeout came from the simulator.

yarn example test and lefthook validate fail on main as well and are not affected by this PR.

Follow-ups

  • Guava 33 as a library change.
  • React Native 0.88 upgrade.
  • ESLint 10, eslint-plugin-react-hooks 7, turbo 2 migrations.
  • Dependabot grouping: limit groups to minor and patch updates and give React Native its own group, so one update needing a migration does not block the whole group PR.

Pre-launch Checklist

  • I read the Contributor Guide and followed the process outlined there for submitting PRs.
  • I signed the CLA.
  • I listed at least one issue that this PR fixes in the description above.
  • I updated/added relevant documentation
  • I added new tests to check the change I am making
  • All existing and new tests are passing.

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