Fixing GoToSocial timeline not loading in some Apps

I recently switched my Mastodon hosting from the official server stack to GoToSocial because I was literally hosting a single user instance and Mastodon was overkill. GoToSocial appealed to me because of how light it is compared to the official server.

I use IceCubes as a client and shortly after moving to GoToSocial I ran into a weird problem. My timeline would not refresh in IceCubes and then a few days later it would magically work again. I originally found this issue around May 18th, 2026 and added my “me too” style comment.

When the issue reoccurred July 3, 2026 I figured I should dig into it with MITM Proxy and Claude. My original theory was there must be a bug in IceCubes since the client wasn’t loading the timeline. My digging lead me to this IceCubes issue. Turned out, it’s actually a GotoSocial issue, potentially a regression.

The problem: Some Mastodon users use custom emojis and sometimes those emojis aren’t cached in GoToSocial right away. When the emoji isn’t cached and one of these users posts the custom emoji that would appear in your timeline, your timeline will fail to load because GoToSocial sends a blank URL for the custom emoji instead of a placeholder. Mastodon clients that follow the protocol spec strictly (like IceCubes and Mastodon’s official client) fail on the blank URL. If you wait long enough, eventually the emoji will cache or the post will cycle out of your visible timeline and then everything starts working again. Until it doesn’t again.

Brainstorming with Claude, it was proposed a small proxy service between Traefik and my GoToSocial container could workaround the problem until the bug is fixed. It works by intercepting and re-writing the blank custom emoji URLs with a placeholder URL. It doesn’t even need to point at a valid image, it just needs to be a URL.

This container should work with other reverse proxies like nginx, Caddy, etc. as long as you terminate your TLS at the reverse proxy and proceed from there using http to your GoToSocial container/instance. Not ideal security wise but if your network is sufficiently isolated this should work safely until the GoToSocial folks fix the bug. Once the bug is fixed, drop this container from your stack.

I’ve been using this container since July 3rd, 2026 and haven’t had any issues with it. Since it feels like this bug might be with us for a while, I updated the container today before writing this blog post so others could use it by having Claude add some configurables via environment variables.

I have not tested the arm64 version of the container myself because my Docker host is a x86_64 VM. Claude suggested building that version because I guess a lot of you folks run GoToSocial on Raspberry Pi’s. Let me know if you have any problems with it via e-mail or the comments and I will see what I can do.

I used AI to create this container. Please do not post this information on the GoToSocial’s issue tracker or in their community. It violates their Code of Conduct and your account could be banned. A simple 👍 on the issue could help get it more visibility and priority from the Devs.

Everything you need can be found in my repo and instructions are in the README.

Leave a comment

This site uses Akismet to reduce spam. Learn how your comment data is processed.