Rendering 'TypeError' with theme components after update

AI-generated summary

Users piffy and Don reported a critical rendering bug after updating Discourse to commit 2f398db, causing their sites to break with errors like TypeError: Cannot read properties of null (reading 'syscall') and Invalid value used as weak map key. The issue occurs specifically when certain theme components — notably “Modern Category + Group Boxes” and “Avatar Size and Shape” — are active, often resulting in blank or looping pages. Both users confirmed the problem persists across browsers and even in safe mode, ruling out plugin conflicts. Don noted the bug appears only on pages using custom theme components and found temporary relief by toggling components on/off. piffy shared test links reproducing the issue, including one where the error only appears when logged in as admin. A related error traced to missing admin/components/color-input was identified in the Air Theme piffy, but david clarified this is unrelated to the core rendering issue. After david suggested clearing the theme cache via Discourse.clear_all_theme_cache!, both Don and piffy confirmed this fixed the problem. david concluded the root cause is a theme cache invalidation bug triggered by UI-based updates, not CLI rebuilds. He submitted a fix PR #34694 to address the cache issue and force recompilation on future updates. Both users run single-container installs — Don standard, piffy on Ubuntu 20.04 with minor customizations. For now, manually clearing the theme cache is the recommended workaround for affected sites.

I just updated to this : Commits · discourse/discourse · GitHub 2f398db9b66f19220b5a7f56721a68f41dcdeeec

Two different theme components now completely break my site. They are the “Modern Category + Group Boxes” from Air Theme and Avatar Size and Shape

They render the site unusable (looping?). Happens on both Firefox and Chrome (desktop)

I have tried them with no plugins and in isolation on different themes (ie safe mode with no plugins and on an isolated theme), so I don’t think it’s specific to my instance.

Console reports lines like this:

Uncaught TypeError: Cannot read properties of null (reading ‘syscall’)

Uncaught (in promise) TypeError: Invalid value used as weak map key

message-bus.js:118 MESSAGE BUS FAIL: callback /latest caused exception TypeError: Cannot read properties of null (reading ‘syscall’)

As a temporary solution, I have forced my users onto a generic theme until it’s figured out. Please let me know if you can replicate this error.

4 Likes

Sorry I can’t repro so far

2 Likes

I’m experiencing the same issue on my site. For example, when I log out, the page turns completely white with the same error. Some users also reported that they can’t log in because the page is just blank. It seems to happen randomly.

The main problem is that there’s no clear error message to indicate what’s causing it. I tried to track it down by checking my theme components. I’ve already updated most of them to gjs, but here’s the interesting part: when I deactivate and then reactivate a specific component, the site starts working again without errors. I still don’t know what’s causing this issue though… It seems that the problem only occurs on pages where a (custom) theme component is present. So at least this gives me a clue that the issue must be coming from one of the components.

1 Like

This might help track it down:

Check the helpers!

can you share a page/site where it’s happening @Don @piffy ?

1 Like

Here is a simple theme I set up that only has the avatar component: Elite Fourum - E4 - efour

https://www.elitefourum.com/latest?safe_mode=no_plugins&preview_theme_id=39

I can repo the issue at this link on firefox and chrome (desktop)


Modern Category + Group Boxes : Elite Fourum - E4 - efour

https://www.elitefourum.com/?safe_mode=no_plugins&preview_theme_id=58

this one seems harder to repo. It causes issues when I’m logged into my admin account (chrome and firefox) but not when I try on a dummy account. The bugs seem similar though between both theme component so maybe fixing one will solve the other.

Hope it helps!

1 Like

the closest thing I could get to an iterpretable error message is

client-error-handler.js:125 [THEME 39 ‘Test’] Error: Could not find module admin/components/color-input imported from (require)

the customize-edit-category-general.js is coming from the Air Theme:

in core:

This looks like the same issue: Forum navbar is repeating

1 Like

This will fix the color-input error from the air theme. But this issue is not new, so I think it’s unlikely to be the cause of these rendering errors

https://github.com/discourse/discourse/pull/34689

2 Likes

@piffy please can you try updating to the latest tests-passed, just in case that color-input fix helps at all.

Assuming things are still broken after a rebuild, please can you try this:

./launcher enter app
rails c
Discourse.clear_all_theme_cache!

Same goes for you @don, if you have the time.

If that solves the problem, then it suggests we have an issue with the theme cache invalidation :thinking:

2 Likes

Thanks David, it seems this do the trick for me.

1 Like

Also confirming the update didn’t help but the theme cache reset worked.

2 Likes

Ok great, thanks for confirming! We’ll try to solve this problem in the theme caching system, so that manual action isn’t required.

But in the meantime, for anyone else who runs into these issues:

Uncaught TypeError: Cannot read properties of null (reading ‘syscall’)
Uncaught (in promise) TypeError: Invalid value used as weak map key

Please take these steps on the console:

./launcher enter app
rails c
Discourse.clear_all_theme_cache!
4 Likes

@piffy @Don are you both running a single-container standard install?

1 Like

Yes, I’m on a single-container standard install.

1 Like

I’m running Ubuntu 20.04.6 LTS (I see it’s no longer officially supported) on DigitalOcean, single container.

Notable deviations from standard install:

1 Like

One more question. When it first broke, were you running a UI update or a CLI rebuild?

Admin UI

adding more words to overcome 20 char post limit

1 Like

Yes, me too. I did the UI update first.

1 Like

I haven’t been able to reproduce the problem, but I did find one possible problem which is specific to the way UI-based upgrades work. This should take care of it:

https://github.com/discourse/discourse/pull/34694

It also forces a recompilation, so sites that have already been affected by this bug will be sorted after their next update.

5 Likes