NewPipe 0.21.9 released: Preview those thumbnails!

post image

Hi. This release is definitely worth checking out. We are talking thumbnail previews when seeking on YouTube, hearts from YouTube channels on comments, a proper UI for disabled YouTube comments as well as other improved sections of the UI, and so much more. Read on to find out!

Before we start, we would like to welcome two new members to the NewPipe development team: @litetex and @FireMasterK. Welcome, and onwards to an amazing future!


  • Seekbar thumbnails are here, and they look awesome!

You will see them as soon as you start seeking on a YouTube video. For those who don’t want them, they can be turned off in the Video and audio settings. Big thanks go towards @litetex who made the necessary changes in the app as well as in the Extractor.

  • Speaking of good-looking new features, have a heart:
Heart on comments

YouTube channels can give comments on their videos a heart, and thanks to @KalleStruik, NewPipe displays these now!

  • And while we are talking about comments, if a video has disabled comments, NewPipe now shows it in the UI properly. The related crash was fixed in the previous version. Thank you @litetex.

  • Oh, and one more thing. You can mark an item from one of your lists as watched without playing it. It looks a little something like this:

New mark as watched item in the context menu

Thank you @nschulzke for implementing that shortcut.


  • @FireMasterK replaced the current YouTube player extraction API, which uses embedded video URLs, with YouTube’s IFrame player API. This reduces the extracted content size to – wait for it – less than 1/50th of the present size! Say hello to insanely fast player code extraction!

  • @FireMasterK updated the list of countries supported by YouTube.

  • @Stypox made some improvements to the metadata layout in the stream description UI. The tags are easier to view and tap now, thanks to them!

  • Another UI improvement was made regarding service themes by @Stypox, @litetex and @TobiGr. Switches/toggles and the Play Queue page are themed according to the currently selected service now.

  • Last but not least, @evermind-zz improved the player code, which should result in faster closing of the player, as well as preventing a memory leak. Thanks!


  • The thumbnail in the minimized player at the bottom was broken by an earlier change, which @litetex has fixed now.

  • An Unrecoverable player error occurred sometimes when one dared to rotate their device while a video was playing, which was fixed by @evermind-zz.

  • You can now add the same stream to a queue multiple times as you prefer, thanks to @Stypox. On earlier versions, this would result in endless buffering. So this is a bug fix and a feature rolled into one!

  • Sometimes there could be an old invalid download in the Downloads page which caused a crash on starting new downloads, so @Stypox made the app handle that.

  • While he was at it, @Stypox also fixed a different error, an exception that occurred during a pre-download storage check while SAF was enabled. One wonders how many more there could be.

  • @Douile found a way to minimize data usage for the reCAPTCHA challenge by loading an empty page, which prevents YouTube from staying loaded in the background and consuming data.

  • @Douile also fixed a small issue where one could press on the hidden Feed items while it was being refreshed, resulting in a stuck loading screen.

  • One last UI fix for this release, from @Stypox: The fix for the grid layout of channels in the Subscriptions tab accidentally made the layout less condensed, which has been reversed.

  • @TiA4f8R modified the regular expressions (or regexes, as the cool kids say it) used to find the dreaded cipher deobfuscation function. This fixes a ‘Video not available’ error for some music videos.

