[Video] Directly mutating player properties triggers react compiler warnings
Author: jblarriviereCreated Apr 22, 2025Updated Sep 17, 2026
LabelsIssue acceptedcontributor: external
Minimal reproducible example
What platform(s) does this occur on?
iOS
Where did you reproduce the issue?
in a standalone app
Summary
Hello !
When using the useVideoPlayer hook, directly mutating properties of the returned player object (like playbackRate) triggers React compiler warnings about mutating values that should not be mutated.
Example component triggering the warning:
import { VideoView, useVideoPlayer } from 'expo-video';
import { Button, View } from 'react-native';
const VideoPlayer = ({ source }: { source: string }) => {
const videoPlayer = useVideoPlayer(source);
const updatePlaybackRate = () => {
// "Mutating a value returned from a function whose return value should not be mutated eslint(react-compiler/react-compiler)"
videoPlayer.playbackRate += 1;
};
return (
<View>
<VideoView player={videoPlayer} {...otherProps} nativeControls={false} />
<Button title="Speed Up" onPress={() => updatePlaybackRate()} />
</View>
);
};
export { VideoPlayer };
Reanimated recently switched from directly accessing animatedValue.value to using getters/setters
Maybe this is related, and a similar solution would solve the issue?
Thanks
Environment
expo-env-info 1.2.2 environment info:
System:
OS: macOS 14.7
Shell: 5.9 - /bin/zsh
Binaries:
Node: 22.9.0 - /usr/local/bin/node
Yarn: 4.6.0 - /opt/homebrew/bin/yarn
npm: 10.8.3 - /usr/local/bin/npm
Watchman: 2024.08.12.00 - /opt/homebrew/bin/watchman
Managers:
CocoaPods: 1.15.2 - /Users/jean-baptistelarriviere/.rbenv/shims/pod
SDKs:
iOS SDK:
Platforms: DriverKit 24.2, iOS 18.2, macOS 15.2, tvOS 18.2, visionOS 2.2, watchOS 11.2
Android SDK:
API Levels: 27, 30, 31, 32, 33, 34, 35
Build Tools: 28.0.3, 29.0.2, 30.0.2, 30.0.3, 31.0.0, 33.0.0, 34.0.0, 35.0.0
System Images: android-21 | ARM EABI v7a, android-24 | Google APIs ARM 64 v8a, android-28 | Google ARM64-V8a Play ARM 64 v8a, android-30 | Intel x86 Atom_64, android-30 | Google APIs ARM 64 v8a, android-30 | Google APIs Intel x86 Atom_64, android-31 | ARM 64 v8a, android-31 | Google APIs ARM 64 v8a, android-31 | Google APIs Intel x86 Atom_64, android-31 | Google Play ARM 64 v8a, android-32 | Google APIs ARM 64 v8a, android-33 | Google APIs ARM 64 v8a
IDEs:
Android Studio: 2024.2 AI-242.23726.103.2422.12816248
Xcode: 16.2/16C5032a - /usr/bin/xcodebuild
npmGlobalPackages:
eas-cli: 14.4.1
Expo Workflow: bare
Expo Doctor Diagnostics
13/15 checks passed. 2 checks failed. Possible issues detected:
Use the --verbose flag to see more details about passed checks.
✖ Validate packages against React Native Directory package metadata
The following issues were found when validating your dependencies against React Native Directory:
Unsupported on New Architecture: react-native-otp-verify
Untested on New Architecture: @intercom/intercom-react-native, react-native-fast-shadow
No metadata available: @apollo/client, @brigad/design-system, @brigad/shared, @brigad/shared-mobile, @rosk/design-system, @rosk/react-native-splash, @rosk/shared, @rosk/shared-native, apollo-upload-client, apollo3-cache-persist, its-fine, react-final-form, react-intl, react-native-persona, ts-pattern
Advice:
Use libraries that are actively maintained and support the New Architecture. Find alternative libraries with https://reactnative.directory.
Add packages to expo.doctor.reactNativeDirectoryCheck.exclude in package.json to selectively skip validations, if the warning is not relevant.
Update React Native Directory to include metadata for unknown packages. Alternatively, set expo.doctor.reactNativeDirectoryCheck.listUnknownPackages in package.json to false to skip warnings about packages with no metadata, if the warning is not relevant.
✖ Check that packages match versions required by installed Expo SDK
The following packages should be updated for best compatibility with the installed expo version:
@shopify/[email protected] - expected version: 1.7.6
@shopify/[email protected] - expected version: v2.0.0-next.2
[email protected] - expected version: ~53.0.0-preview.9
[email protected] - expected version: ~0.14.4
[email protected] - expected version: ~16.1.3
[email protected] - expected version: ~7.1.2
[email protected] - expected version: ~17.1.2
[email protected] - expected version: ~13.2.1
[email protected] - expected version: ~14.1.2
[email protected] - expected version: ~2.1.4
[email protected] - expected version: ~13.1.3
[email protected] - expected version: ~14.1.2
[email protected] - expected version: ~7.1.2
[email protected] - expected version: ~16.1.2
[email protected] - expected version: ~5.0.2-preview.4
[email protected] - expected version: ~5.0.4
[email protected] - expected version: ~0.28.5
[email protected] - expected version: ~2.1.3
[email protected] - expected version: ~14.1.4
[email protected] - expected version: 0.79.1
[email protected] - expected version: ~2.24.0
[email protected] - expected version: ~3.17.4
[email protected] - expected version: ~5.8.3
@react-navigation/[email protected] - expected version: ^7.1.6
Your project may not work correctly until you install the expected versions of the packages.
Found outdated dependencies
Advice:
Use 'npx expo install --check' to review and upgrade your dependencies.
2 checks failed, indicating possible issues with the project.
Source: expo/expo