You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
The cross-origin iframe shell (#217) fixes the layout-instability ("歪") class of bugs by moving the author document into a same-origin, sandboxed /frame iframe (opaque origin) and keeping tdoc chrome in the outer shell. Author CSS can no longer touch the chrome — structurally, not by luck.
That isolation has an SEO cost we need a decision on before rollout.
The problem
Old overlay (single-origin)
Shell (this re-arch)
GET /d/<slug>/v/<n> returns
author content inline (overlay injected)
chrome + <iframe src="…/frame">
Where the doc text lives
in the crawled page
in /frame
/frame direct access
n/a
403 (gated on Sec-Fetch-Dest: iframe)
So a crawler hitting a published doc URL sees the shell chrome + an iframe, not the prose. Googlebot can render iframes and may index their content, but the long-standing official guidance is that iframe content is not guaranteed to be attributed to the host page — it's weaker and unreliable versus inline content. Net: published docs would index worse than they do today.
This is a genuine tension: isolation (iframe) ↔ SEO (inline content) — the same response can't easily do both (inline content is exactly what author CSS pollutes).
Proposed fix (keeps both isolation AND SEO; does not require reverting the shell)
Give the author content a real, crawlable URL + canonical:
Allow a top-level GET of the content document — either ungate /frame for navigations or add a dedicated /d/<slug>/v/<n>/raw. It stays safe: the sandbox CSP keeps the origin opaque (author JS still inert), and frame-ancestors 'self' prevents third-party framing. Top-level access just shows the bare (public) content.
That content page carries <link rel="canonical" href="/d/<slug>/v/<n>"> and goes into the sitemap.
Googlebot crawls the content page, sees the prose, attributes it to the doc URL.
This composes cleanly with the "delete overlay.js entirely / full migration" direction.
Decision needed
Do we want published tdoc docs to be indexed by search engines?
If docs are shared by direct link (not search-discovered) → current shell is acceptable; defer this.
If organic/search traffic matters → the crawlable-content-URL + canonical work is a merge blocker for the shell and should ship in Cross-origin iframe shell for author documents #217 (or immediately after, before the worker cut reaches production).
Related: #217 (cross-origin iframe shell). Homepage/site pages have the same consideration and are planned to render as plain server-rendered pages (content inline, no iframe) — that path is SEO-safe by construction.
Context
The cross-origin iframe shell (#217) fixes the layout-instability ("歪") class of bugs by moving the author document into a same-origin, sandboxed
/frameiframe (opaque origin) and keeping tdoc chrome in the outer shell. Author CSS can no longer touch the chrome — structurally, not by luck.That isolation has an SEO cost we need a decision on before rollout.
The problem
GET /d/<slug>/v/<n>returns<iframe src="…/frame">/frame/framedirect accessSec-Fetch-Dest: iframe)So a crawler hitting a published doc URL sees the shell chrome + an iframe, not the prose. Googlebot can render iframes and may index their content, but the long-standing official guidance is that iframe content is not guaranteed to be attributed to the host page — it's weaker and unreliable versus inline content. Net: published docs would index worse than they do today.
This is a genuine tension: isolation (iframe) ↔ SEO (inline content) — the same response can't easily do both (inline content is exactly what author CSS pollutes).
Proposed fix (keeps both isolation AND SEO; does not require reverting the shell)
Give the author content a real, crawlable URL +
canonical:/framefor navigations or add a dedicated/d/<slug>/v/<n>/raw. It stays safe: thesandboxCSP keeps the origin opaque (author JS still inert), andframe-ancestors 'self'prevents third-party framing. Top-level access just shows the bare (public) content.<link rel="canonical" href="/d/<slug>/v/<n>">and goes into the sitemap.This composes cleanly with the "delete overlay.js entirely / full migration" direction.
Decision needed
Do we want published tdoc docs to be indexed by search engines?
Related: #217 (cross-origin iframe shell). Homepage/site pages have the same consideration and are planned to render as plain server-rendered pages (content inline, no iframe) — that path is SEO-safe by construction.