The native comments section has stopped rendering on all of my self-hosted blogs, and I’d like to surface this since the related issues seem stuck in triage.
Symptoms
{{comments}} is present in the theme
.article-comments and script[data-ghost-comments] are emitted in the HTML
#ghost-comments-root is never created → the area stays blank (or shows an infinite spinner depending on the post)
Console error on some pages: [Comments] Failed to initialize: TypeError: [object Promise] is not iterable
Is anyone else on a recent 6.x release still seeing this? It affects every blog I run.
Is there a known fix or workaround beyond removing {{comments}} from the theme?
Could someone from the Ghost team confirm whether these issues are on the radar? They’ve been sitting in triage for months and the comments feature is effectively broken for the affected sites — including with the official Source theme, so it’s not a theme-customization issue.
If you are overriding Ghost app versions in your Ghost config, you may try to update them to latest versions. You mention comments-ui@~1.3/ for example, current version for comments-ui is 1.5.5
If you don’t have a special reason to override versions, you can omit them to always use the version comes with your Ghost’s default config.
It’s worth noting that app version minor bumps usually correspond to API changes on Ghost’s side, there’s currently no guarantee that a comments-ui minor version is compatible with a version of Ghost that it wasn’t built for. For example, Ghost 6.41.1 specifies a comments-ui version of 1.4.x so may not necessarily work with 1.3.x.
@bastien I would suggest updating your Ghost instance and use the appropriate comments-ui version found in the default config.
@Kevin, @muratcorlu, thank you for your help. Quick clarification: the comments-ui@~1.3 snippet in my original post came from one of the linked GitHub issues, not from my own setup — sorry for the confusion. I’m running the official ghost:6.41.1 Docker image with no app-version overrides.
So Ghost 6.41.1 pins comments-ui@~1.4 (not 1.5.5 — there’s no way to land on 1.5.5 without manually overriding, which I’d rather avoid).
I also did a full Cloudflare Purge Everything + private window. The browser now loads comments-ui@~1.4/umd/comments-ui.min.js, but the bug persists: #ghost-comments-root is never created, same [Comments] Failed to initialize: TypeError: [object Promise] is not iterable error — now from the 1.4 bundle.
So this looks like a genuine issue with comments-ui 1.4 as shipped with Ghost 6.41.1 (also reproduced on 6.37.0, official Source theme, unmodified), matching #25917 and #27788. Could someone from the team take a look?
Do you experience the same issue on the latest Ghost version?
Patches of earlier versions outside of LTS majors aren’t typically made, so any fix if one is needed would be made on the latest version of Ghost/comments-ui.
Thanks @Kevin. I just upgraded to Ghost 6.42.0 (the latest available on the official Docker Hub image — 6.43.1 isn’t published there yet), re-purged Cloudflare and re-tested in a private window.
Same result: comments-ui@~1.4/umd/comments-ui.min.js loads, #ghost-comments-root is never created, same [Comments] Failed to initialize: TypeError: [object Promise] is not iterable error.
For context: I’ve been hitting this bug consistently for ~2 months across roughly a dozen Ghost releases, on multiple self-hosted blogs, all using the official Docker image with no config overrides and the official unmodified Source theme. Issues #25917 and #27788 describe the same symptoms from other self-hosted users, so this doesn’t look like a one-off on my side — it seems to be a systemic problem on self-hosted Ghost that doesn’t surface on Ghost Pro.
While I have my own Docker image for Magic Pages, I am not doing any voodoo for the comments files − and I am not hitting that (just checked a couple of sites).
So, I would argue that it’s a bit more complex than sites not being hosted on Ghost(Pro).
Any chance you can share an URL where that’s happening? I am genuinely curious.
I wonder if maybe you need a second look at your docker compose file. Might you be accidentally specifying an alternate comments loading URL or version?
Update — solved on my side, and it had nothing to do with Ghost or comments-ui after all. Sharing in case it helps someone else.
The root cause was a Cloudflare anti-bot setup I had put in place months ago following the technique discussed in this thread: combining hostSettings.siteId on the Ghost side with a Cloudflare Transform Rule that injects an x-site-id request header, plus a WAF Custom Rule that blocks any request to /members/api/ missing that header. Together they prevent direct hits to the origin from bypassing Cloudflare.
When I tried to disable the protection to test comments-ui, I only disabled the Transform Rule (which adds the header) and removed hostSettings.siteId from Ghost — but I forgot the second piece, the WAF Custom Rule that blocks/members/api/ requests without the header. So every comments-ui fetch to /members/api/comments/counts/ was returning a Cloudflare 403 HTML page, which comments-ui then tried to parse as JSON and failed with TypeError: [object Promise] is not iterable.
Disabling that WAF rule fixed it immediately. Comments now load normally on Ghost 6.42.0, comments-ui@~1.4, official Source theme.
So: sorry for the noise, and apologies to @Kevin and @muratcorlu — this wasn’t a Ghost bug. But it might still be worth flagging that comments-ui swallowing a non-JSON response with such a cryptic error message makes this kind of misconfiguration very hard to diagnose. A clearer error (e.g. “got HTML instead of JSON from /members/api/…”) would have saved a lot of time.