expo icon indicating copy to clipboard operation
expo copied to clipboard

[docs] [expo-video] [android] Expo Av and Expo Video

Open yagiz2000 opened this issue 1 year ago • 8 comments

Summary

While upgrading to Expo SDK 52, I installed expo-video for my video components but forgot to uninstall expo-av from the previous SDK version. As a result, VideoView components did not work properly on Android. After uninstalling expo-av, everything worked as expected. It might be helpful to mention in the documentation or migration guide that expo-av should be uninstalled before installing expo-video.

Link to the related docs page

https://docs.expo.dev/versions/latest/sdk/video/

Anything else?

No response

yagiz2000 avatar Mar 23 '25 10:03 yagiz2000

@yagiz2000

i had a similar issue, and was related to duplicate assets-registry dependencies.

There were a few ways to solve this, but I agree it would be a nice to have warning in the docs 😅

mihailapuste avatar Mar 24 '25 09:03 mihailapuste

Thank you for filing this issue! This comment acknowledges we believe this may be a bug and there’s enough information to investigate it. However, we can’t promise any sort of timeline for resolution. We prioritize issues based on severity, breadth of impact, and alignment with our roadmap. If you’d like to help move it more quickly, you can continue to investigate it more deeply and/or you can open a pull request that fixes the cause.

expo-bot avatar Mar 31 '25 23:03 expo-bot

@jakex7 - can you investigate the root cause here and ideally fix the underlying issue?

brentvatne avatar Mar 31 '25 23:03 brentvatne

Unfortunately, I couldn't reproduce the issue, so I'm not sure what's causing it. I was even able to use both expo-av and expo-video playing simultaneously without any problems. Could you share any reproduction repository?

Image

jakex7 avatar Apr 01 '25 11:04 jakex7

This is my package.json { "name": "my-app", "version": "1.0.0", "main": "node_modules/expo/AppEntry.js", "scripts": { "start": "expo start", "android": "expo run:android", "ios": "expo run:ios", "web": "expo start --web", "lint": "eslint . **/*.ts *.tsx", "knip": "knip" }, "dependencies": { "@aws-sdk/client-s3": "3.654", "@gorhom/bottom-sheet": "^5.1.2", "@react-native-async-storage/async-storage": "1.23.1", "@react-native-firebase/analytics": "^21.12.0", "@react-native-firebase/app": "^21.12.0", "@react-native-firebase/auth": "^21.12.0", "@react-native-firebase/firestore": "^21.12.0", "@react-native-firebase/functions": "^21.12.0", "@react-native-firebase/messaging": "^21.12.0", "@react-native-firebase/storage": "^21.12.0", "@react-native-masked-view/masked-view": "0.3.2", "@react-navigation/bottom-tabs": "^6.5.14", "@react-navigation/native": "^6.1.9", "@react-navigation/native-stack": "^6.9.17", "@types/moment": "^2.11.29", "expo": "^52.0.39", "expo-asset": "^11.0.4", "expo-blur": "~14.0.3", "expo-build-properties": "~0.13.2", "expo-camera": "~16.0.18", "expo-clipboard": "~7.0.1", "expo-constants": "~17.0.8", "expo-crypto": "~14.0.2", "expo-dev-client": "~5.0.14", "expo-device": "~7.0.2", "expo-file-system": "~18.0.11", "expo-haptics": "~14.0.1", "expo-image": "~2.0.6", "expo-image-manipulator": "~13.0.6", "expo-image-picker": "~16.0.6", "expo-linear-gradient": "~14.0.2", "expo-localization": "~16.0.1", "expo-media-library": "~17.0.6", "expo-network": "~7.0.5", "expo-notifications": "~0.29.14", "expo-quick-actions": "3.0.0", "expo-sharing": "~13.0.1", "expo-splash-screen": "~0.29.22", "expo-status-bar": "~2.0.1", "expo-store-review": "~8.0.1", "expo-tracking-transparency": "~5.1.1", "expo-updates": "~0.27.4", "expo-video": "~2.0.6", "i18next": "^23.8.2", "lodash": "^4.17.21", "lottie-react-native": "7.1.0", "mixpanel-react-native": "^3.0.8", "moment": "^2.30.1", "prettier": "^3.2.5", "promise": "^8.3.0", "react": "18.3.1", "react-i18next": "^14.0.5", "react-native": "0.76.7", "react-native-adapty": "^3.3.1", "react-native-adjust": "^4.37.1", "react-native-check-version": "^1.1.1", "react-native-compressor": "^1.8.23", "react-native-device-info": "^10.14.0", "react-native-dotenv": "^3.4.9", "react-native-email-link": "^1.16.1", "react-native-fbsdk-next": "^13.4.1", "react-native-gesture-handler": "~2.20.2", "react-native-get-random-values": "^1.11.0", "react-native-markdown-display": "^7.0.2", "react-native-progress": "^5.0.1", "react-native-reanimated": "~3.16.1", "react-native-reanimated-carousel": "^4.0.2", "react-native-safe-area-context": "4.12.0", "react-native-screens": "~4.4.0", "react-native-size-matters": "^0.4.2", "react-native-svg": "15.8.0", "react-native-svg-transformer": "^1.3.0", "react-native-url-polyfill": "^2.0.0", "react-native-video-cache": "^2.7.4", "react-native-webview": "13.12.5", "zustand": "^4.5.0", "expo-av": "~15.0.2" }, "private": true }

@jakex7 When navigating from a bottom tab screen (which contains expo-av related components) to a Stack.Screen (in my case, a paywall screen with an expo-video), the video on the paywall screen does not play and only shows a black view. This issue occurs only on Android — everything works fine on iOS.

Steps to Reproduce: In the bottom tab screen, I have components that use expo-av. I navigate to a stack screen (Paywall) that uses expo-video. The video component appears but does not play — it just shows a black screen.

yagiz2000 avatar Apr 13 '25 19:04 yagiz2000

I also had a similar issue and troubleshooted it for more than one hour. The video player was just invisible on Android, but the audio played, as I used Auto-Play. Uninstalling expo-av solved it

janrabek avatar Apr 27 '25 15:04 janrabek

Hi there! It looks like your issue requires a minimal reproducible example, but it is invalid or absent. Please prepare such an example and share it in a new issue.

The best way to get attention to your issue is to provide a clean and easy way for a developer to reproduce the issue on their own machine. Please do not provide your entire project, or a project with more code than is necessary to reproduce the issue.

A side benefit of going through the process of narrowing down the minimal amount of code needed to reproduce the issue is that you may get lucky and discover that the bug is due to a mistake in your application code that you can quickly fix on your own.

Resources

Common concerns

"I've only been able to reproduce it in private, proprietary code"

You may not have spent enough time narrowing down the root cause of the issue. Try out the techniques discussed in this manual debugging guide to learn how to isolate the problem from the rest of your codebase.

"I didn't have time to create one"

That's understandable, it can take some time to prepare. We ask that you hold off on filing an issue until you are able to fully complete the required fields in the issue template.

"You can reproduce it by yourself by creating a project and following these steps"

This is useful knowledge, but it's still valuable to have the resulting project that is produced from running the steps, where you have verified you can reproduce the issue.

expo-bot avatar May 07 '25 10:05 expo-bot

Hey @yagiz2000, Unfortunately, package.json is not enough to reproduce it on my end. If you could follow the steps in the message above and create a repository where the issue can be consistently replicated, it would help us investigate the problem more effectively.

jakex7 avatar May 07 '25 10:05 jakex7