Discourse 2.5.0.beta2 Release Notes

New features in 2.5.0.beta2

Differentiate Between PMs and Topics in Search Results

Users can use the in:all search filter, introduced in Discourse 2.4, to search both public and personal topics at the same time. Results in search now show the PM envelope when the result is a PM to visually differentiate topics from PMs

Child Theme Components

The Discourse theme system is incredibly powerful and flexible. We’ve seen amazing themes and components developed by our community. Check them out yourself at #theme.

Theme developers can now specify “child theme components” in the about.json file of a top level theme. Child theme components will be automatically installed and added to the installed theme, at time of install. Note that child theme components are not installed during theme updates.

Safe Mode Improvement

Safe Mode allows users to view a site without theme, official, and/or unofficial plugins running. This is useful if a theme or plugin causes UI issues, and needs to be disabled, or for testing if a bug is caused by a theme, a plugin, or core Discourse.

Previously, the safe mode page, used to activate safe mode, could be impacted by themes, thus preventing users from enabling it. Now site customizations are always disabled on the safe mode page, ensuring it can be turned on without issue.

Auto-archive Group Message on Close

Group messages are a great way to enable discussion between a user and a group, or amongst a group itself. Group inboxes are shared, so it can be helpful to to archive messages once they are handled. Now, when group messages are closed, they’ll automatically be archived.


Even more!

But wait, there’s more! We do our best to highlight new features and changes for you, but there’s always too many changes to detail. For a full list of new features, bug fixes, UX improvements, and more, be sure to review the Additional Features and Fixes listed below.

Security Updates

This beta includes 2 security fixes for issues reported by our community and HackerOne.

  • Add more restrictions on invite emails
  • Ensure the invite JSON API matches the UX

Plugin improvements

Code Review

  • Refactor and other internal improvements

Group Tracker

  • Bug fix


  • Test fixes for Leap Year

Discourse Docker

  • Bug fix


  • Default to SVG mode


  • Bug fixes


  • Bug fixes
  • Remove timezone user custom field - use UserOption.timezone


  • Remove backward-compatibility code now that 2.4 is released on the stable branch

Additional Features and Fixes

Click to expand

New Features

  • Experimental: Treat /go/ as a server-side route
  • Alows to add a description link to a report
  • Enable service worker on iOS PWA
  • Unconditionally skip indexing on search controller

Bug Fixes

  • Don’t allow people to clear the upload bucket while it’s enabled
  • Use destroy_all instead of delete_all for shared drafts
  • Do not raise an error when in:all search is performed by anon
  • Clobbering plugin files on startup is problematic
  • Don’t optimize icons during db:migrate when restoring backup
  • Allows to select the action when agreeing with penalty
  • Migrating uploads to S3 could miss files
  • Under concurrent usage booting rails could cause plugin corruption
  • Use full URL for secure attachments when secure media enabled
  • Stop infinite lookup-urls issue for video/audio on page
  • We need to skip users with associated reviewables when auto-approving them
  • Allow users to create polls in PMs with non human users
  • Add aria-labels to topic list items
  • Topics should honor auto-close when published to category
  • Prevents click on sk header to bubble
  • Restoring with disable_emails: false didn’t work anymore
  • Google Groups scraper failed to login
  • Make FooterNav work with PWAs on iPadOS
  • Ensures category url of category drop is built using slug and id
  • Sync preload key format for category topic lists
  • Ignore secure-media-uploads for miniprofiler
  • Prettier on iframed-html component
  • When appending tags to restricted category posts, we need to pass the category id, or it won’t work.
  • Prevnets loading to show during debouncing
  • Bulk badge awards should work even if the CSV has nil values
  • Skip poll tutorial if user cannot create polls
  • Prevents row click event to be caught by filter input event
  • Skip ‘invited’ small action if user is in an invited group
  • Polyfill Promise for IE11
  • Downloaded image URLs incorrectly replaced in post raw.

UX Changes

  • Input adjustments for category setting modal (tags tab)
  • Attempts to increate popup menu hitzone on mobile
  • Allow correct pluralization for “too few topics and posts” notices
  • Prevents jumpyness when displaying poll voters


  • Allow preloading ‘recent time read’ for a user
  • Allow user serializer to make use of preloaded custom fields
  • Allow passing an existing list of user field ids when loading
  • Improve performance of category topic list