Hi folks!
My app was approved last week and I hit publish on Monday - unfortunately it’s not working :(. Getting the classic “failed to fetch template” although its clear the data is loading as its referenced in the chat.
To make a short story long, as part of my build I bump the ui:// URIs to bust caches between deploys, not fully appreciating that those URIs are part of the locked submission metadata.
Now i have a version waiting for Review with zero functional changes, but am left wondering how i’m going to make this work long term.
The MCP server doc says to treat the ui:// URI as a cache key and version it on breaking changes.
The submission doc says all submitted info is locked once published; changes require resubmission.
The implied steady state seems to be one MCP server/URL simultaneously serving both approved and in development, as well as old/cached versions after approval.
I haven’t built this yet but… does this sound right? Is this what others are doing?
A few specifics:
1. Is “one server, multiple coexisting widget URI sets” the intended pattern? During a transition, would my server register resources for both the approved build’s URIs and the new build’s, resources/read resolves either, and only tools/list differentiates which is advertised?
2. The tools/list gate during review. If both versions coexist server-side, I assume I shouldn’t advertise both in tools/list simultaneously. Is the expected pattern to flip an env var around the “Scan Tools” click, or is there a documented way for the server to identify reviewer requests vs. live traffic?
3. Anyone gotten Next.js to work here? My server is Next.js 16. Widget HTML returned from resources/read references /_next/static/... chunks, which get regenerated on every next build - exactly the failure mode that broke my app. The only path I can see is inlining all CSS/JS into a self-contained HTML blob built with esbuild outside Next.js, at which point Next.js is only serving the MCP route and probably doesn’t belong here. And at which point i’ll trash NextJS from this equation because, … why use it? ![]()
4. History rehydration on every deploy. Because my server only registers the current build’s URIs, every deploy retires the previous URIs for all users - old messages immediately start showing “Failed to fetch template” (gopi.ranganathan’s thread). Is this acceptable breakage on routine deploys, or is there a recommended retention window for retired URIs and their assets?
Really hoping I’m missing something fundamental, please point me in any direction you see me floundering, I’d appreciate it!!!
Bob