# \#dev-news

**URL:** https://meta.discourse.org/tag/dev-news/973.md

[Latest](https://meta.discourse.org/latest.md) · [Categories](https://meta.discourse.org/categories.md) · [Tags](https://meta.discourse.org/tags.md)

---

## [Introducing \`@discourse/update-skeleton\`](https://meta.discourse.org/t/introducing-discourse-update-skeleton/412460)

<div class="topic-metadata">

**Author:** [@david](https://meta.discourse.org/u/david)\
**Replies:** 0\
**Last updated:** [September 15, 2026, 12:05pm UTC](https://meta.discourse.org/t/introducing-discourse-update-skeleton/412460 "2026-09-15T12:05:20Z")

</div>

We just published the @discourse/update-skeleton package on npm. This can be used to easily update existing themes and plugins to use the latest recommended config files for GitHub actions and linting. To use it, open y…

---

## [Deprecating the user of \`user.groups\` in the \`User\` model in JavaScript](https://meta.discourse.org/t/deprecating-the-user-of-user-groups-in-the-user-model-in-javascript/411124)

<div class="topic-metadata">

**Author:** [@martin](https://meta.discourse.org/u/martin)\
**Replies:** 5\
**Last updated:** [August 31, 2026, 1:12am UTC](https://meta.discourse.org/t/deprecating-the-user-of-user-groups-in-the-user-model-in-javascript/411124 "2026-08-31T01:12:56Z")

</div>

This is related to both The road to stable, then permanent, for granular\_anonymous\_and\_logged\_in\_groups\_permissions and Granular group-based permissions for anonymous and logged in users In core as well as many themes a…

---

## [RFC: A new versioning strategy for Discourse](https://meta.discourse.org/t/rfc-a-new-versioning-strategy-for-discourse/383536)

<div class="topic-metadata">

**Author:** [@david](https://meta.discourse.org/u/david)\
**Replies:** 60\
**Last updated:** [August 28, 2026, 9:56pm UTC](https://meta.discourse.org/t/rfc-a-new-versioning-strategy-for-discourse/383536 "2026-08-28T21:56:46Z")

</div>

We’re planning to introduce a new versioning system for Discourse. Our goal is to provide more choice & predictability for community administrators, while maintaining our development velocity. We’re also adjusting some t…

---

## [Deprecating .hbs file extension in themes and plugins](https://meta.discourse.org/t/deprecating-hbs-file-extension-in-themes-and-plugins/398896)

<div class="topic-metadata">

**Author:** [@david](https://meta.discourse.org/u/david)\
**Replies:** 20\
**Last updated:** [August 9, 2026, 6:49pm UTC](https://meta.discourse.org/t/deprecating-hbs-file-extension-in-themes-and-plugins/398896 "2026-08-09T18:49:52Z")

</div>

In the latest version of Discourse, using .hbs files in themes and plugins is deprecated. Support for this file format will be removed after the next ESR release. Handlebars templates should be replaced with the more mo…

---

## [New core features system specs in plugins and themes](https://meta.discourse.org/t/new-core-features-system-specs-in-plugins-and-themes/361381)

<div class="topic-metadata">

**Author:** [@loic](https://meta.discourse.org/u/loic)\
**Replies:** 5\
**Last updated:** [August 1, 2026, 4:30pm UTC](https://meta.discourse.org/t/new-core-features-system-specs-in-plugins-and-themes/361381 "2026-08-01T16:30:31Z")

</div>

We’ve just included what we call smoke specs or core features specs in both skeletons for plugins and themes. These specs ensure the plugin or the theme you’re working on doesn’t break the basic functionality of Discour…

---

## [Deprecating .js.es6 file extensions in themes and plugins](https://meta.discourse.org/t/deprecating-js-es6-file-extensions-in-themes-and-plugins/398894)

<div class="topic-metadata">

**Author:** [@david](https://meta.discourse.org/u/david)\
**Replies:** 9\
**Last updated:** [July 14, 2026, 3:07pm UTC](https://meta.discourse.org/t/deprecating-js-es6-file-extensions-in-themes-and-plugins/398894 "2026-07-14T15:07:39Z")

</div>

Back in 2020, Discourse switched from the .js.es6 extension to .js. Over the years, the vast majority of themes and plugins have switched to the new extension, which provides much better compatibility with modern JavaScr…

---

## [Introducing a new JS build system for Discourse core](https://meta.discourse.org/t/introducing-a-new-js-build-system-for-discourse-core/403908)

<div class="topic-metadata">

**Author:** [@david](https://meta.discourse.org/u/david)\
**Replies:** 2\
**Last updated:** [June 12, 2026, 10:29am UTC](https://meta.discourse.org/t/introducing-a-new-js-build-system-for-discourse-core/403908 "2026-06-12T10:29:55Z")

</div>

Following successful modernization of the theme and plugin build systems over the last year, we’re now ready to move forward with making a similar upgrade in Discourse core. Despite being a complete overhaul of the core…

---

## [Improving automatic switching of mobile/desktop modes](https://meta.discourse.org/t/improving-automatic-switching-of-mobile-desktop-modes/384280)

<div class="topic-metadata">

**Author:** [@david](https://meta.discourse.org/u/david)\
**Replies:** 11\
**Last updated:** [May 26, 2026, 8:23am UTC](https://meta.discourse.org/t/improving-automatic-switching-of-mobile-desktop-modes/384280 "2026-05-26T08:23:52Z")

</div>

Historically, Discourse has had two distinct views for mobile and desktop. Over the years, these have tended to converge towards more modern viewport-width-based design. Those modern patterns are documented here. In the…

---

## [Automatically updating themes and plugins to .gjs file format](https://meta.discourse.org/t/automatically-updating-themes-and-plugins-to-gjs-file-format/368051)

<div class="topic-metadata">

**Author:** [@david](https://meta.discourse.org/u/david)\
**Replies:** 9\
**Last updated:** [May 2, 2026, 7:42pm UTC](https://meta.discourse.org/t/automatically-updating-themes-and-plugins-to-gjs-file-format/368051 "2026-05-02T19:42:35Z")

</div>

In the latest version of Discourse’s standard linting config, we’ve enabled the require-strict-mode ember-template-lint rule. This will raise a linting error for any .hbs files. To resolve the warnings, you should conve…

---

## [Introducing a new build system for plugins](https://meta.discourse.org/t/introducing-a-new-build-system-for-plugins/398713)

<div class="topic-metadata">

**Author:** [@david](https://meta.discourse.org/u/david)\
**Replies:** 4\
**Last updated:** [March 26, 2026, 12:06pm UTC](https://meta.discourse.org/t/introducing-a-new-build-system-for-plugins/398713 "2026-03-26T12:06:48Z")

</div>

Over the last few months, we’ve been working on a new build system for plugin JavaScript code. This will bring plugins up-to-date with the changes we made to the theme build system back in July 2025, which lean on more m…

---

## [Modernizing inline script tags for templates & JS API](https://meta.discourse.org/t/modernizing-inline-script-tags-for-templates-js-api/366482)

<div class="topic-metadata">

**Author:** [@david](https://meta.discourse.org/u/david)\
**Replies:** 46\
**Last updated:** [March 25, 2026, 10:46am UTC](https://meta.discourse.org/t/modernizing-inline-script-tags-for-templates-js-api/366482 "2026-03-25T10:46:51Z")

</div>

Using \<script type='text/discourse-plugin\> or \<script type='text/x-handlebars'\> in themes is now deprecated. Any use of these tags in themes should be updated according to the instructions below. Regular \<script\> and \<s…

---

## [Introducing Discourse developer toolbar](https://meta.discourse.org/t/introducing-discourse-developer-toolbar/346215)

<div class="topic-metadata">

**Author:** [@david](https://meta.discourse.org/u/david)\
**Replies:** 20\
**Last updated:** [January 15, 2026, 4:52am UTC](https://meta.discourse.org/t/introducing-discourse-developer-toolbar/346215 "2026-01-15T04:52:44Z")

</div>

When running the latest version of Discourse core in a development environment, you’ll notice a new toolbar on the left-hand-side of the screen: This provides one-click access to commonly-needed developer tools. So f…

---

## [Upcoming EOL for the widget rendering system](https://meta.discourse.org/t/upcoming-eol-for-the-widget-rendering-system/375332)

<div class="topic-metadata">

**Author:** [@saquetim](https://meta.discourse.org/u/saquetim)\
**Replies:** 4\
**Last updated:** [December 10, 2025, 7:10pm UTC](https://meta.discourse.org/t/upcoming-eol-for-the-widget-rendering-system/375332 "2025-12-10T19:10:29Z")

</div>

Hey everyone! As the final step of our effort to move away from the legacy “widget” rendering system, we’re deprecating the use of widgets in Discourse and will soon deactivate it entirely. Timeline These are estimates …

---

## [Upcoming post stream changes - How to prepare themes and plugins](https://meta.discourse.org/t/upcoming-post-stream-changes-how-to-prepare-themes-and-plugins/372063)

<div class="topic-metadata">

**Author:** [@saquetim](https://meta.discourse.org/u/saquetim)\
**Replies:** 12\
**Last updated:** [November 27, 2025, 7:28pm UTC](https://meta.discourse.org/t/upcoming-post-stream-changes-how-to-prepare-themes-and-plugins/372063 "2025-11-27T19:28:36Z")

</div>

We’re moving away from the legacy “widget” rendering system, replacing it with modern Glimmer components. We’ve recently modernized the post stream using Glimmer components. This guide will walk you through migrating yo…

---

## [Deprecation & upcoming removal of jQuery-based autocomplete](https://meta.discourse.org/t/deprecation-upcoming-removal-of-jquery-based-autocomplete/385527)

<div class="topic-metadata">

**Author:** [@kelv](https://meta.discourse.org/u/kelv)\
**Replies:** 0\
**Last updated:** [October 14, 2025, 10:04am UTC](https://meta.discourse.org/t/deprecation-upcoming-removal-of-jquery-based-autocomplete/385527 "2025-10-14T10:04:36Z")

</div>

The jQuery-based autocomplete library called via the $.autocomplete() function is now deprecated in Discourse core. We’re moving toward modern solutions that provide better performance & positioning abstractions for auto…

---

## [Change to how lists of tags are separated](https://meta.discourse.org/t/change-to-how-lists-of-tags-are-separated/356258)

<div class="topic-metadata">

**Author:** [@awesomerobot](https://meta.discourse.org/u/awesomerobot)\
**Replies:** 5\
**Last updated:** [August 28, 2025, 12:07pm UTC](https://meta.discourse.org/t/change-to-how-lists-of-tags-are-separated/356258 "2025-08-28T12:07:08Z")

</div>

Lists of tags on topics in Discourse are separated by commas by default. This isn’t changing, but how it’s implemented and how you can change it has: Previously we used a CSS pseudo element to add the commas, which i…

---

## [Styling Discourse with variables: Show & Tell](https://meta.discourse.org/t/styling-discourse-with-variables-show-tell/376614)

<div class="topic-metadata">

**Author:** [@jordan.vidrine](https://meta.discourse.org/u/jordan.vidrine)\
**Replies:** 1\
**Last updated:** [August 5, 2025, 6:40pm UTC](https://meta.discourse.org/t/styling-discourse-with-variables-show-tell/376614 "2025-08-05T18:40:19Z")

</div>

We’ve recently added a lot of css variables to Discourse. These variables make theming and customizing aspects of the UI much easier. For many changes, you will no longer need to target super specific elements in the htm…

---

## [Removing support for "template overrides" and mobile-specific templates](https://meta.discourse.org/t/removing-support-for-template-overrides-and-mobile-specific-templates/355668)

<div class="topic-metadata">

**Author:** [@david](https://meta.discourse.org/u/david)\
**Replies:** 15\
**Last updated:** [August 5, 2025, 12:09am UTC](https://meta.discourse.org/t/removing-support-for-template-overrides-and-mobile-specific-templates/355668 "2025-08-05T00:09:30Z")

</div>

In the past, you could override the .hbs template for and Discourse Route or Component by adding an identically named file in the templates/ directory of your theme and plugin. This was very powerful, but also came with …

---

## [Announcing themeable site settings](https://meta.discourse.org/t/announcing-themeable-site-settings/374377)

<div class="topic-metadata">

**Author:** [@martin](https://meta.discourse.org/u/martin)\
**Replies:** 0\
**Last updated:** [July 16, 2025, 1:01am UTC](https://meta.discourse.org/t/announcing-themeable-site-settings/374377 "2025-07-16T01:01:38Z")

</div>

This is a sister topic to the announcement at Themeable site settings are now available so developers are aware. The initial PR is here https://github.com/discourse/discourse/pull/32233 Developer docs are here https:/…

---

## [New aliases for replacing lock icons on closed topics and restricted categories](https://meta.discourse.org/t/new-aliases-for-replacing-lock-icons-on-closed-topics-and-restricted-categories/373778)

<div class="topic-metadata">

**Author:** [@awesomerobot](https://meta.discourse.org/u/awesomerobot)\
**Replies:** 0\
**Last updated:** [July 10, 2025, 6:11pm UTC](https://meta.discourse.org/t/new-aliases-for-replacing-lock-icons-on-closed-topics-and-restricted-categories/373778 "2025-07-10T18:11:07Z")

</div>

Today we’ve merged this change: DEV: add additional icon aliases for lock by awesomerobot · Pull Request #33547 · discourse/discourse · GitHub What does it do? This adds some aliases for the :locked: lock icon you see b…

---

## [@outletArgs are now available as top-level arguments](https://meta.discourse.org/t/outletargs-are-now-available-as-top-level-arguments/370678)

<div class="topic-metadata">

**Author:** [@david](https://meta.discourse.org/u/david)\
**Replies:** 3\
**Last updated:** [June 19, 2025, 6:48am UTC](https://meta.discourse.org/t/outletargs-are-now-available-as-top-level-arguments/370678 "2025-06-19T06:48:37Z")

</div>

In the latest version of Discourse, outlet arguments can be accessed as top-level arguments to your connector components. In a template, that means that @outletArgs.foo can be replaced with @foo. In Glimmer Component JS…

---

## [Handling the 'component-template-resolving' deprecation](https://meta.discourse.org/t/handling-the-component-template-resolving-deprecation/370019)

<div class="topic-metadata">

**Author:** [@david](https://meta.discourse.org/u/david)\
**Replies:** 2\
**Last updated:** [June 13, 2025, 3:12pm UTC](https://meta.discourse.org/t/handling-the-component-template-resolving-deprecation/370019 "2025-06-13T15:12:38Z")

</div>

As part of our preparation for the Ember 6 upgrade, we have now enabled warning banners for the “component template resolving” deprecation. To find more information about the issue, open up the browser developer cons…

---

## [New iOS mobile app beta available for testing](https://meta.discourse.org/t/new-ios-mobile-app-beta-available-for-testing/115912)

<div class="topic-metadata">

**Author:** [@pmusaraj](https://meta.discourse.org/u/pmusaraj)\
**Replies:** 54\
**Last updated:** [February 25, 2025, 10:44am UTC](https://meta.discourse.org/t/new-ios-mobile-app-beta-available-for-testing/115912 "2025-02-25T10:44:48Z")

</div>

Following on Delegated authentication for Discourse Mobile app, we have been working on a new version of the DiscourseHub app for iOS. This new version includes several under-the-hood changes that fix some longstanding i…

---

## [Upcoming topic-list changes - how to prepare themes and plugins](https://meta.discourse.org/t/upcoming-topic-list-changes-how-to-prepare-themes-and-plugins/343404)

<div class="topic-metadata">

**Author:** [@david](https://meta.discourse.org/u/david)\
**Replies:** 35\
**Last updated:** [April 14, 2025, 3:08pm UTC](https://meta.discourse.org/t/upcoming-topic-list-changes-how-to-prepare-themes-and-plugins/343404 "2025-04-14T15:08:07Z")

</div>

As part of our ongoing quest to standardise the rendering systems across Discourse’s codebase, we’re replacing the implementation of the topic-list. Previously, this used a ‘raw handlebars’ (.hbr) approach, and could be…

---

## [Moving to JS native class syntax in themes and plugins](https://meta.discourse.org/t/moving-to-js-native-class-syntax-in-themes-and-plugins/356588)

<div class="topic-metadata">

**Author:** [@david](https://meta.discourse.org/u/david)\
**Replies:** 1\
**Last updated:** [April 13, 2025, 6:37pm UTC](https://meta.discourse.org/t/moving-to-js-native-class-syntax-in-themes-and-plugins/356588 "2025-04-13T18:37:58Z")

</div>

Over the last few years, we’ve been moving away from Ember’s legacy .extend({ ... }) syntax and towards native-class syntax like class extends Foo {...}. While the legacy syntax is technically still supported, modern JS…

---

## [Upcoming post menu changes - How to prepare themes and plugins](https://meta.discourse.org/t/upcoming-post-menu-changes-how-to-prepare-themes-and-plugins/341014)

<div class="topic-metadata">

**Author:** [@saquetim](https://meta.discourse.org/u/saquetim)\
**Replies:** 12\
**Last updated:** [April 1, 2025, 3:05pm UTC](https://meta.discourse.org/t/upcoming-post-menu-changes-how-to-prepare-themes-and-plugins/341014 "2025-04-01T15:05:50Z")

</div>

As part of our continuous effort to improve the Discourse codebase, we’re removing uses of the legacy “widget” rendering system, and replacing them with Glimmer components. Recently, we modernized the post menu, and is…

---

## [Ruby 2.6.1 will speed Discourse up!](https://meta.discourse.org/t/ruby-2-6-1-will-speed-discourse-up/108281)

<div class="topic-metadata">

**Author:** [@sam](https://meta.discourse.org/u/sam)\
**Replies:** 0\
**Last updated:** [February 4, 2019, 3:41am UTC](https://meta.discourse.org/t/ruby-2-6-1-will-speed-discourse-up/108281 "2019-02-04T03:41:40Z")

</div>

I have been investigating general performance today and was very pleasantly surprised to see the new version of ruby (2.6.1) both reduces memory usage AND speeds up Discourse. In particular, looking at Discourse bench: …

---

## [Introducing a 'js' tab for local themes](https://meta.discourse.org/t/introducing-a-js-tab-for-local-themes/353577)

<div class="topic-metadata">

**Author:** [@david](https://meta.discourse.org/u/david)\
**Replies:** 0\
**Last updated:** [February 21, 2025, 10:47am UTC](https://meta.discourse.org/t/introducing-a-js-tab-for-local-themes/353577 "2025-02-21T10:47:15Z")

</div>

In the latest version of Discourse, we’ve introduced a new “JS” tab to the admin theme editor: Behind-the-scenes, this corresponds to a file named javascripts/discourse/api-initializers/theme-initializer.gjs. Our re…

---

## [Discourse core is switching to pnpm for JS package management](https://meta.discourse.org/t/discourse-core-is-switching-to-pnpm-for-js-package-management/324521)

<div class="topic-metadata">

**Author:** [@david](https://meta.discourse.org/u/david)\
**Replies:** 24\
**Last updated:** [February 13, 2025, 7:00pm UTC](https://meta.discourse.org/t/discourse-core-is-switching-to-pnpm-for-js-package-management/324521 "2025-02-13T19:00:08Z")

</div>

We’re switching Discourse core’s JS package manager from from ‘yarn classic’ to pnpm. This will bring significant improvements to install speed & storage requirements. Production If you use managed hosting or a standard…

---

## [Resolving the \`this-property-fallback\` deprecation](https://meta.discourse.org/t/resolving-the-this-property-fallback-deprecation/337276)

<div class="topic-metadata">

**Author:** [@david](https://meta.discourse.org/u/david)\
**Replies:** 4\
**Last updated:** [November 22, 2024, 7:48pm UTC](https://meta.discourse.org/t/resolving-the-this-property-fallback-deprecation/337276 "2024-11-22T19:48:48Z")

</div>

Background Essentially, if you’re using something like {{foo}} in a handlebars template to reference a property on the controller/component, then it needs to be updated to {{this.foo}}. Upstream information: Property Fa…

[Next page](https://meta.discourse.org/tag/dev-news/973.md?match_all_tags=true&page=1&tags%5B%5D=dev-news)
