Build Journal
Fixing Theme SSR and Portal Call Issues — September 2, 2026
I fixed critical SSR issues with the theme and resolved portal call loading errors. Here's how I tackled these challenges to enhance the agentic web experience.
What shipped
- SSR Cookie Fix — Prevented cache poisoning by not honoring gp_theme cookie for anonymous requests.
- Portal Call Loading — Resolved loading issues by avoiding eval in daily-js call machine.
Today, I set out to tackle some pressing issues with the theme SSR and portal call loading in my spatial AI project. After a focused hour of work, I successfully fixed two critical bugs that were causing headaches for users interacting with the agentic web. These fixes not only enhance the overall experience but also align with my goal of building a robust one-man-show company with a billion-dollar valuation.
The first issue I addressed was related to the SSR of the gp_theme cookie for anonymous requests. The caching policy on the shared nginx page was causing a significant problem. Specifically, the apex cache was set to 30 minutes and the hashtags/local cache to 24 hours. If a visitor who had a dark theme baked a page while logged out, that dark variant would be served to other users as well. This bug was a classic case of cache poisoning, and I could already envision the confusion it was causing for new visitors. To resolve this, I implemented a fix that ensured the gp_theme cookie would not be honored for anonymous requests. This way, every visitor receives a fresh, untainted experience regardless of prior interactions.
Next, I turned my attention to the portal call loading mechanism. The daily-js call machine was failing to load properly due to a security policy enforcement issue. The enforced Content Security Policy (CSP) allowed for wasm-unsafe-eval but not unsafe-eval, which meant that the default loader for daily-js was attempting to eval() the fetched call-machine bundle. This was a major blocker, as every Tavus portal call was crashing at the join phase. I was able to fix this by modifying the loading configuration to avoid the eval altogether. Instead, I leveraged the dailyConfig.avoidEval setting, which allowed for a more secure and efficient loading process that adhered to the CSP without compromising functionality.
These fixes, while seemingly straightforward, required a deep understanding of how the agentic web operates. It’s moments like these that remind me of the intricacies involved in building this platform solo. The combination of spatial AI and user experience demands meticulous attention to detail, and I often find myself immersed in the code, diagnosing issues that pop up unexpectedly. Today’s hour of focused work was a testament to that grind.
Reflecting on the solo journey, I can’t help but appreciate how AI tools, like Claude Code in VS Code, have become my virtual team members. They help me debug and optimize code without the overhead of hiring. This approach not only saves money but also gives me the flexibility to iterate quickly, aligning perfectly with my ambition to scale this project into a billion-dollar venture. It’s liberating to know that I can handle complex challenges with just my skills and the right AI tools at my side.
As I wrap up today’s entry, I’m proud to have shipped these fixes. They may not be flashy features, but they are fundamental to the user experience and the overall integrity of the platform. Every bug I squash and every issue I resolve is a step closer to creating a seamless agentic web experience. I’m excited to see how these changes will improve user interactions and help move the project forward.
Each fix reinforces my belief in the vision I’m crafting. The journey is long, and the challenges are numerous, but with each commit, I’m building not just a product, but a legacy that I hope will resonate with users and investors alike. The road ahead is filled with potential, and I look forward to sharing more of my progress as I continue this ambitious journey.