@expo/vector-icons@15.1.x bundles expo-font@56, crashes on Expo SDK 54 (NoSuchMethodError: getDirectConverter)
- Dominant language
- JavaScript
- Stars
- 743
- Forks
- 123
- PR merge metrics
- No merged PRs in 30d
Description
## Bug
`@expo/vector-icons@15.1.1` bundles `expo-font@56.x` as a nested dependency, but this version is incompatible with Expo SDK 54 which ships `expo-modules-core@3.0.x` and expects `expo-font@14.x`.
## Reproduction
1. Create a project with `expo@~54.0.3` and `"@expo/vector-icons": "^15.0.3"` in `package.json`.
2. `npm install` — npm resolves `@expo/vector-icons` to `15.1.1`.
3. `npx expo run:android` — app builds successfully but crashes immediately on launch.
## Crash log
```
E/AndroidRuntime: FATAL EXCEPTION: pool-2-thread-1
java.lang.NoSuchMethodError: No static method getDirectConverter(Ljava/lang/Class;)Lexpo/modules/kotlin/types/JSTypeConverter;
in class Lexpo/modules/kotlin/types/ReturnTypeKt;
at expo.modules.font.FontLoaderModule.definition(FontLoaderModule.kt:98)
at expo.modules.kotlin.ModuleHolder.(ModuleHolder.kt:22)
...
```
## Root cause
```
$ npm ls expo-font
+-- @expo/vector-icons@15.1.1
| `-- expo-font@56.0.5 <-- incompatible
`-- expo@54.0.35
`-- expo-font@14.0.12 <-- expected
```
`expo-font@56` calls `ReturnTypeKt.getDirectConverter()` which does not exist in `expo-modules-core@3.0.x`.
## Workaround
Pin the version and add an override in `package.json`:
```json
{
"dependencies": {
"@expo/vector-icons": "15.0.3"
},
"overrides": {
"expo-font": "14.0.12"
}
}
```
## Expected behavior
`@expo/vector-icons@15.1.x` should declare a peer dependency on `expo-font` with a range compatible with the Expo SDK it targets, or the package should be published on a separate major/tag to avoid being resolved by projects using Expo SDK 54.
## Environment
- expo: 54.0.35
- @expo/vector-icons: 15.1.1
- react-native: 0.81.5
- expo-modules-core: 3.0.30
- Platform: Android (emulator, API 35)
- Node: 22.16.0
Contributor guide
No contributing guide indexed for this repository
Research direction
Start with package.json and inspect how expo-font is declared for @expo/vector-icons; reproduce the dependency tree with npm ls expo-font in an Expo SDK 54 project. Done means a fresh project resolves compatible dependencies and npx expo run:android no longer crashes with the reported NoSuchMethodError.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- javascript, react-native
- Domain
- mobile-dev
- Issue type
- Bug
- Difficulty
- 3/5
- Estimated time
- 1-2 days
- Activity status
- Quiet
- Clarity
- Mostly clear
- Newbie friendliness
- 58/100