Skip to content

v4.98.0

Choose a tag to compare

@SysAdminDoc SysAdminDoc released this 12 Oct 21:24
· 103 commits to main since this release
Immutable release. Only release title and notes can be modified.

Added

  • Classic Watch Layout (Watch Page, off by default) undoes the watch page YouTube started testing in October 2026, the one with comments and the description in a panel on the right, recommendations in a grid under the player and no theater button. Turn it on and comments go back under the video, recommendations go back to the right and the theater button returns. It switches off the experiment flags behind that page before YouTube reads them, even on a fresh page load, and fixes up a page that's already open, so you don't need to reload. On that page a panel on the right only closes once its section is back under the video, so you never end up with neither. YouTube keeps renaming these flags, so Extra Layout Flags under it takes more flag names, one per line, and a line starting with a minus sign leaves one of Astra's alone. Turning it off gives YouTube its own values back.

  • Hide AI Chapters (Watch Page, off by default) takes out the chapters YouTube now generates on its own. They're gone from the progress bar, the chapters panel, the chip that switches to them and the chapters card in the description. Chapters the creator wrote in the description stay, and so does the most-replayed heatmap. It works on the data YouTube sends before the page is built, so the first video on a fresh page load usually comes up clean too. If your settings are slow to load, that first video still has the chapters panel hidden but can keep the AI chapter marks on its progress bar.

  • Views on Their Own Line (Home / Subscriptions, off by default) puts the views and the upload age back under the channel name. Since late September YouTube has printed all three on one row, so a long channel name pushed the numbers out of the card. With this on, a long name ends in an ellipsis instead and the verified badge stays right next to it.

  • Subscription Groups import reads the subscriptions other apps export. Pick Google Takeout's subscriptions.csv (the header can be in any language), Takeout's older subscriptions.json or a NewPipe export, and every channel lands in the group you have open, or in a new group named after the app if none is. Duplicates and NewPipe's SoundCloud or PeerTube entries are skipped and counted in the summary, the usual Undo is there, and a file that can't be read leaves your groups alone and says so. Shift+click still replaces all groups.

  • The userscript now tells you when it's updated. The next time you open its settings panel after an update, a short note under the header says which version you're on and links the changelog. Dismiss it or open the changelog and it won't show again until the next update. Nothing is fetched to show it, and there's no pop-up on page load. The extension keeps its banner in the toolbar popup.

Removed

  • DeArrow Voting is gone from the settings for now. Its thumbs up and down buttons sent votes to an address DeArrow's server doesn't have, so every vote failed and nothing you voted on was ever counted. A version built on DeArrow's real submission route needs testing against the live service before it ships. If you had it on, the old value is dropped and nothing else changes. DeArrow's title and thumbnail replacement isn't affected.

Changed

  • Every language besides English is now fully translated. About a quarter of the interface, roughly 900 strings per language, still showed in English: Watch Feed, the blocked-channel page, bulk actions, AI summaries and many feature descriptions. Spanish even called Watch Feed by its old name, Persistent Queue. German, Spanish, French, Italian, Brazilian Portuguese, Russian, Japanese, Korean, Chinese and Arabic now read in their own language apart from brand names, and theater mode uses YouTube's own word for it in each one. The userscript picks up the same translations.

  • The userscript now loads its three libraries and its translations from jsDelivr, pinned to the exact commit of the release, instead of from raw GitHub at the release tag. A commit can't be moved after the fact the way a tag can, every file still carries its #sha256= check, and it's the form Greasy Fork accepts, so the userscript can be listed there later. Nothing changes for you: the files are byte for byte the same.

  • Hide All on Subscriptions keeps going as YouTube loads more. One press hides what's on screen, then each page as it arrives, until it reaches videos you'd already hidden last time (or 20 pages). Then loading pauses, with a Resume button on the banner. Home still hides just what's on screen and keeps loading forever.

  • Videos you hide from your feeds, with the X or Hide All, now still show on the channel's own page, so you can always see everything a channel has posted. Your keyword and channel rules still apply there. The X doesn't appear on channel pages anymore, since a hide made there wouldn't stick.

  • The GitHub page now has a Sponsor button. It opens the same Ko-fi page as the button in the README.

  • The install guide now explains all three builds, including the download-free chromium-store one, and the contributor guide walks through adding a setting the way the code works today. A few other developer docs had drifted too (an old Node version, a release from June called the latest), and the version check now reads those files so they can't drift quietly again.

  • The ws package the browser smoke tests use to drive Chromium moves to 8.22.0.

  • Theater Split on a past live stream used to stack the chat replay over the comments, each squeezed into half the pane. Now the pane shows one of them at full height, with a bar at the top to switch between Comments and Live chat replay. Comments come first on every video. The chat replay keeps running while it's hidden, so it's still in step with the video when you switch over, and pulling up on the bar closes the pane. The standalone Theater Split userscript gets the same change as 1.0.21.

