Upgrading Discourse to Ember 4

The two-way binding change refers to re-assigning arguments, but you can still mutate them.

For example, this is not allowed in Glimmer components:

this.args.topic = blah

But this kind of thing:

this.args.topic.title = "blah"

is still possible.

In fact, I don’t think re-assigning arguments is currently possible in Plugin Outlets because of the way we use a {{hash}} to pass in the args. So I’m not expecting any changes on this front. :crossed_fingers:

Many official themes/plugins are already using Glimmer components as plugin outlet connectors, and the current docs on meta describe how to do that.

Glimmer components do provide an improved developer experience, and improved performance. But it’s worth noting that there is no immediate rush to convert from classic components to Glimmer components. Classic components are still supported in Ember 5.

The most important thing right now is to be resolving any deprecation messages in themes/plugins. We’ll be posting more about upgrade strategies over the next few weeks/months, but we’re making good progress on getting core ready for the upgrade. There’s even an experimental Ember 5.3 branch of Discourse which we’ve been running on an internal instance for the last few weeks with great success! :tada: