Plugin(MCP) Tool Call UI Rendering Issue on the ChatGPT iOS App

Hello,

I’m experiencing a UI rendering issue with a plugin/tool call specifically on the ChatGPT iOS app.

The issue is consistently reproducible on iOS, while the same behavior does not occur on the ChatGPT web version.

Issue

When a tool call is triggered by certain prompts, the expected UI card does not render correctly in the ChatGPT iOS app.

Web (Expected) iOS App (Issue)
---- ----

Interestingly, after the initial UI rendering issue occurs, if I send an additional prompt asking ChatGPT to render or display the card again, such as:

Please render the card again.

the UI card sometimes renders correctly.

This makes it seem like the tool call itself is being processed successfully, but there may be an issue with the initial rendering of the UI card on iOS.

Environment

  • ChatGPT iOS app: Issue consistently reproducible
  • ChatGPT web: Works as expected

Has anyone else experienced a similar issue where a tool call succeeds but its UI card does not render correctly on the ChatGPT iOS app?

If so, I’d especially appreciate hearing:

  • Whether you identified the cause of the issue
  • Whether there are any known iOS-specific limitations or differences in UI card rendering
  • How you resolved or worked around the issue
  • Whether explicitly asking ChatGPT to render the card again also worked as a workaround in your case

Any experiences, debugging tips, or potential solutions would be greatly appreciated.

Thank you!

Thanks for flagging this, @Changju_Na. I can see why it’s frustrating when the tool completes successfully but the card does not render in the iOS app.

Could you share your current setup, including the iOS and ChatGPT app versions, whether the UI render tool runs after another tool in the same turn, and how _meta.ui.resourceUri is configured?

The best workaround is to make the UI-linked render tool the first and only model-invoked tool in that turn. You can temporarily combine data processing and rendering into one tool, or mount the widget first and let it call the data tool afterward.

This documentation covers the recommended setup: Separate data processing from UI rendering.

If the issue persists, please create a support ticket at support@openai.com and include a minimal reproduction, app and iOS versions, tool-call logs, and whether a resources/read request occurs after the render call.

-Mark G.