# Upcoming EOL for the widget rendering system

**URL:** https://meta.discourse.org/t/upcoming-eol-for-the-widget-rendering-system/375332
**Category:** Development
**Tags:** dev-news
**Created:** [July 23, 2025, 7:06pm UTC](https://meta.discourse.org/t/upcoming-eol-for-the-widget-rendering-system/375332 "2025-07-23T19:06:51Z")
**Posts on this page:** 5
**Page:** 1

<div class="post-metadata">

### Author: ![saquetim](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/saquetim/32/116400_2.png) [@saquetim](https://meta.discourse.org/u/saquetim)
#### Post date: [July 23, 2025, 7:06pm UTC](https://meta.discourse.org/t/upcoming-eol-for-the-widget-rendering-system/375332/1 "2025-07-23T19:06:51Z")

</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 and subject to change_

### July 2025:

- ✅ Add deprecation warnings in core and an experimental site setting to deactivate them
- ✅ Publish announcement on Meta

### August 2025

- ✅ Upgrade the official plugins and theme components to use Glimmer Components.
- ✅ Run Meta with widgets deactivated.
- ✅ Enable deprecation messages with an admin warning banner.

### Q3 2025:

- Third-party plugins and themes need to be upgraded.

### Q4 2025:

- ✅ Widget rendering system will be disabled by default using `deactivate_widgets_rendering: true`. There will be a short period of time where it can be re-enabled manually.

- ✅ Remove the legacy code and deactivate the widget rendering system

> 🚨 **Non-compatible plugins and themes will stop working properly after this.**

## What does this mean for you?

If any of your plugins or themes use ‘widget’ APIs, you’ll need to update them to use newer APIs or Glimmer Components before the Q4 2025 deadline.

### I have custom plugins or themes installed. Do I need to update them?

You’ll need to update your plugins or themes if they use any of the following:

- `createWidget`
- `decorateWidget`, `changeWidgetSetting`, `reopenWidget`, or `attachWidgetAction`
- The `MountWidget` component

> 💡 **Pro tip:** If you have extensions that use any of these customizations, you’ll see a warning in the console identifying which plugin or component needs to be upgraded.

> ⚠ **Important:** If you use more than one theme in your instance, be sure to check all of them since the warnings will only appear for active plugins and currently used themes and theme-components.
> 
> The deprecation ID is: `discourse.widgets-end-of-life`

## How does this relate to the recent post-stream modernization?

The post-stream was the last major part of Discourse to still use the widget rendering system. With its modernization, we can now move ahead with the full retirement of the widget system. Take a look at the [upgrade guide](https://meta.discourse.org/t/upcoming-post-stream-changes-how-to-prepare-themes-and-plugins/372063) for more details about those changes.

## How do I upgrade?

**If you use a third-party plugin or theme:** Check if the author has released an upgraded version that’s compatible with the new system.

**If you’re a plugin/theme author:**

- Replace your custom widgets with Glimmer Components
- Use plugin-outlet connectors to insert them into the UI

Check our [Developer Guides](https://meta.discourse.org/c/documentation/developer-guides/56) for more information on making these updates.

---

<div class="post-metadata">

### Author: ![saquetim](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/saquetim/32/116400_2.png) [@saquetim](https://meta.discourse.org/u/saquetim)
#### Post date: [October 21, 2025, 6:30pm UTC](https://meta.discourse.org/t/upcoming-eol-for-the-widget-rendering-system/375332/4 "2025-10-21T18:30:30Z")

</div>

[https://github.com/discourse/discourse/pull/35504](https://github.com/discourse/discourse/pull/35504)

When you next update your Discourse installation, the widget rendering system will now be disabled, and any widget-based customization won’t be rendered anymore.

For now, on incompatible sites, the admin can re-enable the old behavior by modifying the values of the following setting:

- `deactivate_widgets_rendering`

This is the final phase before removing the old code from the Discourse code base, which is expected to happen in about a month. Subsequently, it won’t be possible to re-enable widgets anymore.

---

<div class="post-metadata">

### Author: ![saquetim](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/saquetim/32/116400_2.png) [@saquetim](https://meta.discourse.org/u/saquetim)
#### Post date: [November 27, 2025, 7:27pm UTC](https://meta.discourse.org/t/upcoming-eol-for-the-widget-rendering-system/375332/5 "2025-11-27T19:27:53Z")

</div>

The PR removing the widget system from Discourse was merged yesterday.

[https://github.com/discourse/discourse/pull/36109](https://github.com/discourse/discourse/pull/36109)

---

<div class="post-metadata">

### Author: ![loginerror](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/loginerror/32/156605_2.png) [@loginerror](https://meta.discourse.org/u/loginerror)
#### Post date: [December 10, 2025, 1:29pm UTC](https://meta.discourse.org/t/upcoming-eol-for-the-widget-rendering-system/375332/6 "2025-12-10T13:29:15Z")

</div>

Maybe a silly question, but do you think it would be possible for Discourse to offer an .md file with a guide/helpers that one could feed to their CLI code tool of choice to help with the migration of a plugin component?

Just a thought 😃

---

<div class="post-metadata">

### Author: ![saquetim](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/saquetim/32/116400_2.png) [@saquetim](https://meta.discourse.org/u/saquetim)
#### Post date: [December 10, 2025, 7:10pm UTC](https://meta.discourse.org/t/upcoming-eol-for-the-widget-rendering-system/375332/7 "2025-12-10T19:10:29Z")

</div>

We tried to provide migration instructions for the most common customization patterns, like the ones that modified the [post-stream](https://meta.discourse.org/t/upcoming-post-stream-changes-how-to-prepare-themes-and-plugins/372063).

It’s harder to write a more comprehensive guide because pretty much anything could be done using widgets, so the remaining customization needs to be converted to components on a case-by-case basis.

I’m watching these topics and we’ll try to answer questions posted here to aid those that still need to migrate.

I’ve looked briefly at the code that looks like it’s triggering the deprecation in your forum using the browser console, and it seems like it’s the following line:

```plaintext
const { iconNode } = require("discourse-common/lib/icon-library");
let iconsjira = iconNode('icons-jira');

```

`iconNode` was used only by widgets, and now it’s a noop function. In your code it doesn’t appear this variable is being used, so it should be safe to just remove these lines.

Let me know, if you need more help.
