{
  "title": "MCP Apps Performance and Context-Cost Framework",
  "schemaVersion": "1.0",
  "researchFreeze": "2026-08-26",
  "protocolRevision": "MCP Apps 2026-01-26 / ext-apps SDK v1.7.5 / MCP core 2026-07-28",
  "sourcePackage": "research/9",
  "integrityNote": "The 93 ordinary archive entries verify. Two self-referential bookkeeping entries have disclosed stale final rows; public corrections do not modify the raw archive.",
  "count": 11,
  "records": [
    {
      "Concern": "UI resource bundle size",
      "Cost mechanism": "Download, JSON parse, iframe initialization and memory",
      "Measurement": "Compressed/uncompressed bytes; time to first paint",
      "Mitigations": "Bundle locally, tree-shake, lazy-load optional features",
      "Protocol or product": "Implementation",
      "Sources": "S003 S077",
      "id": "R9-PERF001",
      "packageSourceIds": [
        "S003",
        "S077"
      ],
      "sourceIds": [
        "S389",
        "S453"
      ]
    },
    {
      "Concern": "Full-buffered HTML",
      "Cost mechanism": "resources/read returns complete string/blob before browser parsing",
      "Measurement": "Resource latency and first paint",
      "Mitigations": "Small shell, chunk data separately; streaming remains proposal",
      "Protocol or product": "Stable protocol limitation",
      "Sources": "S004 S077",
      "id": "R9-PERF002",
      "packageSourceIds": [
        "S004",
        "S077"
      ],
      "sourceIds": [
        "S390",
        "S453"
      ]
    },
    {
      "Concern": "External assets",
      "Cost mechanism": "Additional DNS/TLS/HTTP requests and CSP/CORS failure modes",
      "Measurement": "Request count, blocked requests, total bytes",
      "Mitigations": "Self-contained bundle or tightly controlled CDN",
      "Protocol or product": "Implementation/security",
      "Sources": "S010",
      "id": "R9-PERF003",
      "packageSourceIds": [
        "S010"
      ],
      "sourceIds": [
        "S395"
      ]
    },
    {
      "Concern": "Iframe startup",
      "Cost mechanism": "Document creation, script execution and bridge handshake",
      "Measurement": "ui/initialize-to-ready duration",
      "Mitigations": "Prefetch UI resource, minimize startup work",
      "Protocol or product": "Host and app",
      "Sources": "S004 S006",
      "id": "R9-PERF004",
      "packageSourceIds": [
        "S004",
        "S006"
      ],
      "sourceIds": [
        "S390",
        "S136"
      ]
    },
    {
      "Concern": "Repeated rendering",
      "Cost mechanism": "Same app bundle loaded for multiple tool calls",
      "Measurement": "Cache hit rate and memory per View",
      "Mitigations": "Host caching and careful instance lifecycle",
      "Protocol or product": "Host implementation",
      "Sources": "S004 S076",
      "id": "R9-PERF005",
      "packageSourceIds": [
        "S004",
        "S076"
      ],
      "sourceIds": [
        "S390",
        "S452"
      ]
    },
    {
      "Concern": "Tool-result transfer",
      "Cost mechanism": "Large structuredContent copied through host and postMessage",
      "Measurement": "Message size and serialization time",
      "Mitigations": "Chunk/paginate data; resources/read for large binary data",
      "Protocol or product": "Application design",
      "Sources": "S012",
      "id": "R9-PERF006",
      "packageSourceIds": [
        "S012"
      ],
      "sourceIds": [
        "S397"
      ]
    },
    {
      "Concern": "Model-context cost",
      "Cost mechanism": "Text fallback and app-updated context consume model tokens",
      "Measurement": "Tokens added per turn",
      "Mitigations": "Keep rich UI data out of model context; send concise summaries",
      "Protocol or product": "Host/app design",
      "Sources": "S004",
      "id": "R9-PERF007",
      "packageSourceIds": [
        "S004"
      ],
      "sourceIds": [
        "S390"
      ]
    },
    {
      "Concern": "Live polling",
      "Cost mechanism": "Repeated app-only tool calls",
      "Measurement": "Requests/minute and server load",
      "Mitigations": "Backoff, visibility/offscreen pausing, event-driven updates where supported",
      "Protocol or product": "Application design",
      "Sources": "S012",
      "id": "R9-PERF008",
      "packageSourceIds": [
        "S012"
      ],
      "sourceIds": [
        "S397"
      ]
    },
    {
      "Concern": "Framework overhead",
      "Cost mechanism": "Runtime and component library bundle size",
      "Measurement": "JS bytes and execution time",
      "Mitigations": "Choose framework proportional to interaction complexity",
      "Protocol or product": "Implementation",
      "Sources": "S003 S006",
      "id": "R9-PERF009",
      "packageSourceIds": [
        "S003",
        "S006"
      ],
      "sourceIds": [
        "S389",
        "S136"
      ]
    },
    {
      "Concern": "Perceived latency",
      "Cost mechanism": "User sees blank container while tool and UI initialize",
      "Measurement": "Time to useful skeleton and first actionable control",
      "Mitigations": "Skeleton UI, streamed input, optimistic but reversible state",
      "Protocol or product": "UX implementation",
      "Sources": "S012",
      "id": "R9-PERF010",
      "packageSourceIds": [
        "S012"
      ],
      "sourceIds": [
        "S397"
      ]
    },
    {
      "Concern": "Context savings",
      "Cost mechanism": "Direct manipulation can replace repeated explanatory turns",
      "Measurement": "Turns/tokens for equivalent task",
      "Mitigations": "Use UI only for interactions that benefit from it",
      "Protocol or product": "Potential benefit; benchmark required",
      "Sources": "S006 S044",
      "id": "R9-PERF011",
      "packageSourceIds": [
        "S006",
        "S044"
      ],
      "sourceIds": [
        "S136",
        "S143"
      ]
    }
  ]
}