├── .gitattributes ├── .github ├── dependabot.yml └── workflows │ ├── all.yml │ ├── x.yml │ ├── yt-ytm.yml │ ├── yt.yml │ └── ytm.yml ├── .gitignore ├── README.md ├── changelogs ├── music.md ├── revanced.md └── x.md ├── images ├── build_release.png ├── release_1.png ├── release_2.png └── workflow_run.png ├── scripts ├── build.sh └── sha256gen.sh ├── signing.md └── updater.json /.gitattributes: -------------------------------------------------------------------------------- 1 | * text eol=lf 2 | *.png binary 3 | -------------------------------------------------------------------------------- /.github/dependabot.yml: -------------------------------------------------------------------------------- 1 | version: 2 2 | updates: 3 | - package-ecosystem: 'github-actions' 4 | directory: '/' 5 | schedule: 6 | interval: 'weekly' 7 | -------------------------------------------------------------------------------- /.github/workflows/all.yml: -------------------------------------------------------------------------------- 1 | name: Build all APKs 2 | 3 | on: 4 | workflow_dispatch: 5 | 6 | jobs: 7 | build: 8 | runs-on: ubuntu-latest 9 | 10 | steps: 11 | - uses: actions/checkout@v5 12 | 13 | - name: Setup JDK 14 | uses: actions/setup-java@v5 15 | with: 16 | java-version: '17' 17 | distribution: zulu 18 | 19 | - name: Download ReVanced CLI 20 | uses: robinraju/release-downloader@v1.12 21 | with: 22 | repository: 'ReVanced/revanced-cli' 23 | latest: true 24 | fileName: '*.jar' 25 | 26 | - name: Download ReVanced Patches 27 | uses: robinraju/release-downloader@v1.12 28 | with: 29 | repository: 'ReVanced/revanced-patches' 30 | latest: true 31 | fileName: '*.rvp' 32 | 33 | - name: Download YouTube APK 34 | uses: robinraju/release-downloader@v1.12 35 | with: 36 | repository: '${{ github.repository }}' 37 | tag: base 38 | fileName: yt.apk 39 | 40 | - name: Download YouTube Music APKs 41 | uses: robinraju/release-downloader@v1.12 42 | with: 43 | repository: '${{ github.repository }}' 44 | tag: base 45 | fileName: music*.apk 46 | 47 | - name: Download X APK 48 | uses: robinraju/release-downloader@v1.12 49 | with: 50 | repository: '${{ github.repository }}' 51 | tag: base 52 | fileName: x.apk 53 | 54 | - name: Build APKs 55 | run: ./scripts/build.sh -mrx 56 | 57 | - name: Set current date as env variable 58 | run: >- 59 | echo "date_now=$(date +'%Y-%m-%d')" >> $GITHUB_ENV && echo 60 | "date_now_nodashes=$(date +'%Y%m%d')" >> $GITHUB_ENV 61 | 62 | - uses: kevin-david/zipalign-sign-android-release@v2.0.2 63 | name: Sign ReVanced APK 64 | id: sign_yt 65 | with: 66 | releaseDirectory: build/yt/ 67 | signingKeyBase64: '${{ secrets.SIGNING_KEY }}' 68 | alias: '${{ secrets.ALIAS }}' 69 | keyStorePassword: '${{ secrets.KEY_STORE_PASSWORD }}' 70 | keyPassword: '${{ secrets.KEY_PASSWORD }}' 71 | 72 | - uses: kevin-david/zipalign-sign-android-release@v2.0.2 73 | name: Sign ReVanced Music APKs 74 | id: sign_ytm 75 | with: 76 | releaseDirectory: build/ytm/ 77 | signingKeyBase64: '${{ secrets.SIGNING_KEY }}' 78 | alias: '${{ secrets.ALIAS }}' 79 | keyStorePassword: '${{ secrets.KEY_STORE_PASSWORD }}' 80 | keyPassword: '${{ secrets.KEY_PASSWORD }}' 81 | 82 | - uses: kevin-david/zipalign-sign-android-release@v2.0.2 83 | name: Sign X APK 84 | id: sign_x 85 | with: 86 | releaseDirectory: build/x/ 87 | signingKeyBase64: '${{ secrets.SIGNING_KEY }}' 88 | alias: '${{ secrets.ALIAS }}' 89 | keyStorePassword: '${{ secrets.KEY_STORE_PASSWORD }}' 90 | keyPassword: '${{ secrets.KEY_PASSWORD }}' 91 | 92 | - name: Generate SHA256 checksums for the signed APK files 93 | run: ./scripts/sha256gen.sh -mrx 94 | 95 | - uses: marvinpinto/action-automatic-releases@latest 96 | name: Release ReVanced 97 | with: 98 | repo_token: '${{ secrets.GITHUB_TOKEN }}' 99 | automatic_release_tag: '${{ env.date_now_nodashes }}-yt' 100 | title: 'ReVanced ${{ env.date_now }}' 101 | prerelease: false 102 | files: | 103 | build/hashes/sha256-yt.txt 104 | ${{ steps.sign_yt.outputs.signedReleaseFile }} 105 | 106 | - uses: marvinpinto/action-automatic-releases@latest 107 | name: Release ReVanced Music 108 | with: 109 | repo_token: '${{ secrets.GITHUB_TOKEN }}' 110 | automatic_release_tag: '${{ env.date_now_nodashes }}-ytm' 111 | title: 'ReVanced Music ${{ env.date_now }}' 112 | prerelease: false 113 | files: | 114 | build/hashes/sha256-ytm.txt 115 | ${{ steps.sign_ytm.outputs.signedReleaseFile0 }} 116 | ${{ steps.sign_ytm.outputs.signedReleaseFile1 }} 117 | ${{ steps.sign_ytm.outputs.signedReleaseFile2 }} 118 | ${{ steps.sign_ytm.outputs.signedReleaseFile3 }} 119 | 120 | - uses: marvinpinto/action-automatic-releases@latest 121 | name: Release X 122 | with: 123 | repo_token: '${{ secrets.GITHUB_TOKEN }}' 124 | automatic_release_tag: '${{ env.date_now_nodashes }}-x' 125 | title: 'X ${{ env.date_now }}' 126 | prerelease: false 127 | files: | 128 | build/hashes/sha256-x.txt 129 | ${{ steps.sign_x.outputs.signedReleaseFile }} 130 | -------------------------------------------------------------------------------- /.github/workflows/x.yml: -------------------------------------------------------------------------------- 1 | name: Build X 2 | 3 | on: 4 | workflow_dispatch: 5 | 6 | jobs: 7 | build: 8 | runs-on: ubuntu-latest 9 | 10 | steps: 11 | - uses: actions/checkout@v5 12 | 13 | - name: Setup JDK 14 | uses: actions/setup-java@v5 15 | with: 16 | java-version: '17' 17 | distribution: zulu 18 | 19 | - name: Download ReVanced CLI 20 | uses: robinraju/release-downloader@v1.12 21 | with: 22 | repository: 'ReVanced/revanced-cli' 23 | latest: true 24 | fileName: '*.jar' 25 | 26 | - name: Download ReVanced Patches 27 | uses: robinraju/release-downloader@v1.12 28 | with: 29 | repository: 'ReVanced/revanced-patches' 30 | latest: true 31 | fileName: '*.rvp' 32 | 33 | - name: Download X APK 34 | uses: robinraju/release-downloader@v1.12 35 | with: 36 | repository: '${{ github.repository }}' 37 | tag: base 38 | fileName: x.apk 39 | 40 | - name: Build APKs 41 | run: ./scripts/build.sh -x 42 | 43 | - name: Set current date as env variable 44 | run: >- 45 | echo "date_now=$(date +'%Y-%m-%d')" >> $GITHUB_ENV && echo 46 | "date_now_nodashes=$(date +'%Y%m%d')" >> $GITHUB_ENV 47 | 48 | - uses: kevin-david/zipalign-sign-android-release@v2.0.2 49 | name: Sign X APK 50 | id: sign_x 51 | with: 52 | releaseDirectory: build/x/ 53 | signingKeyBase64: '${{ secrets.SIGNING_KEY }}' 54 | alias: '${{ secrets.ALIAS }}' 55 | keyStorePassword: '${{ secrets.KEY_STORE_PASSWORD }}' 56 | keyPassword: '${{ secrets.KEY_PASSWORD }}' 57 | 58 | - name: Generate SHA256 checksums for the signed APK file 59 | run: ./scripts/sha256gen.sh -x 60 | 61 | - uses: marvinpinto/action-automatic-releases@latest 62 | name: Release X 63 | with: 64 | repo_token: '${{ secrets.GITHUB_TOKEN }}' 65 | automatic_release_tag: '${{ env.date_now_nodashes }}-x' 66 | title: 'X ${{ env.date_now }}' 67 | prerelease: false 68 | files: | 69 | build/hashes/sha256-x.txt 70 | ${{ steps.sign_x.outputs.signedReleaseFile }} 71 | -------------------------------------------------------------------------------- /.github/workflows/yt-ytm.yml: -------------------------------------------------------------------------------- 1 | name: Build ReVanced and ReVanced Music APKs 2 | 3 | on: 4 | workflow_dispatch: 5 | 6 | jobs: 7 | build: 8 | runs-on: ubuntu-latest 9 | 10 | steps: 11 | - uses: actions/checkout@v5 12 | 13 | - name: Setup JDK 14 | uses: actions/setup-java@v5 15 | with: 16 | java-version: '17' 17 | distribution: zulu 18 | 19 | - name: Download ReVanced CLI 20 | uses: robinraju/release-downloader@v1.12 21 | with: 22 | repository: 'ReVanced/revanced-cli' 23 | latest: true 24 | fileName: '*.jar' 25 | 26 | - name: Download ReVanced Patches 27 | uses: robinraju/release-downloader@v1.12 28 | with: 29 | repository: 'ReVanced/revanced-patches' 30 | latest: true 31 | fileName: '*.rvp' 32 | 33 | - name: Download YouTube APK 34 | uses: robinraju/release-downloader@v1.12 35 | with: 36 | repository: '${{ github.repository }}' 37 | tag: base 38 | fileName: yt.apk 39 | 40 | - name: Download YouTube Music APKs 41 | uses: robinraju/release-downloader@v1.12 42 | with: 43 | repository: '${{ github.repository }}' 44 | tag: base 45 | fileName: music*.apk 46 | 47 | - name: Build APKs 48 | run: ./scripts/build.sh -mr 49 | 50 | - name: Set current date as env variable 51 | run: >- 52 | echo "date_now=$(date +'%Y-%m-%d')" >> $GITHUB_ENV && echo 53 | "date_now_nodashes=$(date +'%Y%m%d')" >> $GITHUB_ENV 54 | 55 | - uses: kevin-david/zipalign-sign-android-release@v2.0.2 56 | name: Sign ReVanced APK 57 | id: sign_yt 58 | with: 59 | releaseDirectory: build/yt/ 60 | signingKeyBase64: '${{ secrets.SIGNING_KEY }}' 61 | alias: '${{ secrets.ALIAS }}' 62 | keyStorePassword: '${{ secrets.KEY_STORE_PASSWORD }}' 63 | keyPassword: '${{ secrets.KEY_PASSWORD }}' 64 | 65 | - uses: kevin-david/zipalign-sign-android-release@v2.0.2 66 | name: Sign ReVanced Music APKs 67 | id: sign_ytm 68 | with: 69 | releaseDirectory: build/ytm/ 70 | signingKeyBase64: '${{ secrets.SIGNING_KEY }}' 71 | alias: '${{ secrets.ALIAS }}' 72 | keyStorePassword: '${{ secrets.KEY_STORE_PASSWORD }}' 73 | keyPassword: '${{ secrets.KEY_PASSWORD }}' 74 | 75 | - name: Generate SHA256 checksums for the signed APK files 76 | run: ./scripts/sha256gen.sh -mr 77 | 78 | - uses: marvinpinto/action-automatic-releases@latest 79 | name: Release ReVanced 80 | with: 81 | repo_token: '${{ secrets.GITHUB_TOKEN }}' 82 | automatic_release_tag: '${{ env.date_now_nodashes }}-yt' 83 | title: 'ReVanced ${{ env.date_now }}' 84 | prerelease: false 85 | files: | 86 | build/hashes/sha256-yt.txt 87 | ${{ steps.sign_yt.outputs.signedReleaseFile }} 88 | 89 | - uses: marvinpinto/action-automatic-releases@latest 90 | name: Release ReVanced Music 91 | with: 92 | repo_token: '${{ secrets.GITHUB_TOKEN }}' 93 | automatic_release_tag: '${{ env.date_now_nodashes }}-ytm' 94 | title: 'ReVanced Music ${{ env.date_now }}' 95 | prerelease: false 96 | files: | 97 | build/hashes/sha256-ytm.txt 98 | ${{ steps.sign_ytm.outputs.signedReleaseFile0 }} 99 | ${{ steps.sign_ytm.outputs.signedReleaseFile1 }} 100 | ${{ steps.sign_ytm.outputs.signedReleaseFile2 }} 101 | ${{ steps.sign_ytm.outputs.signedReleaseFile3 }} 102 | -------------------------------------------------------------------------------- /.github/workflows/yt.yml: -------------------------------------------------------------------------------- 1 | name: Build ReVanced 2 | 3 | on: 4 | workflow_dispatch: 5 | 6 | jobs: 7 | build: 8 | runs-on: ubuntu-latest 9 | 10 | steps: 11 | - uses: actions/checkout@v5 12 | 13 | - name: Setup JDK 14 | uses: actions/setup-java@v5 15 | with: 16 | java-version: '17' 17 | distribution: zulu 18 | 19 | - name: Download ReVanced CLI 20 | uses: robinraju/release-downloader@v1.12 21 | with: 22 | repository: 'ReVanced/revanced-cli' 23 | latest: true 24 | fileName: '*.jar' 25 | 26 | - name: Download ReVanced Patches 27 | uses: robinraju/release-downloader@v1.12 28 | with: 29 | repository: 'ReVanced/revanced-patches' 30 | latest: true 31 | fileName: '*.rvp' 32 | 33 | - name: Download YouTube APK 34 | uses: robinraju/release-downloader@v1.12 35 | with: 36 | repository: '${{ github.repository }}' 37 | tag: base 38 | fileName: yt.apk 39 | 40 | - name: Build APKs 41 | run: ./scripts/build.sh -r 42 | 43 | - name: Set current date as env variable 44 | run: >- 45 | echo "date_now=$(date +'%Y-%m-%d')" >> $GITHUB_ENV && echo 46 | "date_now_nodashes=$(date +'%Y%m%d')" >> $GITHUB_ENV 47 | 48 | - uses: kevin-david/zipalign-sign-android-release@v2.0.2 49 | name: Sign ReVanced APK 50 | id: sign_yt 51 | with: 52 | releaseDirectory: build/yt/ 53 | signingKeyBase64: '${{ secrets.SIGNING_KEY }}' 54 | alias: '${{ secrets.ALIAS }}' 55 | keyStorePassword: '${{ secrets.KEY_STORE_PASSWORD }}' 56 | keyPassword: '${{ secrets.KEY_PASSWORD }}' 57 | 58 | - name: Generate SHA256 checksums for the signed APK file 59 | run: ./scripts/sha256gen.sh -r 60 | 61 | - uses: marvinpinto/action-automatic-releases@latest 62 | name: Release ReVanced 63 | with: 64 | repo_token: '${{ secrets.GITHUB_TOKEN }}' 65 | automatic_release_tag: '${{ env.date_now_nodashes }}-yt' 66 | title: 'ReVanced ${{ env.date_now }}' 67 | prerelease: false 68 | files: | 69 | build/hashes/sha256-yt.txt 70 | ${{ steps.sign_yt.outputs.signedReleaseFile }} 71 | -------------------------------------------------------------------------------- /.github/workflows/ytm.yml: -------------------------------------------------------------------------------- 1 | name: Build ReVanced Music 2 | 3 | on: 4 | workflow_dispatch: 5 | 6 | jobs: 7 | build: 8 | runs-on: ubuntu-latest 9 | 10 | steps: 11 | - uses: actions/checkout@v5 12 | 13 | - name: Setup JDK 14 | uses: actions/setup-java@v5 15 | with: 16 | java-version: '17' 17 | distribution: zulu 18 | 19 | - name: Download ReVanced CLI 20 | uses: robinraju/release-downloader@v1.12 21 | with: 22 | repository: 'ReVanced/revanced-cli' 23 | latest: true 24 | fileName: '*.jar' 25 | 26 | - name: Download ReVanced Patches 27 | uses: robinraju/release-downloader@v1.12 28 | with: 29 | repository: 'ReVanced/revanced-patches' 30 | latest: true 31 | fileName: '*.rvp' 32 | 33 | - name: Download YouTube Music APKs 34 | uses: robinraju/release-downloader@v1.12 35 | with: 36 | repository: '${{ github.repository }}' 37 | tag: base 38 | fileName: music*.apk 39 | 40 | - name: Build APKs 41 | run: ./scripts/build.sh -m 42 | 43 | - name: Set current date as env variable 44 | run: >- 45 | echo "date_now=$(date +'%Y-%m-%d')" >> $GITHUB_ENV && echo 46 | "date_now_nodashes=$(date +'%Y%m%d')" >> $GITHUB_ENV 47 | 48 | - uses: kevin-david/zipalign-sign-android-release@v2.0.2 49 | name: Sign ReVanced Music APKs 50 | id: sign_ytm 51 | with: 52 | releaseDirectory: build/ytm/ 53 | signingKeyBase64: '${{ secrets.SIGNING_KEY }}' 54 | alias: '${{ secrets.ALIAS }}' 55 | keyStorePassword: '${{ secrets.KEY_STORE_PASSWORD }}' 56 | keyPassword: '${{ secrets.KEY_PASSWORD }}' 57 | 58 | - name: Generate SHA256 checksums for the signed APK files 59 | run: ./scripts/sha256gen.sh -m 60 | 61 | - uses: marvinpinto/action-automatic-releases@latest 62 | name: Release ReVanced Music 63 | with: 64 | repo_token: '${{ secrets.GITHUB_TOKEN }}' 65 | automatic_release_tag: '${{ env.date_now_nodashes }}-ytm' 66 | title: 'ReVanced Music ${{ env.date_now }}' 67 | prerelease: false 68 | files: | 69 | build/hashes/sha256-ytm.txt 70 | ${{ steps.sign_ytm.outputs.signedReleaseFile0 }} 71 | ${{ steps.sign_ytm.outputs.signedReleaseFile1 }} 72 | ${{ steps.sign_ytm.outputs.signedReleaseFile2 }} 73 | ${{ steps.sign_ytm.outputs.signedReleaseFile3 }} 74 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | *.apk 2 | *.jar 3 | apkeep 4 | *.dex 5 | revanced-cache/ 6 | build/ 7 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # ReVanced Repo ![downloadCount](https://img.shields.io/github/downloads/LeddaZ/revanced-repo/total?color=blue&label=Downloads) 2 | This repo template will allow you to build non-root ReVanced, ReVanced Music and X using GitHub Actions. This will help people who don't want to setup build environments on their machines. 3 | 4 | > [!warning] 5 | > These are **unofficial** builds. The ReVanced team is not responsible for issues derived from unofficial apps and I'm not part of the ReVanced team. 6 | 7 | ### Excluded patches 8 | - X: `Hide recommended users` and `Hide view count` 9 | 10 | You can modify the `scripts/build.sh` script to choose the patches you want. A list of available patches and their descriptions can be found [here](https://revanced.app/patches). 11 | 12 | ### Supported versions 13 | - YouTube: `20.13.41` 14 | - YouTube Music: `7.29.52` 15 | - X: `10.48.0-release.0` 16 | 17 | ## How to setup 18 | 1. Fork or create a new repository using this repository as a template ([Guide](https://docs.github.com/en/repositories/creating-and-managing-repositories/creating-a-repository-from-a-template)). DO NOT FORK if you need to set the new repo to private. 19 | 2. [Set up signing](signing.md) (if you don't want to, you can remove the signing part in the workflows) 20 | 3. Download the needed APKs from APKMirror and upload them to a new release with the `base` tag ([Step 1](images/release_1.png), [Step 2](images/release_2.png)). The names must be `yt.apk`, `music-arm.apk`, `music-arm64.apk`, `music-x86.apk`, `music-x86_64.apk`, `x.apk`. 21 | 22 | ## How to build 23 | 1. Go to Actions -> All workflows -> Choose what you want to build ([Example](images/workflow_run.png)) 24 | 2. Run the workflow 25 | 3. Download the APKs from the latest release ([Example](images/build_release.png)) 26 | -------------------------------------------------------------------------------- /changelogs/music.md: -------------------------------------------------------------------------------- 1 | # ReVanced Music changelog 2 | 3 | ## 2025-09-16 4 | - Downgraded to 7.29.52 5 | - Fixed 400 error 6 | 7 | ## 2025-04-03 8 | - Updated to 8.05.51 9 | 10 | ## 2025-02-09 11 | - Updated to 8.05.50 12 | 13 | ## 2024-12-26 14 | - Updated to 7.31.51 15 | - **Hide category bar**: Add support for latest release 16 | - Add **Spoof video streams** patch to fix playback 17 | - Add **Spoof client** patch to fix playback 18 | 19 | ## 2024-11-24 20 | - Updated to 7.28.51 21 | 22 | ## 2024-11-11 23 | - Updated to 7.25.52 24 | 25 | ## 2024-10-23 26 | - Updated to 7.24.51 27 | 28 | ## 2024-10-08 29 | - Updated to 7.21.50 30 | 31 | ## 2024-09-19 32 | - Updated to 7.19.51 33 | 34 | ## 2024-07-12 35 | - Updated to 7.03.52 36 | - Rename **Minimized playback** to **Remove background playback restrictions** 37 | 38 | ## 2024-06-02 39 | - Updated to 7.02.52 40 | 41 | ## 2024-05-21 42 | - Updated to 7.01.52 43 | 44 | ## 2024-04-21 45 | - Updated to 6.48.51 46 | - Remove upgrade button: Fix compatibility with latest versions 47 | - Hide 'Get Music Premium' label: Remove occurences of label in settings 48 | 49 | ## 2024-03-28 50 | - Updated to 6.45.54 51 | - Bumped minimum Android version to 8.0 52 | 53 | ## 2024-03-04 54 | - Updated to 6.41.58 55 | 56 | ## 2024-02-10 57 | - Updated to 6.37.50 58 | 59 | ## 2024-01-30 60 | - Updated to 6.36.54 61 | 62 | ## 2023-12-04 63 | - Updated to 6.29.57 64 | 65 | ## 2023-11-25 66 | - Updated to 6.27.53 67 | 68 | ## 2023-10-27 69 | - Updated to 6.23.55 70 | 71 | ## 2023-10-10 72 | - Updated to 6.22.51 73 | - Dropped support for Android 5.0, 5.1 and 6.0; 7.0 or newer is now required 74 | 75 | ## 2023-09-07 76 | - Updated to 6.17.52 77 | - Remove upgrade button: Remove the correct navigation bar item 78 | 79 | ## 2023-07-18 80 | - Updated to 6.10.51 81 | 82 | ## 2023-07-07 83 | - Update to 6.08.50 84 | - Enable predictive back gesture 85 | 86 | ## 2023-06-07 87 | - Updated to 6.04.52 88 | 89 | ## 2023-04-22 90 | - Update to 5.53.50 91 | 92 | ## 2023-03-18 93 | - Updated base to 5.48.52 94 | 95 | ## 2023-02-15 96 | - Bump patches compatibility to v5.41.50 97 | 98 | ## 2023-01-30 99 | - Update base to 5.40.51 100 | - Temporarily exclude `hide-get-premium` patch until it's updated 101 | 102 | ## 2023-01-19 103 | - Updated base to 5.39.52 104 | - Disabled predictive back gesture 105 | 106 | ## 2022-12-24 107 | - Updated base to 5.36.51 108 | 109 | ## 2022-12-11 110 | - Updated base to 5.34.51 111 | - Enabled predictive back gesture on Android 13 112 | 113 | ## 2022-11-03 114 | - Updated base to 5.31.50 115 | 116 | ## 2022-10-28 117 | - Use proper scaled icons 118 | 119 | ## 2022-10-21 120 | - Updated base to 5.29.52 121 | 122 | ## 2022-10-06 123 | - Updated base to 5.26.52 124 | 125 | ## 2022-09-29 126 | - Updated base to 5.25.51 127 | 128 | ## 2022-09-15 129 | - Updated base to 5.23.50 130 | 131 | ## 2022-09-03 132 | - Updated base to 5.22.54 133 | - Re-added `tasteBuilder-remover` patch 134 | -------------------------------------------------------------------------------- /changelogs/revanced.md: -------------------------------------------------------------------------------- 1 | # ReVanced changelog 2 | 3 | ## 2025-09-16 4 | - **Hide layout components**: Add Hide in history option to filter bar 5 | - **SponsorBlock**: Add "Undo automatic skip toast" 6 | - **Hide layout components**: Do not hide playlist sort button if `Hide AI comments summary` is on 7 | - **Playback speed**: Allow custom speeds with 0.01x precision 8 | - **Slide to seek**: Show tap and hold 2x speed overlay when active 9 | - **Change header**: Add in-app setting to change the app header 10 | - **Hide layout components**: Add Hide channel links preview and Hide `Visit Community` button in channel page 11 | - Add **Disable two-finger tap gesture for skipping chapters** 12 | - **External downloads**: Improve the selection of the external downloader package 13 | - Force original audio**: Disable a/b feature flag that forces localized audio 14 | - **Video quality**: Use 1080p enhanced bitrate for Premium users 15 | - **Playback speed**: Add "Restore old playback speed menu" option 16 | - **Video quality**: Add player button to change video quality 17 | - **Video quality**: Show FHD+ icon for 1080p 60fps enhanced bitrate 18 | - **Hide player flyout menu items**: Add option to hide quality flyout menu 19 | - **Hide video action buttons**: Add "Hide Hype button" setting 20 | - **Hide video action buttons**: Add "Hide Promote button" setting 21 | - **Playback speed**: Show current playback speed on player speed dialog button 22 | - Add **Disable sign in to TV popup** patch 23 | - **SponsorBlock**: Add `Hook` segment category 24 | - **Spoof video streams**: Add iPadOS client 25 | - Many bugfixes 26 | 27 | ## 2025-06-28 28 | ### **New Features & Improvements** 29 | - Added **new hiding options** for various UI elements (video action buttons, Shorts components, player overlays, ticket shelf, etc.) 30 | - **Swipe controls** enhanced with customizable sensitivity, colors, and vertical progress bar option 31 | - **Settings improvements**: Added search, color picker, icons, modern dialogs, scrollable content, and debug log sharing 32 | - **Playback enhancements**: Fixed background playback restrictions, Shorts autoplay, and added disable haptic feedback 33 | - **Spoofing & compatibility**: Better Android spoof handling, GmsCore troubleshooting, and support for **YouTube v20.12+** 34 | - **Return YouTube Dislike (RYD)**: Fixed Shorts dislike updates and A/B layout support 35 | - **Seekbar patches** merged and fixed for feed/Shorts 36 | - **Theme options**: Added black/white splash screen animation 37 | 38 | ### **Bug Fixes** 39 | - Fixed **Shorts components hiding** (action buttons, comment panel, sound/template buttons) 40 | - Fixed **video description hiding** (music/game links, attributes) 41 | - Fixed **player overlay** and related video hiding in fullscreen 42 | - Fixed **auto-captions** hiding in newer versions 43 | - Patched **new ad types** (product ads, general ads) 44 | - Resolved **PiP button** issues after screen unlock 45 | 46 | ### **Removals & Deprecations** 47 | - Removed broken options (e.g., comments emoji picker) 48 | 49 | ## 2025-04-03 50 | - Updated to 20.07.39 51 | - **Spoof video streams**: Change default client to `Android TV` 52 | - **Spoof video streams**: Resolve playback issues with dynamic player config 53 | - **Return YouTube Dislike**: add `Show estimated likes setting` 54 | - **Return YouTube Dislike**: Use correct number formatting if using a different ReVanced language 55 | - **SponsorBlock**: Redesign skip buttons 56 | - **SponsorBlock**: Add opacity setting to category segment colors 57 | - **Hide filter bar**: Fix `Hide in feed` not working in subscriptions feed 58 | - **Hide layout components**: Do not hide `Show anyway` button in search results 59 | - **Hide layout components**: Do not hide Movie/Courses start page content if `Hide horizontal shelves` is enabled 60 | - **Hide player components**: Show correct end video thumbnail if `Hide end screen suggested video` is enabled 61 | - **Hide video action buttons**: Move `Disable Like and Subscribe glow` to action buttons settings menu 62 | - **Spoof app version**: Force old settings menus if spoofing to older app targets 63 | - **Spoof app version**: Remove obsolete 18.x targets and broken targets that YouTube no longer supports 64 | - **Spoof app version**: Change oldest spoof target to 19.01.34 65 | - Fix player button fade out animations 66 | - **Navigation buttons**: Add `Hide notifications` setting 67 | - **Navigation buttons**: Add user dialog message to `Disable translucent status bar` 68 | - **Swipe controls**: Swipe controls UI improvements 69 | - **Change form factor**: Restore `Automotive` form factor watch history menu, channel pages, and community 70 | - **Hide ads**: Hide new type of buttoned ad 71 | - **Theme**: Resolve dark mode startup crash with Android 9.0 72 | - Change language settings menu to use native language names 73 | - **Remember video quality**: Add separate Shorts default quality settings 74 | - Combine **Restore old video quality menu** and **Remember video quality** into **Video quality patch** 75 | - **Settings**: System navigation bar is located above the settings ui on Android 15+ 76 | - **Comments**: Add `Hide AI Comments summary` 77 | - **Video description**: Add `Hide AI-generated video summary` 78 | 79 | ## 2025-02-09 80 | - **Force original audio**: If stream spoofing to Android then show a summary text why force audio is not available 81 | - **Spoof video streams**: Ignore harmless error toast if hide ads is disabled 82 | - **Swipe controls**: Add option to enable/disable fullscreen swipe to next video 83 | - **Hide Shorts components**: Add option to hide Shorts in watch history 84 | - **Spoof app version**: Add `Restore old navigation and toolbar icons` 85 | - Add **Change form factor** patch 86 | - Add **Exit fullscreen mode** patch 87 | - Add in app option to select a preferred language for ReVanced specific text 88 | - **Spoof video streams**: Add `Android Creator` 89 | - **Spoof video streams**: Resolve playback issues after changing from cellular to wifi 90 | - **Spoof video streams**: Update client user-agent 91 | - **Hide feed components**: Handle new type of surveys 92 | - **Playback speed**: Add option to change 2x tap and hold speed 93 | - **Settings**: Add option to use new Cairo settings menus 94 | - **Hide ads**: fix `Hide the Visit store button on channel pages` not working 95 | - **Hide ads**: Hide new types of tablet ads 96 | - **Hide layout components**: Hide new kind of community post 97 | - **Spoof video streams**: Update settings side effects summary text 98 | - **Hide ads**: Add `Hide end screen store banner` 99 | - **Hide video description components**: Add `Hide How this content was made` section 100 | - **Theme**: Add option to use custom seekbar accent color 101 | - Add patch **Disable HDR video** 102 | - **Enable slide to seek**: Change patch to default include 103 | - **Theme**: Use custom seekbar color for cairo startup animation 104 | - **Change start page**: Add additional start pages 105 | 106 | ## 2024-12-26 107 | - Updated to 19.47.53 108 | - **Hide Shorts components**: Add missing options to patch 109 | - **Playback speed**: Allow long press 2x speed when using custom playback speeds 110 | - **Settings**: Do not clip settings menus when using an Android 15 device 111 | - **Settings**: Show navigation back button in setting sub menus 112 | - **Spoof video streams**: Update `Force AVC` client data 113 | - **Spoof video streams**: Allow picking a default audio language track 114 | - **Spoof video streams**: Fix error toast that is sometimes shown 115 | - **Spoof video streams**: Resolve playback of age restricted videos 116 | - **Spoof video streams**: Remove iOS, add clients Android TV and Android Creator 117 | - **Spoof video streams**: Add iOS TV client 118 | - **Spoof video streams**: Use 2 letter device language code 119 | - **Spoof video streams**: Use Android VR authentication if using default audio language 120 | - **Theme**: Apply custom seekbar color to splash screen animation 121 | - **Theme**: Use dark theme color for status and navigation bar 122 | - **Spoof app version**: Update spoof target to resolve library tab crashes 123 | - Add **Open videos fullscreen** patch 124 | - **Hide ads**: Hide new type of featured promotions 125 | - **Comments**: Add `Hide 'Chat summary'` 126 | - **Hide feed components**: Remove obsolete `Hide search result shelf header` option 127 | - **Navigation buttons**: Add options to disable translucent status bar and navigation bar 128 | - Add **Force original audio** patch 129 | - Add **Open Shorts in regular player** patch 130 | - **Hide layout components**: Hide new kind of community post 131 | - **Hide layout components**: Don't hide Shorts channel bar when toggling for video player 132 | - **Miniplayer**: Use estimated maximum on screen size for devices with low density screens 133 | - **SponsorBlock**: Show create new segment error messages using a dialog 134 | - **SponsorBlock**: Show a toast and not a dialog if segment submitted successfully 135 | - Do not reset playback speed to 1.0x after closing comment thread (Fixes stock YouTube bug) 136 | 137 | ## 2024-11-24 138 | - Updated to 19.45.38 139 | - **Player controls**: Show player control buttons with A/B layout 140 | - **Change header**: Apply header changes to A/B layout 141 | - **Hide Shorts components**: Do not hide Shorts action buttons on app first launch 142 | - **Playback speed**: Add `Auto` speed. Always override speed if default is set to 1.0x 143 | - **SponsorBlock**: Fix create new segment crash on tablet custom roms 144 | - **Spoof app version**: Adjust legacy spoof targets 145 | - **Spoof app version**: Remove broken spoof targets when patching 19.25+ 146 | - **Miniplayer**: Add option to disable miniplayer 147 | 148 | ## 2024-11-11 149 | - Updated to 19.43.41 150 | - **Copy video URL**: Support A/B player layout 151 | - **Hide ads**: Hide new types of ads 152 | - **Hide layout components**: Remove obsolete `Hide gray separator` 153 | - **Hide layout components**: Hide player shopping shelf 154 | - **Playback speed**: Restore old playback speed menu 155 | - **Playback speed**: Remember playback speed with new speed menu 156 | - **Remove background playback restrictions**: Enable for Shorts as well 157 | - **Return YouTube Dislike**: Use latest separator height 158 | - **Seekbar**: Use latest shade of YouTube red 159 | - **Settings**: Use multiline preference title for localized languages 160 | - **SponsorBlock**: Show correct segment behavior in settings UI after importing 161 | - **Spoof app version**: Remove obsolete 17.33.42 spoof target 162 | - Merge **Restore old seekbar thumbnails** into **Seekbar thumbnails** 163 | - Merge multiple layout patches into **Hide Layout Components** 164 | - Merge multiple player overlay patches into **Hide player overlay buttons** 165 | - **Hide player flyout menu items**: Hide stable volume 166 | - **Miniplayer**: Add horizontal drag gesture 167 | - **Player flyout menu**: Hide sleep timer 168 | - Add **Seekbar thumbnails** patch 169 | - Add **Shorts autoplay** patch 170 | - **Return YouTube Dislike**: Show Shorts dislikes with new A/B button icons 171 | - **Remember video quality**: Correctly set default quality when changing from a low quality video 172 | - **Playback speed**: Remember playback speed when using non 1.0x default speed 173 | 174 | ## 2024-10-23 175 | - Updated to 19.34.42 176 | - **GmsCore support**: Add more replacements 177 | - **GmsCore support**: Remove unclear patch changes 178 | - **Spoof video streams**: Fix playback for Android VR by removing invalid body as well 179 | - **Hide layout components**: Add option to hide YouTube Doodles 180 | - **Hide Shorts components**: Add option to hide Use template, Upcoming, Green screen buttons 181 | - **Hide Shorts components**: Add option to hide like fountain 182 | - **Hide Shorts components**: Hide Hashtag button 183 | - **GmsCore support**: Improve performance by using hashsets 184 | 185 | ## 2024-10-08 186 | - **Spoof video streams**: Change default client type to Android VR 187 | - **SponsorBlock**: Fade out SB buttons without overlapping other buttons 188 | - Show video chapter titles without clipping when overlay buttons are enabled 189 | - **Disable precise seeking gesture**: Hide "pull up" label that shows up when swiping 190 | - **Hide Shorts components**: Add Hide save music, Hide stickers 191 | - **Hide Shorts components**: Add patch option to hide Shorts app shortcut (long press app icon) 192 | - **Hide Shorts components**: Add patch option to hide Shorts from app launcher widget 193 | 194 | ## 2024-09-19 195 | - **Return YouTube Dislike**: Show estimated like count for videos with hidden likes 196 | - Fix issues related to playback by replacing streaming data 197 | - **Hide Shorts components**: Hide `Use this sound` button 198 | - **Keyword filter**: Add syntax to match whole keywords and not substrings 199 | - **Spoof client**: Allow forcing AVC codec with iOS 200 | - Add donation link to settings about screen 201 | 202 | ## 2024-08-23 203 | - **Hide keyword content**: Do not hide flyout menu 204 | - **SponsorBlock**: Correctly show minute timestamp when creating a new segment 205 | - **SponsorBlock**: Improve create segment manual seek accuracy 206 | - **Spoof client**: Restore missing high qualities by spoofing the iOS client user agent 207 | - **Spoof client**: Restore livestream audio only playback with iOS spoofing 208 | - **Description components**: Add Hide 'Key concepts' section option 209 | - Add **Bypass image region restrictions** patch 210 | - **GmsCore support**: Fix notifications not working by using the correct permissions 211 | - Add **Check watch history domain name resolution** patch 212 | 213 | ## 2024-07-12 214 | - **Client spoof**: Correctly play more livestreams using Android VR 215 | - **Hide description components**: Replace **Hide game section** and **Hide music section** with **Hide attributes section** 216 | - **Rename Minimized playback** to **Remove background playback restrictions** 217 | - **Comments**: Add **Hide 'Create a Short' button**, **Hide Thanks button** and **Hide 'Comments by members' header** options 218 | - **Miniplayer**: Rename **Tablet mini player** and allow selecting the style of the in-app miniplayer 219 | - **Hide layout components**: Detect if a keyword filter hides all videos 220 | - **Settings**: Move some settings to different menus, adjust default setting values 221 | - **SponsorBlock**: Skip segments when casting 222 | 223 | ## 2024-06-02 224 | - Updated to 19.16.39 225 | - **Spoof client**: Spoof iOS client model to fix various side effects 226 | - **Spoof client**: Allow swipe gestures to enter/exit fullscreen when spoofing with Android VR client 227 | - **Spoof client**: Improve Android spoofing 228 | - **Spoof client**: Restore playback speed menu when spoofing to an iOS client 229 | - **Hide layout components**: Disable like / subscribe button glow animation 230 | - **Playback speed**: Add option to show speed dialog button in video player 231 | 232 | ## 2024-05-21 233 | - **Spoof client**: Spoof client to fix playback 234 | - **Hide video action buttons**: Remove obsolete hide Shop button 235 | - **Player flyout menu**: Remove obsolete Hide report menu 236 | - **Restore old video quality menu**: Show advanced quality menu in Shorts quality flyout 237 | - **SponsorBlock**: Show correct segment times if video is over 24 hours in length 238 | - **Comments**: Add option to hide timestamp and emoji buttons 239 | - **Hide ads**: Add option to hide the 'Visit store' button on channel pages 240 | - **Hide Shorts components**: Hide 'Buy super thanks' button 241 | - **Hide Shorts components**: Hide like / dislike button in video ads 242 | - **Navigation buttons**: Add option to hide navigation button labels 243 | 244 | ## 2024-04-21 245 | - Updated to 19.11.43 246 | - Alternative thumbnails: Selectively enable for home / subscription / search 247 | - GmsCore: Require ignoring battery optimizations 248 | - GmsCore support: Prompt to disable battery optimizations, if not done already 249 | - Hide ads: rename Hide paid content to Hide paid promotion label 250 | - Hide load more button: Include patch with Hide layout components, and hide button only in search feed 251 | - Hide Shorts components: Correctly hide Shorts if navigation tab is changed using device back button 252 | - Player flyout menu: Add hide Lock screen menu 253 | - Spoof device dimensions: Warn about potential performance issues 254 | - Hide layout components: Add option to hide horizontal shelves 255 | - Hide layout components: Hide playables 256 | - Hide Shorts components: Hide Shop, Location and Save sound to playlist buttons 257 | - Hide Shorts components: Hide tagged products, hide search suggestions 258 | - Swipe controls: Save and restore brightness and add auto-brightness toggle 259 | - Add 'About' preference to settings menu 260 | - Match overlay icons style to YouTube 261 | 262 | ## 2024-03-28 263 | - Updated to 19.09.37 264 | - Client spoof: Spoof all user agents 265 | - Hide ads: Prevent app crash if hiding fullscreen ads is not possible 266 | - Fix video playback by switching to ReVanced GmsCore vendor 267 | - Downloads: Use external downloader when selecting `Download` in home feed flyout menu 268 | - Downloads: Add ability to use in-app download button 269 | - Hide layout components: Filter home/search results by keywords 270 | - Hide Shorts components: Hide like and dislike buttons 271 | - Hide Shorts components: Hide sound metadata label 272 | - Hide Shorts components: Hide title and full video link label 273 | - Hide Shorts components: Selectively hide Shorts for home / subscription / search 274 | - Remove HDR auto brightness patch 275 | 276 | ## 2024-03-04 277 | - Spoof app version: Remove broken versions 278 | - Spoof signature: Fix tracking such as history or watch time 279 | - Change start page: Add more start pages 280 | - Spoof app version: Add target versions 281 | - Reorganize settings menu 282 | 283 | ## 2024-02-10 284 | - Updated to 19.04.37 285 | - Correctly show channel page on tablet devices 286 | 287 | ## 2024-01-30 288 | - Updated to 19.03.35 289 | - Minimized playback: Fix PIP incorrectly shown for some Shorts playback 290 | - Return YouTube Dislike: Prevent the first Short opened from freezing the UI 291 | - Alternative Thumbnails: Add option to use DeArrow 292 | - Add Change start page patch 293 | - Hide ads: Hide fullscreen ads 294 | - Hide layout components: Hide search result recommendations 295 | - Add Remove viewer discretion dialog patch (a07f83f) 296 | - Remove Hide email address patch 297 | - Clarify patch descriptions 298 | - Enable slide to seek: Change patch default to excluded and add description disclaimer 299 | - Change header: Change to ReVanced borderless logo header by default 300 | - Other improvements to existing patches 301 | 302 | ## 2023-12-04 303 | - Updated to 18.45.43 304 | 305 | ## 2023-11-25 306 | - Updated to 18.45.41 307 | - Hide layout components: Hide video quality menu footer 308 | - Add Disable fullscreen ambient mode patch 309 | - Add Disable suggested video end screen patch 310 | - Add Enable old seekbar thumbnails patch 311 | - SponsorBlock: Rename "Preview/Recap" category to "Preview/Recap/Hook" 312 | - Rename Restore old seekbar thumbnails and Restore old quality menu 313 | - Add Enable slide to seek patch 314 | - Add Remove tracking query parameter patch 315 | - ReturnYouTubeDislike: Improve layout padding 316 | - Add Disable rolling number animations patch 317 | - Hide ads: Hide shopping links in video description 318 | - Hide layout components: Hide "For You" shelf in channel page 319 | 320 | ## 2023-10-27 321 | - ReturnYouTubeDislike: Fix dislikes not showing on Shorts 322 | - Hide layout components: Hide new channel watermark component 323 | - Theme: Disable gradient loading screen 324 | - Add Announcements patch 325 | - Add Spoof device dimensions patch 326 | 327 | ## 2023-10-10 328 | - Updated to 18.38.44 329 | - Hide info cards: Fix info cards not hiding for some users 330 | - Hide layout components: Always hide redundant 'player audio track' button 331 | - Hide layout components: Hide "Join", "Notify me", search result shelf header and timed reactions 332 | - Hide shorts components: Fix hiding navigation bar 333 | - Restore functionality of Old video quality menu and Custom speeds on tablets 334 | - Add Bypass URL redirects patch 335 | - Add Disable fine scrubbing gesture patch 336 | - Other improvements to existing patches 337 | 338 | ## 2023-09-07 339 | - Updated to 18.32.39 340 | - Allow setting no background color 341 | - Apply custom seekbar color to shorts 342 | - Add a switch to enable/disable custom seekbar color 343 | - Add switch to hide chips shelf 344 | - Add Player Flyout Menu patch 345 | - Add switch to hide individual action buttons 346 | - Add Alternative thumbnails patch 347 | - Add Custom player overlay opacity patch 348 | - Add Enable tablet layout patch 349 | - Restored original app name and icon 350 | 351 | ## 2023-07-18 352 | - Updated to 18.23.35 353 | - Remove non-functional custom video buffer patch 354 | - Update app icon 355 | 356 | ## 2023-07-07 357 | - Option to hide mix playlists 358 | - Don't re-enable signature spoof automatically 359 | - Enable predictive back gesture 360 | 361 | ## 2023-06-07 362 | - Updated to 18.19.35 363 | - Fix default video quality/speed being applied when resuming app 364 | - Fix temporarily frozen video after opening a short 365 | - Add tap and hold functionality to copy video URL buttons 366 | - Add option to import/export ReVanced settings 367 | - Add hide-load-more-button, hide-filter-bar and hide-shorts-components patches 368 | - Use dynamic background color for custom splash screen 369 | - Other fixes and improvements 370 | 371 | ## 2023-05-10 372 | - Update to 18.16.37 373 | - Disable debugging by default 374 | - Fix hide action buttons not working for some users 375 | - Remove hide-my-mix patch (broken) 376 | - Disable minimized playback for shorts 377 | - Add hide-player-overlay and navigation-button patches 378 | - Fix background play of kids videos 379 | - Other fixes and improvements 380 | 381 | ## 2023-04-22 382 | - Update to 18.08.37 383 | - Allow to not remember playback speed 384 | - Automatic signature spoofing to prevent playback issues 385 | - Change 'Hide create, clip and thanks buttons' to default off 386 | - Fix 'Hide share button' 387 | - Hide more types of ads 388 | - Disable preferences and add dialog messages to preferences 389 | - Change default video speed and quality inside the settings menu 390 | - Various fixes and improvements to Sponsorblock and other patches 391 | 392 | ## 2023-03-18 393 | ### Patches v2.163.0 394 | - `disable-fullscreen-panels-auto-popup`: use proper descriptions 395 | - `general-ads`: fix switch description wording 396 | - `hide-time`: use correct integrations class 397 | - `hide-watch-in-vr`: fix descriptions 398 | - `open-links-directly`: reference correct integrations method 399 | - `general-ads`: hide channel bar 400 | - `general-ads`: hide horizontal video shelf 401 | - `open-links-directly`: skip every redirect url 402 | ### Patches v2.164.0 403 | - `general-ads`: hide quick actions in fullscreen 404 | - `general-ads`: hide related videos in quick action 405 | - `return-youtube-dislike`: support for shorts 406 | - Remove patch `open-links-directly` 407 | ### Patches v2.165.0 408 | - `spoof-signature-verification` patch 409 | ### Patches v2.165.1 410 | - `spoof-signature-verification`: use correct fingerprint 411 | ### Patches v2.166.0 412 | - `general-ads`: remove duplicate preference 413 | - `return-youtube-dislike`: add missing strings 414 | - `custom-video-buffer`: replace patch with removal notice 415 | - `disable-player-popup-panels`: use better patch description 416 | - `general-ads`: do not hide components in library tab 417 | - `general-ads`: hide image shelf from search results 418 | - `hide-autoplay-button`: do not disable autoplay button when hidden 419 | - `hide-floating-microphone-button` 420 | - Bump compatibility to 18.05.40 421 | 422 | ## 2023-02-15 423 | - `custom-branding`: correct scaling, margin and images 424 | - `hide-player-buttons` patch 425 | - `general-ads`: hide pill to view products 426 | - `minimized-playback`: disable when playing shorts 427 | - `general-ads`: use better description for switch 428 | - `general-ads`: hide web search results 429 | 430 | ## 2023-01-30 431 | - `return-youtube-dislike`: do not fetch voting stats when watching shorts 432 | - `sponsorblock`: replace missing strings 433 | - `general-ads`: remove hiding video shelf 434 | - `open-links-externally` patch 435 | - Show toasts along exceptions 436 | 437 | ## 2023-01-19 438 | - Disabled predictive back gesture 439 | - Added `hide-breaking-news-shelf`, `copy-video-url`, `remember-playback-rate` and `spoof-app-version` patches 440 | - Improvements to existing patches 441 | 442 | ## 2022-12-24 443 | - Updated base to 17.49.37 444 | - Improvements to existing patches 445 | 446 | ## 2022-12-11 447 | - Enabled predictive back gesture on Android 13 448 | - Fixed swipe down to refresh 449 | - Improvements to existing patches 450 | - Re-enabled `theme` patch 451 | 452 | ## 2022-11-30 453 | - Updated base to 17.45.36 454 | - Added `open-links-directly` and `remove-player-button-background` patch 455 | - Improvements to existing patches 456 | 457 | ## 2022-11-03 458 | - Updated base to 17.43.36 459 | - Added `hide-watch-in-vr` patch 460 | - Updated Return YouTube Dislike to support new UI 461 | - Hide Shorts comments button when hide comments is enabled 462 | 463 | ## 2022-10-28 464 | - Updated base to 17.41.37 465 | - Added the following patches: `hide-crowdfunding-box`, `hide-artist-card`, `hide-album-cards` and `comment` 466 | - Re-added `hide-create-button` 467 | - Changed default app name to ReVanced 468 | - Use proper scaled icons 469 | - Fixes and improvements to other patches 470 | 471 | ## 2022-10-21 472 | - Added two new patches: `hide-my-mix` (removes mix playlists from the feed) and `hide-captions-button` (hides the captions button on video player) 473 | - Temporarily excluded `hide-create-button` patch (conflicts with `hide-shorts-button` and makes the app crash) 474 | - Various fixes and improvements to other patches 475 | 476 | ## 2022-10-06 477 | - Added `disable-startup-shorts-player` and `hide-video-buttons` patches 478 | 479 | ## 2022-09-25 480 | - Added `disable-auto-player-popup-panels` and `hide-time-and-seekbar` patches 481 | - `custom-playback-speed`: max, min, granularity option 482 | - Option to disable sponsorblock on shorts 483 | 484 | ## 2022-09-19 485 | - Updated base to 17.36.37 486 | 487 | ## 2022-09-17 488 | - Completely removed `amoled` from patches 489 | 490 | ## 2022-09-15 491 | - Removed `amoled` patch since it's been deprecated by `theme` 492 | - Added `disable-auto-captions` patch 493 | 494 | ## 2022-09-03 495 | - Fixed download button color 496 | 497 | ## 2022-08-30 498 | - Updated base to 17.33.42 499 | 500 | ## 2022-08-27 501 | - Added `client-spoof` patch 502 | -------------------------------------------------------------------------------- /changelogs/x.md: -------------------------------------------------------------------------------- 1 | # X changelog 2 | 3 | ## 2025-09-16 4 | - Downgraded to 10.48.0-release.0 to improve compatibility with the patches 5 | 6 | ## 2025-06-28 7 | - Updated to 10.86.0-release.0 8 | 9 | ## 2025-04-03 10 | - Updated to 10.84.0-release.0 11 | 12 | ## 2025-02-09 13 | - Updated to 10.79.0-release.0 14 | 15 | ## 2024-12-26 16 | - Updated to 10.72.1-release.0 17 | 18 | ## 2024-11-24 19 | - Updated to 10.68.1-release.0 20 | - Fixed missing patches in previous build 21 | 22 | ## 2024-11-11 23 | - Updated to 10.65.2-release.0 24 | 25 | ## 2024-10-23 26 | - Updated to 10.63.1-release.0 27 | - Add **Change link sharing domain patch** 28 | 29 | ## 2024-10-08 30 | - Updated to 10.61.1-release.0 31 | - Removed **Open links with app chooser** patch (not compatible with latest versions) 32 | 33 | ## 2024-09-19 34 | - Updated to 10.58.0-release.0 35 | 36 | ## 2024-08-23 37 | - Updated to 10.55.1-release.0 38 | 39 | ## 2024-07-12 40 | - Updated to 10.49.0-release.0 41 | 42 | ## 2024-06-02 43 | - Updated to 10.43.0-release.0 44 | 45 | ## 2024-05-21 46 | - Updated to 10.42.0-release.0 47 | 48 | ## 2024-04-21 49 | - Initial release 50 | -------------------------------------------------------------------------------- /images/build_release.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LeddaZ/revanced-repo/19eea24afdbe70df62e538221e5b931757082632/images/build_release.png -------------------------------------------------------------------------------- /images/release_1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LeddaZ/revanced-repo/19eea24afdbe70df62e538221e5b931757082632/images/release_1.png -------------------------------------------------------------------------------- /images/release_2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LeddaZ/revanced-repo/19eea24afdbe70df62e538221e5b931757082632/images/release_2.png -------------------------------------------------------------------------------- /images/workflow_run.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LeddaZ/revanced-repo/19eea24afdbe70df62e538221e5b931757082632/images/workflow_run.png -------------------------------------------------------------------------------- /scripts/build.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | # Set up flags 4 | music=no 5 | revanced=no 6 | x=no 7 | while getopts mrx flag; do 8 | case "${flag}" in 9 | m) music=yes ;; 10 | r) revanced=yes ;; 11 | x) x=yes ;; 12 | esac 13 | done 14 | 15 | for file in *cli*; do 16 | mv -- "$file" revanced-cli.jar 17 | done 18 | 19 | for file in *patches*; do 20 | mv -- "$file" revanced-patches.rvp 21 | done 22 | 23 | mkdir -p build/yt 24 | mkdir -p build/ytm 25 | mkdir -p build/x 26 | 27 | if [ "$revanced" = 'yes' ]; then 28 | echo "**************************" 29 | echo "* Building YouTube *" 30 | echo "**************************" 31 | 32 | if [ -f "yt.apk" ]; then 33 | java -jar revanced-cli.jar patch -p revanced-patches.rvp \ 34 | -o build/yt/yt.apk yt.apk 35 | echo "YouTube ReVanced build finished" 36 | else 37 | echo "Cannot find YouTube APK, skipping build" 38 | fi 39 | else 40 | echo "Skipping YouTube ReVanced build" 41 | fi 42 | 43 | if [ "$music" = 'yes' ]; then 44 | echo "********************************" 45 | echo "* Building YouTube Music *" 46 | echo "********************************" 47 | 48 | echo "=== Building arm APK ===" 49 | if [ -f "music-arm.apk" ]; then 50 | java -jar revanced-cli.jar patch -p revanced-patches.rvp \ 51 | -o build/ytm/ytm-armeabi-v7a.apk music-arm.apk 52 | echo "ReVanced Music arm build finished" 53 | else 54 | echo "Cannot find YouTube Music arm APK, skipping build" 55 | fi 56 | 57 | echo "=== Building arm64 APK === " 58 | if [ -f "music-arm64.apk" ]; then 59 | java -jar revanced-cli.jar patch -p revanced-patches.rvp \ 60 | -o build/ytm/ytm-arm64-v8a.apk music-arm64.apk 61 | echo "ReVanced Music arm64 build finished" 62 | else 63 | echo "Cannot find YouTube Music arm64 APK, skipping build" 64 | fi 65 | 66 | echo "=== Building x86 APK ===" 67 | if [ -f "music-x86.apk" ]; then 68 | java -jar revanced-cli.jar patch -p revanced-patches.rvp \ 69 | -o build/ytm/ytm-x86.apk music-x86.apk 70 | echo "ReVanced Music x86 build finished" 71 | else 72 | echo "Cannot find YouTube Music x86 APK, skipping build" 73 | fi 74 | 75 | echo "=== Building x86_64 APK ===" 76 | if [ -f "music-x86_64.apk" ]; then 77 | java -jar revanced-cli.jar patch -p revanced-patches.rvp \ 78 | -o build/ytm/ytm-x86_64.apk music-x86_64.apk 79 | echo "ReVanced Music x86_64 build finished" 80 | else 81 | echo "Cannot find YouTube Music x86_64 APK, skipping build" 82 | fi 83 | echo "ReVanced Music build finished" 84 | else 85 | echo "Skipping ReVanced Music build" 86 | fi 87 | 88 | if [ "$x" = 'yes' ]; then 89 | echo "********************" 90 | echo "* Building X *" 91 | echo "********************" 92 | 93 | if [ -f "x.apk" ]; then 94 | java -jar revanced-cli.jar patch -p revanced-patches.rvp \ 95 | --di 162 --di 165 -o build/x/x.apk x.apk 96 | echo "X build finished" 97 | else 98 | echo "Cannot find X APK, skipping build" 99 | fi 100 | else 101 | echo "Skipping X build" 102 | fi 103 | -------------------------------------------------------------------------------- /scripts/sha256gen.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | music=no 4 | revanced=no 5 | x=no 6 | while getopts mrx flag; do 7 | case "${flag}" in 8 | m) music=yes ;; 9 | r) revanced=yes ;; 10 | x) x=yes ;; 11 | esac 12 | done 13 | 14 | mkdir -p build/hashes 15 | 16 | # Generate SHA-256 hashes 17 | if [ "$revanced" = 'yes' ]; then 18 | sha256sum build/yt/yt-signed.apk >build/hashes/sha256-yt.txt 19 | fi 20 | 21 | if [ "$music" = 'yes' ]; then 22 | sha256sum build/ytm/ytm*-signed.apk >build/hashes/sha256-ytm.txt 23 | fi 24 | 25 | if [ "$x" = 'yes' ]; then 26 | sha256sum build/x/x-signed.apk >build/hashes/sha256-x.txt 27 | fi 28 | -------------------------------------------------------------------------------- /signing.md: -------------------------------------------------------------------------------- 1 | # How to set up build signing 2 | You'll need the Java Development Kit (JDK), OpenSSL and Linux. 3 | 1. Create a new Java KeyStore with the following command 4 | 5 | `keytool -keystore clientkeystore.jks -genkey -alias client` 6 | 7 | 2. Export your private key with the following command 8 | 9 | `openssl base64 < clientkeystore.jks | tr -d '\n' | tee clientkeystore.jks.base64.txt` 10 | 11 | 3. Go to Settings -> Secrets -> Actions 12 | 4. Create the following secrets: 13 | - `SIGNING_KEY`: the contents of the clientkeystore.jks.base64.txt file 14 | - `ALIAS`: the alias specified with the -alias option earlier 15 | - `KEY_STORE_PASSWORD`: the KeyStore's password you entered earlier 16 | - `KEY_PASSWORD`: the key's password you entered earlier 17 | -------------------------------------------------------------------------------- /updater.json: -------------------------------------------------------------------------------- 1 | { 2 | "latestReVancedVersion": "20.13.41", 3 | "latestReVancedMusicVersion": "7.29.52", 4 | "latestXVersion": "10.48.0", 5 | "latestReVancedDate": "20250916", 6 | "latestReVancedMusicDate": "20250916", 7 | "latestXDate": "20250916", 8 | "latestReVancedHash": "396b0eeee7e91d69b2c55fd2aa293ed3ea4e3e84ccb03d6ee4d9739c6bedeced", 9 | "latestReVancedMusicHashArm": "00ee6037440669442f4e8429eb8aaa5a90489841f65df9319fdae13b0b017c28", 10 | "latestReVancedMusicHashArm64": "b5b0a57cd5764423794700aae7fef010304864f3459a219351a3ed24d9271668", 11 | "latestReVancedMusicHashX86": "95c32dab8623e84702a96ea140344ca21a8cbffc8c7e88af775c0ff4e535cfc3", 12 | "latestReVancedMusicHashX86_64": "8209ca31e835e8c50dff2fe98eb491d922518c1f6b0d5e548ca8cb48de0fdbd4", 13 | "latestXHash": "9e7f3d3c30006dffbe1e82a8e8981bee641e84f66604cea70afac327f61ac6e8" 14 | } 15 | --------------------------------------------------------------------------------