expo / expo/vector-icons

@expo/vector-icons@15.1.x bundles expo-font@56, crashes on Expo SDK 54 (NoSuchMethodError: getDirectConverter)

Open
#372 0 comments 1 reaction 0 assignees View on GitHub
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

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.