When an engine fetches a page in real time to answer a question, it reads the visible HTML. ChatGPT, Claude and Perplexity don't execute JavaScript at that moment (searchVIU's crawler analysis classifies GPTBot, ClaudeBot and PerplexityBot as unable to render it), so content that only exists after client-side rendering may as well not be there.
This explains a lot of failed AEO tooling. When Ahrefs tracked 1,885 pages that added JSON-LD, against 4,000 matched controls, AI citations moved +2.4% on Google AI Mode and +2.2% on ChatGPT, both statistically indistinguishable from zero. Schema on its own didn't move the answer. Hidden AI-only content is structurally useless for the same reason: the engine isn't reading the hidden layer at answer time. It's why the Geoffy widget renders in the DOM, visibly, on the canonical page.