# Expo Router: find() returns undefined for a dynamic route id

> Everything from the URL is a string. e.id === id compares the number 1 with the string "1" and fails.

Web page: https://davidewins.com/errors/expo-router-params-always-strings

Expo. Confirmed fix, 7 October 2026.

Versions: Expo SDK 57, expo-router 57.0.24

There is no error message for this one, only the symptom in the title.

## Cause

Everything from the URL is a string. `e.id === id` compares the number 1 with the string "1" and fails.

## Fix

Convert before comparing:
```tsx
const exercise = exercises.find((e) => e.id === Number(id));
```

## More Expo errors

- [Dev client red screen: No script URL provided (launcher never appears)](https://davidewins.com/errors/expo-dev-client-no-script-url-precompiled)
- [Bundle fails with Invalid expression encountered after supabase-js update](https://davidewins.com/errors/supabase-js-hermes-invalid-expression)
- [After upgrading to SDK 57, expo-font / expo-image / expo-asset config is missing](https://davidewins.com/errors/expo-sdk57-plugins-must-be-declared)
- [SDK upgrade: export dies with SyntaxError after expo install --fix](https://davidewins.com/errors/expo-install-fix-leaves-babel-preset-stale)
- [expo-doctor wants TypeScript 6 but tsc reports hundreds of errors](https://davidewins.com/errors/typescript-6-explodes-typecheck-expo)

[Search all errors](https://davidewins.com/errors)