Fixed

  • Persistent Speed and Per-Channel Speed no longer carry your saved speed onto a live stream. A live stream plays at its live edge, so a remembered 2x ran straight into it and the stream kept stalling and reloading. Live streams now start at 1x, and you can still speed one up yourself. Your speed comes back on the next regular video, past live streams included. Per-Channel Speed also deleted a channel's saved speed when you left one of its live streams, because it saved the stream's 1x on the way out. It keeps it now.

  • Live Catch-Up Speed Reset never noticed a sped-up live stream reaching the live edge, so it didn't set the speed back to 1x. YouTube changed how the player reports where the edge is, and the reset now reads the player's own live-edge marker.

  • Force DVR missed the first live stream on a fresh page load and only worked on streams you opened after it. Astra now hands its page-level switches over as soon as your settings load, before YouTube reads the page's built-in data, so the first stream gets DVR too. Safe mode, or a feature that doesn't start for any other reason, takes the switch back once Astra has finished starting on that page. In a tab opened in the background, that's when you first switch to it.

  • A fresh install of the userscript from the main branch didn't run at all. Between releases that file can be newer than the release code it loads, and it stopped as soon as it asked for a feature the release didn't have yet. Now it loads everything the release has and skips the rest, the way the extension skips a feature that fails to load.

  • The Subscription Groups import summary counted every group you had, not the ones in the file. Merging a one-group file into twenty groups said it imported twenty. It now counts what the file brought in.

  • Remove Shorts, which is on by default, missed the Shorts shelf YouTube started showing in October 2026, a grid of Shorts under its own header. It's hidden now wherever the older shelves were, and search results still show Shorts as before. A grid of regular videos is left alone. Remove Shorts could also hide far more than a Short: when a Short sat directly in a list of results, it hid the whole list. Now only that Short, or its shelf, goes.

  • Hide Related Videos, which is on by default, only hid recommendations in the right-hand column. On the side-panel watch page YouTube started testing in October 2026, and in the one-column layout of a narrow window, they sit under the video and stayed visible. They're hidden wherever they show up now. It also used to hide the whole right-hand column even while YouTube had a panel open in it, which took away comments on the new page and YouTube's own transcript panel everywhere. An open panel keeps the column now (YouTube's ad panel doesn't count), and Focused Mode keeps the comments panel the same way.

  • The Subscriptions pause for a feed full of hidden videos never kicked in on YouTube's current card layout, so a cleared feed kept loading in the background. It now pauses after about three hidden pages, even when YouTube fetches them back to back.

  • Pausing Subscriptions didn't stop YouTube from fetching more pages behind the banner. It holds now.

  • Hide Planned Livestreams, Video Hider and Watch Feed now read the same "upcoming" wording, so a scheduled stream in Japanese, Korean, Chinese or Italian is upcoming to all three. A premiere that has already aired is no longer taken for an upcoming one, and Japanese and Arabic words with voicing or hamza marks match again. Channel names don't count either, so a video from "Premiere Gal" or "Le meilleur est à venir" stays in your feed.

  • Video Hider's live, playlist, movie and dubbed filters missed some Japanese and Russian cards. "ライブ", "плейлист", "бесплатно с рекламой" and "広告付きで無料" never matched, and the Russian live words ("сейчас смотрят", "в эфире") couldn't match at all. They all do now, and a "ライフスタイル" (lifestyle) card isn't taken for "ライブ" (live).

  • Auto-Dismiss "Still Watching?" could click Play when you paused and opened Save or Share, any time after it had answered a prompt earlier. YouTube closes the prompt without removing it, and the old one kept the gate open. Only a prompt that's actually on screen counts now.

  • After moving from a video with several audio languages to one with a single track, the audio track status kept naming the old video's track, and the new video retried the track switch on every player event. It reports "no-tracks" and stops once the video has loaded.

  • Channels → Videos Tab with a landing tab other than Videos (Live, Podcasts, Shorts and so on) only worked when a channel page was loaded fresh. Opening a channel from inside YouTube always landed on Videos, because the redirect ran before YouTube had sent the new channel's tab list. It now waits for that list, up to three seconds, then lands on the tab you picked if the channel has it.

  • An empty Watch Feed had no way to import a backup, because Import lived in the feed's panel and the panel only opens from the pill, which goes away when the feed is empty. The Watch Feed card in settings now has an Import button too. A file imported while Watch Feed is off is kept and shows up when you turn it on.

  • The popup's Settings Overview headed each group with an internal name like "playback-audio" or "a11y-perf", in every language. Each group now has a translated name, and searching for that name finds its settings. The side panel showed half-English names for eight of the same groups ("A11y Perf", "Quality Codec"), and those are translated now too.

  • About 75 messages showed in English whatever language you picked, because they were put together in code before reaching the screen. They're translated in all 11 languages now: Quick Links' added, removed, limit and bad-address messages, its Edit, Add and Remove buttons and the field hints, the sleep timer's spoken updates and preset labels, the watch-time stats line, the chapter "Skipped", "No chapters found" and "Last chapter" toasts, the playlist search and comment search counters, the comment navigator's title, Previous and Next buttons and status lines, the settings button's tooltip, settings profile messages, the dubbed-audio notice, the DeArrow channel chip, transcript batch progress and search, the VLC/MPV handoff note, the page menu's counts, settings import errors, Video Hider's review and exception headers and its "in Your List" channel count, the downloader's runtime status, and "Clipboard write failed". Counts also read as proper plurals instead of "profile(s)", "1 activées" or a translated word with an English "s" stuck on. The Import button is translated in Chinese and Arabic too.

  • Settings Sync could stop pushing for people with long hide and block lists. Astra measured the synced data before the browser escapes it, so a payload that looked like it fit went over the browser's sync limit once stored, and every push after that failed. It's measured the way the browser counts it now, and the longest lists get trimmed first when it doesn't fit. Each stored piece is cut to that size too, so text full of quotes can't push one piece past the browser's per-item limit.

  • Turning on Video Loop Button showed nothing while Astra Player Dock was on, because the dock hides the player's other buttons. Its settings card now says so and points to the dock's own Repeat button, which does the same thing. With the dock off, the loop button works as before.

  • Astra Player Dock could end up in the hover preview instead of the video. If you hovered a thumbnail on Home and then opened a video, the dock attached to the hidden preview player, and because the dock hides the player's own buttons, the real player had no fullscreen or settings button until you reloaded. It always goes in the video's player now, and a dock that landed anywhere else is moved back.

  • DeArrow could show two or three replacement titles on one card, and on every card below it, when a slow title lookup overlapped the next pass over the page. Each card gets one title now. The note screen readers hear when DeArrow replaces a watch page title was in English for every language. It's translated in all 11.

  • DeArrow redid the whole feed each time YouTube loaded more of it, so while you scrolled every title flipped back to the original for a moment. Cards it already finished stay finished now. A card YouTube reuses for a different video gets that video's title and thumbnail instead of keeping the old ones.

  • Return YouTube Dislike kept the previous video's dislike count on the button for a second or two after you moved to another video, because YouTube can keep the same button. The old count goes as soon as the video changes. Turning thumbnail ratios off and back on quickly could also run twice as many lookups as allowed and fetch a video twice, and it can't anymore.

  • Settings Sync in the Chrome extension pushed your lists but none of your settings, and a pull then reset every synced setting on the other device to its default. The extension's background worker couldn't see which settings to sync. It can now.

  • Settings Sync could drop your oldest hidden videos and blocked channels. Once a list grows past what sync can carry, only its newest entries travel, and a device pulling them swapped its own longer list for the short one. A device with 3,000 hidden videos lost the oldest 500, and Undo couldn't bring them back. A pull now keeps the local entries the sync data doesn't carry, and Undo keeps the full lists.

  • 46 pop-up messages were still English in every language, among them "Playlist reversed", the sleep timer and A-B loop notices, Picture-in-Picture and pop-out, the screenshot and SRT download notes, DeArrow votes, Feed Triage, the transcript index and safe mode. They're translated in all 11 languages now, and the translation check fails on any new English one. The age-restriction bypass warning also stopped pasting internal English error text. It says the bypass couldn't handle the video and points to the diagnostic log.

  • Toggles in the in-page settings panel could flip back right after you changed them. One saved value from an older version that the current one no longer accepts made every save fail, even saves that didn't touch it. A stored value a save leaves alone is kept as it is now, and a new invalid value is still refused.

  • Turning on Diagnostic Error Log told you to run a command in the browser console to save the log. Now it points you to the bug button under the settings panel's sidebar, which copies the log for a bug report (or saves it as a file if copying isn't allowed). Every language gets the new wording.