Nerd Talk

  • @TacoTheDank upgraded the Gradle version to 7.1.1 for both NewPipe and the Extractor.

  • @gardenappl fixed some typos in the comments for the Extractor code.

  • In case content is not available for some reason, @Stypox made the app show the original error which caused it.

  • @TacoTheDank also upgraded some libraries:

    • AndroidX AppCompat 1.2.0 -> 1.3.1
    • AndroidX Media 1.2.1 -> 1.3.1
    • AndroidX Core 1.3.2 -> 1.6.0
    • AndroidX Fragment 1.3.5 -> 1.3.6
    • AndroidX Lifecycle 2.2.0 -> 2.3.1
    • Markwon 4.6.0 -> 4.6.2
    • Stetho 1.5.1 -> 1.6.0
    • AutoService 1.0-rc7 -> 1.0
  • @XiangRongLin noticed that the API level 29 runner was timing out, so it was removed temporarily. The bug was fixed by specifying the emulator-build version of the Android Emulator in the GitHub Actions CI to fix the timeout error. It was caused by the runner waiting for some user input to accept the Android SDK license, and was fixed upstream.

  • An earlier version fixed NewPipe so that it shut down properly instead of being killed instantly by the OS. @XiangRongLin cleaned up some related code as a follow-up, including a variable that was no longer needed. He also fixed some warnings emitted by Sonar.

  • @Isira-Seneviratne switched from several libraries to their Compat variants to improve backwards compatibility:

    • NotificationChannel -> NotificationChannelCompat
    • NotificationManager -> NotificationManagerCompat
    • DisplayCutoutCompat -> WindowInsetsCompat
    • GestureDetector -> GestureDetectorCompat (this automatically backports improvements to Android versions below 4.3, and hence, to NewPipe Legacy!)
  • @XiangRongLin added instrumented tests (those which run on actual hardware or emulators to thoroughly detect bugs) for local playlist creation.

  • @Isira-Seneviratne bumped the compileSdkVersion from 29 (Android 10) to 30 (Android 11), which will help detect new errors, warnings and deprecated APIs in the future.

  • @litetex fixed a couple of build warnings regarding deprecated code in the Feed and Subscription tabs, pointed out by Android Studio.

  • @Redirion added a Kotlin section in for developers who wish to code for the app in this language.

  • @Isira-Seneviratne introduced modern Kotlin methods to the License page, greatly simplifying the code.

  • @TacoTheDank replaced multiple layouts for text edit dialogues used in various places with a single layout, thus ensuring they look uniform throughout the app.

  • @TacoTheDank also replaced the deprecated (since API level 8! That’s Android Froyo!) fill_parent attribute for width and height in various layouts with match_parent.

  • @litetex added a step to run KtLint, which checks code formatting for Kotlin files, before the build step in the GitHub Actions CI.

  • Some dependabot updates:
    • Bump spotbugs-annotations from 4.2.3 to 4.4.0
    • Bump jsoup from 1.13.1 to 1.14.2
  • @XiangRongLin fixed a failing PeerTube stream extractor test.

  • @FireMasterK added the “Verified” field to the ChannelInfo class. It was already being extracted earlier, but now it’s available for use directly by other front-ends (like Piped!).

Where to get this brand-new version

NewPipe notifies you about new versions. You can download them when you press the notification, which will take you to the GitHub Releases page.

If you use the F-Droid app, it, too, notifies you about updates for NewPipe. Please keep in mind that it can take F-Droid a while to update their repository. If you have problems installing the update, you may need to uninstall NewPipe and then install it afresh. (Make sure to backup data by exporting your database from the Settings > Content menu.)

If you already installed NewPipe from F-Droid’s repository, to get this version of NewPipe you can do one of the following:

Note: If you installed NewPipe from GitHub Releases you will not have to uninstall NewPipe to switch to our custom repo. Just let it update your current version. Make sure you back up your data as mentioned in the warning at the top of the FAQ page!

Now that you’ve (hopefully) updated, please let us know what your experience of the latest release is, especially bugs in need of fixing. As usual, you can reach out to us via IRC (#newpipe on Libera.Chat), open issues on GitHub or, ideally, use our built-in crash reporter to send us machine-readable issue reports. You can even send in fixes yourself.

If you have any other questions, feel free to post them in the comments here and someone will reply to you. Also, thanks for reading it till the end! We put quite some time into these blog posts.

See also:  pinned  release

Let us know what you think!

Please read our rules before leaving a comment!

→ Feature requests or bug reports need to be reported on GitHub! ←