Skip to content
Choose a tag to compare


@Gargron Gargron released this
· 2 commits to stable-2.9 since this release
Choose a tag to compare




  • Add GIF and WebP support for custom emojis (Gargron)
  • Add logout link to dropdown menu in web UI (koyuawsmbrtn)
  • Add indication that text search is unavailable in web UI (ThibG, ThibG)
  • Add suffix to Mastodon::Version to help forks (clarfon)
  • Add on-hover animation to animated custom emoji in web UI (ThibG, ThibG, ThibG)
  • Add custom emoji support in profile metadata labels (ThibG)


  • Change default interface of web and streaming from to (Gargron, zunda, Gargron, zunda)
  • Change the retry limit of web push notifications (highemerly)
  • Change ActivityPub deliveries to not retry HTTP 501 errors (Gargron)
  • Change language detection to include hashtags as words (Gargron)
  • Change terms and privacy policy pages to always be accessible (Gargron)
  • Change robots tag to include noarchive when user opts out of indexing (Kjwon15)


  • Fix account domain block not clearing out notifications (Gargron)
  • Fix incorrect locale sometimes being detected for browser (Gargron)
  • Fix crash when saving invalid domain name (Gargron)
  • Fix pinned statuses REST API returning pagination headers (Gargron)
  • Fix "cancel follow request" button having unreadable text in web UI (Gargron)
  • Fix image uploads being blank when canvas read access is blocked (ThibG)
  • Fix avatars not being animated on hover when not logged in (ThibG)
  • Fix overzealous sanitization of HTML lists (ThibG)
  • Fix block crashing when a follow request exists (ThibG)
  • Fix backup service crashing when an attachment is missing (ThibG)
  • Fix account moderation action always sending e-mail notification (Gargron)
  • Fix swiping columns on mobile sometimes failing in web UI (ThibG)
  • Fix wrong actor URI being serialized into poll updates (ThibG)
  • Fix statsd UDP sockets not being cleaned up in Sidekiq (Gargron)
  • Fix expiration date of filters being set to "never" when editing them (ThibG)
  • Fix support for MP4 files that are actually M4V files (Gargron)
  • Fix alerts not being typecast correctly in push subscription in REST API (Gargron)
  • Fix some notices staying on unrelated pages (ThibG)
  • Fix unboosting sometimes preventing a boost from reappearing on feed (ThibG, Gargron)
  • Fix only one middle dot being recognized in hashtags (Gargron, ThibG)
  • Fix unnecessary SQL query performed on unauthenticated requests (Gargron)
  • Fix incorrect timestamp displayed on featured tags (Kjwon15)
  • Fix privacy dropdown active state when dropdown is placed on top of it (ThibG)
  • Fix filters not being applied to poll options (ThibG)
  • Fix keyboard navigation on various dropdowns (ThibG, ThibG, ThibG)
  • Fix keyboard navigation in modals (ThibG)
  • Fix image conversation being non-deterministic due to timestamps (Gargron)
  • Fix web UI performance (ThibG, ThibG)
  • Fix scrolling to compose form when not necessary in web UI (ThibG, ThibG)
  • Fix save button being enabled when list title is empty in web UI (ThibG)
  • Fix poll expiration not being pre-filled on delete & redraft in web UI (ThibG)
  • Fix content warning sometimes being set when not requested in web UI (ThibG)


  • Fix invites not being disabled upon account suspension (ThibG)
  • Fix blocked domains still being able to fill database with account records (Gargron)

Upgrade notes

Because this is a backport, it is not available with git pull. Use git fetch && git checkout v2.9.3

If upgrading from v2.9.0 or earlier, see the notes for those releases!

Non-Docker only:

  • Install dependencies: bundle install
  • If you were relying on Puma and Node binding to by default for your setup, adjust your configuration by using the BIND= environment variable

Both Docker and non-Docker:

  1. Precompile the assets:
    • Non-Docker: RAILS_ENV=production bundle exec rails assets:precompile
    • Docker: The assets are already precompiled during the build step
  2. Restart all Mastodon processes