{
  "reviewedOn": "2026-11-10",
  "updatedOn": "2026-11-11",
  "features": [
    {
      "id": "ssr",
      "group": "rendering",
      "label": "SSR",
      "definition": "Generate page HTML on the server from application data."
    },
    {
      "id": "streaming",
      "group": "rendering",
      "label": "HTML streaming",
      "definition": "Send HTML incrementally in the original response. Data streaming and separately fetched fragments are identified in notes."
    },
    {
      "id": "suspense",
      "group": "rendering",
      "label": "Suspense / async UI",
      "definition": "A declarative boundary with pending UI while asynchronous content resolves. It need not be named Suspense."
    },
    {
      "id": "client",
      "group": "rendering",
      "label": "Client activation",
      "definition": "Make server HTML interactive through hydration, resumability, adoption, or islands. Notes name the mechanism."
    },
    {
      "id": "ssg",
      "group": "rendering",
      "label": "Static generation",
      "definition": "A workflow that exports deployable HTML before requests arrive. Returning a string alone does not qualify."
    },
    {
      "id": "csr",
      "group": "rendering",
      "label": "Client rendering",
      "definition": "Create and update application UI in the browser without requiring initial server HTML."
    },
    {
      "id": "serverOnly",
      "group": "rendering",
      "label": "Server-only components",
      "definition": "Keep component implementation and dependencies off the client. Notes distinguish RSC, islands, and server templates."
    },
    {
      "id": "partialRendering",
      "group": "rendering",
      "label": "Static + dynamic UI",
      "definition": "Combine a prebuilt shell with request-time content. Notes distinguish original-response streaming from separate island requests."
    },
    {
      "id": "routing",
      "group": "routing",
      "label": "URL routing",
      "definition": "Map application URLs to pages or handlers. A navigation stack alone is distinguished from HTTP routing."
    },
    {
      "id": "layouts",
      "group": "routing",
      "label": "Nested layouts",
      "definition": "Compose shared layout UI around nested pages; notes explain whether layout selection is automatic or explicit."
    },
    {
      "id": "dynamicRoutes",
      "group": "routing",
      "label": "Route parameters",
      "definition": "Match variable URL segments, with a documented API for retrieving route parameters."
    },
    {
      "id": "parallelRoutes",
      "group": "routing",
      "label": "Parallel routes",
      "definition": "Display independently navigable routed regions in one layout. Rendering two ordinary components does not qualify."
    },
    {
      "id": "interceptedRoutes",
      "group": "routing",
      "label": "Route interception",
      "definition": "Render a destination inside the current UI context, such as a routed modal, while preserving direct-link behavior."
    },
    {
      "id": "prefetch",
      "group": "routing",
      "label": "Link prefetching",
      "definition": "Fetch a likely destination before navigation; notes identify triggers and what is actually fetched."
    },
    {
      "id": "softNavigation",
      "group": "routing",
      "label": "SPA-like navigation",
      "definition": "Navigate between same-site pages without reloading the whole document, updating the URL/history and page content. Includes client routers and Turbo-style HTML swaps. Prefetching or hydration alone does not qualify."
    },
    {
      "id": "viewTransitions",
      "group": "routing",
      "label": "Page transitions",
      "definition": "Coordinate visual animations across page navigation through a documented router or View Transitions integration. Navigating without a reload is separate; ordinary component animations alone do not qualify. Browser support and reduced-motion behavior are noted where relevant."
    },
    {
      "id": "redirects",
      "group": "routing",
      "label": "Redirects & rewrites",
      "definition": "Documented URL redirection or internal rewriting APIs; notes distinguish which is supported."
    },
    {
      "id": "serverData",
      "group": "data",
      "label": "Server data loading",
      "definition": "Load asynchronous data for server-rendered UI with a documented application pattern."
    },
    {
      "id": "clientData",
      "group": "data",
      "label": "Client queries",
      "definition": "A query API for browser fetch lifecycle, cache state, or server-to-client data handoff; fetch() alone is not a query cache."
    },
    {
      "id": "requestDedupe",
      "group": "data",
      "label": "Request deduplication",
      "definition": "Reuse equivalent reads within one render/request, distinct from caching between requests."
    },
    {
      "id": "persistentCache",
      "group": "data",
      "label": "Cross-request cache",
      "definition": "Retain data or rendered output across requests. Notes identify storage, lifetime, and deployment dependencies."
    },
    {
      "id": "invalidation",
      "group": "data",
      "label": "Cache invalidation",
      "definition": "Explicitly expire or refresh cached data by key, tag, path, or dependencies."
    },
    {
      "id": "isr",
      "group": "data",
      "label": "Page revalidation",
      "definition": "Refresh previously generated or cached pages after deployment. Notes distinguish origin regeneration from CDN cache headers."
    },
    {
      "id": "apiRoutes",
      "group": "server",
      "label": "HTTP endpoints",
      "definition": "Define application endpoints for JSON, webhooks, or other HTTP responses."
    },
    {
      "id": "actions",
      "group": "server",
      "label": "Server functions",
      "definition": "Call server-only application functions from browser code through a framework transport; hand-written HTTP endpoints are identified separately."
    },
    {
      "id": "forms",
      "group": "server",
      "label": "Forms & validation",
      "definition": "A documented form submission and validation workflow. Notes distinguish transport, input validation, and error feedback."
    },
    {
      "id": "middleware",
      "group": "server",
      "label": "Request middleware",
      "definition": "Run application logic around page/API request handling, including request context or response modification."
    },
    {
      "id": "cookies",
      "group": "server",
      "label": "Cookies & sessions",
      "definition": "Read/write request cookies or use a session API; cookie access alone is not session management."
    },
    {
      "id": "cssModules",
      "group": "styling",
      "label": "CSS Modules",
      "definition": "Build-time local CSS class names imported as a module."
    },
    {
      "id": "scopedCss",
      "group": "styling",
      "label": "Scoped styles",
      "definition": "Component-local styles whose selectors are scoped by a compiler or framework."
    },
    {
      "id": "tailwind",
      "group": "styling",
      "label": "Tailwind integration",
      "definition": "A documented setup for the external Tailwind CSS compiler; Tailwind is not counted as framework-owned."
    },
    {
      "id": "cssInJs",
      "group": "styling",
      "label": "CSS-in-JS",
      "definition": "A documented CSS-in-JS integration, including server rendering constraints and any required registry."
    },
    {
      "id": "images",
      "group": "assets",
      "label": "Image optimization",
      "definition": "Automatic resizing, format conversion, or responsive variant generation. Hand-authored srcset is called out separately."
    },
    {
      "id": "fonts",
      "group": "assets",
      "label": "Font optimization",
      "definition": "Self-hosting, preload, subsetting, or fallback-metric tooling; notes identify the actual optimizations."
    },
    {
      "id": "scripts",
      "group": "assets",
      "label": "Script loading",
      "definition": "Control when third-party scripts load, including deferred or interaction-driven strategies."
    },
    {
      "id": "staticAssets",
      "group": "assets",
      "label": "Static asset serving",
      "definition": "A supported way to publish files with the deployed application, with paths and caching described."
    },
    {
      "id": "metadata",
      "group": "metadata",
      "label": "Metadata API",
      "definition": "A structured API for titles, descriptions, canonical URLs, and social metadata. Authoring raw head tags is identified separately."
    },
    {
      "id": "dynamicMetadata",
      "group": "metadata",
      "label": "Data-driven metadata",
      "definition": "Compute metadata from request parameters or asynchronous data without duplicating the page data pipeline."
    },
    {
      "id": "metadataInheritance",
      "group": "metadata",
      "label": "Layout inheritance",
      "definition": "Inherit metadata defaults through nested layouts. Notes explain field merge or replacement semantics."
    },
    {
      "id": "metadataOverrides",
      "group": "metadata",
      "label": "Child overrides",
      "definition": "A child page/layout can replace or clear inherited metadata. Nested object replacement and inherited arrays must be explained."
    },
    {
      "id": "titleTemplates",
      "group": "metadata",
      "label": "Title composition",
      "definition": "Apply ancestor title templates while allowing explicit absolute titles or template reset."
    },
    {
      "id": "socialImages",
      "group": "metadata",
      "label": "Generated OG images",
      "definition": "Generate social preview image bytes through a documented integration; setting an og:image URL alone does not qualify."
    },
    {
      "id": "sitemaps",
      "group": "metadata",
      "label": "Sitemaps",
      "definition": "Generate XML sitemaps, including any documented splitting, index, or localization support."
    },
    {
      "id": "robots",
      "group": "metadata",
      "label": "robots.txt",
      "definition": "A documented file convention or structured generator for crawler directives."
    },
    {
      "id": "markdown",
      "group": "content",
      "label": "Markdown / MDX",
      "definition": "Render authored Markdown content with a supported build/runtime integration; notes distinguish MDX and Markdown output APIs."
    },
    {
      "id": "collections",
      "group": "content",
      "label": "Content collections",
      "definition": "Load, validate, and query sets of structured content; a database driver alone is not a content collection API."
    },
    {
      "id": "draftMode",
      "group": "content",
      "label": "Editorial previews",
      "definition": "Bypass published/cached content for an authenticated editorial preview workflow."
    },
    {
      "id": "translations",
      "group": "i18n",
      "label": "Translations",
      "definition": "Locale-specific message lookup, with documented fallback or interpolation."
    },
    {
      "id": "localeRouting",
      "group": "i18n",
      "label": "Locale routing",
      "definition": "Locale-specific URLs, detection, or redirects; translation dictionaries alone do not qualify."
    },
    {
      "id": "localeFormatting",
      "group": "i18n",
      "label": "Locale formatting",
      "definition": "Locale-sensitive date, number, or plural formatting. Fixed-format helpers are identified separately."
    },
    {
      "id": "auth",
      "group": "security",
      "label": "Authentication",
      "definition": "Documented identity/authentication integration; route guards and cookies alone are not a complete login system."
    },
    {
      "id": "csp",
      "group": "security",
      "label": "Content Security Policy",
      "definition": "Configure Content Security Policy directives and enforcement. Notes distinguish HTTP headers, meta policies and hash-based policies; nonce coordination is compared separately."
    },
    {
      "id": "cspNonce",
      "group": "security",
      "label": "Nonce-based CSP",
      "definition": "Coordinate a per-response unpredictable nonce between the Content-Security-Policy and framework-generated scripts/styles, without requiring unsafe-inline. Notes distinguish automatic generation from a supplied nonce and identify streaming, caching and prerendering restrictions. Setting an arbitrary header or allowing a nonce attribute alone does not qualify."
    },
    {
      "id": "csrf",
      "group": "security",
      "label": "CSRF defenses",
      "definition": "Documented protection for unsafe browser requests. Notes specify origin checks, tokens, scope, and gaps."
    },
    {
      "id": "environment",
      "group": "security",
      "label": "Environment & secrets",
      "definition": "A documented server/client configuration boundary; application secrets must not be exposed to client bundles."
    },
    {
      "id": "types",
      "group": "tooling",
      "label": "Type checking",
      "definition": "Compile-time types for application code or templates. Notes identify toolchain and scope."
    },
    {
      "id": "hmr",
      "group": "tooling",
      "label": "Dev updates",
      "definition": "A documented live-reload or hot-update workflow. State-preserving HMR is distinguished from full-page reload."
    },
    {
      "id": "cli",
      "group": "tooling",
      "label": "Project CLI",
      "definition": "Commands for scaffolding, developing, or building an application."
    },
    {
      "id": "bundleAnalysis",
      "group": "tooling",
      "label": "Bundle analysis",
      "definition": "Inspect production browser/server dependency output and its size, distinct from performance benchmarking."
    },
    {
      "id": "unitTests",
      "group": "testing",
      "label": "Unit / component tests",
      "definition": "A documented unit/component test workflow; notes identify external runners and unsupported component modes."
    },
    {
      "id": "e2eTests",
      "group": "testing",
      "label": "Browser tests",
      "definition": "A documented browser automation integration or workflow; the test runner is identified separately."
    },
    {
      "id": "observability",
      "group": "testing",
      "label": "Instrumentation",
      "definition": "Hooks or integrations for traces, metrics, or production logging; dashboards/exporters may be separate."
    },
    {
      "id": "errorHandling",
      "group": "testing",
      "label": "Error boundaries",
      "definition": "Render a defined fallback/recovery UI for failed page or component work. HTTP status responses alone are distinguished."
    },
    {
      "id": "serverHosting",
      "group": "deployment",
      "label": "Self-hosting",
      "definition": "Run the production application on infrastructure you operate, with a documented server runtime or adapter."
    },
    {
      "id": "staticHosting",
      "group": "deployment",
      "label": "Static hosting",
      "definition": "Export files deployable without an application server; notes describe features lost in this mode."
    },
    {
      "id": "containers",
      "group": "deployment",
      "label": "Containers",
      "definition": "A documented container deployment workflow or image output."
    },
    {
      "id": "edgeHosting",
      "group": "deployment",
      "label": "Edge runtimes",
      "definition": "A documented edge/worker deployment adapter or runtime, with limitations identified."
    },
    {
      "id": "orm",
      "group": "database",
      "label": "ORM / query builder",
      "definition": "A documented model or query API above raw SQL or a database driver."
    },
    {
      "id": "migrations",
      "group": "database",
      "label": "Schema migrations",
      "definition": "Versioned database schema changes with an execution and history mechanism."
    },
    {
      "id": "transactions",
      "group": "database",
      "label": "Transactions",
      "definition": "A documented API for atomic database operations, including commit and rollback."
    },
    {
      "id": "jobs",
      "group": "backend",
      "label": "Background jobs",
      "definition": "A persistent queue with workers and job lifecycle handling. In-process tasks are qualified separately."
    },
    {
      "id": "mail",
      "group": "backend",
      "label": "Email",
      "definition": "An integrated mail delivery API; templates, transports and queue support are distinguished in notes."
    },
    {
      "id": "uploads",
      "group": "backend",
      "label": "File uploads & storage",
      "definition": "Parse uploaded files and manage storage. Request parsing alone is qualified separately."
    },
    {
      "id": "realtime",
      "group": "backend",
      "label": "Real-time delivery",
      "definition": "A documented WebSocket, channel, broadcasting or server-sent event API. Notes distinguish transport from a complete pub/sub service."
    },
    {
      "id": "xssEscaping",
      "group": "security",
      "label": "Output escaping",
      "definition": "An owned HTML output-encoding policy for dynamic values. State default/opt-in behavior, protected contexts, URL handling and raw-output bypasses. Escaping text does not establish safe JavaScript/CSS interpolation or HTML sanitization."
    },
    {
      "id": "htmlSanitization",
      "group": "security",
      "label": "HTML sanitization",
      "definition": "A maintained allowlist-based API/integration for accepting untrusted rich HTML while removing dangerous markup. Escaping to text, trusting a raw-HTML wrapper or validating a string is not sanitization."
    },
    {
      "id": "authorization",
      "group": "security",
      "label": "Authorization policies",
      "definition": "A documented permission/policy API for deciding whether a principal may perform an operation on a resource. Authentication, hiding a button or a generic middleware hook alone does not qualify."
    },
    {
      "id": "rateLimiting",
      "group": "security",
      "label": "Rate limiting",
      "definition": "A documented limiter for requests/actions with keys, time windows and rejection behavior. State storage, single-process versus distributed enforcement, and any separately installed package. Arbitrary middleware capability alone does not qualify."
    },
    {
      "id": "progressiveEnhancement",
      "group": "server",
      "label": "Progressive forms",
      "definition": "Documented form submission that reaches the server and produces useful results before JavaScript loads or when it is disabled, with optional client enhancement. SSR HTML alone and browser-only submit handlers do not qualify."
    },
    {
      "id": "optimisticUi",
      "group": "data",
      "label": "Optimistic updates",
      "definition": "A documented mutation workflow that displays an unconfirmed result immediately and reconciles it with success/failure. Pending flags alone do not qualify. State automatic versus application-owned rollback and concurrency limitations."
    },
    {
      "id": "requestCancellation",
      "group": "data",
      "label": "Stale request handling",
      "definition": "A documented data/router mechanism that suppresses stale results or cancels superseded requests. Identify which behavior is guaranteed; aborting browser work does not undo a server mutation or guarantee backend cancellation."
    },
    {
      "id": "typedLinks",
      "group": "routing",
      "label": "Typed links & parameters",
      "definition": "A route-aware API that checks destination names/paths and required route parameters before navigation. Generic language types, a string URL or runtime route matching alone do not qualify."
    },
    {
      "id": "searchParams",
      "group": "routing",
      "label": "Validated URL state",
      "definition": "A router-owned or documented schema integration that parses and validates query/search parameters into typed application state, including malformed-input behavior. Raw URLSearchParams access alone does not qualify."
    },
    {
      "id": "stateRestoration",
      "group": "routing",
      "label": "Navigation state retention",
      "definition": "A documented mechanism for retaining/restoring local UI or form state across navigation/back-forward. Identify persistent layouts, retained pages, DOM snapshots or serialization, and what resets. Browser caching alone is not a framework API."
    },
    {
      "id": "scrollRestoration",
      "group": "routing",
      "label": "Scroll restoration",
      "definition": "A router/navigation integration that restores scroll positions during history traversal. Identify window versus nested scrollports, opt-in configuration and reset controls. An imperative scrollTo helper alone does not qualify."
    },
    {
      "id": "navigationBlocking",
      "group": "routing",
      "label": "Unsaved-change guards",
      "definition": "An integrated navigation interception API that can pause/cancel an attempted route change and let the app resolve an unsaved-change prompt. Distinguish SPA navigation from browser beforeunload and its limitations."
    },
    {
      "id": "navigationAccessibility",
      "group": "accessibility",
      "label": "Accessible navigation",
      "definition": "A documented soft-navigation integration for focus management or announcing route changes to assistive technology. Name which behavior is automatic and which remains application-owned. ARIA attributes alone do not qualify; native full-document navigation is distinguished."
    },
    {
      "id": "a11yChecks",
      "group": "accessibility",
      "label": "Accessibility checks",
      "definition": "A documented compiler/linter/test integration that detects inaccessible authored UI. State static-analysis limits; no check establishes WCAG conformance, and emitting ARIA attributes alone does not qualify."
    },
    {
      "id": "lazyActivation",
      "group": "rendering",
      "label": "Deferred activation",
      "definition": "Activate an interactive SSR component/island through a documented visibility, idle, interaction or media trigger. Distinguish delaying activation from delaying the JavaScript download and describe any event replay. Lazy imports alone are not a hydration scheduler."
    },
    {
      "id": "codeSplitting",
      "group": "rendering",
      "label": "Route / island splitting",
      "definition": "An integrated build divides browser code by routes or independently activated islands so unused UI is not required in the initial bundle. Identify the splitting boundary and shared runtime; generic dynamic import syntax alone does not qualify."
    },
    {
      "id": "offline",
      "group": "deployment",
      "label": "Offline integration",
      "definition": "A documented service-worker/offline integration with build assets or cache lifecycle support. Applications must still define offline data/failure behavior; serving static files or a manifest alone is insufficient."
    },
    {
      "id": "scheduling",
      "group": "backend",
      "label": "Scheduled tasks",
      "definition": "A documented recurring-task scheduler, distinct from merely dispatching or delaying one job. Describe the external runner, overlapping tasks and multi-server coordination rather than implying exactly-once execution."
    },
    {
      "id": "notifications",
      "group": "backend",
      "label": "Multi-channel notifications",
      "definition": "An application notification API that selects and formats multiple delivery channels. Email alone or low-level WebSocket messages do not qualify; provider credentials, queues and external channels are named separately."
    },
    {
      "id": "searchIndex",
      "group": "backend",
      "label": "Search indexing",
      "definition": "A documented application/model search integration with indexing and synchronization lifecycle, distinct from issuing a SQL LIKE query. Name engines/services and any application-owned synchronization."
    },
    {
      "id": "fieldEncryption",
      "group": "database",
      "label": "Encrypted model fields",
      "definition": "A model/storage integration that transparently encrypts/decrypts configured attributes, with documented key management. A generic encryption function, password hashing or database disk encryption alone does not qualify."
    },
    {
      "id": "httpTests",
      "group": "testing",
      "label": "HTTP integration tests",
      "definition": "A documented test harness for application handlers/routes with request construction and response assertions, including session/auth context where available. Unit renderer tests and browser automation are separate; state whether a network server is required."
    }
  ],
  "supportStates": {
    "native": {
      "label": "Built-in",
      "symbol": "✓",
      "description": "Provided by the project itself."
    },
    "official": {
      "label": "Official package",
      "symbol": "+",
      "description": "Provided by a named first-party companion or adapter."
    },
    "community": {
      "label": "Third-party",
      "symbol": "+",
      "description": "Provided by a named external integration."
    },
    "partial": {
      "label": "Qualified",
      "symbol": "◐",
      "description": "A specific restriction, experimental API or application-owned recipe. Each cell names the qualification; this is not full support."
    },
    "planned": {
      "label": "Planned",
      "symbol": "○",
      "description": "Explicitly listed on the reviewed roadmap."
    },
    "unknown": {
      "label": "Not reviewed",
      "symbol": "?",
      "description": "No support claim has been verified here. This does not mean unsupported."
    },
    "undocumented": {
      "label": "Not documented",
      "symbol": "·",
      "description": "Reviewed the linked API or guide without establishing this behavior. This is not proof that an application cannot implement it."
    },
    "scope": {
      "label": "Outside scope",
      "symbol": "—",
      "description": "Outside the reviewed core API; the host application or another framework can provide it."
    }
  },
  "rows": [
    {
      "id": "askama",
      "label": "Askama",
      "kind": "Template engine",
      "logo": "logos/askama.svg",
      "color": "var(--fw-fg)",
      "scope": "Standalone templating API; adding a host framework can provide separate application features.",
      "reviewedOn": "2026-11-10",
      "updatedOn": "2026-11-11",
      "capabilities": {
        "ssr": {
          "status": "native",
          "note": "Generates HTML from a template and supplied values on the server.",
          "url": "https://askama.rs/en/stable/"
        },
        "streaming": {
          "status": "partial",
          "note": "write_into writes to an io::Write destination without requiring a final String. HTTP flushing and asynchronous boundary replacement are separate concerns.",
          "url": "https://docs.rs/askama/latest/askama/trait.Template.html",
          "label": "Writer output",
          "reviewedOn": "2026-11-10"
        },
        "suspense": {
          "status": "scope",
          "note": "The reviewed rendering API has no pending-UI/replacement protocol; the host application would need to provide one.",
          "url": "https://docs.rs/askama/latest/askama/trait.Template.html"
        },
        "client": {
          "status": "scope",
          "note": "This review covers the standalone template API. Application routing, client activation, site generation, and server-function transports belong to the host application or an additional framework.",
          "url": "https://askama.rs/en/stable/"
        },
        "ssg": {
          "status": "scope",
          "note": "This review covers the standalone template API. Application routing, client activation, site generation, and server-function transports belong to the host application or an additional framework.",
          "url": "https://askama.rs/en/stable/"
        },
        "csr": {
          "status": "scope",
          "note": "This review covers the standalone template API. Application routing, client activation, site generation, and server-function transports belong to the host application or an additional framework.",
          "url": "https://askama.rs/en/stable/"
        },
        "serverOnly": {
          "status": "native",
          "note": "The server evaluates templates and sends rendered output rather than the renderer implementation. This is not React Server Components.",
          "url": "https://docs.rs/askama/latest/askama/trait.Template.html",
          "label": "Server templates"
        },
        "partialRendering": {
          "status": "scope",
          "note": "This review covers the standalone template API. Application routing, client activation, site generation, and server-function transports belong to the host application or an additional framework.",
          "url": "https://askama.rs/en/stable/"
        },
        "routing": {
          "status": "scope",
          "note": "This review covers the standalone template API. Application routing, client activation, site generation, and server-function transports belong to the host application or an additional framework.",
          "url": "https://askama.rs/en/stable/"
        },
        "layouts": {
          "status": "scope",
          "note": "This review covers the standalone template API. Application routing, client activation, site generation, and server-function transports belong to the host application or an additional framework.",
          "url": "https://askama.rs/en/stable/"
        },
        "dynamicRoutes": {
          "status": "scope",
          "note": "This review covers the standalone template API. Application routing, client activation, site generation, and server-function transports belong to the host application or an additional framework.",
          "url": "https://askama.rs/en/stable/"
        },
        "parallelRoutes": {
          "status": "scope",
          "note": "This review covers the standalone template API. Application routing, client activation, site generation, and server-function transports belong to the host application or an additional framework.",
          "url": "https://askama.rs/en/stable/"
        },
        "interceptedRoutes": {
          "status": "scope",
          "note": "This review covers the standalone template API. Application routing, client activation, site generation, and server-function transports belong to the host application or an additional framework.",
          "url": "https://askama.rs/en/stable/"
        },
        "prefetch": {
          "status": "scope",
          "note": "This review covers the standalone template API. Application routing, client activation, site generation, and server-function transports belong to the host application or an additional framework.",
          "url": "https://askama.rs/en/stable/"
        },
        "softNavigation": {
          "status": "scope",
          "note": "This standalone template/runtime renders content; navigation and page-transition lifecycle belong to a browser router or host application. Compatibility with a generic JavaScript library is not a built-in integration.",
          "url": "https://askama.rs/en/stable/",
          "reviewedOn": "2026-11-11"
        },
        "viewTransitions": {
          "status": "scope",
          "note": "This standalone template/runtime renders content; navigation and page-transition lifecycle belong to a browser router or host application. Compatibility with a generic JavaScript library is not a built-in integration.",
          "url": "https://askama.rs/en/stable/",
          "reviewedOn": "2026-11-11"
        },
        "redirects": {
          "status": "scope",
          "note": "This review covers the standalone template API. Application routing, client activation, site generation, and server-function transports belong to the host application or an additional framework.",
          "url": "https://askama.rs/en/stable/"
        },
        "serverData": {
          "status": "scope",
          "note": "This API consumes supplied template values; application data loading happens outside it.",
          "url": "https://docs.rs/askama/latest/askama/trait.Template.html"
        },
        "clientData": {
          "status": "scope",
          "note": "Browser query lifecycle/cache APIs belong to a client library or application framework.",
          "url": "https://docs.rs/askama/latest/askama/trait.Template.html"
        },
        "requestDedupe": {
          "status": "scope",
          "note": "Template/compilation caching is distinct from request-scoped application data deduplication.",
          "url": "https://docs.rs/askama/latest/askama/trait.Template.html"
        },
        "persistentCache": {
          "status": "scope",
          "note": "Retaining application data or rendered pages across requests belongs to the host cache.",
          "url": "https://docs.rs/askama/latest/askama/trait.Template.html"
        },
        "invalidation": {
          "status": "scope",
          "note": "Application data/page invalidation belongs to the host; recompiling a template is a different cache boundary.",
          "url": "https://docs.rs/askama/latest/askama/trait.Template.html"
        },
        "isr": {
          "status": "scope",
          "note": "Regenerating deployed pages requires a host page cache/export pipeline.",
          "url": "https://docs.rs/askama/latest/askama/trait.Template.html"
        },
        "apiRoutes": {
          "status": "scope",
          "note": "This review covers the standalone template API. Application routing, client activation, site generation, and server-function transports belong to the host application or an additional framework.",
          "url": "https://askama.rs/en/stable/"
        },
        "actions": {
          "status": "scope",
          "note": "This review covers the standalone template API. Application routing, client activation, site generation, and server-function transports belong to the host application or an additional framework.",
          "url": "https://askama.rs/en/stable/"
        },
        "forms": {
          "status": "scope",
          "note": "Templates can emit form markup; submission, validation, and feedback policy belong to the host application.",
          "url": "https://docs.rs/askama/latest/askama/trait.Template.html"
        },
        "middleware": {
          "status": "scope",
          "note": "This review covers the standalone template API. Application routing, client activation, site generation, and server-function transports belong to the host application or an additional framework.",
          "url": "https://askama.rs/en/stable/"
        },
        "cookies": {
          "status": "scope",
          "note": "This review covers the standalone template API. Application routing, client activation, site generation, and server-function transports belong to the host application or an additional framework.",
          "url": "https://askama.rs/en/stable/"
        },
        "cssModules": {
          "status": "scope",
          "note": "CSS class-name compilation is a separate asset-build concern.",
          "url": "https://docs.rs/askama/latest/askama/trait.Template.html"
        },
        "scopedCss": {
          "status": "scope",
          "note": "The renderer emits authored classes/styles; component-local CSS selector rewriting is a separate build concern.",
          "url": "https://docs.rs/askama/latest/askama/trait.Template.html"
        },
        "tailwind": {
          "status": "scope",
          "note": "Tailwind can process authored templates through application configuration; the template renderer does not own that build.",
          "url": "https://docs.rs/askama/latest/askama/trait.Template.html"
        },
        "cssInJs": {
          "status": "scope",
          "note": "Runtime CSS-in-JS compilation is outside this server template API.",
          "url": "https://docs.rs/askama/latest/askama/trait.Template.html"
        },
        "images": {
          "status": "scope",
          "note": "Templates emit image markup; image resizing/conversion requires a separate asset pipeline.",
          "url": "https://docs.rs/askama/latest/askama/trait.Template.html"
        },
        "fonts": {
          "status": "scope",
          "note": "Font downloading, subsetting, and fallback optimization require a separate asset pipeline.",
          "url": "https://docs.rs/askama/latest/askama/trait.Template.html"
        },
        "scripts": {
          "status": "scope",
          "note": "Templates emit script markup; script scheduling and lifecycle policy belong to the host application.",
          "url": "https://docs.rs/askama/latest/askama/trait.Template.html"
        },
        "staticAssets": {
          "status": "scope",
          "note": "Serving files and assigning cache headers belong to the host web server.",
          "url": "https://docs.rs/askama/latest/askama/trait.Template.html"
        },
        "metadata": {
          "status": "scope",
          "note": "Head tags can be templated directly; there is no structured metadata registry in the reviewed standalone API.",
          "url": "https://docs.rs/askama/latest/askama/trait.Template.html"
        },
        "dynamicMetadata": {
          "status": "scope",
          "note": "Supplied values can populate head tags; request data loading and metadata composition remain application-owned.",
          "url": "https://docs.rs/askama/latest/askama/trait.Template.html"
        },
        "metadataInheritance": {
          "status": "scope",
          "note": "Template inheritance/content composition is separate from a metadata-field inheritance contract.",
          "url": "https://docs.rs/askama/latest/askama/trait.Template.html"
        },
        "metadataOverrides": {
          "status": "scope",
          "note": "A host head component or template block can override markup; structured field merge/clear rules are application-owned.",
          "url": "https://docs.rs/askama/latest/askama/trait.Template.html"
        },
        "titleTemplates": {
          "status": "scope",
          "note": "Titles can use template expressions; ancestor metadata/title-template policy belongs to the application.",
          "url": "https://docs.rs/askama/latest/askama/trait.Template.html"
        },
        "socialImages": {
          "status": "scope",
          "note": "Generating social-preview image bytes needs a separate image renderer/service.",
          "url": "https://docs.rs/askama/latest/askama/trait.Template.html"
        },
        "sitemaps": {
          "status": "scope",
          "note": "XML can be templated, but route enumeration and a sitemap generator belong to the host.",
          "url": "https://docs.rs/askama/latest/askama/trait.Template.html"
        },
        "robots": {
          "status": "scope",
          "note": "Text can be templated, but crawler-document publishing/configuration belongs to the host.",
          "url": "https://docs.rs/askama/latest/askama/trait.Template.html"
        },
        "markdown": {
          "status": "scope",
          "note": "This is text/HTML templating; Markdown parsing and content-page integration require another tool.",
          "url": "https://docs.rs/askama/latest/askama/trait.Template.html"
        },
        "collections": {
          "status": "scope",
          "note": "The host loads and validates structured content; the template API renders supplied values.",
          "url": "https://docs.rs/askama/latest/askama/trait.Template.html"
        },
        "draftMode": {
          "status": "scope",
          "note": "Editorial preview authorization and published-cache bypass belong to the host application.",
          "url": "https://docs.rs/askama/latest/askama/trait.Template.html"
        },
        "translations": {
          "status": "scope",
          "note": "Applications can supply translated strings/helpers; the reviewed renderer does not supply message catalogs.",
          "url": "https://docs.rs/askama/latest/askama/trait.Template.html"
        },
        "localeRouting": {
          "status": "scope",
          "note": "This review covers the standalone template API. Application routing, client activation, site generation, and server-function transports belong to the host application or an additional framework.",
          "url": "https://askama.rs/en/stable/"
        },
        "localeFormatting": {
          "status": "scope",
          "note": "The host supplies locale-aware values or formatter helpers.",
          "url": "https://docs.rs/askama/latest/askama/trait.Template.html"
        },
        "auth": {
          "status": "scope",
          "note": "Identity, login, and authorization are responsibilities of the host application.",
          "url": "https://docs.rs/askama/latest/askama/trait.Template.html"
        },
        "csp": {
          "status": "scope",
          "note": "The host configures HTTP CSP headers and any nonce values passed into templates.",
          "url": "https://docs.rs/askama/latest/askama/trait.Template.html"
        },
        "cspNonce": {
          "status": "scope",
          "note": "The HTTP application must generate a fresh nonce, set its policy and pass the value to authored tags. A template accepting attributes does not coordinate nonces for an application.",
          "url": "https://docs.rs/askama/latest/askama/trait.Template.html",
          "reviewedOn": "2026-11-11"
        },
        "csrf": {
          "status": "scope",
          "note": "HTML escaping does not establish CSRF protection; the host must protect mutation endpoints.",
          "url": "https://docs.rs/askama/latest/askama/trait.Template.html"
        },
        "environment": {
          "status": "scope",
          "note": "Server/client secret configuration belongs to the host application, not template evaluation.",
          "url": "https://docs.rs/askama/latest/askama/trait.Template.html"
        },
        "types": {
          "status": "native",
          "note": "Template code is generated into the typed Rust context struct and checked by the Rust compiler.",
          "url": "https://askama.rs/en/stable/creating_templates.html",
          "label": "Rust templates"
        },
        "hmr": {
          "status": "scope",
          "note": "Application rebuild/browser refresh orchestration is outside the renderer API.",
          "url": "https://docs.rs/askama/latest/askama/trait.Template.html"
        },
        "cli": {
          "status": "scope",
          "note": "This renderer integrates with its language/build toolchain rather than supplying an application CLI.",
          "url": "https://docs.rs/askama/latest/askama/trait.Template.html"
        },
        "bundleAnalysis": {
          "status": "scope",
          "note": "Production browser/server bundle inspection belongs to the host build toolchain.",
          "url": "https://docs.rs/askama/latest/askama/trait.Template.html"
        },
        "unitTests": {
          "status": "scope",
          "note": "Applications test rendered output with their language test runner; no application test framework is supplied here.",
          "url": "https://docs.rs/askama/latest/askama/trait.Template.html"
        },
        "e2eTests": {
          "status": "scope",
          "note": "Browser tests run against a host application, not a standalone template.",
          "url": "https://docs.rs/askama/latest/askama/trait.Template.html"
        },
        "observability": {
          "status": "scope",
          "note": "Production request traces/metrics/logging belong to the host application.",
          "url": "https://docs.rs/askama/latest/askama/trait.Template.html"
        },
        "errorHandling": {
          "status": "scope",
          "note": "Template errors are returned to the caller; application fallback/recovery UI is host-owned.",
          "url": "https://docs.rs/askama/latest/askama/trait.Template.html"
        },
        "serverHosting": {
          "status": "scope",
          "note": "This review covers the standalone template API. Application routing, client activation, site generation, and server-function transports belong to the host application or an additional framework.",
          "url": "https://askama.rs/en/stable/"
        },
        "staticHosting": {
          "status": "scope",
          "note": "This review covers the standalone template API. Application routing, client activation, site generation, and server-function transports belong to the host application or an additional framework.",
          "url": "https://askama.rs/en/stable/"
        },
        "containers": {
          "status": "scope",
          "note": "This review covers the standalone template API. Application routing, client activation, site generation, and server-function transports belong to the host application or an additional framework.",
          "url": "https://askama.rs/en/stable/"
        },
        "edgeHosting": {
          "status": "scope",
          "note": "This review covers the standalone template API. Application routing, client activation, site generation, and server-function transports belong to the host application or an additional framework.",
          "url": "https://askama.rs/en/stable/"
        },
        "orm": {
          "status": "scope",
          "note": "ORM / query builder belongs to a server framework or external service, outside this standalone rendering API. This is not a missing template-rendering capability.",
          "url": "https://askama.readthedocs.io"
        },
        "migrations": {
          "status": "scope",
          "note": "Schema migrations belongs to a server framework or external service, outside this standalone rendering API. This is not a missing template-rendering capability.",
          "url": "https://askama.readthedocs.io"
        },
        "transactions": {
          "status": "scope",
          "note": "Transactions belongs to a server framework or external service, outside this standalone rendering API. This is not a missing template-rendering capability.",
          "url": "https://askama.readthedocs.io"
        },
        "jobs": {
          "status": "scope",
          "note": "Background jobs belongs to a server framework or external service, outside this standalone rendering API. This is not a missing template-rendering capability.",
          "url": "https://askama.readthedocs.io"
        },
        "mail": {
          "status": "scope",
          "note": "Email belongs to a server framework or external service, outside this standalone rendering API. This is not a missing template-rendering capability.",
          "url": "https://askama.readthedocs.io"
        },
        "uploads": {
          "status": "scope",
          "note": "File uploads & storage belongs to a server framework or external service, outside this standalone rendering API. This is not a missing template-rendering capability.",
          "url": "https://askama.readthedocs.io"
        },
        "realtime": {
          "status": "scope",
          "note": "Real-time delivery belongs to a server framework or external service, outside this standalone rendering API. This is not a missing template-rendering capability.",
          "url": "https://askama.readthedocs.io"
        },
        "xssEscaping": {
          "status": "native",
          "note": "HTML templates select HTML escaping by extension/configuration. Safe filters bypass escaping; this does not establish JavaScript/CSS context encoding or an HTML sanitizer.",
          "url": "https://askama.rs/en/stable/configuration.html#escapers",
          "reviewedOn": "2026-11-11"
        },
        "htmlSanitization": {
          "status": "undocumented",
          "note": "The linked security API review does not establish the specific html sanitization contract defined here. This is a bounded documentation finding, not proof of absence; generic hooks or application-authored code are not counted as an owned implementation.",
          "url": "https://docs.rs/askama/latest/askama/trait.Template.html",
          "reviewedOn": "2026-11-11"
        },
        "authorization": {
          "status": "scope",
          "note": "Authorization policies requires a host application or specialized integration beyond the reviewed template/runtime API. Emitting markup or using arbitrary host-language libraries does not establish this application-level contract.",
          "url": "https://docs.rs/askama/latest/askama/trait.Template.html",
          "reviewedOn": "2026-11-11"
        },
        "rateLimiting": {
          "status": "scope",
          "note": "Rate limiting requires a host application or specialized integration beyond the reviewed template/runtime API. Emitting markup or using arbitrary host-language libraries does not establish this application-level contract.",
          "url": "https://docs.rs/askama/latest/askama/trait.Template.html",
          "reviewedOn": "2026-11-11"
        },
        "progressiveEnhancement": {
          "status": "scope",
          "note": "Progressive forms requires a host application or specialized integration beyond the reviewed template/runtime API. Emitting markup or using arbitrary host-language libraries does not establish this application-level contract.",
          "url": "https://docs.rs/askama/latest/askama/trait.Template.html",
          "reviewedOn": "2026-11-11"
        },
        "optimisticUi": {
          "status": "scope",
          "note": "Optimistic updates requires a host application or specialized integration beyond the reviewed template/runtime API. Emitting markup or using arbitrary host-language libraries does not establish this application-level contract.",
          "url": "https://docs.rs/askama/latest/askama/trait.Template.html",
          "reviewedOn": "2026-11-11"
        },
        "requestCancellation": {
          "status": "scope",
          "note": "Stale request handling requires a host application or specialized integration beyond the reviewed template/runtime API. Emitting markup or using arbitrary host-language libraries does not establish this application-level contract.",
          "url": "https://docs.rs/askama/latest/askama/trait.Template.html",
          "reviewedOn": "2026-11-11"
        },
        "typedLinks": {
          "status": "scope",
          "note": "Typed links & parameters requires a host application or specialized integration beyond the reviewed template/runtime API. Emitting markup or using arbitrary host-language libraries does not establish this application-level contract.",
          "url": "https://askama.rs/en/stable/",
          "reviewedOn": "2026-11-11"
        },
        "searchParams": {
          "status": "scope",
          "note": "Validated URL state requires a host application or specialized integration beyond the reviewed template/runtime API. Emitting markup or using arbitrary host-language libraries does not establish this application-level contract.",
          "url": "https://askama.rs/en/stable/",
          "reviewedOn": "2026-11-11"
        },
        "stateRestoration": {
          "status": "scope",
          "note": "Navigation state retention requires a host application or specialized integration beyond the reviewed template/runtime API. Emitting markup or using arbitrary host-language libraries does not establish this application-level contract.",
          "url": "https://askama.rs/en/stable/",
          "reviewedOn": "2026-11-11"
        },
        "scrollRestoration": {
          "status": "scope",
          "note": "Scroll restoration requires a host application or specialized integration beyond the reviewed template/runtime API. Emitting markup or using arbitrary host-language libraries does not establish this application-level contract.",
          "url": "https://askama.rs/en/stable/",
          "reviewedOn": "2026-11-11"
        },
        "navigationBlocking": {
          "status": "scope",
          "note": "Unsaved-change guards requires a host application or specialized integration beyond the reviewed template/runtime API. Emitting markup or using arbitrary host-language libraries does not establish this application-level contract.",
          "url": "https://askama.rs/en/stable/",
          "reviewedOn": "2026-11-11"
        },
        "navigationAccessibility": {
          "status": "scope",
          "note": "Accessible navigation requires a host application or specialized integration beyond the reviewed template/runtime API. Emitting markup or using arbitrary host-language libraries does not establish this application-level contract.",
          "url": "https://askama.rs/en/stable/",
          "reviewedOn": "2026-11-11"
        },
        "a11yChecks": {
          "status": "scope",
          "note": "Accessibility checks requires a host application or specialized integration beyond the reviewed template/runtime API. Emitting markup or using arbitrary host-language libraries does not establish this application-level contract.",
          "url": "https://askama.rs/en/stable/",
          "reviewedOn": "2026-11-11"
        },
        "lazyActivation": {
          "status": "scope",
          "note": "Deferred activation requires a host application or specialized integration beyond the reviewed template/runtime API. Emitting markup or using arbitrary host-language libraries does not establish this application-level contract.",
          "url": "https://askama.rs/en/stable/",
          "reviewedOn": "2026-11-11"
        },
        "codeSplitting": {
          "status": "scope",
          "note": "Route / island splitting requires a host application or specialized integration beyond the reviewed template/runtime API. Emitting markup or using arbitrary host-language libraries does not establish this application-level contract.",
          "url": "https://askama.rs/en/stable/",
          "reviewedOn": "2026-11-11"
        },
        "offline": {
          "status": "scope",
          "note": "Offline integration requires a host application or specialized integration beyond the reviewed template/runtime API. Emitting markup or using arbitrary host-language libraries does not establish this application-level contract.",
          "url": "https://askama.rs/en/stable/",
          "reviewedOn": "2026-11-11"
        },
        "scheduling": {
          "status": "scope",
          "note": "Scheduled tasks requires a host application or specialized integration beyond the reviewed template/runtime API. Emitting markup or using arbitrary host-language libraries does not establish this application-level contract.",
          "url": "https://askama.readthedocs.io",
          "reviewedOn": "2026-11-11"
        },
        "notifications": {
          "status": "scope",
          "note": "Multi-channel notifications requires a host application or specialized integration beyond the reviewed template/runtime API. Emitting markup or using arbitrary host-language libraries does not establish this application-level contract.",
          "url": "https://askama.readthedocs.io",
          "reviewedOn": "2026-11-11"
        },
        "searchIndex": {
          "status": "scope",
          "note": "Search indexing requires a host application or specialized integration beyond the reviewed template/runtime API. Emitting markup or using arbitrary host-language libraries does not establish this application-level contract.",
          "url": "https://askama.readthedocs.io",
          "reviewedOn": "2026-11-11"
        },
        "fieldEncryption": {
          "status": "scope",
          "note": "Encrypted model fields requires a host application or specialized integration beyond the reviewed template/runtime API. Emitting markup or using arbitrary host-language libraries does not establish this application-level contract.",
          "url": "https://askama.readthedocs.io",
          "reviewedOn": "2026-11-11"
        },
        "httpTests": {
          "status": "scope",
          "note": "HTTP integration tests requires a host application or specialized integration beyond the reviewed template/runtime API. Emitting markup or using arbitrary host-language libraries does not establish this application-level contract.",
          "url": "https://docs.rs/askama/latest/askama/trait.Template.html",
          "reviewedOn": "2026-11-11"
        }
      }
    },
    {
      "id": "astro",
      "label": "Astro",
      "kind": "Application framework",
      "logo": "logos/astro.svg",
      "color": "#f041ff",
      "scope": "Astro documentation; official UI integrations named where required.",
      "reviewedOn": "2026-11-10",
      "updatedOn": "2026-11-11",
      "capabilities": {
        "ssr": {
          "status": "official",
          "note": "On-demand rendering uses an official deployment adapter, such as @astrojs/node.",
          "url": "https://docs.astro.build/en/guides/on-demand-rendering/",
          "label": "SSR adapter"
        },
        "streaming": {
          "status": "native",
          "note": "On-demand Astro pages stream HTML; deployed adapters and proxies must preserve streaming.",
          "url": "https://docs.astro.build/en/guides/routing/"
        },
        "suspense": {
          "status": "partial",
          "note": "server:defer renders fallback UI, then fetches each server island from a separate endpoint. This is not a React-style boundary inside the original HTML stream.",
          "url": "https://docs.astro.build/en/guides/server-islands/",
          "label": "Server islands",
          "reviewedOn": "2026-11-10"
        },
        "client": {
          "status": "official",
          "note": "client:* directives activate islands using UI integrations such as @astrojs/react and @astrojs/vue.",
          "url": "https://docs.astro.build/en/guides/framework-components/",
          "label": "UI islands"
        },
        "ssg": {
          "status": "native",
          "note": "Pages are prerendered at build time by default; server mode can opt individual routes into prerendering.",
          "url": "https://docs.astro.build/en/reference/routing-reference/"
        },
        "csr": {
          "status": "official",
          "note": "client:only skips server rendering for a supported UI framework component. Astro components themselves have no client rendering runtime.",
          "url": "https://docs.astro.build/en/guides/framework-components/",
          "label": "client:only / UI integration"
        },
        "serverOnly": {
          "status": "native",
          "note": "Astro components execute on the server/build and send no component runtime by default. UI islands use separate integrations.",
          "url": "https://docs.astro.build/en/basics/astro-components/",
          "label": "Astro components"
        },
        "partialRendering": {
          "status": "partial",
          "note": "server:defer combines a prerendered page with separately fetched server islands, not one request-time HTML stream.",
          "url": "https://docs.astro.build/en/guides/server-islands/",
          "label": "Separate island requests",
          "reviewedOn": "2026-11-10"
        },
        "routing": {
          "status": "native",
          "note": "Files under src/pages define page and endpoint routes.",
          "url": "https://docs.astro.build/en/guides/routing/"
        },
        "layouts": {
          "status": "native",
          "note": "Layouts are ordinary Astro components explicitly composed through slots and props; no automatic route-layout inheritance is implied.",
          "url": "https://docs.astro.build/en/basics/layouts/"
        },
        "dynamicRoutes": {
          "status": "native",
          "note": "Bracketed page filenames accept parameters; static routes enumerate paths and on-demand routes resolve at request time.",
          "url": "https://docs.astro.build/en/guides/routing/"
        },
        "parallelRoutes": {
          "status": "undocumented",
          "note": "The reviewed page/endpoint router has no documented independently navigable named-slot API comparable to parallel routes.",
          "url": "https://docs.astro.build/en/guides/routing/"
        },
        "interceptedRoutes": {
          "status": "undocumented",
          "note": "ClientRouter supports transitions/navigation, but the reviewed guide does not define a routed-modal interception/direct-link contract.",
          "url": "https://docs.astro.build/en/guides/view-transitions/"
        },
        "prefetch": {
          "status": "native",
          "note": "Optional prefetch supports hover, tap, viewport, or load strategies; the client router also coordinates navigation.",
          "url": "https://docs.astro.build/en/guides/prefetch/"
        },
        "softNavigation": {
          "status": "native",
          "note": "Opt-in ClientRouter intercepts internal navigation, swaps HTML and updates history. Persistent elements and lifecycle events are supported; scripts and islands must follow the documented navigation lifecycle.",
          "url": "https://docs.astro.build/en/guides/view-transitions/",
          "reviewedOn": "2026-11-11",
          "label": "ClientRouter"
        },
        "viewTransitions": {
          "status": "native",
          "note": "ClientRouter and transition directives coordinate page/shared-element animations and persistence. Browser support, fallback behavior and reduced-motion preferences affect the result; the feature is opt-in.",
          "url": "https://docs.astro.build/en/guides/view-transitions/",
          "reviewedOn": "2026-11-11",
          "label": "astro:transitions"
        },
        "redirects": {
          "status": "native",
          "note": "Astro.redirect and configured redirects are supported, with output dependent on static hosting or adapter capabilities.",
          "url": "https://docs.astro.build/en/guides/routing/"
        },
        "serverData": {
          "status": "native",
          "note": "Component scripts await fetch at build time or on demand; browser fetching uses client scripts or UI libraries.",
          "url": "https://docs.astro.build/en/guides/data-fetching/"
        },
        "clientData": {
          "status": "undocumented",
          "note": "Client scripts or UI-framework islands can fetch again in the browser; Astro does not document a built-in browser query-cache API here.",
          "url": "https://docs.astro.build/en/guides/data-fetching/",
          "label": "UI island / app code"
        },
        "requestDedupe": {
          "status": "undocumented",
          "note": "The reviewed fetch/data-loading guide does not establish automatic equivalently keyed request deduplication. Route caching is a separate boundary.",
          "url": "https://docs.astro.build/en/guides/data-fetching/"
        },
        "persistentCache": {
          "status": "native",
          "note": "Astro 7 route caching retains on-demand responses using an explicit provider; built-in memory storage and adapter-specific providers are documented.",
          "url": "https://docs.astro.build/en/guides/caching/",
          "label": "Astro 7 route cache"
        },
        "invalidation": {
          "status": "native",
          "note": "Astro.cache.invalidate targets paths or tags; provider capabilities determine the runtime purge implementation.",
          "url": "https://docs.astro.build/en/guides/caching/",
          "label": "Path / tag invalidation"
        },
        "isr": {
          "status": "native",
          "note": "The documented route cache stores on-demand HTML with maxAge/SWR and explicit invalidation. It requires a compatible server adapter/cache provider; a static-only export cannot regenerate pages on request.",
          "url": "https://docs.astro.build/en/guides/caching/",
          "label": "Route-cache SWR"
        },
        "apiRoutes": {
          "status": "native",
          "note": "Endpoints produce arbitrary responses; on-demand server endpoints support HTTP methods.",
          "url": "https://docs.astro.build/en/guides/endpoints/"
        },
        "actions": {
          "status": "native",
          "note": "Astro Actions expose typed server handlers to browser code and HTML forms.",
          "url": "https://docs.astro.build/en/guides/actions/",
          "label": "Astro Actions"
        },
        "forms": {
          "status": "native",
          "note": "Actions parse and validate form/JSON input with schemas and expose typed browser callers.",
          "url": "https://docs.astro.build/en/guides/actions/",
          "reviewedOn": "2026-11-11",
          "assessment": {
            "summary": "Form transport, validation, pending feedback and optimistic state are separate behaviors; the progressive-forms and optimistic-updates rows review the latter contracts explicitly.",
            "strengths": [
              "Actions parse and validate form/JSON input with schemas and expose typed browser callers."
            ],
            "tradeoffs": [
              "Do not infer a no-JavaScript submission path, automatic validation, accessible field errors or rollback merely from the ability to receive FormData."
            ]
          }
        },
        "middleware": {
          "status": "native",
          "note": "Middleware wraps page/endpoint rendering and shares request data through locals.",
          "url": "https://docs.astro.build/en/guides/middleware/"
        },
        "cookies": {
          "status": "native",
          "note": "Server-side sessions store data between on-demand requests; storage and adapter configuration affect deployment.",
          "url": "https://docs.astro.build/en/guides/sessions/",
          "label": "Sessions"
        },
        "cssModules": {
          "status": "native",
          "note": "Vite-backed CSS Module imports provide generated local class names.",
          "url": "https://docs.astro.build/en/guides/styling/"
        },
        "scopedCss": {
          "status": "native",
          "note": "Component style tags are scoped by default; global selectors/styles can opt out.",
          "url": "https://docs.astro.build/en/guides/styling/"
        },
        "tailwind": {
          "status": "community",
          "note": "The documented Tailwind setup uses its external Vite plugin.",
          "url": "https://docs.astro.build/en/guides/styling/",
          "label": "Tailwind / Vite"
        },
        "cssInJs": {
          "status": "undocumented",
          "note": "The reviewed styling guide establishes Astro scoped CSS and UI-framework CSS processing, but no Astro-owned CSS-in-JS runtime/SSR registry.",
          "url": "https://docs.astro.build/en/guides/styling/"
        },
        "images": {
          "status": "native",
          "note": "Image, Picture, and image generation APIs transform sources; responsive resizing and services are configurable.",
          "url": "https://docs.astro.build/en/guides/images/"
        },
        "fonts": {
          "status": "native",
          "note": "A typed font API supports local/provider sources, preload links, optimized fallbacks, and generated font assets.",
          "url": "https://docs.astro.build/en/guides/fonts/"
        },
        "scripts": {
          "status": "partial",
          "note": "Component scripts are bundled/deduplicated or inlined. A next/script-style strategy scheduler is not established here.",
          "url": "https://docs.astro.build/en/guides/client-side-scripts/",
          "label": "Bundled scripts",
          "reviewedOn": "2026-11-10"
        },
        "staticAssets": {
          "status": "native",
          "note": "Public files are copied without transformation; imported source images can go through the image pipeline.",
          "url": "https://docs.astro.build/en/guides/images/"
        },
        "metadata": {
          "status": "partial",
          "note": "The guide composes an application-owned BaseHead component and passes props. This is not a structured, automatically merged metadata registry.",
          "url": "https://docs.astro.build/en/basics/layouts/",
          "label": "Application-owned pattern",
          "assessment": {
            "label": "Application-owned pattern",
            "summary": "Flexible head composition through normal components and props; the application defines its metadata contract.",
            "strengths": [
              "A shared head component can be reused across layouts and receive typed application props."
            ],
            "tradeoffs": [
              "The reviewed layout guide does not establish automatic metadata-object inheritance, deduplication, or child-override rules.",
              "Additional SEO behavior must be implemented or supplied by an integration."
            ]
          },
          "reviewedOn": "2026-11-10"
        },
        "dynamicMetadata": {
          "status": "native",
          "note": "Pages can pass data into a shared head/layout component. The application owns the metadata composition contract.",
          "url": "https://docs.astro.build/en/basics/layouts/",
          "label": "App-owned composition"
        },
        "metadataInheritance": {
          "status": "undocumented",
          "note": "Layouts compose explicit props and slots. The reviewed layout API does not define automatic metadata-field inheritance.",
          "url": "https://docs.astro.build/en/basics/layouts/"
        },
        "metadataOverrides": {
          "status": "undocumented",
          "note": "A reusable head component can implement custom overrides; no standard metadata-object merge/clear contract is documented here.",
          "url": "https://docs.astro.build/en/basics/layouts/"
        },
        "titleTemplates": {
          "status": "undocumented",
          "note": "Applications can format a title prop, but the reviewed layout API has no dedicated ancestor title-template/absolute-title API.",
          "url": "https://docs.astro.build/en/basics/layouts/"
        },
        "socialImages": {
          "status": "community",
          "note": "astro-og-canvas generates Open Graph images from page data through an Astro endpoint; it is a separate integration.",
          "url": "https://github.com/delucis/astro-og-canvas/tree/main/packages/astro-og-canvas",
          "label": "astro-og-canvas"
        },
        "sitemaps": {
          "status": "official",
          "note": "@astrojs/sitemap generates sitemaps from static routes, with configuration for extra pages; server-only dynamic URLs need explicit inclusion.",
          "url": "https://docs.astro.build/en/guides/integrations-guide/sitemap/",
          "label": "@astrojs/sitemap"
        },
        "robots": {
          "status": "native",
          "note": "Publish an application-authored robots.txt from public or an endpoint. A typed crawler-directive generator is not established.",
          "url": "https://docs.astro.build/en/basics/project-structure/",
          "label": "Public file / endpoint"
        },
        "markdown": {
          "status": "native",
          "note": "Markdown includes frontmatter and component rendering; MDX requires the separate official integration.",
          "url": "https://docs.astro.build/en/guides/markdown-content/",
          "label": "Markdown; MDX package"
        },
        "collections": {
          "status": "native",
          "note": "Typed collections validate and query local/remote content through loaders and schemas.",
          "url": "https://docs.astro.build/en/guides/content-collections/"
        },
        "draftMode": {
          "status": "partial",
          "note": "Live collections are documented for immediate CMS draft previews. Preview authentication and cache bypass policy remain application/CMS-owned.",
          "url": "https://docs.astro.build/en/guides/content-collections/",
          "label": "Live-collection workflow",
          "reviewedOn": "2026-11-10"
        },
        "translations": {
          "status": "partial",
          "note": "The documented recipe uses application-owned translation dictionaries. Astro's i18n routing is separate from message translation.",
          "url": "https://docs.astro.build/en/recipes/i18n/",
          "label": "Dictionary recipe",
          "reviewedOn": "2026-11-10"
        },
        "localeRouting": {
          "status": "native",
          "note": "Locale configuration, URL helpers, preferred-language detection, and fallback routing; domain routing has prerendering restrictions.",
          "url": "https://docs.astro.build/en/guides/internationalization/"
        },
        "localeFormatting": {
          "status": "undocumented",
          "note": "Astro’s reviewed i18n API manages locales/URLs; a locale-aware number/date formatting API is not documented.",
          "url": "https://docs.astro.build/en/guides/internationalization/"
        },
        "auth": {
          "status": "community",
          "note": "The guide provides Astro integrations for services/libraries including Better Auth and Clerk; identity management is external.",
          "url": "https://docs.astro.build/en/guides/authentication/",
          "label": "Better Auth / Clerk"
        },
        "csp": {
          "status": "partial",
          "note": "Astro 6+ can emit a CSP meta policy with processed script/style hashes and runtime customization. This differs from a complete application-authored HTTP header policy.",
          "url": "https://docs.astro.build/en/reference/configuration-reference/#securitycsp",
          "label": "Meta CSP / hashes",
          "reviewedOn": "2026-11-10"
        },
        "cspNonce": {
          "status": "undocumented",
          "note": "Astro's reviewed CSP integration coordinates script/style hashes in a meta policy. It does not establish a per-response nonce pipeline for generated scripts; the hash-based CSP capability is recorded in its own row.",
          "url": "https://docs.astro.build/en/reference/configuration-reference/#securitycsp",
          "reviewedOn": "2026-11-11",
          "label": "Hash-based CSP instead"
        },
        "csrf": {
          "status": "native",
          "note": "Default origin/site checks protect on-demand unsafe requests with the documented form/simple content types. This is not a universal CSRF-token service.",
          "url": "https://docs.astro.build/en/reference/configuration-reference/#securitycheckorigin",
          "label": "Origin/site checks"
        },
        "environment": {
          "status": "native",
          "note": "astro:env validates a schema and separates public/client values from server secrets.",
          "url": "https://docs.astro.build/en/reference/modules/astro-env/"
        },
        "types": {
          "status": "official",
          "note": "TypeScript authoring is supported; astro check plus its official checker validates Astro/TS sources. Building alone does not perform the same checks.",
          "url": "https://docs.astro.build/en/guides/typescript/",
          "label": "astro check"
        },
        "hmr": {
          "status": "native",
          "note": "The development server updates changed source/assets through Vite; framework-island state behavior depends on its integration.",
          "url": "https://docs.astro.build/en/reference/cli-reference/#astro-dev",
          "label": "Vite development"
        },
        "cli": {
          "status": "native",
          "note": "Astro’s CLI supplies dev, build, preview, check, and project tooling commands.",
          "url": "https://docs.astro.build/en/reference/cli-reference/"
        },
        "bundleAnalysis": {
          "status": "community",
          "note": "The official recipe adds rollup-plugin-visualizer to inspect module sizes and dependency composition.",
          "url": "https://docs.astro.build/en/recipes/analyze-bundle-size/",
          "label": "rollup-plugin-visualizer"
        },
        "unitTests": {
          "status": "community",
          "note": "The guide integrates external runners and component-testing tools.",
          "url": "https://docs.astro.build/en/guides/testing/",
          "label": "Vitest / test libraries"
        },
        "e2eTests": {
          "status": "community",
          "note": "Browser testing uses external Playwright or Cypress integrations.",
          "url": "https://docs.astro.build/en/guides/testing/",
          "label": "Playwright / Cypress"
        },
        "observability": {
          "status": "native",
          "note": "Astro 7 exposes configurable logger destinations, request flush hooks, and console/structured logging integration. Metrics/tracing backends remain separate.",
          "url": "https://docs.astro.build/en/reference/logger-reference/",
          "label": "Logger API"
        },
        "errorHandling": {
          "status": "partial",
          "note": "Custom 404/500 pages handle route errors; UI-island component error boundaries depend on the UI framework.",
          "url": "https://docs.astro.build/en/guides/routing/#custom-404-error-page",
          "label": "Error pages / UI integration",
          "reviewedOn": "2026-11-10"
        },
        "serverHosting": {
          "status": "official",
          "note": "On-demand hosting requires a deployment adapter such as the official Node adapter.",
          "url": "https://docs.astro.build/en/guides/on-demand-rendering/",
          "label": "SSR adapter"
        },
        "staticHosting": {
          "status": "native",
          "note": "The default build produces static files for static hosting; on-demand features require an adapter.",
          "url": "https://docs.astro.build/en/guides/deploy/"
        },
        "containers": {
          "status": "native",
          "note": "The official Docker recipe covers static and Node-adapter images. The application owns its Dockerfile and deployment.",
          "url": "https://docs.astro.build/en/recipes/docker/",
          "label": "Docker recipe"
        },
        "edgeHosting": {
          "status": "official",
          "note": "Official adapter paths include Cloudflare; runtime feature support depends on the adapter.",
          "url": "https://docs.astro.build/en/guides/deploy/",
          "label": "Cloudflare adapter"
        },
        "orm": {
          "status": "undocumented",
          "note": "The reviewed framework documentation does not establish an owned orm / query builder API. Host libraries and application integrations may provide it.",
          "url": "https://astro.build"
        },
        "migrations": {
          "status": "undocumented",
          "note": "The reviewed framework documentation does not establish an owned schema migrations API. Host libraries and application integrations may provide it.",
          "url": "https://astro.build"
        },
        "transactions": {
          "status": "undocumented",
          "note": "The reviewed framework documentation does not establish an owned transactions API. Host libraries and application integrations may provide it.",
          "url": "https://astro.build"
        },
        "jobs": {
          "status": "undocumented",
          "note": "The reviewed framework documentation does not establish an owned background jobs API. Host libraries and application integrations may provide it.",
          "url": "https://astro.build"
        },
        "mail": {
          "status": "undocumented",
          "note": "The reviewed framework documentation does not establish an owned email API. Host libraries and application integrations may provide it.",
          "url": "https://astro.build"
        },
        "uploads": {
          "status": "partial",
          "note": "Actions can receive form data; durable storage and upload lifecycle are separate application/provider responsibilities.",
          "url": "https://docs.astro.build/en/guides/actions/",
          "label": "FormData actions",
          "reviewedOn": "2026-11-10"
        },
        "realtime": {
          "status": "undocumented",
          "note": "The reviewed framework documentation does not establish an owned real-time delivery API. Host libraries and application integrations may provide it.",
          "url": "https://astro.build"
        },
        "xssEscaping": {
          "status": "native",
          "note": "Template expressions and set:text escape text. set:html inserts unescaped content and requires trusted HTML. This is separate from sanitizing an untrusted rich-text document.",
          "url": "https://docs.astro.build/en/reference/directives-reference/#sethtml",
          "reviewedOn": "2026-11-11"
        },
        "htmlSanitization": {
          "status": "undocumented",
          "note": "The linked security API review does not establish the specific html sanitization contract defined here. This is a bounded documentation finding, not proof of absence; generic hooks or application-authored code are not counted as an owned implementation.",
          "url": "https://docs.astro.build/en/reference/configuration-reference/#securitycsp",
          "reviewedOn": "2026-11-11"
        },
        "authorization": {
          "status": "undocumented",
          "note": "The linked security API review does not establish the specific authorization policies contract defined here. This is a bounded documentation finding, not proof of absence; generic hooks or application-authored code are not counted as an owned implementation.",
          "url": "https://docs.astro.build/en/reference/configuration-reference/#securitycsp",
          "reviewedOn": "2026-11-11"
        },
        "rateLimiting": {
          "status": "undocumented",
          "note": "The linked security API review does not establish the specific rate limiting contract defined here. This is a bounded documentation finding, not proof of absence; generic hooks or application-authored code are not counted as an owned implementation.",
          "url": "https://docs.astro.build/en/reference/configuration-reference/#securitycsp",
          "reviewedOn": "2026-11-11"
        },
        "progressiveEnhancement": {
          "status": "native",
          "note": "Actions accept ordinary HTML form POSTs with server validation/results. Client action calls and client-only submit handlers have different JS requirements; preserve the real form action for no-JS submission.",
          "url": "https://docs.astro.build/en/guides/actions/",
          "reviewedOn": "2026-11-11",
          "label": "HTML action forms"
        },
        "optimisticUi": {
          "status": "undocumented",
          "note": "The linked data API review does not establish the specific optimistic updates contract defined here. This is a bounded documentation finding, not proof of absence; generic hooks or application-authored code are not counted as an owned implementation.",
          "url": "https://docs.astro.build/en/guides/data-fetching/",
          "reviewedOn": "2026-11-11"
        },
        "requestCancellation": {
          "status": "undocumented",
          "note": "The linked data API review does not establish the specific stale request handling contract defined here. This is a bounded documentation finding, not proof of absence; generic hooks or application-authored code are not counted as an owned implementation.",
          "url": "https://docs.astro.build/en/guides/data-fetching/",
          "reviewedOn": "2026-11-11"
        },
        "typedLinks": {
          "status": "undocumented",
          "note": "The linked routing API review does not establish the specific typed links & parameters contract defined here. This is a bounded documentation finding, not proof of absence; generic hooks or application-authored code are not counted as an owned implementation.",
          "url": "https://docs.astro.build/en/guides/view-transitions/",
          "reviewedOn": "2026-11-11"
        },
        "searchParams": {
          "status": "undocumented",
          "note": "The linked routing API review does not establish the specific validated url state contract defined here. This is a bounded documentation finding, not proof of absence; generic hooks or application-authored code are not counted as an owned implementation.",
          "url": "https://docs.astro.build/en/guides/view-transitions/",
          "reviewedOn": "2026-11-11"
        },
        "stateRestoration": {
          "status": "native",
          "note": "ClientRouter transition:persist retains selected DOM/components across navigation, optionally preserving props. Persistence must be configured; this is not automatic serialization of all page state.",
          "url": "https://docs.astro.build/en/guides/view-transitions/#maintaining-state",
          "reviewedOn": "2026-11-11",
          "label": "transition:persist"
        },
        "scrollRestoration": {
          "status": "native",
          "note": "ClientRouter handles scroll for same-page anchors and back/forward navigation as part of its history lifecycle. Custom swapping/navigation can require application adjustments.",
          "url": "https://docs.astro.build/en/guides/view-transitions/",
          "reviewedOn": "2026-11-11",
          "label": "ClientRouter"
        },
        "navigationBlocking": {
          "status": "undocumented",
          "note": "The linked routing API review does not establish the specific unsaved-change guards contract defined here. This is a bounded documentation finding, not proof of absence; generic hooks or application-authored code are not counted as an owned implementation.",
          "url": "https://docs.astro.build/en/guides/view-transitions/",
          "reviewedOn": "2026-11-11"
        },
        "navigationAccessibility": {
          "status": "native",
          "note": "ClientRouter includes a route announcer and handles focus when swapping pages. Authors must provide meaningful page titles and honor reduced-motion preferences for animated transitions.",
          "url": "https://docs.astro.build/en/guides/view-transitions/#accessibility",
          "reviewedOn": "2026-11-11",
          "label": "ClientRouter"
        },
        "a11yChecks": {
          "status": "native",
          "note": "Astro's development toolbar audits rendered pages for selected accessibility issues. These are development diagnostics, not a production guarantee or complete accessibility audit.",
          "url": "https://docs.astro.build/en/guides/dev-toolbar/#audits",
          "reviewedOn": "2026-11-11",
          "label": "Dev toolbar audits"
        },
        "lazyActivation": {
          "status": "native",
          "note": "client:idle, client:visible and client:media schedule hydration of selected framework islands; client:only omits SSR and is a different behavior. A matching UI integration supplies the component renderer/runtime.",
          "url": "https://docs.astro.build/en/reference/directives-reference/#client-directives",
          "reviewedOn": "2026-11-11",
          "label": "Client directives"
        },
        "codeSplitting": {
          "status": "native",
          "note": "Astro's island build ships JavaScript for selected interactive components and shares framework runtimes. Components without client directives emit HTML without a hydration bundle; island dependencies may still be shared.",
          "url": "https://docs.astro.build/en/guides/framework-components/",
          "reviewedOn": "2026-11-11",
          "label": "Island bundles"
        },
        "offline": {
          "status": "undocumented",
          "note": "The linked deployment API review does not establish the specific offline integration contract defined here. This is a bounded documentation finding, not proof of absence; generic hooks or application-authored code are not counted as an owned implementation.",
          "url": "https://docs.astro.build/en/guides/on-demand-rendering/",
          "reviewedOn": "2026-11-11"
        },
        "scheduling": {
          "status": "undocumented",
          "note": "The linked backend API review does not establish the specific scheduled tasks contract defined here. This is a bounded documentation finding, not proof of absence; generic hooks or application-authored code are not counted as an owned implementation.",
          "url": "https://astro.build",
          "reviewedOn": "2026-11-11"
        },
        "notifications": {
          "status": "undocumented",
          "note": "The linked backend API review does not establish the specific multi-channel notifications contract defined here. This is a bounded documentation finding, not proof of absence; generic hooks or application-authored code are not counted as an owned implementation.",
          "url": "https://astro.build",
          "reviewedOn": "2026-11-11"
        },
        "searchIndex": {
          "status": "undocumented",
          "note": "The linked backend API review does not establish the specific search indexing contract defined here. This is a bounded documentation finding, not proof of absence; generic hooks or application-authored code are not counted as an owned implementation.",
          "url": "https://astro.build",
          "reviewedOn": "2026-11-11"
        },
        "fieldEncryption": {
          "status": "undocumented",
          "note": "The linked database API review does not establish the specific encrypted model fields contract defined here. This is a bounded documentation finding, not proof of absence; generic hooks or application-authored code are not counted as an owned implementation.",
          "url": "https://astro.build",
          "reviewedOn": "2026-11-11"
        },
        "httpTests": {
          "status": "undocumented",
          "note": "The linked testing API review does not establish the specific http integration tests contract defined here. This is a bounded documentation finding, not proof of absence; generic hooks or application-authored code are not counted as an owned implementation.",
          "url": "https://docs.astro.build/en/guides/testing/",
          "reviewedOn": "2026-11-11"
        }
      }
    },
    {
      "id": "dioxus",
      "label": "Dioxus",
      "kind": "UI framework",
      "logo": "logos/dioxus.svg",
      "color": "#0080ff",
      "scope": "Dioxus 0.7 documentation, including the optional Fullstack and Router packages.",
      "reviewedOn": "2026-11-10",
      "updatedOn": "2026-11-11",
      "capabilities": {
        "ssr": {
          "status": "official",
          "note": "Dioxus Fullstack renders initial HTML and hydrates the application in the browser.",
          "url": "https://dioxuslabs.com/learn/0.7/essentials/fullstack/streaming/",
          "label": "Fullstack"
        },
        "streaming": {
          "status": "official",
          "note": "Fullstack can opt into out-of-order HTML streaming. The default waits for suspense boundaries before sending the page.",
          "url": "https://dioxuslabs.com/learn/0.7/essentials/fullstack/streaming/",
          "label": "Fullstack"
        },
        "suspense": {
          "status": "native",
          "note": "Suspense boundaries coordinate asynchronous UI; Fullstack can stream their resolved HTML.",
          "url": "https://dioxuslabs.com/learn/0.7/essentials/fullstack/streaming/"
        },
        "client": {
          "status": "official",
          "note": "Fullstack supports hydration of the server-rendered application.",
          "url": "https://dioxuslabs.com/learn/0.7/essentials/fullstack/streaming/",
          "label": "Hydration"
        },
        "ssg": {
          "status": "official",
          "note": "Fullstack SSG runs the app, enumerates its sitemap, and retains HTML for static hosting.",
          "url": "https://dioxuslabs.com/learn/0.7/essentials/fullstack/static_site_generation/",
          "label": "Fullstack SSG"
        },
        "csr": {
          "status": "native",
          "note": "The web target renders and updates UI in the browser through the WASM runtime.",
          "url": "https://dioxuslabs.com/learn/0.7/guides/platforms/web"
        },
        "serverOnly": {
          "status": "partial",
          "note": "Server-only blocks and server functions stay on the server; normal Fullstack components also execute during browser hydration.",
          "url": "https://dioxuslabs.com/learn/0.7/essentials/fullstack/static_site_generation",
          "label": "Server blocks / functions",
          "reviewedOn": "2026-11-10"
        },
        "partialRendering": {
          "status": "undocumented",
          "note": "The reviewed static/incremental renderer does not establish a prebuilt shell with per-request dynamic UI holes.",
          "url": "https://dioxuslabs.com/learn/0.7/essentials/fullstack/static_site_generation"
        },
        "routing": {
          "status": "official",
          "note": "The fullstack server integrates an Axum router and registers server functions.",
          "url": "https://dioxuslabs.com/learn/0.7/essentials/fullstack/axum/",
          "label": "Fullstack / Axum"
        },
        "layouts": {
          "status": "official",
          "note": "The official Router nests routes inside layout components with Outlet.",
          "url": "https://dioxuslabs.com/learn/0.7/essentials/router/layouts",
          "label": "Dioxus Router"
        },
        "dynamicRoutes": {
          "status": "official",
          "note": "Routable derives typed dynamic, catch-all, query, and hash route segments.",
          "url": "https://dioxuslabs.com/learn/0.7/essentials/router/routes",
          "label": "Dioxus Router"
        },
        "parallelRoutes": {
          "status": "undocumented",
          "note": "Nested Outlet layouts are documented, but not independently navigable named route slots.",
          "url": "https://dioxuslabs.com/learn/0.7/essentials/router/layouts"
        },
        "interceptedRoutes": {
          "status": "undocumented",
          "note": "The reviewed navigation guide does not define intercepted-modal and direct-link rendering semantics.",
          "url": "https://dioxuslabs.com/learn/0.7/essentials/router/navigation"
        },
        "prefetch": {
          "status": "undocumented",
          "note": "Link and Navigator navigation are documented; automatic route/data prefetch is not established by the reviewed guide.",
          "url": "https://dioxuslabs.com/learn/0.7/essentials/router/navigation"
        },
        "softNavigation": {
          "status": "official",
          "note": "dioxus-router Link/Navigator update internal routed UI and history without fetching a new document. External navigation can leave the application; the router also serves non-browser targets.",
          "url": "https://dioxuslabs.com/learn/0.7/essentials/router/navigation",
          "reviewedOn": "2026-11-11",
          "label": "dioxus-router"
        },
        "viewTransitions": {
          "status": "undocumented",
          "note": "The reviewed routing API does not establish this navigation capability. Application code or another package may provide it; this finding is not proof of absence.",
          "url": "https://dioxuslabs.com/learn/0.7/essentials/fullstack/axum/",
          "reviewedOn": "2026-11-11"
        },
        "redirects": {
          "status": "official",
          "note": "Navigator and router callbacks can replace/redirect navigation; server responses can separately set HTTP redirects.",
          "url": "https://dioxuslabs.com/learn/0.7/essentials/router/navigation",
          "label": "Dioxus Router"
        },
        "serverData": {
          "status": "official",
          "note": "use_loader resolves data during SSR and serializes its result for the initial client render.",
          "url": "https://dioxuslabs.com/learn/0.7/essentials/fullstack/ssr",
          "label": "Fullstack use_loader"
        },
        "clientData": {
          "status": "native",
          "note": "Reactive resources expose pending/result state and can restart when dependencies change. This is not a shared query cache.",
          "url": "https://dioxuslabs.com/learn/0.7/essentials/basics/resources",
          "label": "Resources"
        },
        "requestDedupe": {
          "status": "undocumented",
          "note": "The resource lifecycle guide does not establish a request-wide keyed cache shared across separate components.",
          "url": "https://dioxuslabs.com/learn/0.7/essentials/basics/resources"
        },
        "persistentCache": {
          "status": "official",
          "note": "The incremental renderer retains generated HTML in its configured static directory. This is an HTML cache, not an application data cache.",
          "url": "https://dioxuslabs.com/learn/0.7/essentials/fullstack/static_site_generation",
          "label": "Fullstack incremental renderer"
        },
        "invalidation": {
          "status": "undocumented",
          "note": "clear_cache configuration controls the static renderer’s cache on startup; the guide does not establish dependency/path/tag invalidation during requests.",
          "url": "https://dioxuslabs.com/learn/0.7/essentials/fullstack/static_site_generation"
        },
        "isr": {
          "status": "partial",
          "note": "Incremental rendering can retain generated pages; freshness, regeneration triggers, and deployment behavior require renderer configuration.",
          "url": "https://dioxuslabs.com/learn/0.7/essentials/fullstack/static_site_generation",
          "label": "Incremental HTML renderer",
          "reviewedOn": "2026-11-10"
        },
        "apiRoutes": {
          "status": "official",
          "note": "Fullstack’s Axum router can register custom HTTP handlers alongside generated server functions.",
          "url": "https://dioxuslabs.com/learn/0.7/essentials/fullstack/axum",
          "label": "Fullstack / Axum"
        },
        "actions": {
          "status": "official",
          "note": "Fullstack registers server functions that browser code can call.",
          "url": "https://dioxuslabs.com/learn/0.7/essentials/fullstack/axum/",
          "label": "Fullstack"
        },
        "forms": {
          "status": "official",
          "note": "Form<T> deserializes typed form inputs; MultipartFormData handles uploads. Business validation remains application code.",
          "url": "https://dioxuslabs.com/learn/0.7/essentials/fullstack/forms",
          "label": "Fullstack forms",
          "reviewedOn": "2026-11-11",
          "assessment": {
            "summary": "Form transport, validation, pending feedback and optimistic state are separate behaviors; the progressive-forms and optimistic-updates rows review the latter contracts explicitly.",
            "strengths": [
              "Form<T> deserializes typed form inputs; MultipartFormData handles uploads. Business validation remains application code."
            ],
            "tradeoffs": [
              "Do not infer a no-JavaScript submission path, automatic validation, accessible field errors or rollback merely from the ability to receive FormData."
            ]
          }
        },
        "middleware": {
          "status": "official",
          "note": "Tower/Axum middleware and per-server-function middleware are supported.",
          "url": "https://dioxuslabs.com/learn/0.7/essentials/fullstack/middleware",
          "label": "Fullstack / Axum"
        },
        "cookies": {
          "status": "official",
          "note": "Axum extractors and response headers provide request cookie integration; session policy requires application code.",
          "url": "https://dioxuslabs.com/learn/0.7/essentials/fullstack/axum",
          "label": "Axum integration"
        },
        "cssModules": {
          "status": "undocumented",
          "note": "The reviewed CSS/SCSS and stylesheet guide does not document CSS Modules class-name compilation.",
          "url": "https://dioxuslabs.com/learn/0.7/essentials/ui/styling"
        },
        "scopedCss": {
          "status": "undocumented",
          "note": "Stylesheets and inline styles are documented; automatic component-local selector rewriting is not established.",
          "url": "https://dioxuslabs.com/learn/0.7/essentials/ui/styling"
        },
        "tailwind": {
          "status": "community",
          "note": "The official guide wires Tailwind’s external compiler output into the app’s stylesheet/assets.",
          "url": "https://dioxuslabs.com/learn/0.7/guides/utilities/tailwind",
          "label": "Tailwind recipe"
        },
        "cssInJs": {
          "status": "undocumented",
          "note": "Inline styles do not establish a CSS-in-JS compiler or SSR style registry in the reviewed guide.",
          "url": "https://dioxuslabs.com/learn/0.7/essentials/ui/styling"
        },
        "images": {
          "status": "official",
          "note": "Manganis asset processing supports build-time image resizing and format conversion.",
          "url": "https://dioxuslabs.com/learn/0.7/essentials/ui/assets",
          "label": "Manganis"
        },
        "fonts": {
          "status": "partial",
          "note": "Font files can be bundled as assets; automatic font subsetting and fallback-metric optimization are not established.",
          "url": "https://dioxuslabs.com/learn/0.7/essentials/ui/assets",
          "label": "Bundled font files",
          "reviewedOn": "2026-11-10"
        },
        "scripts": {
          "status": "undocumented",
          "note": "document::eval and browser bindings execute app-authored JavaScript. This is not an optimized third-party script scheduling API.",
          "url": "https://dioxuslabs.com/learn/0.7/essentials/advanced/breaking_out",
          "label": "Document eval"
        },
        "staticAssets": {
          "status": "official",
          "note": "asset! bundles and fingerprints files through Manganis.",
          "url": "https://dioxuslabs.com/learn/0.7/essentials/ui/assets",
          "label": "Manganis"
        },
        "metadata": {
          "status": "native",
          "note": "Document head components expose titles/meta/links. SEO-critical head content must resolve in the initial stream chunk.",
          "url": "https://dioxuslabs.com/learn/0.7/essentials/fullstack/streaming",
          "label": "Document components"
        },
        "dynamicMetadata": {
          "status": "partial",
          "note": "Head components accept reactive values; metadata rendered after the first chunk may only appear after client hydration.",
          "url": "https://dioxuslabs.com/learn/0.7/essentials/fullstack/streaming",
          "label": "Initial-chunk constraint",
          "reviewedOn": "2026-11-10"
        },
        "metadataInheritance": {
          "status": "undocumented",
          "note": "The reviewed head component guide does not define metadata-object inheritance through nested route layouts.",
          "url": "https://dioxuslabs.com/learn/0.7/essentials/fullstack/streaming"
        },
        "metadataOverrides": {
          "status": "undocumented",
          "note": "The reviewed document API does not establish a standard nested metadata-field merge/clear contract.",
          "url": "https://dioxuslabs.com/learn/0.7/essentials/fullstack/streaming"
        },
        "titleTemplates": {
          "status": "undocumented",
          "note": "Title components are documented, but an ancestor title-formatting/absolute-title API is not established.",
          "url": "https://dioxuslabs.com/learn/0.7/essentials/fullstack/streaming"
        },
        "socialImages": {
          "status": "undocumented",
          "note": "Image asset transforms are documented; a route-aware generated social-card renderer is not established.",
          "url": "https://dioxuslabs.com/learn/0.7/essentials/ui/assets"
        },
        "sitemaps": {
          "status": "undocumented",
          "note": "The SSG workflow enumerates app routes through a sitemap for prerendering. This is not evidence of a crawler XML sitemap generator.",
          "url": "https://dioxuslabs.com/learn/0.7/essentials/fullstack/static_site_generation",
          "label": "SSG route enumeration"
        },
        "robots": {
          "status": "undocumented",
          "note": "Static resources can carry an authored robots.txt; a crawler-directive generation API is not documented.",
          "url": "https://dioxuslabs.com/learn/0.7/guides/tools/configure"
        },
        "markdown": {
          "status": "undocumented",
          "note": "The reviewed asset guide does not establish a Markdown page/compiler integration; add a parser/content package.",
          "url": "https://dioxuslabs.com/learn/0.7/essentials/ui/assets"
        },
        "collections": {
          "status": "undocumented",
          "note": "Asset bundling does not establish typed content collection schemas, loaders, and queries.",
          "url": "https://dioxuslabs.com/learn/0.7/essentials/ui/assets"
        },
        "draftMode": {
          "status": "undocumented",
          "note": "Application middleware can authorize previews; a dedicated draft-preview/cache-bypass API is not established.",
          "url": "https://dioxuslabs.com/learn/0.7/essentials/fullstack/middleware"
        },
        "translations": {
          "status": "community",
          "note": "dioxus-i18n provides Fluent messages and locale configuration; its documentation declares Dioxus 0.7 support.",
          "url": "https://docs.rs/dioxus-i18n/latest/dioxus_i18n/",
          "label": "dioxus-i18n"
        },
        "localeRouting": {
          "status": "partial",
          "note": "The typed dynamic-route guide demonstrates a locale segment; negotiation and language redirects are application policy.",
          "url": "https://dioxuslabs.com/learn/0.7/essentials/router/routes",
          "label": "Typed locale segment",
          "reviewedOn": "2026-11-10"
        },
        "localeFormatting": {
          "status": "undocumented",
          "note": "The guide introduces dioxus-i18n messages but does not establish a number/date formatter API for this comparison.",
          "url": "https://dioxuslabs.com/learn/0.7/guides/utilities/internationalization"
        },
        "auth": {
          "status": "community",
          "note": "The guide explicitly leaves authentication to libraries/application code and demonstrates axum_session_auth.",
          "url": "https://dioxuslabs.com/learn/0.7/essentials/fullstack/authentication",
          "label": "axum_session_auth"
        },
        "csp": {
          "status": "undocumented",
          "note": "Application middleware can supply headers; automatic CSP nonce/hash coordination is not established by the reviewed Fullstack guide.",
          "url": "https://dioxuslabs.com/learn/0.7/essentials/fullstack/middleware"
        },
        "cspNonce": {
          "status": "undocumented",
          "note": "The reviewed security/rendering API does not establish coordinated per-response CSP nonces for generated scripts and styles. Hash-based CSP and application-authored headers are different mechanisms.",
          "url": "https://dioxuslabs.com/learn/0.7/essentials/fullstack/middleware",
          "reviewedOn": "2026-11-11"
        },
        "csrf": {
          "status": "undocumented",
          "note": "Typed form parsing does not establish CSRF tokens or origin enforcement; the reviewed forms guide does not document that protection.",
          "url": "https://dioxuslabs.com/learn/0.7/essentials/fullstack/forms"
        },
        "environment": {
          "status": "partial",
          "note": "Server-function bodies and extractors stay on the server. Application code must keep secrets out of serialized results and client modules.",
          "url": "https://dioxuslabs.com/learn/0.7/essentials/fullstack/server_functions",
          "label": "Server-function boundary",
          "reviewedOn": "2026-11-10"
        },
        "types": {
          "status": "native",
          "note": "Rust checks component/route types; Routable derives typed route parameters.",
          "url": "https://dioxuslabs.com/learn/0.7/essentials/router/routes"
        },
        "hmr": {
          "status": "native",
          "note": "RSX and CSS support hot reload; some Rust changes rebuild, and Rust hotpatching is experimental.",
          "url": "https://dioxuslabs.com/learn/0.7/essentials/ui/hotreload"
        },
        "cli": {
          "status": "official",
          "note": "The dx toolchain configures, serves, and bundles Dioxus applications.",
          "url": "https://dioxuslabs.com/learn/0.7/guides/tools/configure",
          "label": "Dioxus CLI"
        },
        "bundleAnalysis": {
          "status": "undocumented",
          "note": "The reviewed bundling configuration does not establish an interactive production module-size analyzer.",
          "url": "https://dioxuslabs.com/learn/0.7/guides/tools/configure"
        },
        "unitTests": {
          "status": "partial",
          "note": "The guide uses Rust tests and dioxus_ssr snapshots; hook testing requires manually driving a VirtualDom.",
          "url": "https://dioxuslabs.com/learn/0.7/guides/testing/web",
          "label": "Rust / SSR test recipe",
          "reviewedOn": "2026-11-10"
        },
        "e2eTests": {
          "status": "community",
          "note": "The official browser-testing guide configures Playwright against a served web app.",
          "url": "https://dioxuslabs.com/learn/0.7/guides/testing/web",
          "label": "Playwright"
        },
        "observability": {
          "status": "official",
          "note": "The first-party logger connects tracing to native or web logging destinations. Metrics/tracing backends require additional configuration.",
          "url": "https://dioxuslabs.com/learn/0.7/guides/utilities/logging",
          "label": "Dioxus logger"
        },
        "errorHandling": {
          "status": "native",
          "note": "ErrorBoundary captures component errors and renders fallback UI.",
          "url": "https://docs.rs/dioxus/latest/dioxus/prelude/fn.ErrorBoundary.html"
        },
        "serverHosting": {
          "status": "official",
          "note": "The production Fullstack integration runs an Axum application server.",
          "url": "https://dioxuslabs.com/learn/0.7/essentials/fullstack/axum",
          "label": "Fullstack / Axum"
        },
        "staticHosting": {
          "status": "official",
          "note": "SSG emits retained HTML for static hosting; dynamic server functions still require a server.",
          "url": "https://dioxuslabs.com/learn/0.7/essentials/fullstack/static_site_generation",
          "label": "Fullstack SSG"
        },
        "containers": {
          "status": "undocumented",
          "note": "The reviewed bundle/configuration guide does not document a web-server container image workflow.",
          "url": "https://dioxuslabs.com/learn/0.7/guides/tools/configure"
        },
        "edgeHosting": {
          "status": "undocumented",
          "note": "The reviewed Fullstack host is Axum; a worker/edge runtime adapter is not established.",
          "url": "https://dioxuslabs.com/learn/0.7/essentials/fullstack/axum"
        },
        "orm": {
          "status": "undocumented",
          "note": "The reviewed framework documentation does not establish an owned orm / query builder API. Host libraries and application integrations may provide it.",
          "url": "https://dioxuslabs.com"
        },
        "migrations": {
          "status": "undocumented",
          "note": "The reviewed framework documentation does not establish an owned schema migrations API. Host libraries and application integrations may provide it.",
          "url": "https://dioxuslabs.com"
        },
        "transactions": {
          "status": "undocumented",
          "note": "The reviewed framework documentation does not establish an owned transactions API. Host libraries and application integrations may provide it.",
          "url": "https://dioxuslabs.com"
        },
        "jobs": {
          "status": "undocumented",
          "note": "The reviewed framework documentation does not establish an owned background jobs API. Host libraries and application integrations may provide it.",
          "url": "https://dioxuslabs.com"
        },
        "mail": {
          "status": "undocumented",
          "note": "The reviewed framework documentation does not establish an owned email API. Host libraries and application integrations may provide it.",
          "url": "https://dioxuslabs.com"
        },
        "uploads": {
          "status": "partial",
          "note": "Fullstack server functions accept FileStream upload arguments. A durable file/storage lifecycle is not supplied by this transport alone.",
          "url": "https://dioxuslabs.com/learn/0.7/essentials/fullstack/server_functions",
          "label": "FileStream transport",
          "reviewedOn": "2026-11-10"
        },
        "realtime": {
          "status": "undocumented",
          "note": "The reviewed framework documentation does not establish an owned real-time delivery API. Host libraries and application integrations may provide it.",
          "url": "https://dioxuslabs.com"
        },
        "xssEscaping": {
          "status": "native",
          "note": "RSX text interpolation renders text; dangerous_inner_html is the explicit raw-HTML bypass. Treat its input as trusted or sanitize it outside the renderer.",
          "url": "https://dioxuslabs.com/learn/0.7/essentials/ui/rsx/",
          "reviewedOn": "2026-11-11"
        },
        "htmlSanitization": {
          "status": "undocumented",
          "note": "The linked security API review does not establish the specific html sanitization contract defined here. This is a bounded documentation finding, not proof of absence; generic hooks or application-authored code are not counted as an owned implementation.",
          "url": "https://dioxuslabs.com/learn/0.7/essentials/fullstack/middleware",
          "reviewedOn": "2026-11-11"
        },
        "authorization": {
          "status": "undocumented",
          "note": "The linked security API review does not establish the specific authorization policies contract defined here. This is a bounded documentation finding, not proof of absence; generic hooks or application-authored code are not counted as an owned implementation.",
          "url": "https://dioxuslabs.com/learn/0.7/essentials/fullstack/middleware",
          "reviewedOn": "2026-11-11"
        },
        "rateLimiting": {
          "status": "undocumented",
          "note": "The linked security API review does not establish the specific rate limiting contract defined here. This is a bounded documentation finding, not proof of absence; generic hooks or application-authored code are not counted as an owned implementation.",
          "url": "https://dioxuslabs.com/learn/0.7/essentials/fullstack/middleware",
          "reviewedOn": "2026-11-11"
        },
        "progressiveEnhancement": {
          "status": "undocumented",
          "note": "The linked server API review does not establish the specific progressive forms contract defined here. This is a bounded documentation finding, not proof of absence; generic hooks or application-authored code are not counted as an owned implementation.",
          "url": "https://dioxuslabs.com/learn/0.7/essentials/fullstack/forms",
          "reviewedOn": "2026-11-11"
        },
        "optimisticUi": {
          "status": "undocumented",
          "note": "The linked data API review does not establish the specific optimistic updates contract defined here. This is a bounded documentation finding, not proof of absence; generic hooks or application-authored code are not counted as an owned implementation.",
          "url": "https://dioxuslabs.com/learn/0.7/essentials/basics/resources",
          "reviewedOn": "2026-11-11"
        },
        "requestCancellation": {
          "status": "native",
          "note": "use_resource reruns reactive asynchronous work and exposes cancellation/restart. Fetch cancellation depends on the future/transport; canceling UI work does not roll back a remote mutation.",
          "url": "https://docs.rs/dioxus-hooks/latest/dioxus_hooks/fn.use_resource.html",
          "reviewedOn": "2026-11-11",
          "label": "use_resource"
        },
        "typedLinks": {
          "status": "official",
          "note": "The Routable derive generates typed route variants and parameters used by Link/navigation. A string URL can bypass that typed route API; Router is an optional package.",
          "url": "https://dioxuslabs.com/learn/0.7/essentials/router/routes/",
          "reviewedOn": "2026-11-11",
          "label": "dioxus-router / Routable"
        },
        "searchParams": {
          "status": "undocumented",
          "note": "The linked routing API review does not establish the specific validated url state contract defined here. This is a bounded documentation finding, not proof of absence; generic hooks or application-authored code are not counted as an owned implementation.",
          "url": "https://dioxuslabs.com/learn/0.7/essentials/router/navigation",
          "reviewedOn": "2026-11-11"
        },
        "stateRestoration": {
          "status": "undocumented",
          "note": "The linked routing API review does not establish the specific navigation state retention contract defined here. This is a bounded documentation finding, not proof of absence; generic hooks or application-authored code are not counted as an owned implementation.",
          "url": "https://dioxuslabs.com/learn/0.7/essentials/router/navigation",
          "reviewedOn": "2026-11-11"
        },
        "scrollRestoration": {
          "status": "undocumented",
          "note": "The linked routing API review does not establish the specific scroll restoration contract defined here. This is a bounded documentation finding, not proof of absence; generic hooks or application-authored code are not counted as an owned implementation.",
          "url": "https://dioxuslabs.com/learn/0.7/essentials/router/navigation",
          "reviewedOn": "2026-11-11"
        },
        "navigationBlocking": {
          "status": "undocumented",
          "note": "The linked routing API review does not establish the specific unsaved-change guards contract defined here. This is a bounded documentation finding, not proof of absence; generic hooks or application-authored code are not counted as an owned implementation.",
          "url": "https://dioxuslabs.com/learn/0.7/essentials/router/navigation",
          "reviewedOn": "2026-11-11"
        },
        "navigationAccessibility": {
          "status": "undocumented",
          "note": "The linked client rendering API review does not establish the specific accessible navigation contract defined here. This is a bounded documentation finding, not proof of absence; generic hooks or application-authored code are not counted as an owned implementation.",
          "url": "https://dioxuslabs.com/learn/0.7/essentials/fullstack/streaming/",
          "reviewedOn": "2026-11-11"
        },
        "a11yChecks": {
          "status": "undocumented",
          "note": "The linked client rendering API review does not establish the specific accessibility checks contract defined here. This is a bounded documentation finding, not proof of absence; generic hooks or application-authored code are not counted as an owned implementation.",
          "url": "https://dioxuslabs.com/learn/0.7/essentials/fullstack/streaming/",
          "reviewedOn": "2026-11-11"
        },
        "lazyActivation": {
          "status": "undocumented",
          "note": "The linked rendering API review does not establish the specific deferred activation contract defined here. This is a bounded documentation finding, not proof of absence; generic hooks or application-authored code are not counted as an owned implementation.",
          "url": "https://dioxuslabs.com/learn/0.7/essentials/fullstack/streaming/",
          "reviewedOn": "2026-11-11"
        },
        "codeSplitting": {
          "status": "undocumented",
          "note": "The linked rendering API review does not establish the specific route / island splitting contract defined here. This is a bounded documentation finding, not proof of absence; generic hooks or application-authored code are not counted as an owned implementation.",
          "url": "https://dioxuslabs.com/learn/0.7/essentials/fullstack/streaming/",
          "reviewedOn": "2026-11-11"
        },
        "offline": {
          "status": "undocumented",
          "note": "The linked deployment API review does not establish the specific offline integration contract defined here. This is a bounded documentation finding, not proof of absence; generic hooks or application-authored code are not counted as an owned implementation.",
          "url": "https://dioxuslabs.com/learn/0.7/essentials/fullstack/axum",
          "reviewedOn": "2026-11-11"
        },
        "scheduling": {
          "status": "undocumented",
          "note": "The linked backend API review does not establish the specific scheduled tasks contract defined here. This is a bounded documentation finding, not proof of absence; generic hooks or application-authored code are not counted as an owned implementation.",
          "url": "https://dioxuslabs.com",
          "reviewedOn": "2026-11-11"
        },
        "notifications": {
          "status": "undocumented",
          "note": "The linked backend API review does not establish the specific multi-channel notifications contract defined here. This is a bounded documentation finding, not proof of absence; generic hooks or application-authored code are not counted as an owned implementation.",
          "url": "https://dioxuslabs.com",
          "reviewedOn": "2026-11-11"
        },
        "searchIndex": {
          "status": "undocumented",
          "note": "The linked backend API review does not establish the specific search indexing contract defined here. This is a bounded documentation finding, not proof of absence; generic hooks or application-authored code are not counted as an owned implementation.",
          "url": "https://dioxuslabs.com",
          "reviewedOn": "2026-11-11"
        },
        "fieldEncryption": {
          "status": "undocumented",
          "note": "The linked database API review does not establish the specific encrypted model fields contract defined here. This is a bounded documentation finding, not proof of absence; generic hooks or application-authored code are not counted as an owned implementation.",
          "url": "https://dioxuslabs.com",
          "reviewedOn": "2026-11-11"
        },
        "httpTests": {
          "status": "undocumented",
          "note": "The linked testing API review does not establish the specific http integration tests contract defined here. This is a bounded documentation finding, not proof of absence; generic hooks or application-authored code are not counted as an owned implementation.",
          "url": "https://dioxuslabs.com/learn/0.7/guides/testing/web",
          "reviewedOn": "2026-11-11"
        }
      }
    },
    {
      "id": "exact",
      "label": "Exact",
      "kind": "Application framework",
      "logo": "logos/exact.svg",
      "color": "var(--fw-fg)",
      "scope": "Exact source revision 94b8671 (the revision used by the Framework SSR adapter); pre-1.0 APIs change frequently.",
      "reviewedOn": "2026-11-10",
      "updatedOn": "2026-11-11",
      "capabilities": {
        "ssr": {
          "status": "native",
          "note": "The Rust renderer can prerender web pages per request.",
          "url": "https://github.com/expo/exact/blob/94b8671f70fe2e25b307a40e7fce66dc27c9f802/README.md#what-works-today-and-what-doesnt-yet"
        },
        "streaming": {
          "status": "undocumented",
          "note": "Build-time/per-request HTML prerendering is documented, but an incremental HTTP HTML-stream API is not established in this revision.",
          "url": "https://github.com/expo/exact/blob/94b8671f70fe2e25b307a40e7fce66dc27c9f802/docs/contract-for-humans.md#navigation-and-documents"
        },
        "suspense": {
          "status": "undocumented",
          "note": "The pinned Contract resource API exposes pending/failed state and placeholders, but does not establish a declarative Suspense boundary that coordinates descendant async rendering. Those resource controls should not count as partial boundary support. This review does not assert the feature is impossible.",
          "url": "https://github.com/expo/exact/blob/94b8671f70fe2e25b307a40e7fce66dc27c9f802/docs/contract-for-humans.md#resources-and-mutations",
          "label": "Resource state only",
          "assessment": {
            "summary": "Pending-resource UI is documented; a coordinating asynchronous UI boundary is not established by this API.",
            "strengths": [
              "Resources retain previous answers or placeholders during replacement requests.",
              "Explicit pending and failed predicates let the application author loading/error UI."
            ],
            "tradeoffs": [
              "Resource state is not a boundary that waits on descendant dependencies.",
              "It does not establish resolved-HTML replacement in the original SSR response."
            ]
          }
        },
        "client": {
          "status": "native",
          "note": "The web runtime adopts server-rendered HTML in place; the project distinguishes this from hydration.",
          "url": "https://github.com/expo/exact/blob/94b8671f70fe2e25b307a40e7fce66dc27c9f802/README.md#what-works-today-and-what-doesnt-yet",
          "label": "DOM adoption"
        },
        "ssg": {
          "status": "native",
          "note": "The documented web path supports build-time prerendered pages.",
          "url": "https://github.com/expo/exact/blob/94b8671f70fe2e25b307a40e7fce66dc27c9f802/README.md#what-works-today-and-what-doesnt-yet"
        },
        "csr": {
          "status": "native",
          "note": "The web host runs compiled Contract UI and creates/updates browser views without requiring initial prerendered HTML.",
          "url": "https://github.com/expo/exact/blob/94b8671f70fe2e25b307a40e7fce66dc27c9f802/docs/contract-for-humans.md#components-providers-and-slots"
        },
        "serverOnly": {
          "status": "undocumented",
          "note": "Prerendering is documented, but excluding arbitrary component implementation/dependencies from the browser through a server-component boundary is not established.",
          "url": "https://github.com/expo/exact/blob/94b8671f70fe2e25b307a40e7fce66dc27c9f802/docs/contract-for-humans.md#navigation-and-documents"
        },
        "partialRendering": {
          "status": "undocumented",
          "note": "Per-route render/activation policies do not establish a static shell with request-time dynamic UI holes.",
          "url": "https://github.com/expo/exact/blob/94b8671f70fe2e25b307a40e7fce66dc27c9f802/docs/contract-for-humans.md#navigation-and-documents"
        },
        "routing": {
          "status": "undocumented",
          "note": "Contract provides retained navigation stacks. HTTP URL-to-page routing was not established by this review.",
          "url": "https://github.com/expo/exact/blob/94b8671f70fe2e25b307a40e7fce66dc27c9f802/README.md#contract",
          "label": "Navigation stacks"
        },
        "layouts": {
          "status": "partial",
          "note": "Components, providers, and caller-owned slots compose retained navigation UI; filesystem nested server layouts are not established.",
          "url": "https://github.com/expo/exact/blob/94b8671f70fe2e25b307a40e7fce66dc27c9f802/docs/contract-for-humans.md#components-providers-and-slots",
          "label": "Components / slots",
          "reviewedOn": "2026-11-10"
        },
        "dynamicRoutes": {
          "status": "native",
          "note": "The routes table matches parameterized paths; path() checks named routes and encodes parameter values. HTTP serving policy is a separate part of the build pipeline.",
          "url": "https://github.com/expo/exact/blob/94b8671f70fe2e25b307a40e7fce66dc27c9f802/docs/contract-for-humans.md#navigation-and-documents"
        },
        "parallelRoutes": {
          "status": "undocumented",
          "note": "Retained stacks/tabs are documented, but independently navigable server-route slots are not established.",
          "url": "https://github.com/expo/exact/blob/94b8671f70fe2e25b307a40e7fce66dc27c9f802/docs/contract-for-humans.md#navigation-and-documents"
        },
        "interceptedRoutes": {
          "status": "undocumented",
          "note": "Native modal presentation is distinct from a web intercepted-route/direct-link contract, which is not established here.",
          "url": "https://github.com/expo/exact/blob/94b8671f70fe2e25b307a40e7fce66dc27c9f802/docs/contract-for-humans.md#navigation-and-documents"
        },
        "prefetch": {
          "status": "undocumented",
          "note": "Route rendering/activation policies are documented; automatic hover/viewport route-data prefetch is not established.",
          "url": "https://github.com/expo/exact/blob/94b8671f70fe2e25b307a40e7fce66dc27c9f802/docs/contract-for-humans.md#navigation-and-documents"
        },
        "softNavigation": {
          "status": "native",
          "note": "Contract routes and push/back/go manage retained screens; navigate= receives link clicks and browser-history locations from the web host. Covered entries stay mounted with their state. This is client navigation, separate from server HTTP-route support.",
          "url": "https://github.com/expo/exact/blob/94b8671f70fe2e25b307a40e7fce66dc27c9f802/docs/contract-for-humans.md#navigation-and-documents",
          "reviewedOn": "2026-11-11",
          "label": "Retained route stacks"
        },
        "viewTransitions": {
          "status": "undocumented",
          "note": "The reviewed Contract guide documents authored component animation and native iOS modal presentation, but does not establish an animated browser page-navigation integration. Those are separate from retained-screen navigation.",
          "url": "https://github.com/expo/exact/blob/94b8671f70fe2e25b307a40e7fce66dc27c9f802/docs/contract-for-humans.md#navigation-and-documents",
          "reviewedOn": "2026-11-11"
        },
        "redirects": {
          "status": "undocumented",
          "note": "Stack navigation and status metadata do not establish HTTP redirect/rewrite configuration.",
          "url": "https://github.com/expo/exact/blob/94b8671f70fe2e25b307a40e7fce66dc27c9f802/docs/contract-for-humans.md#navigation-and-documents"
        },
        "serverData": {
          "status": "partial",
          "note": "Build/bake and prerender paths resolve resource data when available; restricted bake-time capabilities and app data modules determine what can run.",
          "url": "https://github.com/expo/exact/blob/94b8671f70fe2e25b307a40e7fce66dc27c9f802/docs/contract-for-humans.md#resources-and-mutations",
          "label": "Resources / prerender",
          "reviewedOn": "2026-11-10"
        },
        "clientData": {
          "status": "native",
          "note": "Resources rerun on dependency changes and expose pending/result/failure state; newest requests win.",
          "url": "https://github.com/expo/exact/blob/94b8671f70fe2e25b307a40e7fce66dc27c9f802/docs/contract-for-humans.md#resources-and-mutations"
        },
        "requestDedupe": {
          "status": "undocumented",
          "note": "Reactive resource lifecycle rules do not establish request-wide keyed deduplication shared across separate components.",
          "url": "https://github.com/expo/exact/blob/94b8671f70fe2e25b307a40e7fce66dc27c9f802/docs/contract-for-humans.md#resources-and-mutations"
        },
        "persistentCache": {
          "status": "partial",
          "note": "Eligible native-host resource answers can persist. The default web JS target explicitly does not persist resource answers.",
          "url": "https://github.com/expo/exact/blob/94b8671f70fe2e25b307a40e7fce66dc27c9f802/docs/contract-for-humans.md#resources-and-mutations",
          "label": "Native-host resource persistence",
          "reviewedOn": "2026-11-10"
        },
        "invalidation": {
          "status": "native",
          "note": "refresh and mutation refreshes declarations reload resource state. This is not HTTP page-cache tag invalidation.",
          "url": "https://github.com/expo/exact/blob/94b8671f70fe2e25b307a40e7fce66dc27c9f802/docs/contract-for-humans.md#resources-and-mutations",
          "label": "Resource refresh"
        },
        "isr": {
          "status": "undocumented",
          "note": "The documented prerender pipeline does not establish stale-page request-time regeneration.",
          "url": "https://github.com/expo/exact/blob/94b8671f70fe2e25b307a40e7fce66dc27c9f802/docs/contract-for-humans.md#navigation-and-documents"
        },
        "apiRoutes": {
          "status": "undocumented",
          "note": "The site sample authors a separate Bun HTTP server. That demonstrates an app backend, not a framework-owned endpoint router.",
          "url": "https://github.com/expo/exact/blob/94b8671f70fe2e25b307a40e7fce66dc27c9f802/docs/patterns/site/server.ts"
        },
        "actions": {
          "status": "partial",
          "note": "Contract actions/mutations invoke app data modules. These are not established as generated browser-to-server RPC endpoints.",
          "url": "https://github.com/expo/exact/blob/94b8671f70fe2e25b307a40e7fce66dc27c9f802/docs/contract-for-humans.md#resources-and-mutations",
          "label": "Data-module mutations",
          "reviewedOn": "2026-11-10"
        },
        "forms": {
          "status": "partial",
          "note": "Typed controls bind state and actions; application code implements validation and submission behavior. A general HTML form-to-server validation contract is not established.",
          "url": "https://github.com/expo/exact/blob/94b8671f70fe2e25b307a40e7fce66dc27c9f802/docs/contract-for-humans.md#input-and-interaction",
          "label": "Typed controls / actions",
          "reviewedOn": "2026-11-11",
          "assessment": {
            "summary": "Form transport, validation, pending feedback and optimistic state are separate behaviors; the progressive-forms and optimistic-updates rows review the latter contracts explicitly.",
            "strengths": [
              "Typed controls bind state and actions; application code implements validation and submission behavior. A general HTML form-to-server validation contract is not established."
            ],
            "tradeoffs": [
              "Do not infer a no-JavaScript submission path, automatic validation, accessible field errors or rollback merely from the ability to receive FormData."
            ]
          }
        },
        "middleware": {
          "status": "undocumented",
          "note": "The reviewed site backend uses app-authored Bun handling; no Exact HTTP middleware pipeline is established.",
          "url": "https://github.com/expo/exact/blob/94b8671f70fe2e25b307a40e7fce66dc27c9f802/docs/patterns/site/server.ts"
        },
        "cookies": {
          "status": "undocumented",
          "note": "Grants cover storage/network access; a web cookie/session API with HTTP lifecycle policy is not established.",
          "url": "https://github.com/expo/exact/blob/94b8671f70fe2e25b307a40e7fce66dc27c9f802/docs/contract-for-humans.md#typescript-data-modules"
        },
        "cssModules": {
          "status": "undocumented",
          "note": "Reusable named styles compile to supported Contract properties; CSS Modules class maps are not established.",
          "url": "https://github.com/expo/exact/blob/94b8671f70fe2e25b307a40e7fce66dc27c9f802/docs/contract-for-humans.md#styling"
        },
        "scopedCss": {
          "status": "partial",
          "note": "Named reusable style declarations apply supported properties to explicit views; this is not an arbitrary CSS selector scoping compiler.",
          "url": "https://github.com/expo/exact/blob/94b8671f70fe2e25b307a40e7fce66dc27c9f802/docs/contract-for-humans.md#styling",
          "label": "Contract styles",
          "reviewedOn": "2026-11-10"
        },
        "tailwind": {
          "status": "undocumented",
          "note": "The restricted Contract style vocabulary does not establish Tailwind utility scanning/class integration.",
          "url": "https://github.com/expo/exact/blob/94b8671f70fe2e25b307a40e7fce66dc27c9f802/docs/contract-for-humans.md#styling"
        },
        "cssInJs": {
          "status": "undocumented",
          "note": "Typed style expressions are supported; a general JavaScript CSS-in-JS/SSR registry is not established.",
          "url": "https://github.com/expo/exact/blob/94b8671f70fe2e25b307a40e7fce66dc27c9f802/docs/contract-for-humans.md#styling"
        },
        "images": {
          "status": "undocumented",
          "note": "Host image/media elements render assets; automatic web image resizing/format conversion is not established.",
          "url": "https://github.com/expo/exact/blob/94b8671f70fe2e25b307a40e7fce66dc27c9f802/docs/contract-for-humans.md#graphics-and-media"
        },
        "fonts": {
          "status": "partial",
          "note": "Font declarations bundle application font files and expose variable-font axes; automatic font subsetting/fallback tuning is not established.",
          "url": "https://github.com/expo/exact/blob/94b8671f70fe2e25b307a40e7fce66dc27c9f802/docs/contract-for-humans.md#styling",
          "label": "Bundled font declarations",
          "reviewedOn": "2026-11-10"
        },
        "scripts": {
          "status": "undocumented",
          "note": "Page activation policies can defer the generated runtime until interaction. Arbitrary third-party script scheduling is not established.",
          "url": "https://github.com/expo/exact/blob/94b8671f70fe2e25b307a40e7fce66dc27c9f802/docs/contract-for-humans.md#navigation-and-documents",
          "label": "Runtime activation policy"
        },
        "staticAssets": {
          "status": "native",
          "note": "The web deployment pipeline publishes the compiled web root and content-addressed assets.",
          "url": "https://github.com/expo/exact/blob/94b8671f70fe2e25b307a40e7fce66dc27c9f802/scripts/deploy.mjs"
        },
        "metadata": {
          "status": "native",
          "note": "Contract head declares title, description, canonical, image, robots, and selected error status values. This is a smaller surface than the full Next.js Metadata object.",
          "url": "https://github.com/expo/exact/blob/94b8671f70fe2e25b307a40e7fce66dc27c9f802/docs/contract-for-humans.md#navigation-and-documents",
          "label": "Focused document-head API",
          "assessment": {
            "label": "Focused document-head API",
            "summary": "A compact declarative head surface with active-tree inheritance, rather than the breadth of a general metadata object.",
            "strengths": [
              "Inner active declarations override scalar fields without losing unspecified site defaults.",
              "The reviewed corpus binds metadata to loaded records and route parameters."
            ],
            "tradeoffs": [
              "The documented head surface names title, description, canonical, image, robots, and selected status values.",
              "General clearing, title templates, and generated SEO assets have not been established in this review."
            ]
          }
        },
        "dynamicMetadata": {
          "status": "native",
          "note": "The document corpus binds head title and description to a loaded Post resource and canonical to route parameters.",
          "url": "https://github.com/expo/exact/blob/94b8671f70fe2e25b307a40e7fce66dc27c9f802/contract/corpus/document.contract"
        },
        "metadataInheritance": {
          "status": "native",
          "note": "The innermost active head wins field by field. A route inherits the site image when it does not set an image; inactive navigation entries do not contribute.",
          "url": "https://github.com/expo/exact/blob/94b8671f70fe2e25b307a40e7fce66dc27c9f802/contract/corpus/document.contract",
          "label": "Active head hierarchy"
        },
        "metadataOverrides": {
          "status": "native",
          "note": "An inner head replaces declared scalar fields while retaining omitted outer fields. The reviewed source does not establish nested social-object merging or a general clear API.",
          "url": "https://github.com/expo/exact/blob/94b8671f70fe2e25b307a40e7fce66dc27c9f802/contract/cli/tests/it/document.rs",
          "label": "Scalar field overrides"
        },
        "titleTemplates": {
          "status": "undocumented",
          "note": "Innermost head fields override ancestors; an inherited title-template/absolute-title API is not established.",
          "url": "https://github.com/expo/exact/blob/94b8671f70fe2e25b307a40e7fce66dc27c9f802/docs/contract-for-humans.md#navigation-and-documents"
        },
        "socialImages": {
          "status": "undocumented",
          "note": "head.image selects a social image URL; a generated social-card renderer is not established.",
          "url": "https://github.com/expo/exact/blob/94b8671f70fe2e25b307a40e7fce66dc27c9f802/docs/contract-for-humans.md#navigation-and-documents"
        },
        "sitemaps": {
          "status": "undocumented",
          "note": "Route/page policies are documented; automatic crawler XML sitemap generation is not established.",
          "url": "https://github.com/expo/exact/blob/94b8671f70fe2e25b307a40e7fce66dc27c9f802/docs/contract-for-humans.md#navigation-and-documents"
        },
        "robots": {
          "status": "undocumented",
          "note": "head.robots controls document robot metadata. A generated robots.txt directive API is not established.",
          "url": "https://github.com/expo/exact/blob/94b8671f70fe2e25b307a40e7fce66dc27c9f802/docs/contract-for-humans.md#navigation-and-documents",
          "label": "Document robots field"
        },
        "markdown": {
          "status": "native",
          "note": "markup=\"markdown\" renders Markdown on web and Apple hosts. Linux displays raw source.",
          "url": "https://github.com/expo/exact/blob/94b8671f70fe2e25b307a40e7fce66dc27c9f802/docs/contract-for-humans.md#graphics-and-media",
          "label": "Host-dependent Markdown"
        },
        "collections": {
          "status": "undocumented",
          "note": "Resource shapes validate data, but a content collection loader/frontmatter/query registry is not established.",
          "url": "https://github.com/expo/exact/blob/94b8671f70fe2e25b307a40e7fce66dc27c9f802/docs/contract-for-humans.md#resources-and-mutations"
        },
        "draftMode": {
          "status": "undocumented",
          "note": "The reviewed page policies do not establish authenticated editorial draft preview/cache bypass.",
          "url": "https://github.com/expo/exact/blob/94b8671f70fe2e25b307a40e7fce66dc27c9f802/docs/contract-for-humans.md#navigation-and-documents"
        },
        "translations": {
          "status": "native",
          "note": "strings/<locale>.json and t() provide compile-checked keys and placeholders, with locale fallback to the base table.",
          "url": "https://github.com/expo/exact/blob/94b8671f70fe2e25b307a40e7fce66dc27c9f802/docs/contract-for-humans.md#platform-facts-and-localization"
        },
        "localeRouting": {
          "status": "undocumented",
          "note": "Translation catalogs and locale facts are documented; locale URL negotiation and routing are not established.",
          "url": "https://github.com/expo/exact/blob/94b8671f70fe2e25b307a40e7fce66dc27c9f802/docs/contract-for-humans.md#platform-facts-and-localization"
        },
        "localeFormatting": {
          "status": "partial",
          "note": "The reviewed formatDate, formatTime, and formatNumber helpers use en-US regardless of the viewer's locale.",
          "url": "https://github.com/expo/exact/blob/94b8671f70fe2e25b307a40e7fce66dc27c9f802/docs/contract-for-humans.md#platform-facts-and-localization",
          "label": "Fixed en-US",
          "reviewedOn": "2026-11-10"
        },
        "auth": {
          "status": "partial",
          "note": "Data modules can request OAuth/keychain capabilities on supporting hosts; account/session identity logic remains application-owned.",
          "url": "https://github.com/expo/exact/blob/94b8671f70fe2e25b307a40e7fce66dc27c9f802/docs/contract-for-humans.md#typescript-data-modules",
          "label": "Granted host capabilities",
          "reviewedOn": "2026-11-10"
        },
        "csp": {
          "status": "undocumented",
          "note": "The reviewed generated web/document pipeline does not establish a coordinated CSP nonce/hash API.",
          "url": "https://github.com/expo/exact/blob/94b8671f70fe2e25b307a40e7fce66dc27c9f802/docs/contract-for-humans.md#navigation-and-documents"
        },
        "cspNonce": {
          "status": "undocumented",
          "note": "The reviewed security/rendering API does not establish coordinated per-response CSP nonces for generated scripts and styles. Hash-based CSP and application-authored headers are different mechanisms.",
          "url": "https://github.com/expo/exact/blob/94b8671f70fe2e25b307a40e7fce66dc27c9f802/docs/contract-for-humans.md#navigation-and-documents",
          "reviewedOn": "2026-11-11"
        },
        "csrf": {
          "status": "undocumented",
          "note": "The REST example has app-authored authentication/HTTP handling; Exact-wide CSRF token/origin enforcement is not established.",
          "url": "https://github.com/expo/exact/blob/94b8671f70fe2e25b307a40e7fce66dc27c9f802/docs/patterns/rest/server.ts"
        },
        "environment": {
          "status": "partial",
          "note": "Data modules declare allowed capabilities. Applications must keep server secrets outside client-executable modules and serialized data.",
          "url": "https://github.com/expo/exact/blob/94b8671f70fe2e25b307a40e7fce66dc27c9f802/docs/contract-for-humans.md#typescript-data-modules",
          "label": "Capability grants",
          "reviewedOn": "2026-11-10"
        },
        "types": {
          "status": "native",
          "note": "Contract compiles through syntax, types, analysis, and lowering; diagnostics identify source ranges. This is its own typed language, not TSX.",
          "url": "https://github.com/expo/exact/blob/94b8671f70fe2e25b307a40e7fce66dc27c9f802/README.md",
          "label": "Contract compiler"
        },
        "hmr": {
          "status": "native",
          "note": "Development supports live plan/asset changes and TypeScript/Rust logic replacement; production update constraints differ.",
          "url": "https://github.com/expo/exact/blob/94b8671f70fe2e25b307a40e7fce66dc27c9f802/README.md#what-works-today-and-what-doesnt-yet"
        },
        "cli": {
          "status": "native",
          "note": "contract build and scripts/agent.mjs provide build, diagnostics, and cross-host driver commands.",
          "url": "https://github.com/expo/exact/blob/94b8671f70fe2e25b307a40e7fce66dc27c9f802/README.md"
        },
        "bundleAnalysis": {
          "status": "partial",
          "note": "build --json, symbols, and plan/source maps inspect compiled artifacts. They are not a production JS module-size visualization.",
          "url": "https://github.com/expo/exact/blob/94b8671f70fe2e25b307a40e7fce66dc27c9f802/docs/contract-for-humans.md#testing-diagnostics-and-delivery",
          "label": "Plan inspection",
          "reviewedOn": "2026-11-10"
        },
        "unitTests": {
          "status": "partial",
          "note": "Authored Contract tests exercise built app interactions through a driver; isolated component-unit harnesses are not established.",
          "url": "https://github.com/expo/exact/blob/94b8671f70fe2e25b307a40e7fce66dc27c9f802/docs/contract-for-humans.md#testing-diagnostics-and-delivery",
          "label": "Contract interaction tests",
          "reviewedOn": "2026-11-10"
        },
        "e2eTests": {
          "status": "native",
          "note": "The host driver exposes tree, screenshot, tap, type, and state operations. This is an application-driving protocol, not a bundled Playwright test suite.",
          "url": "https://github.com/expo/exact/blob/94b8671f70fe2e25b307a40e7fce66dc27c9f802/README.md",
          "label": "Agent driver"
        },
        "observability": {
          "status": "partial",
          "note": "Drivers expose state/layout/resource logs and source maps for diagnosis. Production metrics/tracing exporters are not established.",
          "url": "https://github.com/expo/exact/blob/94b8671f70fe2e25b307a40e7fce66dc27c9f802/docs/contract-for-humans.md#testing-diagnostics-and-delivery",
          "label": "Driver diagnostics",
          "reviewedOn": "2026-11-10"
        },
        "errorHandling": {
          "status": "partial",
          "note": "Resource failures expose structured states that apps render as fallback UI. A general exception-catching component boundary is not established.",
          "url": "https://github.com/expo/exact/blob/94b8671f70fe2e25b307a40e7fce66dc27c9f802/docs/contract-for-humans.md#resources-and-mutations",
          "label": "Resource failure UI",
          "reviewedOn": "2026-11-10"
        },
        "serverHosting": {
          "status": "partial",
          "note": "The Rust web path supports per-request prerendering; production hosting/routing requires an application serving setup.",
          "url": "https://github.com/expo/exact/blob/94b8671f70fe2e25b307a40e7fce66dc27c9f802/README.md#what-works-today-and-what-doesnt-yet",
          "label": "Rust prerender host",
          "reviewedOn": "2026-11-10"
        },
        "staticHosting": {
          "status": "native",
          "note": "The web-root deployment path publishes build-time web output; runtime data services still require their own backend.",
          "url": "https://github.com/expo/exact/blob/94b8671f70fe2e25b307a40e7fce66dc27c9f802/scripts/deploy.mjs"
        },
        "containers": {
          "status": "undocumented",
          "note": "The reviewed delivery script publishes web/native artifacts; a maintained server-container workflow is not established.",
          "url": "https://github.com/expo/exact/blob/94b8671f70fe2e25b307a40e7fce66dc27c9f802/scripts/deploy.mjs"
        },
        "edgeHosting": {
          "status": "undocumented",
          "note": "Publishing a web root is documented; an edge worker SSR adapter is not established.",
          "url": "https://github.com/expo/exact/blob/94b8671f70fe2e25b307a40e7fce66dc27c9f802/scripts/deploy.mjs"
        },
        "orm": {
          "status": "undocumented",
          "note": "The reviewed framework documentation does not establish an owned orm / query builder API. Host libraries and application integrations may provide it.",
          "url": "https://github.com/expo/exact"
        },
        "migrations": {
          "status": "undocumented",
          "note": "The reviewed framework documentation does not establish an owned schema migrations API. Host libraries and application integrations may provide it.",
          "url": "https://github.com/expo/exact"
        },
        "transactions": {
          "status": "undocumented",
          "note": "The reviewed framework documentation does not establish an owned transactions API. Host libraries and application integrations may provide it.",
          "url": "https://github.com/expo/exact"
        },
        "jobs": {
          "status": "undocumented",
          "note": "The reviewed framework documentation does not establish an owned background jobs API. Host libraries and application integrations may provide it.",
          "url": "https://github.com/expo/exact"
        },
        "mail": {
          "status": "undocumented",
          "note": "The reviewed framework documentation does not establish an owned email API. Host libraries and application integrations may provide it.",
          "url": "https://github.com/expo/exact"
        },
        "uploads": {
          "status": "undocumented",
          "note": "The reviewed framework documentation does not establish an owned file uploads & storage API. Host libraries and application integrations may provide it.",
          "url": "https://github.com/expo/exact"
        },
        "realtime": {
          "status": "undocumented",
          "note": "The reviewed framework documentation does not establish an owned real-time delivery API. Host libraries and application integrations may provide it.",
          "url": "https://github.com/expo/exact"
        },
        "xssEscaping": {
          "status": "undocumented",
          "note": "The linked security API review does not establish the specific output escaping contract defined here. This is a bounded documentation finding, not proof of absence; generic hooks or application-authored code are not counted as an owned implementation.",
          "url": "https://github.com/expo/exact/blob/94b8671f70fe2e25b307a40e7fce66dc27c9f802/docs/contract-for-humans.md#navigation-and-documents",
          "reviewedOn": "2026-11-11"
        },
        "htmlSanitization": {
          "status": "undocumented",
          "note": "The linked security API review does not establish the specific html sanitization contract defined here. This is a bounded documentation finding, not proof of absence; generic hooks or application-authored code are not counted as an owned implementation.",
          "url": "https://github.com/expo/exact/blob/94b8671f70fe2e25b307a40e7fce66dc27c9f802/docs/contract-for-humans.md#navigation-and-documents",
          "reviewedOn": "2026-11-11"
        },
        "authorization": {
          "status": "undocumented",
          "note": "The linked security API review does not establish the specific authorization policies contract defined here. This is a bounded documentation finding, not proof of absence; generic hooks or application-authored code are not counted as an owned implementation.",
          "url": "https://github.com/expo/exact/blob/94b8671f70fe2e25b307a40e7fce66dc27c9f802/docs/contract-for-humans.md#navigation-and-documents",
          "reviewedOn": "2026-11-11"
        },
        "rateLimiting": {
          "status": "undocumented",
          "note": "The linked security API review does not establish the specific rate limiting contract defined here. This is a bounded documentation finding, not proof of absence; generic hooks or application-authored code are not counted as an owned implementation.",
          "url": "https://github.com/expo/exact/blob/94b8671f70fe2e25b307a40e7fce66dc27c9f802/docs/contract-for-humans.md#navigation-and-documents",
          "reviewedOn": "2026-11-11"
        },
        "progressiveEnhancement": {
          "status": "undocumented",
          "note": "The linked server API review does not establish the specific progressive forms contract defined here. This is a bounded documentation finding, not proof of absence; generic hooks or application-authored code are not counted as an owned implementation.",
          "url": "https://github.com/expo/exact/blob/94b8671f70fe2e25b307a40e7fce66dc27c9f802/docs/contract-for-humans.md#input-and-interaction",
          "reviewedOn": "2026-11-11"
        },
        "optimisticUi": {
          "status": "native",
          "note": "The data module can export an overlay for a resource to show a pending write before its mutation reply; refreshes re-reads confirmed data. The application defines the overlay and domain-error policy.",
          "url": "https://github.com/expo/exact/blob/94b8671f70fe2e25b307a40e7fce66dc27c9f802/docs/contract-for-agents.md#optimistic-writes-the-overlay",
          "reviewedOn": "2026-11-11",
          "label": "Resource overlay"
        },
        "requestCancellation": {
          "status": "undocumented",
          "note": "The linked data API review does not establish the specific stale request handling contract defined here. This is a bounded documentation finding, not proof of absence; generic hooks or application-authored code are not counted as an owned implementation.",
          "url": "https://github.com/expo/exact/blob/94b8671f70fe2e25b307a40e7fce66dc27c9f802/docs/contract-for-humans.md#resources-and-mutations",
          "reviewedOn": "2026-11-11"
        },
        "typedLinks": {
          "status": "partial",
          "note": "The guide documents named routes and path(name, params) construction, but does not establish compile-time checks of every destination name and required URL parameter. A path helper alone does not meet the typed-link contract.",
          "url": "https://github.com/expo/exact/blob/94b8671f70fe2e25b307a40e7fce66dc27c9f802/docs/contract-for-humans.md#navigation-and-documents",
          "reviewedOn": "2026-11-11",
          "label": "Named path helper"
        },
        "searchParams": {
          "status": "undocumented",
          "note": "The linked routing API review does not establish the specific validated url state contract defined here. This is a bounded documentation finding, not proof of absence; generic hooks or application-authored code are not counted as an owned implementation.",
          "url": "https://github.com/expo/exact/blob/94b8671f70fe2e25b307a40e7fce66dc27c9f802/docs/contract-for-humans.md#navigation-and-documents",
          "reviewedOn": "2026-11-11"
        },
        "stateRestoration": {
          "status": "native",
          "note": "Contract navigation stacks retain covered screens mounted with their state. This establishes in-session retained screens, not durable restoration after reload, process restart or eviction.",
          "url": "https://github.com/expo/exact/blob/94b8671f70fe2e25b307a40e7fce66dc27c9f802/docs/contract-for-humans.md#navigation-and-documents",
          "reviewedOn": "2026-11-11",
          "label": "Retained route stacks"
        },
        "scrollRestoration": {
          "status": "undocumented",
          "note": "The linked routing API review does not establish the specific scroll restoration contract defined here. This is a bounded documentation finding, not proof of absence; generic hooks or application-authored code are not counted as an owned implementation.",
          "url": "https://github.com/expo/exact/blob/94b8671f70fe2e25b307a40e7fce66dc27c9f802/docs/contract-for-humans.md#navigation-and-documents",
          "reviewedOn": "2026-11-11"
        },
        "navigationBlocking": {
          "status": "undocumented",
          "note": "The linked routing API review does not establish the specific unsaved-change guards contract defined here. This is a bounded documentation finding, not proof of absence; generic hooks or application-authored code are not counted as an owned implementation.",
          "url": "https://github.com/expo/exact/blob/94b8671f70fe2e25b307a40e7fce66dc27c9f802/docs/contract-for-humans.md#navigation-and-documents",
          "reviewedOn": "2026-11-11"
        },
        "navigationAccessibility": {
          "status": "undocumented",
          "note": "Contract exposes roles, accessible names and focus commands, but the reviewed navigation guide does not establish automatic browser route announcements/focus reset. Native platform accessibility mapping is a different claim.",
          "url": "https://github.com/expo/exact/blob/94b8671f70fe2e25b307a40e7fce66dc27c9f802/docs/contract-for-humans.md#navigation-and-documents",
          "reviewedOn": "2026-11-11"
        },
        "a11yChecks": {
          "status": "undocumented",
          "note": "The linked client rendering API review does not establish the specific accessibility checks contract defined here. This is a bounded documentation finding, not proof of absence; generic hooks or application-authored code are not counted as an owned implementation.",
          "url": "https://github.com/expo/exact/blob/94b8671f70fe2e25b307a40e7fce66dc27c9f802/README.md#what-works-today-and-what-doesnt-yet",
          "reviewedOn": "2026-11-11"
        },
        "lazyActivation": {
          "status": "undocumented",
          "note": "The linked rendering API review does not establish the specific deferred activation contract defined here. This is a bounded documentation finding, not proof of absence; generic hooks or application-authored code are not counted as an owned implementation.",
          "url": "https://github.com/expo/exact/blob/94b8671f70fe2e25b307a40e7fce66dc27c9f802/README.md#what-works-today-and-what-doesnt-yet",
          "reviewedOn": "2026-11-11"
        },
        "codeSplitting": {
          "status": "undocumented",
          "note": "The linked rendering API review does not establish the specific route / island splitting contract defined here. This is a bounded documentation finding, not proof of absence; generic hooks or application-authored code are not counted as an owned implementation.",
          "url": "https://github.com/expo/exact/blob/94b8671f70fe2e25b307a40e7fce66dc27c9f802/README.md#what-works-today-and-what-doesnt-yet",
          "reviewedOn": "2026-11-11"
        },
        "offline": {
          "status": "undocumented",
          "note": "The linked deployment API review does not establish the specific offline integration contract defined here. This is a bounded documentation finding, not proof of absence; generic hooks or application-authored code are not counted as an owned implementation.",
          "url": "https://github.com/expo/exact/blob/94b8671f70fe2e25b307a40e7fce66dc27c9f802/README.md#what-works-today-and-what-doesnt-yet",
          "reviewedOn": "2026-11-11"
        },
        "scheduling": {
          "status": "undocumented",
          "note": "The linked backend API review does not establish the specific scheduled tasks contract defined here. This is a bounded documentation finding, not proof of absence; generic hooks or application-authored code are not counted as an owned implementation.",
          "url": "https://github.com/expo/exact",
          "reviewedOn": "2026-11-11"
        },
        "notifications": {
          "status": "undocumented",
          "note": "The linked backend API review does not establish the specific multi-channel notifications contract defined here. This is a bounded documentation finding, not proof of absence; generic hooks or application-authored code are not counted as an owned implementation.",
          "url": "https://github.com/expo/exact",
          "reviewedOn": "2026-11-11"
        },
        "searchIndex": {
          "status": "undocumented",
          "note": "The linked backend API review does not establish the specific search indexing contract defined here. This is a bounded documentation finding, not proof of absence; generic hooks or application-authored code are not counted as an owned implementation.",
          "url": "https://github.com/expo/exact",
          "reviewedOn": "2026-11-11"
        },
        "fieldEncryption": {
          "status": "undocumented",
          "note": "The linked database API review does not establish the specific encrypted model fields contract defined here. This is a bounded documentation finding, not proof of absence; generic hooks or application-authored code are not counted as an owned implementation.",
          "url": "https://github.com/expo/exact",
          "reviewedOn": "2026-11-11"
        },
        "httpTests": {
          "status": "undocumented",
          "note": "The linked testing API review does not establish the specific http integration tests contract defined here. This is a bounded documentation finding, not proof of absence; generic hooks or application-authored code are not counted as an owned implementation.",
          "url": "https://github.com/expo/exact/blob/94b8671f70fe2e25b307a40e7fce66dc27c9f802/docs/contract-for-humans.md#testing-diagnostics-and-delivery",
          "reviewedOn": "2026-11-11"
        }
      }
    },
    {
      "id": "go-html-template",
      "label": "Go html/template",
      "kind": "Template engine",
      "logo": "logos/go-html-template.svg",
      "color": "#00add8",
      "scope": "Standalone templating API; adding a host framework can provide separate application features.",
      "reviewedOn": "2026-11-10",
      "updatedOn": "2026-11-11",
      "capabilities": {
        "ssr": {
          "status": "native",
          "note": "Generates HTML from a template and supplied values on the server.",
          "url": "https://pkg.go.dev/html/template"
        },
        "streaming": {
          "status": "partial",
          "note": "Execute writes incrementally to an io.Writer; execution errors may leave partial output. HTTP flush policy and Suspense are not provided.",
          "url": "https://pkg.go.dev/html/template",
          "label": "io.Writer",
          "reviewedOn": "2026-11-10"
        },
        "suspense": {
          "status": "scope",
          "note": "The reviewed rendering API has no pending-UI/replacement protocol; the host application would need to provide one.",
          "url": "https://pkg.go.dev/html/template"
        },
        "client": {
          "status": "scope",
          "note": "This review covers the standalone template API. Application routing, client activation, site generation, and server-function transports belong to the host application or an additional framework.",
          "url": "https://pkg.go.dev/html/template"
        },
        "ssg": {
          "status": "scope",
          "note": "This review covers the standalone template API. Application routing, client activation, site generation, and server-function transports belong to the host application or an additional framework.",
          "url": "https://pkg.go.dev/html/template"
        },
        "csr": {
          "status": "scope",
          "note": "This review covers the standalone template API. Application routing, client activation, site generation, and server-function transports belong to the host application or an additional framework.",
          "url": "https://pkg.go.dev/html/template"
        },
        "serverOnly": {
          "status": "native",
          "note": "The server evaluates templates and sends rendered output rather than the renderer implementation. This is not React Server Components.",
          "url": "https://pkg.go.dev/html/template",
          "label": "Server templates"
        },
        "partialRendering": {
          "status": "scope",
          "note": "This review covers the standalone template API. Application routing, client activation, site generation, and server-function transports belong to the host application or an additional framework.",
          "url": "https://pkg.go.dev/html/template"
        },
        "routing": {
          "status": "scope",
          "note": "This review covers the standalone template API. Application routing, client activation, site generation, and server-function transports belong to the host application or an additional framework.",
          "url": "https://pkg.go.dev/html/template"
        },
        "layouts": {
          "status": "scope",
          "note": "This review covers the standalone template API. Application routing, client activation, site generation, and server-function transports belong to the host application or an additional framework.",
          "url": "https://pkg.go.dev/html/template"
        },
        "dynamicRoutes": {
          "status": "scope",
          "note": "This review covers the standalone template API. Application routing, client activation, site generation, and server-function transports belong to the host application or an additional framework.",
          "url": "https://pkg.go.dev/html/template"
        },
        "parallelRoutes": {
          "status": "scope",
          "note": "This review covers the standalone template API. Application routing, client activation, site generation, and server-function transports belong to the host application or an additional framework.",
          "url": "https://pkg.go.dev/html/template"
        },
        "interceptedRoutes": {
          "status": "scope",
          "note": "This review covers the standalone template API. Application routing, client activation, site generation, and server-function transports belong to the host application or an additional framework.",
          "url": "https://pkg.go.dev/html/template"
        },
        "prefetch": {
          "status": "scope",
          "note": "This review covers the standalone template API. Application routing, client activation, site generation, and server-function transports belong to the host application or an additional framework.",
          "url": "https://pkg.go.dev/html/template"
        },
        "softNavigation": {
          "status": "scope",
          "note": "This standalone template/runtime renders content; navigation and page-transition lifecycle belong to a browser router or host application. Compatibility with a generic JavaScript library is not a built-in integration.",
          "url": "https://pkg.go.dev/html/template",
          "reviewedOn": "2026-11-11"
        },
        "viewTransitions": {
          "status": "scope",
          "note": "This standalone template/runtime renders content; navigation and page-transition lifecycle belong to a browser router or host application. Compatibility with a generic JavaScript library is not a built-in integration.",
          "url": "https://pkg.go.dev/html/template",
          "reviewedOn": "2026-11-11"
        },
        "redirects": {
          "status": "scope",
          "note": "This review covers the standalone template API. Application routing, client activation, site generation, and server-function transports belong to the host application or an additional framework.",
          "url": "https://pkg.go.dev/html/template"
        },
        "serverData": {
          "status": "scope",
          "note": "This API consumes supplied template values; application data loading happens outside it.",
          "url": "https://pkg.go.dev/html/template"
        },
        "clientData": {
          "status": "scope",
          "note": "Browser query lifecycle/cache APIs belong to a client library or application framework.",
          "url": "https://pkg.go.dev/html/template"
        },
        "requestDedupe": {
          "status": "scope",
          "note": "Template/compilation caching is distinct from request-scoped application data deduplication.",
          "url": "https://pkg.go.dev/html/template"
        },
        "persistentCache": {
          "status": "scope",
          "note": "Retaining application data or rendered pages across requests belongs to the host cache.",
          "url": "https://pkg.go.dev/html/template"
        },
        "invalidation": {
          "status": "scope",
          "note": "Application data/page invalidation belongs to the host; recompiling a template is a different cache boundary.",
          "url": "https://pkg.go.dev/html/template"
        },
        "isr": {
          "status": "scope",
          "note": "Regenerating deployed pages requires a host page cache/export pipeline.",
          "url": "https://pkg.go.dev/html/template"
        },
        "apiRoutes": {
          "status": "scope",
          "note": "This review covers the standalone template API. Application routing, client activation, site generation, and server-function transports belong to the host application or an additional framework.",
          "url": "https://pkg.go.dev/html/template"
        },
        "actions": {
          "status": "scope",
          "note": "This review covers the standalone template API. Application routing, client activation, site generation, and server-function transports belong to the host application or an additional framework.",
          "url": "https://pkg.go.dev/html/template"
        },
        "forms": {
          "status": "scope",
          "note": "Templates can emit form markup; submission, validation, and feedback policy belong to the host application.",
          "url": "https://pkg.go.dev/html/template"
        },
        "middleware": {
          "status": "scope",
          "note": "This review covers the standalone template API. Application routing, client activation, site generation, and server-function transports belong to the host application or an additional framework.",
          "url": "https://pkg.go.dev/html/template"
        },
        "cookies": {
          "status": "scope",
          "note": "This review covers the standalone template API. Application routing, client activation, site generation, and server-function transports belong to the host application or an additional framework.",
          "url": "https://pkg.go.dev/html/template"
        },
        "cssModules": {
          "status": "scope",
          "note": "CSS class-name compilation is a separate asset-build concern.",
          "url": "https://pkg.go.dev/html/template"
        },
        "scopedCss": {
          "status": "scope",
          "note": "The renderer emits authored classes/styles; component-local CSS selector rewriting is a separate build concern.",
          "url": "https://pkg.go.dev/html/template"
        },
        "tailwind": {
          "status": "scope",
          "note": "Tailwind can process authored templates through application configuration; the template renderer does not own that build.",
          "url": "https://pkg.go.dev/html/template"
        },
        "cssInJs": {
          "status": "scope",
          "note": "Runtime CSS-in-JS compilation is outside this server template API.",
          "url": "https://pkg.go.dev/html/template"
        },
        "images": {
          "status": "scope",
          "note": "Templates emit image markup; image resizing/conversion requires a separate asset pipeline.",
          "url": "https://pkg.go.dev/html/template"
        },
        "fonts": {
          "status": "scope",
          "note": "Font downloading, subsetting, and fallback optimization require a separate asset pipeline.",
          "url": "https://pkg.go.dev/html/template"
        },
        "scripts": {
          "status": "scope",
          "note": "Templates emit script markup; script scheduling and lifecycle policy belong to the host application.",
          "url": "https://pkg.go.dev/html/template"
        },
        "staticAssets": {
          "status": "scope",
          "note": "Serving files and assigning cache headers belong to the host web server.",
          "url": "https://pkg.go.dev/html/template"
        },
        "metadata": {
          "status": "scope",
          "note": "Head tags can be templated directly; there is no structured metadata registry in the reviewed standalone API.",
          "url": "https://pkg.go.dev/html/template"
        },
        "dynamicMetadata": {
          "status": "scope",
          "note": "Supplied values can populate head tags; request data loading and metadata composition remain application-owned.",
          "url": "https://pkg.go.dev/html/template"
        },
        "metadataInheritance": {
          "status": "scope",
          "note": "Template inheritance/content composition is separate from a metadata-field inheritance contract.",
          "url": "https://pkg.go.dev/html/template"
        },
        "metadataOverrides": {
          "status": "scope",
          "note": "A host head component or template block can override markup; structured field merge/clear rules are application-owned.",
          "url": "https://pkg.go.dev/html/template"
        },
        "titleTemplates": {
          "status": "scope",
          "note": "Titles can use template expressions; ancestor metadata/title-template policy belongs to the application.",
          "url": "https://pkg.go.dev/html/template"
        },
        "socialImages": {
          "status": "scope",
          "note": "Generating social-preview image bytes needs a separate image renderer/service.",
          "url": "https://pkg.go.dev/html/template"
        },
        "sitemaps": {
          "status": "scope",
          "note": "XML can be templated, but route enumeration and a sitemap generator belong to the host.",
          "url": "https://pkg.go.dev/html/template"
        },
        "robots": {
          "status": "scope",
          "note": "Text can be templated, but crawler-document publishing/configuration belongs to the host.",
          "url": "https://pkg.go.dev/html/template"
        },
        "markdown": {
          "status": "scope",
          "note": "This is text/HTML templating; Markdown parsing and content-page integration require another tool.",
          "url": "https://pkg.go.dev/html/template"
        },
        "collections": {
          "status": "scope",
          "note": "The host loads and validates structured content; the template API renders supplied values.",
          "url": "https://pkg.go.dev/html/template"
        },
        "draftMode": {
          "status": "scope",
          "note": "Editorial preview authorization and published-cache bypass belong to the host application.",
          "url": "https://pkg.go.dev/html/template"
        },
        "translations": {
          "status": "scope",
          "note": "Applications can supply translated strings/helpers; the reviewed renderer does not supply message catalogs.",
          "url": "https://pkg.go.dev/html/template"
        },
        "localeRouting": {
          "status": "scope",
          "note": "This review covers the standalone template API. Application routing, client activation, site generation, and server-function transports belong to the host application or an additional framework.",
          "url": "https://pkg.go.dev/html/template"
        },
        "localeFormatting": {
          "status": "scope",
          "note": "The host supplies locale-aware values or formatter helpers.",
          "url": "https://pkg.go.dev/html/template"
        },
        "auth": {
          "status": "scope",
          "note": "Identity, login, and authorization are responsibilities of the host application.",
          "url": "https://pkg.go.dev/html/template"
        },
        "csp": {
          "status": "scope",
          "note": "The host configures HTTP CSP headers and any nonce values passed into templates.",
          "url": "https://pkg.go.dev/html/template"
        },
        "cspNonce": {
          "status": "scope",
          "note": "The HTTP application must generate a fresh nonce, set its policy and pass the value to authored tags. A template accepting attributes does not coordinate nonces for an application.",
          "url": "https://pkg.go.dev/html/template",
          "reviewedOn": "2026-11-11"
        },
        "csrf": {
          "status": "scope",
          "note": "HTML escaping does not establish CSRF protection; the host must protect mutation endpoints.",
          "url": "https://pkg.go.dev/html/template"
        },
        "environment": {
          "status": "scope",
          "note": "Server/client secret configuration belongs to the host application, not template evaluation.",
          "url": "https://pkg.go.dev/html/template"
        },
        "types": {
          "status": "undocumented",
          "note": "The Go host is statically typed, but html/template resolves template paths/data at execution time. The reviewed template API does not establish compile-time template type checking.",
          "url": "https://pkg.go.dev/html/template",
          "label": "Runtime template checks"
        },
        "hmr": {
          "status": "scope",
          "note": "Application rebuild/browser refresh orchestration is outside the renderer API.",
          "url": "https://pkg.go.dev/html/template"
        },
        "cli": {
          "status": "scope",
          "note": "This renderer integrates with its language/build toolchain rather than supplying an application CLI.",
          "url": "https://pkg.go.dev/html/template"
        },
        "bundleAnalysis": {
          "status": "scope",
          "note": "Production browser/server bundle inspection belongs to the host build toolchain.",
          "url": "https://pkg.go.dev/html/template"
        },
        "unitTests": {
          "status": "scope",
          "note": "Applications test rendered output with their language test runner; no application test framework is supplied here.",
          "url": "https://pkg.go.dev/html/template"
        },
        "e2eTests": {
          "status": "scope",
          "note": "Browser tests run against a host application, not a standalone template.",
          "url": "https://pkg.go.dev/html/template"
        },
        "observability": {
          "status": "scope",
          "note": "Production request traces/metrics/logging belong to the host application.",
          "url": "https://pkg.go.dev/html/template"
        },
        "errorHandling": {
          "status": "scope",
          "note": "Template errors are returned to the caller; application fallback/recovery UI is host-owned.",
          "url": "https://pkg.go.dev/html/template"
        },
        "serverHosting": {
          "status": "scope",
          "note": "This review covers the standalone template API. Application routing, client activation, site generation, and server-function transports belong to the host application or an additional framework.",
          "url": "https://pkg.go.dev/html/template"
        },
        "staticHosting": {
          "status": "scope",
          "note": "This review covers the standalone template API. Application routing, client activation, site generation, and server-function transports belong to the host application or an additional framework.",
          "url": "https://pkg.go.dev/html/template"
        },
        "containers": {
          "status": "scope",
          "note": "This review covers the standalone template API. Application routing, client activation, site generation, and server-function transports belong to the host application or an additional framework.",
          "url": "https://pkg.go.dev/html/template"
        },
        "edgeHosting": {
          "status": "scope",
          "note": "This review covers the standalone template API. Application routing, client activation, site generation, and server-function transports belong to the host application or an additional framework.",
          "url": "https://pkg.go.dev/html/template"
        },
        "orm": {
          "status": "scope",
          "note": "ORM / query builder belongs to a server framework or external service, outside this standalone rendering API. This is not a missing template-rendering capability.",
          "url": "https://pkg.go.dev/html/template"
        },
        "migrations": {
          "status": "scope",
          "note": "Schema migrations belongs to a server framework or external service, outside this standalone rendering API. This is not a missing template-rendering capability.",
          "url": "https://pkg.go.dev/html/template"
        },
        "transactions": {
          "status": "scope",
          "note": "Transactions belongs to a server framework or external service, outside this standalone rendering API. This is not a missing template-rendering capability.",
          "url": "https://pkg.go.dev/html/template"
        },
        "jobs": {
          "status": "scope",
          "note": "Background jobs belongs to a server framework or external service, outside this standalone rendering API. This is not a missing template-rendering capability.",
          "url": "https://pkg.go.dev/html/template"
        },
        "mail": {
          "status": "scope",
          "note": "Email belongs to a server framework or external service, outside this standalone rendering API. This is not a missing template-rendering capability.",
          "url": "https://pkg.go.dev/html/template"
        },
        "uploads": {
          "status": "scope",
          "note": "File uploads & storage belongs to a server framework or external service, outside this standalone rendering API. This is not a missing template-rendering capability.",
          "url": "https://pkg.go.dev/html/template"
        },
        "realtime": {
          "status": "scope",
          "note": "Real-time delivery belongs to a server framework or external service, outside this standalone rendering API. This is not a missing template-rendering capability.",
          "url": "https://pkg.go.dev/html/template"
        },
        "xssEscaping": {
          "status": "native",
          "note": "html/template performs contextual autoescaping for HTML, attributes, URLs, CSS and JavaScript. Trusted template.HTML/JS/URL types bypass parts of that policy; the template author is trusted.",
          "url": "https://pkg.go.dev/html/template#hdr-Contexts",
          "reviewedOn": "2026-11-11"
        },
        "htmlSanitization": {
          "status": "undocumented",
          "note": "The linked security API review does not establish the specific html sanitization contract defined here. This is a bounded documentation finding, not proof of absence; generic hooks or application-authored code are not counted as an owned implementation.",
          "url": "https://pkg.go.dev/html/template",
          "reviewedOn": "2026-11-11"
        },
        "authorization": {
          "status": "scope",
          "note": "Authorization policies requires a host application or specialized integration beyond the reviewed template/runtime API. Emitting markup or using arbitrary host-language libraries does not establish this application-level contract.",
          "url": "https://pkg.go.dev/html/template",
          "reviewedOn": "2026-11-11"
        },
        "rateLimiting": {
          "status": "scope",
          "note": "Rate limiting requires a host application or specialized integration beyond the reviewed template/runtime API. Emitting markup or using arbitrary host-language libraries does not establish this application-level contract.",
          "url": "https://pkg.go.dev/html/template",
          "reviewedOn": "2026-11-11"
        },
        "progressiveEnhancement": {
          "status": "scope",
          "note": "Progressive forms requires a host application or specialized integration beyond the reviewed template/runtime API. Emitting markup or using arbitrary host-language libraries does not establish this application-level contract.",
          "url": "https://pkg.go.dev/html/template",
          "reviewedOn": "2026-11-11"
        },
        "optimisticUi": {
          "status": "scope",
          "note": "Optimistic updates requires a host application or specialized integration beyond the reviewed template/runtime API. Emitting markup or using arbitrary host-language libraries does not establish this application-level contract.",
          "url": "https://pkg.go.dev/html/template",
          "reviewedOn": "2026-11-11"
        },
        "requestCancellation": {
          "status": "scope",
          "note": "Stale request handling requires a host application or specialized integration beyond the reviewed template/runtime API. Emitting markup or using arbitrary host-language libraries does not establish this application-level contract.",
          "url": "https://pkg.go.dev/html/template",
          "reviewedOn": "2026-11-11"
        },
        "typedLinks": {
          "status": "scope",
          "note": "Typed links & parameters requires a host application or specialized integration beyond the reviewed template/runtime API. Emitting markup or using arbitrary host-language libraries does not establish this application-level contract.",
          "url": "https://pkg.go.dev/html/template",
          "reviewedOn": "2026-11-11"
        },
        "searchParams": {
          "status": "scope",
          "note": "Validated URL state requires a host application or specialized integration beyond the reviewed template/runtime API. Emitting markup or using arbitrary host-language libraries does not establish this application-level contract.",
          "url": "https://pkg.go.dev/html/template",
          "reviewedOn": "2026-11-11"
        },
        "stateRestoration": {
          "status": "scope",
          "note": "Navigation state retention requires a host application or specialized integration beyond the reviewed template/runtime API. Emitting markup or using arbitrary host-language libraries does not establish this application-level contract.",
          "url": "https://pkg.go.dev/html/template",
          "reviewedOn": "2026-11-11"
        },
        "scrollRestoration": {
          "status": "scope",
          "note": "Scroll restoration requires a host application or specialized integration beyond the reviewed template/runtime API. Emitting markup or using arbitrary host-language libraries does not establish this application-level contract.",
          "url": "https://pkg.go.dev/html/template",
          "reviewedOn": "2026-11-11"
        },
        "navigationBlocking": {
          "status": "scope",
          "note": "Unsaved-change guards requires a host application or specialized integration beyond the reviewed template/runtime API. Emitting markup or using arbitrary host-language libraries does not establish this application-level contract.",
          "url": "https://pkg.go.dev/html/template",
          "reviewedOn": "2026-11-11"
        },
        "navigationAccessibility": {
          "status": "scope",
          "note": "Accessible navigation requires a host application or specialized integration beyond the reviewed template/runtime API. Emitting markup or using arbitrary host-language libraries does not establish this application-level contract.",
          "url": "https://pkg.go.dev/html/template",
          "reviewedOn": "2026-11-11"
        },
        "a11yChecks": {
          "status": "scope",
          "note": "Accessibility checks requires a host application or specialized integration beyond the reviewed template/runtime API. Emitting markup or using arbitrary host-language libraries does not establish this application-level contract.",
          "url": "https://pkg.go.dev/html/template",
          "reviewedOn": "2026-11-11"
        },
        "lazyActivation": {
          "status": "scope",
          "note": "Deferred activation requires a host application or specialized integration beyond the reviewed template/runtime API. Emitting markup or using arbitrary host-language libraries does not establish this application-level contract.",
          "url": "https://pkg.go.dev/html/template",
          "reviewedOn": "2026-11-11"
        },
        "codeSplitting": {
          "status": "scope",
          "note": "Route / island splitting requires a host application or specialized integration beyond the reviewed template/runtime API. Emitting markup or using arbitrary host-language libraries does not establish this application-level contract.",
          "url": "https://pkg.go.dev/html/template",
          "reviewedOn": "2026-11-11"
        },
        "offline": {
          "status": "scope",
          "note": "Offline integration requires a host application or specialized integration beyond the reviewed template/runtime API. Emitting markup or using arbitrary host-language libraries does not establish this application-level contract.",
          "url": "https://pkg.go.dev/html/template",
          "reviewedOn": "2026-11-11"
        },
        "scheduling": {
          "status": "scope",
          "note": "Scheduled tasks requires a host application or specialized integration beyond the reviewed template/runtime API. Emitting markup or using arbitrary host-language libraries does not establish this application-level contract.",
          "url": "https://pkg.go.dev/html/template",
          "reviewedOn": "2026-11-11"
        },
        "notifications": {
          "status": "scope",
          "note": "Multi-channel notifications requires a host application or specialized integration beyond the reviewed template/runtime API. Emitting markup or using arbitrary host-language libraries does not establish this application-level contract.",
          "url": "https://pkg.go.dev/html/template",
          "reviewedOn": "2026-11-11"
        },
        "searchIndex": {
          "status": "scope",
          "note": "Search indexing requires a host application or specialized integration beyond the reviewed template/runtime API. Emitting markup or using arbitrary host-language libraries does not establish this application-level contract.",
          "url": "https://pkg.go.dev/html/template",
          "reviewedOn": "2026-11-11"
        },
        "fieldEncryption": {
          "status": "scope",
          "note": "Encrypted model fields requires a host application or specialized integration beyond the reviewed template/runtime API. Emitting markup or using arbitrary host-language libraries does not establish this application-level contract.",
          "url": "https://pkg.go.dev/html/template",
          "reviewedOn": "2026-11-11"
        },
        "httpTests": {
          "status": "scope",
          "note": "HTTP integration tests requires a host application or specialized integration beyond the reviewed template/runtime API. Emitting markup or using arbitrary host-language libraries does not establish this application-level contract.",
          "url": "https://pkg.go.dev/html/template",
          "reviewedOn": "2026-11-11"
        }
      }
    },
    {
      "id": "handlebars",
      "label": "Handlebars",
      "kind": "Template engine",
      "logo": "logos/handlebars.svg",
      "color": "var(--fw-fg)",
      "scope": "Standalone templating API; adding a host framework can provide separate application features.",
      "reviewedOn": "2026-11-10",
      "updatedOn": "2026-11-11",
      "capabilities": {
        "ssr": {
          "status": "native",
          "note": "Generates HTML from a template and supplied values on the server.",
          "url": "https://handlebarsjs.com/guide/"
        },
        "streaming": {
          "status": "undocumented",
          "note": "The reviewed compile/template runtime returns rendered strings; no incremental writer or async HTML-stream API is documented.",
          "url": "https://handlebarsjs.com/api-reference/compilation.html"
        },
        "suspense": {
          "status": "scope",
          "note": "The reviewed rendering API has no pending-UI/replacement protocol; the host application would need to provide one.",
          "url": "https://handlebarsjs.com/api-reference/compilation.html"
        },
        "client": {
          "status": "scope",
          "note": "This review covers the standalone template API. Application routing, client activation, site generation, and server-function transports belong to the host application or an additional framework.",
          "url": "https://handlebarsjs.com/guide/"
        },
        "ssg": {
          "status": "scope",
          "note": "This review covers the standalone template API. Application routing, client activation, site generation, and server-function transports belong to the host application or an additional framework.",
          "url": "https://handlebarsjs.com/guide/"
        },
        "csr": {
          "status": "partial",
          "note": "Handlebars compiles/executes templates in the browser, including precompiled templates. Application code must insert/update the resulting HTML.",
          "url": "https://handlebarsjs.com/guide/installation/",
          "label": "Browser templates",
          "reviewedOn": "2026-11-10"
        },
        "serverOnly": {
          "status": "partial",
          "note": "Templates can render on the server or compile for the browser. Server-only dependencies stay private only when the application keeps them out of the client build.",
          "url": "https://handlebarsjs.com/api-reference/compilation.html",
          "label": "Server or browser",
          "reviewedOn": "2026-11-10"
        },
        "partialRendering": {
          "status": "scope",
          "note": "This review covers the standalone template API. Application routing, client activation, site generation, and server-function transports belong to the host application or an additional framework.",
          "url": "https://handlebarsjs.com/guide/"
        },
        "routing": {
          "status": "scope",
          "note": "This review covers the standalone template API. Application routing, client activation, site generation, and server-function transports belong to the host application or an additional framework.",
          "url": "https://handlebarsjs.com/guide/"
        },
        "layouts": {
          "status": "scope",
          "note": "This review covers the standalone template API. Application routing, client activation, site generation, and server-function transports belong to the host application or an additional framework.",
          "url": "https://handlebarsjs.com/guide/"
        },
        "dynamicRoutes": {
          "status": "scope",
          "note": "This review covers the standalone template API. Application routing, client activation, site generation, and server-function transports belong to the host application or an additional framework.",
          "url": "https://handlebarsjs.com/guide/"
        },
        "parallelRoutes": {
          "status": "scope",
          "note": "This review covers the standalone template API. Application routing, client activation, site generation, and server-function transports belong to the host application or an additional framework.",
          "url": "https://handlebarsjs.com/guide/"
        },
        "interceptedRoutes": {
          "status": "scope",
          "note": "This review covers the standalone template API. Application routing, client activation, site generation, and server-function transports belong to the host application or an additional framework.",
          "url": "https://handlebarsjs.com/guide/"
        },
        "prefetch": {
          "status": "scope",
          "note": "This review covers the standalone template API. Application routing, client activation, site generation, and server-function transports belong to the host application or an additional framework.",
          "url": "https://handlebarsjs.com/guide/"
        },
        "softNavigation": {
          "status": "scope",
          "note": "This standalone template/runtime renders content; navigation and page-transition lifecycle belong to a browser router or host application. Compatibility with a generic JavaScript library is not a built-in integration.",
          "url": "https://handlebarsjs.com/guide/",
          "reviewedOn": "2026-11-11"
        },
        "viewTransitions": {
          "status": "scope",
          "note": "This standalone template/runtime renders content; navigation and page-transition lifecycle belong to a browser router or host application. Compatibility with a generic JavaScript library is not a built-in integration.",
          "url": "https://handlebarsjs.com/guide/",
          "reviewedOn": "2026-11-11"
        },
        "redirects": {
          "status": "scope",
          "note": "This review covers the standalone template API. Application routing, client activation, site generation, and server-function transports belong to the host application or an additional framework.",
          "url": "https://handlebarsjs.com/guide/"
        },
        "serverData": {
          "status": "scope",
          "note": "This API consumes supplied template values; application data loading happens outside it.",
          "url": "https://handlebarsjs.com/api-reference/compilation.html"
        },
        "clientData": {
          "status": "scope",
          "note": "Browser query lifecycle/cache APIs belong to a client library or application framework.",
          "url": "https://handlebarsjs.com/api-reference/compilation.html"
        },
        "requestDedupe": {
          "status": "scope",
          "note": "Template/compilation caching is distinct from request-scoped application data deduplication.",
          "url": "https://handlebarsjs.com/api-reference/compilation.html"
        },
        "persistentCache": {
          "status": "scope",
          "note": "Retaining application data or rendered pages across requests belongs to the host cache.",
          "url": "https://handlebarsjs.com/api-reference/compilation.html"
        },
        "invalidation": {
          "status": "scope",
          "note": "Application data/page invalidation belongs to the host; recompiling a template is a different cache boundary.",
          "url": "https://handlebarsjs.com/api-reference/compilation.html"
        },
        "isr": {
          "status": "scope",
          "note": "Regenerating deployed pages requires a host page cache/export pipeline.",
          "url": "https://handlebarsjs.com/api-reference/compilation.html"
        },
        "apiRoutes": {
          "status": "scope",
          "note": "This review covers the standalone template API. Application routing, client activation, site generation, and server-function transports belong to the host application or an additional framework.",
          "url": "https://handlebarsjs.com/guide/"
        },
        "actions": {
          "status": "scope",
          "note": "This review covers the standalone template API. Application routing, client activation, site generation, and server-function transports belong to the host application or an additional framework.",
          "url": "https://handlebarsjs.com/guide/"
        },
        "forms": {
          "status": "scope",
          "note": "Templates can emit form markup; submission, validation, and feedback policy belong to the host application.",
          "url": "https://handlebarsjs.com/api-reference/compilation.html"
        },
        "middleware": {
          "status": "scope",
          "note": "This review covers the standalone template API. Application routing, client activation, site generation, and server-function transports belong to the host application or an additional framework.",
          "url": "https://handlebarsjs.com/guide/"
        },
        "cookies": {
          "status": "scope",
          "note": "This review covers the standalone template API. Application routing, client activation, site generation, and server-function transports belong to the host application or an additional framework.",
          "url": "https://handlebarsjs.com/guide/"
        },
        "cssModules": {
          "status": "scope",
          "note": "CSS class-name compilation is a separate asset-build concern.",
          "url": "https://handlebarsjs.com/api-reference/compilation.html"
        },
        "scopedCss": {
          "status": "scope",
          "note": "The renderer emits authored classes/styles; component-local CSS selector rewriting is a separate build concern.",
          "url": "https://handlebarsjs.com/api-reference/compilation.html"
        },
        "tailwind": {
          "status": "scope",
          "note": "Tailwind can process authored templates through application configuration; the template renderer does not own that build.",
          "url": "https://handlebarsjs.com/api-reference/compilation.html"
        },
        "cssInJs": {
          "status": "scope",
          "note": "Runtime CSS-in-JS compilation is outside this server template API.",
          "url": "https://handlebarsjs.com/api-reference/compilation.html"
        },
        "images": {
          "status": "scope",
          "note": "Templates emit image markup; image resizing/conversion requires a separate asset pipeline.",
          "url": "https://handlebarsjs.com/api-reference/compilation.html"
        },
        "fonts": {
          "status": "scope",
          "note": "Font downloading, subsetting, and fallback optimization require a separate asset pipeline.",
          "url": "https://handlebarsjs.com/api-reference/compilation.html"
        },
        "scripts": {
          "status": "scope",
          "note": "Templates emit script markup; script scheduling and lifecycle policy belong to the host application.",
          "url": "https://handlebarsjs.com/api-reference/compilation.html"
        },
        "staticAssets": {
          "status": "scope",
          "note": "Serving files and assigning cache headers belong to the host web server.",
          "url": "https://handlebarsjs.com/api-reference/compilation.html"
        },
        "metadata": {
          "status": "scope",
          "note": "Head tags can be templated directly; there is no structured metadata registry in the reviewed standalone API.",
          "url": "https://handlebarsjs.com/api-reference/compilation.html"
        },
        "dynamicMetadata": {
          "status": "scope",
          "note": "Supplied values can populate head tags; request data loading and metadata composition remain application-owned.",
          "url": "https://handlebarsjs.com/api-reference/compilation.html"
        },
        "metadataInheritance": {
          "status": "scope",
          "note": "Template inheritance/content composition is separate from a metadata-field inheritance contract.",
          "url": "https://handlebarsjs.com/api-reference/compilation.html"
        },
        "metadataOverrides": {
          "status": "scope",
          "note": "A host head component or template block can override markup; structured field merge/clear rules are application-owned.",
          "url": "https://handlebarsjs.com/api-reference/compilation.html"
        },
        "titleTemplates": {
          "status": "scope",
          "note": "Titles can use template expressions; ancestor metadata/title-template policy belongs to the application.",
          "url": "https://handlebarsjs.com/api-reference/compilation.html"
        },
        "socialImages": {
          "status": "scope",
          "note": "Generating social-preview image bytes needs a separate image renderer/service.",
          "url": "https://handlebarsjs.com/api-reference/compilation.html"
        },
        "sitemaps": {
          "status": "scope",
          "note": "XML can be templated, but route enumeration and a sitemap generator belong to the host.",
          "url": "https://handlebarsjs.com/api-reference/compilation.html"
        },
        "robots": {
          "status": "scope",
          "note": "Text can be templated, but crawler-document publishing/configuration belongs to the host.",
          "url": "https://handlebarsjs.com/api-reference/compilation.html"
        },
        "markdown": {
          "status": "scope",
          "note": "This is text/HTML templating; Markdown parsing and content-page integration require another tool.",
          "url": "https://handlebarsjs.com/api-reference/compilation.html"
        },
        "collections": {
          "status": "scope",
          "note": "The host loads and validates structured content; the template API renders supplied values.",
          "url": "https://handlebarsjs.com/api-reference/compilation.html"
        },
        "draftMode": {
          "status": "scope",
          "note": "Editorial preview authorization and published-cache bypass belong to the host application.",
          "url": "https://handlebarsjs.com/api-reference/compilation.html"
        },
        "translations": {
          "status": "scope",
          "note": "Applications can supply translated strings/helpers; the reviewed renderer does not supply message catalogs.",
          "url": "https://handlebarsjs.com/api-reference/compilation.html"
        },
        "localeRouting": {
          "status": "scope",
          "note": "This review covers the standalone template API. Application routing, client activation, site generation, and server-function transports belong to the host application or an additional framework.",
          "url": "https://handlebarsjs.com/guide/"
        },
        "localeFormatting": {
          "status": "scope",
          "note": "The host supplies locale-aware values or formatter helpers.",
          "url": "https://handlebarsjs.com/api-reference/compilation.html"
        },
        "auth": {
          "status": "scope",
          "note": "Identity, login, and authorization are responsibilities of the host application.",
          "url": "https://handlebarsjs.com/api-reference/compilation.html"
        },
        "csp": {
          "status": "scope",
          "note": "The host configures HTTP CSP headers and any nonce values passed into templates.",
          "url": "https://handlebarsjs.com/api-reference/compilation.html"
        },
        "cspNonce": {
          "status": "scope",
          "note": "The HTTP application must generate a fresh nonce, set its policy and pass the value to authored tags. A template accepting attributes does not coordinate nonces for an application.",
          "url": "https://handlebarsjs.com/api-reference/compilation.html",
          "reviewedOn": "2026-11-11"
        },
        "csrf": {
          "status": "scope",
          "note": "HTML escaping does not establish CSRF protection; the host must protect mutation endpoints.",
          "url": "https://handlebarsjs.com/api-reference/compilation.html"
        },
        "environment": {
          "status": "scope",
          "note": "Server/client secret configuration belongs to the host application, not template evaluation.",
          "url": "https://handlebarsjs.com/api-reference/compilation.html"
        },
        "types": {
          "status": "undocumented",
          "note": "Compilation options validate template syntax and runtime behavior; static types for context-property expressions are not documented.",
          "url": "https://handlebarsjs.com/api-reference/compilation.html"
        },
        "hmr": {
          "status": "scope",
          "note": "Application rebuild/browser refresh orchestration is outside the renderer API.",
          "url": "https://handlebarsjs.com/api-reference/compilation.html"
        },
        "cli": {
          "status": "native",
          "note": "The CLI precompiles templates for runtime-only use. It does not supply an application server or project lifecycle.",
          "url": "https://handlebarsjs.com/guide/installation/precompilation.html",
          "label": "Precompiler CLI"
        },
        "bundleAnalysis": {
          "status": "scope",
          "note": "Production browser/server bundle inspection belongs to the host build toolchain.",
          "url": "https://handlebarsjs.com/api-reference/compilation.html"
        },
        "unitTests": {
          "status": "scope",
          "note": "Applications test rendered output with their language test runner; no application test framework is supplied here.",
          "url": "https://handlebarsjs.com/api-reference/compilation.html"
        },
        "e2eTests": {
          "status": "scope",
          "note": "Browser tests run against a host application, not a standalone template.",
          "url": "https://handlebarsjs.com/api-reference/compilation.html"
        },
        "observability": {
          "status": "scope",
          "note": "Production request traces/metrics/logging belong to the host application.",
          "url": "https://handlebarsjs.com/api-reference/compilation.html"
        },
        "errorHandling": {
          "status": "scope",
          "note": "Template errors are returned to the caller; application fallback/recovery UI is host-owned.",
          "url": "https://handlebarsjs.com/api-reference/compilation.html"
        },
        "serverHosting": {
          "status": "scope",
          "note": "This review covers the standalone template API. Application routing, client activation, site generation, and server-function transports belong to the host application or an additional framework.",
          "url": "https://handlebarsjs.com/guide/"
        },
        "staticHosting": {
          "status": "scope",
          "note": "This review covers the standalone template API. Application routing, client activation, site generation, and server-function transports belong to the host application or an additional framework.",
          "url": "https://handlebarsjs.com/guide/"
        },
        "containers": {
          "status": "scope",
          "note": "This review covers the standalone template API. Application routing, client activation, site generation, and server-function transports belong to the host application or an additional framework.",
          "url": "https://handlebarsjs.com/guide/"
        },
        "edgeHosting": {
          "status": "scope",
          "note": "This review covers the standalone template API. Application routing, client activation, site generation, and server-function transports belong to the host application or an additional framework.",
          "url": "https://handlebarsjs.com/guide/"
        },
        "orm": {
          "status": "scope",
          "note": "ORM / query builder belongs to a server framework or external service, outside this standalone rendering API. This is not a missing template-rendering capability.",
          "url": "https://handlebarsjs.com"
        },
        "migrations": {
          "status": "scope",
          "note": "Schema migrations belongs to a server framework or external service, outside this standalone rendering API. This is not a missing template-rendering capability.",
          "url": "https://handlebarsjs.com"
        },
        "transactions": {
          "status": "scope",
          "note": "Transactions belongs to a server framework or external service, outside this standalone rendering API. This is not a missing template-rendering capability.",
          "url": "https://handlebarsjs.com"
        },
        "jobs": {
          "status": "scope",
          "note": "Background jobs belongs to a server framework or external service, outside this standalone rendering API. This is not a missing template-rendering capability.",
          "url": "https://handlebarsjs.com"
        },
        "mail": {
          "status": "scope",
          "note": "Email belongs to a server framework or external service, outside this standalone rendering API. This is not a missing template-rendering capability.",
          "url": "https://handlebarsjs.com"
        },
        "uploads": {
          "status": "scope",
          "note": "File uploads & storage belongs to a server framework or external service, outside this standalone rendering API. This is not a missing template-rendering capability.",
          "url": "https://handlebarsjs.com"
        },
        "realtime": {
          "status": "scope",
          "note": "Real-time delivery belongs to a server framework or external service, outside this standalone rendering API. This is not a missing template-rendering capability.",
          "url": "https://handlebarsjs.com"
        },
        "xssEscaping": {
          "status": "native",
          "note": "Double-brace expressions HTML-escape values; triple braces and SafeString bypass escaping. HTML escaping alone does not validate URL schemes or safely interpolate executable script/CSS contexts.",
          "url": "https://handlebarsjs.com/guide/expressions.html#html-escaping",
          "reviewedOn": "2026-11-11"
        },
        "htmlSanitization": {
          "status": "undocumented",
          "note": "The linked security API review does not establish the specific html sanitization contract defined here. This is a bounded documentation finding, not proof of absence; generic hooks or application-authored code are not counted as an owned implementation.",
          "url": "https://handlebarsjs.com/api-reference/compilation.html",
          "reviewedOn": "2026-11-11"
        },
        "authorization": {
          "status": "scope",
          "note": "Authorization policies requires a host application or specialized integration beyond the reviewed template/runtime API. Emitting markup or using arbitrary host-language libraries does not establish this application-level contract.",
          "url": "https://handlebarsjs.com/api-reference/compilation.html",
          "reviewedOn": "2026-11-11"
        },
        "rateLimiting": {
          "status": "scope",
          "note": "Rate limiting requires a host application or specialized integration beyond the reviewed template/runtime API. Emitting markup or using arbitrary host-language libraries does not establish this application-level contract.",
          "url": "https://handlebarsjs.com/api-reference/compilation.html",
          "reviewedOn": "2026-11-11"
        },
        "progressiveEnhancement": {
          "status": "scope",
          "note": "Progressive forms requires a host application or specialized integration beyond the reviewed template/runtime API. Emitting markup or using arbitrary host-language libraries does not establish this application-level contract.",
          "url": "https://handlebarsjs.com/api-reference/compilation.html",
          "reviewedOn": "2026-11-11"
        },
        "optimisticUi": {
          "status": "scope",
          "note": "Optimistic updates requires a host application or specialized integration beyond the reviewed template/runtime API. Emitting markup or using arbitrary host-language libraries does not establish this application-level contract.",
          "url": "https://handlebarsjs.com/api-reference/compilation.html",
          "reviewedOn": "2026-11-11"
        },
        "requestCancellation": {
          "status": "scope",
          "note": "Stale request handling requires a host application or specialized integration beyond the reviewed template/runtime API. Emitting markup or using arbitrary host-language libraries does not establish this application-level contract.",
          "url": "https://handlebarsjs.com/api-reference/compilation.html",
          "reviewedOn": "2026-11-11"
        },
        "typedLinks": {
          "status": "scope",
          "note": "Typed links & parameters requires a host application or specialized integration beyond the reviewed template/runtime API. Emitting markup or using arbitrary host-language libraries does not establish this application-level contract.",
          "url": "https://handlebarsjs.com/guide/",
          "reviewedOn": "2026-11-11"
        },
        "searchParams": {
          "status": "scope",
          "note": "Validated URL state requires a host application or specialized integration beyond the reviewed template/runtime API. Emitting markup or using arbitrary host-language libraries does not establish this application-level contract.",
          "url": "https://handlebarsjs.com/guide/",
          "reviewedOn": "2026-11-11"
        },
        "stateRestoration": {
          "status": "scope",
          "note": "Navigation state retention requires a host application or specialized integration beyond the reviewed template/runtime API. Emitting markup or using arbitrary host-language libraries does not establish this application-level contract.",
          "url": "https://handlebarsjs.com/guide/",
          "reviewedOn": "2026-11-11"
        },
        "scrollRestoration": {
          "status": "scope",
          "note": "Scroll restoration requires a host application or specialized integration beyond the reviewed template/runtime API. Emitting markup or using arbitrary host-language libraries does not establish this application-level contract.",
          "url": "https://handlebarsjs.com/guide/",
          "reviewedOn": "2026-11-11"
        },
        "navigationBlocking": {
          "status": "scope",
          "note": "Unsaved-change guards requires a host application or specialized integration beyond the reviewed template/runtime API. Emitting markup or using arbitrary host-language libraries does not establish this application-level contract.",
          "url": "https://handlebarsjs.com/guide/",
          "reviewedOn": "2026-11-11"
        },
        "navigationAccessibility": {
          "status": "scope",
          "note": "Accessible navigation requires a host application or specialized integration beyond the reviewed template/runtime API. Emitting markup or using arbitrary host-language libraries does not establish this application-level contract.",
          "url": "https://handlebarsjs.com/guide/",
          "reviewedOn": "2026-11-11"
        },
        "a11yChecks": {
          "status": "scope",
          "note": "Accessibility checks requires a host application or specialized integration beyond the reviewed template/runtime API. Emitting markup or using arbitrary host-language libraries does not establish this application-level contract.",
          "url": "https://handlebarsjs.com/guide/",
          "reviewedOn": "2026-11-11"
        },
        "lazyActivation": {
          "status": "scope",
          "note": "Deferred activation requires a host application or specialized integration beyond the reviewed template/runtime API. Emitting markup or using arbitrary host-language libraries does not establish this application-level contract.",
          "url": "https://handlebarsjs.com/guide/",
          "reviewedOn": "2026-11-11"
        },
        "codeSplitting": {
          "status": "scope",
          "note": "Route / island splitting requires a host application or specialized integration beyond the reviewed template/runtime API. Emitting markup or using arbitrary host-language libraries does not establish this application-level contract.",
          "url": "https://handlebarsjs.com/guide/",
          "reviewedOn": "2026-11-11"
        },
        "offline": {
          "status": "scope",
          "note": "Offline integration requires a host application or specialized integration beyond the reviewed template/runtime API. Emitting markup or using arbitrary host-language libraries does not establish this application-level contract.",
          "url": "https://handlebarsjs.com/guide/",
          "reviewedOn": "2026-11-11"
        },
        "scheduling": {
          "status": "scope",
          "note": "Scheduled tasks requires a host application or specialized integration beyond the reviewed template/runtime API. Emitting markup or using arbitrary host-language libraries does not establish this application-level contract.",
          "url": "https://handlebarsjs.com",
          "reviewedOn": "2026-11-11"
        },
        "notifications": {
          "status": "scope",
          "note": "Multi-channel notifications requires a host application or specialized integration beyond the reviewed template/runtime API. Emitting markup or using arbitrary host-language libraries does not establish this application-level contract.",
          "url": "https://handlebarsjs.com",
          "reviewedOn": "2026-11-11"
        },
        "searchIndex": {
          "status": "scope",
          "note": "Search indexing requires a host application or specialized integration beyond the reviewed template/runtime API. Emitting markup or using arbitrary host-language libraries does not establish this application-level contract.",
          "url": "https://handlebarsjs.com",
          "reviewedOn": "2026-11-11"
        },
        "fieldEncryption": {
          "status": "scope",
          "note": "Encrypted model fields requires a host application or specialized integration beyond the reviewed template/runtime API. Emitting markup or using arbitrary host-language libraries does not establish this application-level contract.",
          "url": "https://handlebarsjs.com",
          "reviewedOn": "2026-11-11"
        },
        "httpTests": {
          "status": "scope",
          "note": "HTTP integration tests requires a host application or specialized integration beyond the reviewed template/runtime API. Emitting markup or using arbitrary host-language libraries does not establish this application-level contract.",
          "url": "https://handlebarsjs.com/api-reference/compilation.html",
          "reviewedOn": "2026-11-11"
        }
      }
    },
    {
      "id": "jinja2",
      "label": "Jinja2",
      "kind": "Template engine",
      "logo": "logos/jinja2.svg",
      "color": "#7e0c1b",
      "scope": "Standalone templating API; adding a host framework can provide separate application features.",
      "reviewedOn": "2026-11-10",
      "updatedOn": "2026-11-11",
      "capabilities": {
        "ssr": {
          "status": "native",
          "note": "Generates HTML from a template and supplied values on the server.",
          "url": "https://jinja.palletsprojects.com/en/stable/api/"
        },
        "streaming": {
          "status": "native",
          "note": "Template.generate / stream emits rendered fragments; generate_async is also documented. This alone is not an out-of-order Suspense protocol.",
          "url": "https://jinja.palletsprojects.com/en/stable/api/#jinja2.Template.generate"
        },
        "suspense": {
          "status": "scope",
          "note": "The reviewed rendering API has no pending-UI/replacement protocol; the host application would need to provide one.",
          "url": "https://jinja.palletsprojects.com/en/stable/api/"
        },
        "client": {
          "status": "scope",
          "note": "This review covers the standalone template API. Application routing, client activation, site generation, and server-function transports belong to the host application or an additional framework.",
          "url": "https://jinja.palletsprojects.com/en/stable/api/"
        },
        "ssg": {
          "status": "scope",
          "note": "This review covers the standalone template API. Application routing, client activation, site generation, and server-function transports belong to the host application or an additional framework.",
          "url": "https://jinja.palletsprojects.com/en/stable/api/"
        },
        "csr": {
          "status": "scope",
          "note": "This review covers the standalone template API. Application routing, client activation, site generation, and server-function transports belong to the host application or an additional framework.",
          "url": "https://jinja.palletsprojects.com/en/stable/api/"
        },
        "serverOnly": {
          "status": "native",
          "note": "The server evaluates templates and sends rendered output rather than the renderer implementation. This is not React Server Components.",
          "url": "https://jinja.palletsprojects.com/en/stable/api/",
          "label": "Server templates"
        },
        "partialRendering": {
          "status": "scope",
          "note": "This review covers the standalone template API. Application routing, client activation, site generation, and server-function transports belong to the host application or an additional framework.",
          "url": "https://jinja.palletsprojects.com/en/stable/api/"
        },
        "routing": {
          "status": "scope",
          "note": "This review covers the standalone template API. Application routing, client activation, site generation, and server-function transports belong to the host application or an additional framework.",
          "url": "https://jinja.palletsprojects.com/en/stable/api/"
        },
        "layouts": {
          "status": "scope",
          "note": "This review covers the standalone template API. Application routing, client activation, site generation, and server-function transports belong to the host application or an additional framework.",
          "url": "https://jinja.palletsprojects.com/en/stable/api/"
        },
        "dynamicRoutes": {
          "status": "scope",
          "note": "This review covers the standalone template API. Application routing, client activation, site generation, and server-function transports belong to the host application or an additional framework.",
          "url": "https://jinja.palletsprojects.com/en/stable/api/"
        },
        "parallelRoutes": {
          "status": "scope",
          "note": "This review covers the standalone template API. Application routing, client activation, site generation, and server-function transports belong to the host application or an additional framework.",
          "url": "https://jinja.palletsprojects.com/en/stable/api/"
        },
        "interceptedRoutes": {
          "status": "scope",
          "note": "This review covers the standalone template API. Application routing, client activation, site generation, and server-function transports belong to the host application or an additional framework.",
          "url": "https://jinja.palletsprojects.com/en/stable/api/"
        },
        "prefetch": {
          "status": "scope",
          "note": "This review covers the standalone template API. Application routing, client activation, site generation, and server-function transports belong to the host application or an additional framework.",
          "url": "https://jinja.palletsprojects.com/en/stable/api/"
        },
        "softNavigation": {
          "status": "scope",
          "note": "This standalone template/runtime renders content; navigation and page-transition lifecycle belong to a browser router or host application. Compatibility with a generic JavaScript library is not a built-in integration.",
          "url": "https://jinja.palletsprojects.com/en/stable/api/",
          "reviewedOn": "2026-11-11"
        },
        "viewTransitions": {
          "status": "scope",
          "note": "This standalone template/runtime renders content; navigation and page-transition lifecycle belong to a browser router or host application. Compatibility with a generic JavaScript library is not a built-in integration.",
          "url": "https://jinja.palletsprojects.com/en/stable/api/",
          "reviewedOn": "2026-11-11"
        },
        "redirects": {
          "status": "scope",
          "note": "This review covers the standalone template API. Application routing, client activation, site generation, and server-function transports belong to the host application or an additional framework.",
          "url": "https://jinja.palletsprojects.com/en/stable/api/"
        },
        "serverData": {
          "status": "scope",
          "note": "This API consumes supplied template values; application data loading happens outside it.",
          "url": "https://jinja.palletsprojects.com/en/stable/api/"
        },
        "clientData": {
          "status": "scope",
          "note": "Browser query lifecycle/cache APIs belong to a client library or application framework.",
          "url": "https://jinja.palletsprojects.com/en/stable/api/"
        },
        "requestDedupe": {
          "status": "scope",
          "note": "Template/compilation caching is distinct from request-scoped application data deduplication.",
          "url": "https://jinja.palletsprojects.com/en/stable/api/"
        },
        "persistentCache": {
          "status": "partial",
          "note": "The extension documentation shows a user-authored fragment-cache extension backed by cachelib; built-in template bytecode caching is a different cache.",
          "url": "https://jinja.palletsprojects.com/en/stable/extensions/#cache",
          "label": "cachelib recipe",
          "reviewedOn": "2026-11-10"
        },
        "invalidation": {
          "status": "community",
          "note": "A custom cachelib-backed extension can use cachelib’s delete/clear operations. Jinja does not infer page/data dependencies.",
          "url": "https://cachelib.readthedocs.io/en/stable/",
          "label": "cachelib"
        },
        "isr": {
          "status": "scope",
          "note": "Regenerating deployed pages requires a host page cache/export pipeline.",
          "url": "https://jinja.palletsprojects.com/en/stable/api/"
        },
        "apiRoutes": {
          "status": "scope",
          "note": "This review covers the standalone template API. Application routing, client activation, site generation, and server-function transports belong to the host application or an additional framework.",
          "url": "https://jinja.palletsprojects.com/en/stable/api/"
        },
        "actions": {
          "status": "scope",
          "note": "This review covers the standalone template API. Application routing, client activation, site generation, and server-function transports belong to the host application or an additional framework.",
          "url": "https://jinja.palletsprojects.com/en/stable/api/"
        },
        "forms": {
          "status": "scope",
          "note": "Templates can emit form markup; submission, validation, and feedback policy belong to the host application.",
          "url": "https://jinja.palletsprojects.com/en/stable/api/"
        },
        "middleware": {
          "status": "scope",
          "note": "This review covers the standalone template API. Application routing, client activation, site generation, and server-function transports belong to the host application or an additional framework.",
          "url": "https://jinja.palletsprojects.com/en/stable/api/"
        },
        "cookies": {
          "status": "scope",
          "note": "This review covers the standalone template API. Application routing, client activation, site generation, and server-function transports belong to the host application or an additional framework.",
          "url": "https://jinja.palletsprojects.com/en/stable/api/"
        },
        "cssModules": {
          "status": "scope",
          "note": "CSS class-name compilation is a separate asset-build concern.",
          "url": "https://jinja.palletsprojects.com/en/stable/api/"
        },
        "scopedCss": {
          "status": "scope",
          "note": "The renderer emits authored classes/styles; component-local CSS selector rewriting is a separate build concern.",
          "url": "https://jinja.palletsprojects.com/en/stable/api/"
        },
        "tailwind": {
          "status": "scope",
          "note": "Tailwind can process authored templates through application configuration; the template renderer does not own that build.",
          "url": "https://jinja.palletsprojects.com/en/stable/api/"
        },
        "cssInJs": {
          "status": "scope",
          "note": "Runtime CSS-in-JS compilation is outside this server template API.",
          "url": "https://jinja.palletsprojects.com/en/stable/api/"
        },
        "images": {
          "status": "scope",
          "note": "Templates emit image markup; image resizing/conversion requires a separate asset pipeline.",
          "url": "https://jinja.palletsprojects.com/en/stable/api/"
        },
        "fonts": {
          "status": "scope",
          "note": "Font downloading, subsetting, and fallback optimization require a separate asset pipeline.",
          "url": "https://jinja.palletsprojects.com/en/stable/api/"
        },
        "scripts": {
          "status": "scope",
          "note": "Templates emit script markup; script scheduling and lifecycle policy belong to the host application.",
          "url": "https://jinja.palletsprojects.com/en/stable/api/"
        },
        "staticAssets": {
          "status": "scope",
          "note": "Serving files and assigning cache headers belong to the host web server.",
          "url": "https://jinja.palletsprojects.com/en/stable/api/"
        },
        "metadata": {
          "status": "scope",
          "note": "Head tags can be templated directly; there is no structured metadata registry in the reviewed standalone API.",
          "url": "https://jinja.palletsprojects.com/en/stable/api/"
        },
        "dynamicMetadata": {
          "status": "scope",
          "note": "Supplied values can populate head tags; request data loading and metadata composition remain application-owned.",
          "url": "https://jinja.palletsprojects.com/en/stable/api/"
        },
        "metadataInheritance": {
          "status": "scope",
          "note": "Template inheritance/content composition is separate from a metadata-field inheritance contract.",
          "url": "https://jinja.palletsprojects.com/en/stable/api/"
        },
        "metadataOverrides": {
          "status": "scope",
          "note": "A host head component or template block can override markup; structured field merge/clear rules are application-owned.",
          "url": "https://jinja.palletsprojects.com/en/stable/api/"
        },
        "titleTemplates": {
          "status": "scope",
          "note": "Titles can use template expressions; ancestor metadata/title-template policy belongs to the application.",
          "url": "https://jinja.palletsprojects.com/en/stable/api/"
        },
        "socialImages": {
          "status": "scope",
          "note": "Generating social-preview image bytes needs a separate image renderer/service.",
          "url": "https://jinja.palletsprojects.com/en/stable/api/"
        },
        "sitemaps": {
          "status": "scope",
          "note": "XML can be templated, but route enumeration and a sitemap generator belong to the host.",
          "url": "https://jinja.palletsprojects.com/en/stable/api/"
        },
        "robots": {
          "status": "scope",
          "note": "Text can be templated, but crawler-document publishing/configuration belongs to the host.",
          "url": "https://jinja.palletsprojects.com/en/stable/api/"
        },
        "markdown": {
          "status": "scope",
          "note": "This is text/HTML templating; Markdown parsing and content-page integration require another tool.",
          "url": "https://jinja.palletsprojects.com/en/stable/api/"
        },
        "collections": {
          "status": "scope",
          "note": "The host loads and validates structured content; the template API renders supplied values.",
          "url": "https://jinja.palletsprojects.com/en/stable/api/"
        },
        "draftMode": {
          "status": "scope",
          "note": "Editorial preview authorization and published-cache bypass belong to the host application.",
          "url": "https://jinja.palletsprojects.com/en/stable/api/"
        },
        "translations": {
          "status": "official",
          "note": "The bundled i18n extension adds trans/gettext integration; the application supplies its translation catalogs.",
          "url": "https://jinja.palletsprojects.com/en/stable/extensions/#i18n-extension",
          "label": "i18n extension"
        },
        "localeRouting": {
          "status": "scope",
          "note": "This review covers the standalone template API. Application routing, client activation, site generation, and server-function transports belong to the host application or an additional framework.",
          "url": "https://jinja.palletsprojects.com/en/stable/api/"
        },
        "localeFormatting": {
          "status": "scope",
          "note": "The host supplies locale-aware values or formatter helpers.",
          "url": "https://jinja.palletsprojects.com/en/stable/api/"
        },
        "auth": {
          "status": "scope",
          "note": "Identity, login, and authorization are responsibilities of the host application.",
          "url": "https://jinja.palletsprojects.com/en/stable/api/"
        },
        "csp": {
          "status": "scope",
          "note": "The host configures HTTP CSP headers and any nonce values passed into templates.",
          "url": "https://jinja.palletsprojects.com/en/stable/api/"
        },
        "cspNonce": {
          "status": "scope",
          "note": "The HTTP application must generate a fresh nonce, set its policy and pass the value to authored tags. A template accepting attributes does not coordinate nonces for an application.",
          "url": "https://jinja.palletsprojects.com/en/stable/api/",
          "reviewedOn": "2026-11-11"
        },
        "csrf": {
          "status": "scope",
          "note": "HTML escaping does not establish CSRF protection; the host must protect mutation endpoints.",
          "url": "https://jinja.palletsprojects.com/en/stable/api/"
        },
        "environment": {
          "status": "scope",
          "note": "Server/client secret configuration belongs to the host application, not template evaluation.",
          "url": "https://jinja.palletsprojects.com/en/stable/api/"
        },
        "types": {
          "status": "undocumented",
          "note": "Undefined/StrictUndefined control runtime variable errors; this review found no static template-prop type checker in Jinja’s API.",
          "url": "https://jinja.palletsprojects.com/en/stable/api/",
          "label": "Runtime variables"
        },
        "hmr": {
          "status": "native",
          "note": "Environment.auto_reload checks whether loaded templates changed. It is template reload, not browser HMR.",
          "url": "https://jinja.palletsprojects.com/en/stable/api/",
          "label": "Template reload"
        },
        "cli": {
          "status": "scope",
          "note": "This renderer integrates with its language/build toolchain rather than supplying an application CLI.",
          "url": "https://jinja.palletsprojects.com/en/stable/api/"
        },
        "bundleAnalysis": {
          "status": "scope",
          "note": "Production browser/server bundle inspection belongs to the host build toolchain.",
          "url": "https://jinja.palletsprojects.com/en/stable/api/"
        },
        "unitTests": {
          "status": "scope",
          "note": "Applications test rendered output with their language test runner; no application test framework is supplied here.",
          "url": "https://jinja.palletsprojects.com/en/stable/api/"
        },
        "e2eTests": {
          "status": "scope",
          "note": "Browser tests run against a host application, not a standalone template.",
          "url": "https://jinja.palletsprojects.com/en/stable/api/"
        },
        "observability": {
          "status": "scope",
          "note": "Production request traces/metrics/logging belong to the host application.",
          "url": "https://jinja.palletsprojects.com/en/stable/api/"
        },
        "errorHandling": {
          "status": "scope",
          "note": "Template errors are returned to the caller; application fallback/recovery UI is host-owned.",
          "url": "https://jinja.palletsprojects.com/en/stable/api/"
        },
        "serverHosting": {
          "status": "scope",
          "note": "This review covers the standalone template API. Application routing, client activation, site generation, and server-function transports belong to the host application or an additional framework.",
          "url": "https://jinja.palletsprojects.com/en/stable/api/"
        },
        "staticHosting": {
          "status": "scope",
          "note": "This review covers the standalone template API. Application routing, client activation, site generation, and server-function transports belong to the host application or an additional framework.",
          "url": "https://jinja.palletsprojects.com/en/stable/api/"
        },
        "containers": {
          "status": "scope",
          "note": "This review covers the standalone template API. Application routing, client activation, site generation, and server-function transports belong to the host application or an additional framework.",
          "url": "https://jinja.palletsprojects.com/en/stable/api/"
        },
        "edgeHosting": {
          "status": "scope",
          "note": "This review covers the standalone template API. Application routing, client activation, site generation, and server-function transports belong to the host application or an additional framework.",
          "url": "https://jinja.palletsprojects.com/en/stable/api/"
        },
        "orm": {
          "status": "scope",
          "note": "ORM / query builder belongs to a server framework or external service, outside this standalone rendering API. This is not a missing template-rendering capability.",
          "url": "https://jinja.palletsprojects.com"
        },
        "migrations": {
          "status": "scope",
          "note": "Schema migrations belongs to a server framework or external service, outside this standalone rendering API. This is not a missing template-rendering capability.",
          "url": "https://jinja.palletsprojects.com"
        },
        "transactions": {
          "status": "scope",
          "note": "Transactions belongs to a server framework or external service, outside this standalone rendering API. This is not a missing template-rendering capability.",
          "url": "https://jinja.palletsprojects.com"
        },
        "jobs": {
          "status": "scope",
          "note": "Background jobs belongs to a server framework or external service, outside this standalone rendering API. This is not a missing template-rendering capability.",
          "url": "https://jinja.palletsprojects.com"
        },
        "mail": {
          "status": "scope",
          "note": "Email belongs to a server framework or external service, outside this standalone rendering API. This is not a missing template-rendering capability.",
          "url": "https://jinja.palletsprojects.com"
        },
        "uploads": {
          "status": "scope",
          "note": "File uploads & storage belongs to a server framework or external service, outside this standalone rendering API. This is not a missing template-rendering capability.",
          "url": "https://jinja.palletsprojects.com"
        },
        "realtime": {
          "status": "scope",
          "note": "Real-time delivery belongs to a server framework or external service, outside this standalone rendering API. This is not a missing template-rendering capability.",
          "url": "https://jinja.palletsprojects.com"
        },
        "xssEscaping": {
          "status": "native",
          "note": "The environment supports configured autoescape/select_autoescape. It is not enabled for every environment by default; Markup/safe bypass it. This is HTML escaping, not a rich-HTML sanitizer.",
          "url": "https://jinja.palletsprojects.com/en/stable/api/#autoescaping",
          "reviewedOn": "2026-11-11"
        },
        "htmlSanitization": {
          "status": "undocumented",
          "note": "The linked security API review does not establish the specific html sanitization contract defined here. This is a bounded documentation finding, not proof of absence; generic hooks or application-authored code are not counted as an owned implementation.",
          "url": "https://jinja.palletsprojects.com/en/stable/api/",
          "reviewedOn": "2026-11-11"
        },
        "authorization": {
          "status": "scope",
          "note": "Authorization policies requires a host application or specialized integration beyond the reviewed template/runtime API. Emitting markup or using arbitrary host-language libraries does not establish this application-level contract.",
          "url": "https://jinja.palletsprojects.com/en/stable/api/",
          "reviewedOn": "2026-11-11"
        },
        "rateLimiting": {
          "status": "scope",
          "note": "Rate limiting requires a host application or specialized integration beyond the reviewed template/runtime API. Emitting markup or using arbitrary host-language libraries does not establish this application-level contract.",
          "url": "https://jinja.palletsprojects.com/en/stable/api/",
          "reviewedOn": "2026-11-11"
        },
        "progressiveEnhancement": {
          "status": "scope",
          "note": "Progressive forms requires a host application or specialized integration beyond the reviewed template/runtime API. Emitting markup or using arbitrary host-language libraries does not establish this application-level contract.",
          "url": "https://jinja.palletsprojects.com/en/stable/api/",
          "reviewedOn": "2026-11-11"
        },
        "optimisticUi": {
          "status": "scope",
          "note": "Optimistic updates requires a host application or specialized integration beyond the reviewed template/runtime API. Emitting markup or using arbitrary host-language libraries does not establish this application-level contract.",
          "url": "https://jinja.palletsprojects.com/en/stable/api/",
          "reviewedOn": "2026-11-11"
        },
        "requestCancellation": {
          "status": "scope",
          "note": "Stale request handling requires a host application or specialized integration beyond the reviewed template/runtime API. Emitting markup or using arbitrary host-language libraries does not establish this application-level contract.",
          "url": "https://jinja.palletsprojects.com/en/stable/api/",
          "reviewedOn": "2026-11-11"
        },
        "typedLinks": {
          "status": "scope",
          "note": "Typed links & parameters requires a host application or specialized integration beyond the reviewed template/runtime API. Emitting markup or using arbitrary host-language libraries does not establish this application-level contract.",
          "url": "https://jinja.palletsprojects.com/en/stable/api/",
          "reviewedOn": "2026-11-11"
        },
        "searchParams": {
          "status": "scope",
          "note": "Validated URL state requires a host application or specialized integration beyond the reviewed template/runtime API. Emitting markup or using arbitrary host-language libraries does not establish this application-level contract.",
          "url": "https://jinja.palletsprojects.com/en/stable/api/",
          "reviewedOn": "2026-11-11"
        },
        "stateRestoration": {
          "status": "scope",
          "note": "Navigation state retention requires a host application or specialized integration beyond the reviewed template/runtime API. Emitting markup or using arbitrary host-language libraries does not establish this application-level contract.",
          "url": "https://jinja.palletsprojects.com/en/stable/api/",
          "reviewedOn": "2026-11-11"
        },
        "scrollRestoration": {
          "status": "scope",
          "note": "Scroll restoration requires a host application or specialized integration beyond the reviewed template/runtime API. Emitting markup or using arbitrary host-language libraries does not establish this application-level contract.",
          "url": "https://jinja.palletsprojects.com/en/stable/api/",
          "reviewedOn": "2026-11-11"
        },
        "navigationBlocking": {
          "status": "scope",
          "note": "Unsaved-change guards requires a host application or specialized integration beyond the reviewed template/runtime API. Emitting markup or using arbitrary host-language libraries does not establish this application-level contract.",
          "url": "https://jinja.palletsprojects.com/en/stable/api/",
          "reviewedOn": "2026-11-11"
        },
        "navigationAccessibility": {
          "status": "scope",
          "note": "Accessible navigation requires a host application or specialized integration beyond the reviewed template/runtime API. Emitting markup or using arbitrary host-language libraries does not establish this application-level contract.",
          "url": "https://jinja.palletsprojects.com/en/stable/api/",
          "reviewedOn": "2026-11-11"
        },
        "a11yChecks": {
          "status": "scope",
          "note": "Accessibility checks requires a host application or specialized integration beyond the reviewed template/runtime API. Emitting markup or using arbitrary host-language libraries does not establish this application-level contract.",
          "url": "https://jinja.palletsprojects.com/en/stable/api/",
          "reviewedOn": "2026-11-11"
        },
        "lazyActivation": {
          "status": "scope",
          "note": "Deferred activation requires a host application or specialized integration beyond the reviewed template/runtime API. Emitting markup or using arbitrary host-language libraries does not establish this application-level contract.",
          "url": "https://jinja.palletsprojects.com/en/stable/api/",
          "reviewedOn": "2026-11-11"
        },
        "codeSplitting": {
          "status": "scope",
          "note": "Route / island splitting requires a host application or specialized integration beyond the reviewed template/runtime API. Emitting markup or using arbitrary host-language libraries does not establish this application-level contract.",
          "url": "https://jinja.palletsprojects.com/en/stable/api/",
          "reviewedOn": "2026-11-11"
        },
        "offline": {
          "status": "scope",
          "note": "Offline integration requires a host application or specialized integration beyond the reviewed template/runtime API. Emitting markup or using arbitrary host-language libraries does not establish this application-level contract.",
          "url": "https://jinja.palletsprojects.com/en/stable/api/",
          "reviewedOn": "2026-11-11"
        },
        "scheduling": {
          "status": "scope",
          "note": "Scheduled tasks requires a host application or specialized integration beyond the reviewed template/runtime API. Emitting markup or using arbitrary host-language libraries does not establish this application-level contract.",
          "url": "https://jinja.palletsprojects.com",
          "reviewedOn": "2026-11-11"
        },
        "notifications": {
          "status": "scope",
          "note": "Multi-channel notifications requires a host application or specialized integration beyond the reviewed template/runtime API. Emitting markup or using arbitrary host-language libraries does not establish this application-level contract.",
          "url": "https://jinja.palletsprojects.com",
          "reviewedOn": "2026-11-11"
        },
        "searchIndex": {
          "status": "scope",
          "note": "Search indexing requires a host application or specialized integration beyond the reviewed template/runtime API. Emitting markup or using arbitrary host-language libraries does not establish this application-level contract.",
          "url": "https://jinja.palletsprojects.com",
          "reviewedOn": "2026-11-11"
        },
        "fieldEncryption": {
          "status": "scope",
          "note": "Encrypted model fields requires a host application or specialized integration beyond the reviewed template/runtime API. Emitting markup or using arbitrary host-language libraries does not establish this application-level contract.",
          "url": "https://jinja.palletsprojects.com",
          "reviewedOn": "2026-11-11"
        },
        "httpTests": {
          "status": "scope",
          "note": "HTTP integration tests requires a host application or specialized integration beyond the reviewed template/runtime API. Emitting markup or using arbitrary host-language libraries does not establish this application-level contract.",
          "url": "https://jinja.palletsprojects.com/en/stable/api/",
          "reviewedOn": "2026-11-11"
        }
      }
    },
    {
      "id": "jte",
      "label": "jte",
      "kind": "Template engine",
      "logo": "logos/jte.svg",
      "color": "var(--fw-fg)",
      "scope": "Standalone templating API; adding a host framework can provide separate application features.",
      "reviewedOn": "2026-11-10",
      "updatedOn": "2026-11-11",
      "capabilities": {
        "ssr": {
          "status": "native",
          "note": "Generates HTML from a template and supplied values on the server.",
          "url": "https://jte.gg/"
        },
        "streaming": {
          "status": "partial",
          "note": "TemplateOutput supports writer/binary output integrations; the HTTP host controls flushing. This is not an async boundary protocol.",
          "url": "https://jte.gg/binary-rendering/",
          "label": "TemplateOutput",
          "reviewedOn": "2026-11-10"
        },
        "suspense": {
          "status": "scope",
          "note": "The reviewed rendering API has no pending-UI/replacement protocol; the host application would need to provide one.",
          "url": "https://jte.gg/"
        },
        "client": {
          "status": "scope",
          "note": "This review covers the standalone template API. Application routing, client activation, site generation, and server-function transports belong to the host application or an additional framework.",
          "url": "https://jte.gg/"
        },
        "ssg": {
          "status": "scope",
          "note": "This review covers the standalone template API. Application routing, client activation, site generation, and server-function transports belong to the host application or an additional framework.",
          "url": "https://jte.gg/"
        },
        "csr": {
          "status": "scope",
          "note": "This review covers the standalone template API. Application routing, client activation, site generation, and server-function transports belong to the host application or an additional framework.",
          "url": "https://jte.gg/"
        },
        "serverOnly": {
          "status": "native",
          "note": "The server evaluates templates and sends rendered output rather than the renderer implementation. This is not React Server Components.",
          "url": "https://jte.gg/",
          "label": "Server templates"
        },
        "partialRendering": {
          "status": "scope",
          "note": "This review covers the standalone template API. Application routing, client activation, site generation, and server-function transports belong to the host application or an additional framework.",
          "url": "https://jte.gg/"
        },
        "routing": {
          "status": "scope",
          "note": "This review covers the standalone template API. Application routing, client activation, site generation, and server-function transports belong to the host application or an additional framework.",
          "url": "https://jte.gg/"
        },
        "layouts": {
          "status": "scope",
          "note": "This review covers the standalone template API. Application routing, client activation, site generation, and server-function transports belong to the host application or an additional framework.",
          "url": "https://jte.gg/"
        },
        "dynamicRoutes": {
          "status": "scope",
          "note": "This review covers the standalone template API. Application routing, client activation, site generation, and server-function transports belong to the host application or an additional framework.",
          "url": "https://jte.gg/"
        },
        "parallelRoutes": {
          "status": "scope",
          "note": "This review covers the standalone template API. Application routing, client activation, site generation, and server-function transports belong to the host application or an additional framework.",
          "url": "https://jte.gg/"
        },
        "interceptedRoutes": {
          "status": "scope",
          "note": "This review covers the standalone template API. Application routing, client activation, site generation, and server-function transports belong to the host application or an additional framework.",
          "url": "https://jte.gg/"
        },
        "prefetch": {
          "status": "scope",
          "note": "This review covers the standalone template API. Application routing, client activation, site generation, and server-function transports belong to the host application or an additional framework.",
          "url": "https://jte.gg/"
        },
        "softNavigation": {
          "status": "scope",
          "note": "This standalone template/runtime renders content; navigation and page-transition lifecycle belong to a browser router or host application. Compatibility with a generic JavaScript library is not a built-in integration.",
          "url": "https://jte.gg/",
          "reviewedOn": "2026-11-11"
        },
        "viewTransitions": {
          "status": "scope",
          "note": "This standalone template/runtime renders content; navigation and page-transition lifecycle belong to a browser router or host application. Compatibility with a generic JavaScript library is not a built-in integration.",
          "url": "https://jte.gg/",
          "reviewedOn": "2026-11-11"
        },
        "redirects": {
          "status": "scope",
          "note": "This review covers the standalone template API. Application routing, client activation, site generation, and server-function transports belong to the host application or an additional framework.",
          "url": "https://jte.gg/"
        },
        "serverData": {
          "status": "scope",
          "note": "This API consumes supplied template values; application data loading happens outside it.",
          "url": "https://jte.gg/"
        },
        "clientData": {
          "status": "scope",
          "note": "Browser query lifecycle/cache APIs belong to a client library or application framework.",
          "url": "https://jte.gg/"
        },
        "requestDedupe": {
          "status": "scope",
          "note": "Template/compilation caching is distinct from request-scoped application data deduplication.",
          "url": "https://jte.gg/"
        },
        "persistentCache": {
          "status": "scope",
          "note": "Retaining application data or rendered pages across requests belongs to the host cache.",
          "url": "https://jte.gg/"
        },
        "invalidation": {
          "status": "scope",
          "note": "Application data/page invalidation belongs to the host; recompiling a template is a different cache boundary.",
          "url": "https://jte.gg/"
        },
        "isr": {
          "status": "scope",
          "note": "Regenerating deployed pages requires a host page cache/export pipeline.",
          "url": "https://jte.gg/"
        },
        "apiRoutes": {
          "status": "scope",
          "note": "This review covers the standalone template API. Application routing, client activation, site generation, and server-function transports belong to the host application or an additional framework.",
          "url": "https://jte.gg/"
        },
        "actions": {
          "status": "scope",
          "note": "This review covers the standalone template API. Application routing, client activation, site generation, and server-function transports belong to the host application or an additional framework.",
          "url": "https://jte.gg/"
        },
        "forms": {
          "status": "scope",
          "note": "Templates can emit form markup; submission, validation, and feedback policy belong to the host application.",
          "url": "https://jte.gg/"
        },
        "middleware": {
          "status": "scope",
          "note": "This review covers the standalone template API. Application routing, client activation, site generation, and server-function transports belong to the host application or an additional framework.",
          "url": "https://jte.gg/"
        },
        "cookies": {
          "status": "scope",
          "note": "This review covers the standalone template API. Application routing, client activation, site generation, and server-function transports belong to the host application or an additional framework.",
          "url": "https://jte.gg/"
        },
        "cssModules": {
          "status": "scope",
          "note": "CSS class-name compilation is a separate asset-build concern.",
          "url": "https://jte.gg/"
        },
        "scopedCss": {
          "status": "scope",
          "note": "The renderer emits authored classes/styles; component-local CSS selector rewriting is a separate build concern.",
          "url": "https://jte.gg/"
        },
        "tailwind": {
          "status": "scope",
          "note": "Tailwind can process authored templates through application configuration; the template renderer does not own that build.",
          "url": "https://jte.gg/"
        },
        "cssInJs": {
          "status": "scope",
          "note": "Runtime CSS-in-JS compilation is outside this server template API.",
          "url": "https://jte.gg/"
        },
        "images": {
          "status": "scope",
          "note": "Templates emit image markup; image resizing/conversion requires a separate asset pipeline.",
          "url": "https://jte.gg/"
        },
        "fonts": {
          "status": "scope",
          "note": "Font downloading, subsetting, and fallback optimization require a separate asset pipeline.",
          "url": "https://jte.gg/"
        },
        "scripts": {
          "status": "scope",
          "note": "Templates emit script markup; script scheduling and lifecycle policy belong to the host application.",
          "url": "https://jte.gg/"
        },
        "staticAssets": {
          "status": "scope",
          "note": "Serving files and assigning cache headers belong to the host web server.",
          "url": "https://jte.gg/"
        },
        "metadata": {
          "status": "scope",
          "note": "Head tags can be templated directly; there is no structured metadata registry in the reviewed standalone API.",
          "url": "https://jte.gg/"
        },
        "dynamicMetadata": {
          "status": "scope",
          "note": "Supplied values can populate head tags; request data loading and metadata composition remain application-owned.",
          "url": "https://jte.gg/"
        },
        "metadataInheritance": {
          "status": "scope",
          "note": "Template inheritance/content composition is separate from a metadata-field inheritance contract.",
          "url": "https://jte.gg/"
        },
        "metadataOverrides": {
          "status": "scope",
          "note": "A host head component or template block can override markup; structured field merge/clear rules are application-owned.",
          "url": "https://jte.gg/"
        },
        "titleTemplates": {
          "status": "scope",
          "note": "Titles can use template expressions; ancestor metadata/title-template policy belongs to the application.",
          "url": "https://jte.gg/"
        },
        "socialImages": {
          "status": "scope",
          "note": "Generating social-preview image bytes needs a separate image renderer/service.",
          "url": "https://jte.gg/"
        },
        "sitemaps": {
          "status": "scope",
          "note": "XML can be templated, but route enumeration and a sitemap generator belong to the host.",
          "url": "https://jte.gg/"
        },
        "robots": {
          "status": "scope",
          "note": "Text can be templated, but crawler-document publishing/configuration belongs to the host.",
          "url": "https://jte.gg/"
        },
        "markdown": {
          "status": "scope",
          "note": "This is text/HTML templating; Markdown parsing and content-page integration require another tool.",
          "url": "https://jte.gg/"
        },
        "collections": {
          "status": "scope",
          "note": "The host loads and validates structured content; the template API renders supplied values.",
          "url": "https://jte.gg/"
        },
        "draftMode": {
          "status": "scope",
          "note": "Editorial preview authorization and published-cache bypass belong to the host application.",
          "url": "https://jte.gg/"
        },
        "translations": {
          "status": "partial",
          "note": "The official localization recipe composes an application localization helper with templates; it is not a bundled translation catalog service.",
          "url": "https://jte.gg/localization/",
          "label": "Localization recipe",
          "reviewedOn": "2026-11-10"
        },
        "localeRouting": {
          "status": "scope",
          "note": "This review covers the standalone template API. Application routing, client activation, site generation, and server-function transports belong to the host application or an additional framework.",
          "url": "https://jte.gg/"
        },
        "localeFormatting": {
          "status": "scope",
          "note": "The host supplies locale-aware values or formatter helpers.",
          "url": "https://jte.gg/"
        },
        "auth": {
          "status": "scope",
          "note": "Identity, login, and authorization are responsibilities of the host application.",
          "url": "https://jte.gg/"
        },
        "csp": {
          "status": "scope",
          "note": "The host configures HTTP CSP headers and any nonce values passed into templates.",
          "url": "https://jte.gg/"
        },
        "cspNonce": {
          "status": "scope",
          "note": "The HTTP application must generate a fresh nonce, set its policy and pass the value to authored tags. A template accepting attributes does not coordinate nonces for an application.",
          "url": "https://jte.gg/",
          "reviewedOn": "2026-11-11"
        },
        "csrf": {
          "status": "scope",
          "note": "HTML escaping does not establish CSRF protection; the host must protect mutation endpoints.",
          "url": "https://jte.gg/"
        },
        "environment": {
          "status": "scope",
          "note": "Server/client secret configuration belongs to the host application, not template evaluation.",
          "url": "https://jte.gg/"
        },
        "types": {
          "status": "native",
          "note": "Templates compile to Java/Kotlin classes and are checked by those compilers.",
          "url": "https://jte.gg/pre-compiling/",
          "label": "Java / Kotlin templates"
        },
        "hmr": {
          "status": "official",
          "note": "Development mode recompiles changed templates; production uses precompiled classes. Browser state-preserving HMR is separate.",
          "url": "https://jte.gg/hot-reloading/",
          "label": "Template reload"
        },
        "cli": {
          "status": "official",
          "note": "Maven/Gradle build plugins precompile templates as part of the host application build.",
          "url": "https://jte.gg/pre-compiling/",
          "label": "Build plugins"
        },
        "bundleAnalysis": {
          "status": "scope",
          "note": "Production browser/server bundle inspection belongs to the host build toolchain.",
          "url": "https://jte.gg/"
        },
        "unitTests": {
          "status": "scope",
          "note": "Applications test rendered output with their language test runner; no application test framework is supplied here.",
          "url": "https://jte.gg/"
        },
        "e2eTests": {
          "status": "scope",
          "note": "Browser tests run against a host application, not a standalone template.",
          "url": "https://jte.gg/"
        },
        "observability": {
          "status": "scope",
          "note": "Production request traces/metrics/logging belong to the host application.",
          "url": "https://jte.gg/"
        },
        "errorHandling": {
          "status": "scope",
          "note": "Template errors are returned to the caller; application fallback/recovery UI is host-owned.",
          "url": "https://jte.gg/"
        },
        "serverHosting": {
          "status": "scope",
          "note": "This review covers the standalone template API. Application routing, client activation, site generation, and server-function transports belong to the host application or an additional framework.",
          "url": "https://jte.gg/"
        },
        "staticHosting": {
          "status": "scope",
          "note": "This review covers the standalone template API. Application routing, client activation, site generation, and server-function transports belong to the host application or an additional framework.",
          "url": "https://jte.gg/"
        },
        "containers": {
          "status": "scope",
          "note": "This review covers the standalone template API. Application routing, client activation, site generation, and server-function transports belong to the host application or an additional framework.",
          "url": "https://jte.gg/"
        },
        "edgeHosting": {
          "status": "scope",
          "note": "This review covers the standalone template API. Application routing, client activation, site generation, and server-function transports belong to the host application or an additional framework.",
          "url": "https://jte.gg/"
        },
        "orm": {
          "status": "scope",
          "note": "ORM / query builder belongs to a server framework or external service, outside this standalone rendering API. This is not a missing template-rendering capability.",
          "url": "https://jte.gg"
        },
        "migrations": {
          "status": "scope",
          "note": "Schema migrations belongs to a server framework or external service, outside this standalone rendering API. This is not a missing template-rendering capability.",
          "url": "https://jte.gg"
        },
        "transactions": {
          "status": "scope",
          "note": "Transactions belongs to a server framework or external service, outside this standalone rendering API. This is not a missing template-rendering capability.",
          "url": "https://jte.gg"
        },
        "jobs": {
          "status": "scope",
          "note": "Background jobs belongs to a server framework or external service, outside this standalone rendering API. This is not a missing template-rendering capability.",
          "url": "https://jte.gg"
        },
        "mail": {
          "status": "scope",
          "note": "Email belongs to a server framework or external service, outside this standalone rendering API. This is not a missing template-rendering capability.",
          "url": "https://jte.gg"
        },
        "uploads": {
          "status": "scope",
          "note": "File uploads & storage belongs to a server framework or external service, outside this standalone rendering API. This is not a missing template-rendering capability.",
          "url": "https://jte.gg"
        },
        "realtime": {
          "status": "scope",
          "note": "Real-time delivery belongs to a server framework or external service, outside this standalone rendering API. This is not a missing template-rendering capability.",
          "url": "https://jte.gg"
        },
        "xssEscaping": {
          "status": "native",
          "note": "HTML templates contextually escape dynamic content and distinguish trusted Content values. Raw/trusted content bypasses protection; accepting rich HTML still needs sanitization.",
          "url": "https://jte.gg/syntax/",
          "reviewedOn": "2026-11-11"
        },
        "htmlSanitization": {
          "status": "undocumented",
          "note": "The linked security API review does not establish the specific html sanitization contract defined here. This is a bounded documentation finding, not proof of absence; generic hooks or application-authored code are not counted as an owned implementation.",
          "url": "https://jte.gg/",
          "reviewedOn": "2026-11-11"
        },
        "authorization": {
          "status": "scope",
          "note": "Authorization policies requires a host application or specialized integration beyond the reviewed template/runtime API. Emitting markup or using arbitrary host-language libraries does not establish this application-level contract.",
          "url": "https://jte.gg/",
          "reviewedOn": "2026-11-11"
        },
        "rateLimiting": {
          "status": "scope",
          "note": "Rate limiting requires a host application or specialized integration beyond the reviewed template/runtime API. Emitting markup or using arbitrary host-language libraries does not establish this application-level contract.",
          "url": "https://jte.gg/",
          "reviewedOn": "2026-11-11"
        },
        "progressiveEnhancement": {
          "status": "scope",
          "note": "Progressive forms requires a host application or specialized integration beyond the reviewed template/runtime API. Emitting markup or using arbitrary host-language libraries does not establish this application-level contract.",
          "url": "https://jte.gg/",
          "reviewedOn": "2026-11-11"
        },
        "optimisticUi": {
          "status": "scope",
          "note": "Optimistic updates requires a host application or specialized integration beyond the reviewed template/runtime API. Emitting markup or using arbitrary host-language libraries does not establish this application-level contract.",
          "url": "https://jte.gg/",
          "reviewedOn": "2026-11-11"
        },
        "requestCancellation": {
          "status": "scope",
          "note": "Stale request handling requires a host application or specialized integration beyond the reviewed template/runtime API. Emitting markup or using arbitrary host-language libraries does not establish this application-level contract.",
          "url": "https://jte.gg/",
          "reviewedOn": "2026-11-11"
        },
        "typedLinks": {
          "status": "scope",
          "note": "Typed links & parameters requires a host application or specialized integration beyond the reviewed template/runtime API. Emitting markup or using arbitrary host-language libraries does not establish this application-level contract.",
          "url": "https://jte.gg/",
          "reviewedOn": "2026-11-11"
        },
        "searchParams": {
          "status": "scope",
          "note": "Validated URL state requires a host application or specialized integration beyond the reviewed template/runtime API. Emitting markup or using arbitrary host-language libraries does not establish this application-level contract.",
          "url": "https://jte.gg/",
          "reviewedOn": "2026-11-11"
        },
        "stateRestoration": {
          "status": "scope",
          "note": "Navigation state retention requires a host application or specialized integration beyond the reviewed template/runtime API. Emitting markup or using arbitrary host-language libraries does not establish this application-level contract.",
          "url": "https://jte.gg/",
          "reviewedOn": "2026-11-11"
        },
        "scrollRestoration": {
          "status": "scope",
          "note": "Scroll restoration requires a host application or specialized integration beyond the reviewed template/runtime API. Emitting markup or using arbitrary host-language libraries does not establish this application-level contract.",
          "url": "https://jte.gg/",
          "reviewedOn": "2026-11-11"
        },
        "navigationBlocking": {
          "status": "scope",
          "note": "Unsaved-change guards requires a host application or specialized integration beyond the reviewed template/runtime API. Emitting markup or using arbitrary host-language libraries does not establish this application-level contract.",
          "url": "https://jte.gg/",
          "reviewedOn": "2026-11-11"
        },
        "navigationAccessibility": {
          "status": "scope",
          "note": "Accessible navigation requires a host application or specialized integration beyond the reviewed template/runtime API. Emitting markup or using arbitrary host-language libraries does not establish this application-level contract.",
          "url": "https://jte.gg/",
          "reviewedOn": "2026-11-11"
        },
        "a11yChecks": {
          "status": "scope",
          "note": "Accessibility checks requires a host application or specialized integration beyond the reviewed template/runtime API. Emitting markup or using arbitrary host-language libraries does not establish this application-level contract.",
          "url": "https://jte.gg/",
          "reviewedOn": "2026-11-11"
        },
        "lazyActivation": {
          "status": "scope",
          "note": "Deferred activation requires a host application or specialized integration beyond the reviewed template/runtime API. Emitting markup or using arbitrary host-language libraries does not establish this application-level contract.",
          "url": "https://jte.gg/",
          "reviewedOn": "2026-11-11"
        },
        "codeSplitting": {
          "status": "scope",
          "note": "Route / island splitting requires a host application or specialized integration beyond the reviewed template/runtime API. Emitting markup or using arbitrary host-language libraries does not establish this application-level contract.",
          "url": "https://jte.gg/",
          "reviewedOn": "2026-11-11"
        },
        "offline": {
          "status": "scope",
          "note": "Offline integration requires a host application or specialized integration beyond the reviewed template/runtime API. Emitting markup or using arbitrary host-language libraries does not establish this application-level contract.",
          "url": "https://jte.gg/",
          "reviewedOn": "2026-11-11"
        },
        "scheduling": {
          "status": "scope",
          "note": "Scheduled tasks requires a host application or specialized integration beyond the reviewed template/runtime API. Emitting markup or using arbitrary host-language libraries does not establish this application-level contract.",
          "url": "https://jte.gg",
          "reviewedOn": "2026-11-11"
        },
        "notifications": {
          "status": "scope",
          "note": "Multi-channel notifications requires a host application or specialized integration beyond the reviewed template/runtime API. Emitting markup or using arbitrary host-language libraries does not establish this application-level contract.",
          "url": "https://jte.gg",
          "reviewedOn": "2026-11-11"
        },
        "searchIndex": {
          "status": "scope",
          "note": "Search indexing requires a host application or specialized integration beyond the reviewed template/runtime API. Emitting markup or using arbitrary host-language libraries does not establish this application-level contract.",
          "url": "https://jte.gg",
          "reviewedOn": "2026-11-11"
        },
        "fieldEncryption": {
          "status": "scope",
          "note": "Encrypted model fields requires a host application or specialized integration beyond the reviewed template/runtime API. Emitting markup or using arbitrary host-language libraries does not establish this application-level contract.",
          "url": "https://jte.gg",
          "reviewedOn": "2026-11-11"
        },
        "httpTests": {
          "status": "scope",
          "note": "HTTP integration tests requires a host application or specialized integration beyond the reviewed template/runtime API. Emitting markup or using arbitrary host-language libraries does not establish this application-level contract.",
          "url": "https://jte.gg/",
          "reviewedOn": "2026-11-11"
        }
      }
    },
    {
      "id": "laravel",
      "label": "Laravel",
      "kind": "Application framework",
      "logo": "logos/laravel.svg",
      "color": "#ff2d20",
      "scope": "Laravel 13.x with Blade. Livewire, Inertia, Laravel Head and other companion packages are identified separately; native PHP has a separate row.",
      "reviewedOn": "2026-11-10",
      "updatedOn": "2026-11-11",
      "capabilities": {
        "ssr": {
          "status": "native",
          "note": "Blade compiles server templates, supports layouts/components/sections and keeps PHP view execution on the server.",
          "url": "https://laravel.com/framework/docs/13.x/blade"
        },
        "streaming": {
          "status": "native",
          "note": "Streamed responses and event streams emit incremental output. This is transport streaming, not a component Suspense replacement protocol.",
          "url": "https://laravel.com/framework/docs/13.x/responses"
        },
        "suspense": {
          "status": "undocumented",
          "note": "Not established in the reviewed Laravel rendering guide. External integrations or application code may provide this behavior.",
          "url": "https://laravel.com/framework/docs/13.x/blade"
        },
        "client": {
          "status": "official",
          "note": "Official React, Vue and Svelte starter kits integrate Inertia for browser navigation/rendering. Blade alone does not hydrate into a client component runtime.",
          "url": "https://laravel.com/framework/docs/13.x/starter-kits",
          "label": "Inertia starter kits"
        },
        "ssg": {
          "status": "undocumented",
          "note": "Not established in the reviewed Laravel rendering guide. External integrations or application code may provide this behavior.",
          "url": "https://laravel.com/framework/docs/13.x/blade"
        },
        "csr": {
          "status": "official",
          "note": "Official React, Vue and Svelte starter kits integrate Inertia for browser navigation/rendering. Blade alone does not hydrate into a client component runtime.",
          "url": "https://laravel.com/framework/docs/13.x/starter-kits",
          "label": "Inertia starter kits"
        },
        "serverOnly": {
          "status": "native",
          "note": "Blade compiles server templates, supports layouts/components/sections and keeps PHP view execution on the server.",
          "url": "https://laravel.com/framework/docs/13.x/blade"
        },
        "partialRendering": {
          "status": "undocumented",
          "note": "Not established in the reviewed Laravel rendering guide. External integrations or application code may provide this behavior.",
          "url": "https://laravel.com/framework/docs/13.x/blade"
        },
        "routing": {
          "status": "native",
          "note": "Routes match methods and parameterized paths, invoke controllers and return response/redirect endpoints.",
          "url": "https://laravel.com/framework/docs/13.x/routing"
        },
        "layouts": {
          "status": "native",
          "note": "Blade compiles server templates, supports layouts/components/sections and keeps PHP view execution on the server.",
          "url": "https://laravel.com/framework/docs/13.x/blade"
        },
        "dynamicRoutes": {
          "status": "native",
          "note": "Routes match methods and parameterized paths, invoke controllers and return response/redirect endpoints.",
          "url": "https://laravel.com/framework/docs/13.x/routing"
        },
        "parallelRoutes": {
          "status": "undocumented",
          "note": "Not established in the reviewed Laravel routing guide. External integrations or application code may provide this behavior.",
          "url": "https://laravel.com/framework/docs/13.x/routing"
        },
        "interceptedRoutes": {
          "status": "undocumented",
          "note": "Not established in the reviewed Laravel routing guide. External integrations or application code may provide this behavior.",
          "url": "https://laravel.com/framework/docs/13.x/routing"
        },
        "prefetch": {
          "status": "official",
          "note": "Inertia Link in Laravel's official Inertia starter-kit workflow can prefetch page visits on hover or click. This is frontend Inertia behavior, not automatic prefetching for plain Blade anchors.",
          "url": "https://inertiajs.com/",
          "reviewedOn": "2026-11-11",
          "label": "Inertia starter kits"
        },
        "softNavigation": {
          "status": "official",
          "note": "Official React/Vue/Svelte starter kits integrate Inertia for SPA-style visits to server-owned routes. This requires the Inertia frontend; native Blade links alone remain document navigation.",
          "url": "https://laravel.com/framework/docs/13.x/starter-kits",
          "reviewedOn": "2026-11-11",
          "label": "Inertia starter kits"
        },
        "viewTransitions": {
          "status": "undocumented",
          "note": "The reviewed routing API does not establish this navigation capability. Application code or another package may provide it; this finding is not proof of absence.",
          "url": "https://laravel.com/framework/docs/13.x/routing",
          "reviewedOn": "2026-11-11"
        },
        "redirects": {
          "status": "native",
          "note": "Routes match methods and parameterized paths, invoke controllers and return response/redirect endpoints.",
          "url": "https://laravel.com/framework/docs/13.x/routing"
        },
        "serverData": {
          "status": "native",
          "note": "Eloquent models and query builders load relational data, with relationships, eager loading and model lifecycle hooks.",
          "url": "https://laravel.com/framework/docs/13.x/eloquent"
        },
        "clientData": {
          "status": "undocumented",
          "note": "Not established in the reviewed Laravel data guide. External integrations or application code may provide this behavior.",
          "url": "https://laravel.com/framework/docs/13.x/cache"
        },
        "requestDedupe": {
          "status": "undocumented",
          "note": "The reviewed database guide establishes query execution/transactions but does not establish general request-wide equivalent-read deduplication.",
          "url": "https://laravel.com/framework/docs/13.x/database"
        },
        "persistentCache": {
          "status": "native",
          "note": "Named cache stores support retention, remember operations, deletion and supported-store tags. Tag availability varies by driver.",
          "url": "https://laravel.com/framework/docs/13.x/cache"
        },
        "invalidation": {
          "status": "native",
          "note": "Named cache stores support retention, remember operations, deletion and supported-store tags. Tag availability varies by driver.",
          "url": "https://laravel.com/framework/docs/13.x/cache"
        },
        "isr": {
          "status": "undocumented",
          "note": "Not established in the reviewed Laravel data guide. External integrations or application code may provide this behavior.",
          "url": "https://laravel.com/framework/docs/13.x/cache"
        },
        "apiRoutes": {
          "status": "native",
          "note": "Routes match methods and parameterized paths, invoke controllers and return response/redirect endpoints.",
          "url": "https://laravel.com/framework/docs/13.x/routing"
        },
        "actions": {
          "status": "undocumented",
          "note": "Not established in the reviewed Laravel server guide. External integrations or application code may provide this behavior.",
          "url": "https://laravel.com/framework/docs/13.x/responses"
        },
        "forms": {
          "status": "native",
          "note": "Request/FormRequest validation integrates redirect errors, old input and JSON validation responses.",
          "url": "https://laravel.com/framework/docs/13.x/validation",
          "reviewedOn": "2026-11-11",
          "assessment": {
            "summary": "Form transport, validation, pending feedback and optimistic state are separate behaviors; the progressive-forms and optimistic-updates rows review the latter contracts explicitly.",
            "strengths": [
              "Request/FormRequest validation integrates redirect errors, old input and JSON validation responses."
            ],
            "tradeoffs": [
              "Do not infer a no-JavaScript submission path, automatic validation, accessible field errors or rollback merely from the ability to receive FormData."
            ]
          }
        },
        "middleware": {
          "status": "native",
          "note": "Middleware wraps request processing, with route/group configuration and shared response policy.",
          "url": "https://laravel.com/framework/docs/13.x/middleware"
        },
        "cookies": {
          "status": "native",
          "note": "Session drivers and cookie middleware manage request state; production stores and cookie flags require configuration.",
          "url": "https://laravel.com/framework/docs/13.x/session"
        },
        "cssModules": {
          "status": "undocumented",
          "note": "Not established in the reviewed Laravel styling guide. External integrations or application code may provide this behavior.",
          "url": "https://laravel.com/framework/docs/13.x/vite"
        },
        "scopedCss": {
          "status": "undocumented",
          "note": "Not established in the reviewed Laravel styling guide. External integrations or application code may provide this behavior.",
          "url": "https://laravel.com/framework/docs/13.x/vite"
        },
        "tailwind": {
          "status": "official",
          "note": "First-party starter kits configure Tailwind alongside their selected UI stack; the CSS compiler is installed separately.",
          "url": "https://laravel.com/framework/docs/13.x/starter-kits",
          "label": "Starter kit integration"
        },
        "cssInJs": {
          "status": "undocumented",
          "note": "Not established in the reviewed Laravel styling guide. External integrations or application code may provide this behavior.",
          "url": "https://laravel.com/framework/docs/13.x/vite"
        },
        "images": {
          "status": "native",
          "note": "The Image facade transforms and encodes images, integrating uploads/storage. Install Intervention Image v4 and a supported GD/Imagick driver as documented.",
          "url": "https://laravel.com/framework/docs/13.x/images"
        },
        "fonts": {
          "status": "partial",
          "note": "Vite asset helpers support app-owned font/script loading and preload policy. Automatic font metrics/subsetting or a dedicated third-party script scheduler is not established.",
          "url": "https://laravel.com/framework/docs/13.x/vite",
          "label": "Asset pipeline",
          "reviewedOn": "2026-11-10"
        },
        "scripts": {
          "status": "partial",
          "note": "Vite asset helpers support app-owned font/script loading and preload policy. Automatic font metrics/subsetting or a dedicated third-party script scheduler is not established.",
          "url": "https://laravel.com/framework/docs/13.x/vite",
          "label": "Asset pipeline",
          "reviewedOn": "2026-11-10"
        },
        "staticAssets": {
          "status": "native",
          "note": "Laravel's Vite integration handles asset URLs, hot updates and production manifests; browser tooling is installed separately.",
          "url": "https://laravel.com/framework/docs/13.x/vite"
        },
        "metadata": {
          "status": "official",
          "note": "Laravel Head resolves defaults, route groups, route values, runtime values and error values field by field. Higher layers replace lower fields; inherited title prefix/suffix can be bypassed with exact titles. This is route-layer inheritance, not filesystem-layout traversal.",
          "url": "https://laravel.com/framework/docs/13.x/head",
          "label": "Laravel Head",
          "assessment": {
            "summary": "A structured first-party metadata package with explicit field precedence and Blade/Livewire/Inertia integration.",
            "strengths": [
              "Defaults survive unless a higher-priority layer replaces that field.",
              "Route groups, runtime values and exact titles have documented precedence."
            ],
            "tradeoffs": [
              "Install laravel/head separately.",
              "Inheritance follows route/runtime layers, rather than a Next-style nested layout tree."
            ]
          }
        },
        "dynamicMetadata": {
          "status": "official",
          "note": "Laravel Head resolves defaults, route groups, route values, runtime values and error values field by field. Higher layers replace lower fields; inherited title prefix/suffix can be bypassed with exact titles. This is route-layer inheritance, not filesystem-layout traversal.",
          "url": "https://laravel.com/framework/docs/13.x/head",
          "label": "Laravel Head"
        },
        "metadataInheritance": {
          "status": "official",
          "note": "Laravel Head resolves defaults, route groups, route values, runtime values and error values field by field. Higher layers replace lower fields; inherited title prefix/suffix can be bypassed with exact titles. This is route-layer inheritance, not filesystem-layout traversal.",
          "url": "https://laravel.com/framework/docs/13.x/head",
          "label": "Laravel Head"
        },
        "metadataOverrides": {
          "status": "official",
          "note": "Laravel Head resolves defaults, route groups, route values, runtime values and error values field by field. Higher layers replace lower fields; inherited title prefix/suffix can be bypassed with exact titles. This is route-layer inheritance, not filesystem-layout traversal.",
          "url": "https://laravel.com/framework/docs/13.x/head",
          "label": "Laravel Head"
        },
        "titleTemplates": {
          "status": "official",
          "note": "Laravel Head resolves defaults, route groups, route values, runtime values and error values field by field. Higher layers replace lower fields; inherited title prefix/suffix can be bypassed with exact titles. This is route-layer inheritance, not filesystem-layout traversal.",
          "url": "https://laravel.com/framework/docs/13.x/head",
          "label": "Laravel Head"
        },
        "socialImages": {
          "status": "undocumented",
          "note": "Not established in the reviewed Laravel metadata guide. External integrations or application code may provide this behavior.",
          "url": "https://laravel.com/framework/docs/13.x/head"
        },
        "sitemaps": {
          "status": "undocumented",
          "note": "Not established in the reviewed Laravel metadata guide. External integrations or application code may provide this behavior.",
          "url": "https://laravel.com/framework/docs/13.x/head"
        },
        "robots": {
          "status": "partial",
          "note": "Laravel Head controls per-document robots meta directives; it does not establish robots.txt file generation.",
          "url": "https://laravel.com/framework/docs/13.x/head",
          "label": "Robots meta only",
          "reviewedOn": "2026-11-10"
        },
        "markdown": {
          "status": "native",
          "note": "Str::markdown/inlineMarkdown render Markdown through the framework string helpers. They do not compile MDX components.",
          "url": "https://laravel.com/framework/docs/13.x/strings"
        },
        "collections": {
          "status": "undocumented",
          "note": "Not established in the reviewed Laravel content guide. External integrations or application code may provide this behavior.",
          "url": "https://laravel.com/framework/docs/13.x/blade"
        },
        "draftMode": {
          "status": "undocumented",
          "note": "Not established in the reviewed Laravel content guide. External integrations or application code may provide this behavior.",
          "url": "https://laravel.com/framework/docs/13.x/blade"
        },
        "translations": {
          "status": "native",
          "note": "Translation files, pluralization, fallback locales and locale selection are documented. Locale formatting beyond translation uses PHP intl or a library.",
          "url": "https://laravel.com/framework/docs/13.x/localization"
        },
        "localeRouting": {
          "status": "partial",
          "note": "The guide sets locale from request/route input. Automatic localized URL generation/negotiation requires application policy or another package.",
          "url": "https://laravel.com/framework/docs/13.x/localization",
          "label": "Locale route recipe",
          "reviewedOn": "2026-11-10"
        },
        "localeFormatting": {
          "status": "native",
          "note": "Laravel Number helpers format currency, percentages, ordinals and numbers with locale selection. PHP intl may be required by the operation.",
          "url": "https://laravel.com/framework/docs/13.x/helpers",
          "label": "Number helpers"
        },
        "auth": {
          "status": "native",
          "note": "Guards/providers and session authentication integrate with first-party starter/auth packages. Applications select account and authorization policy.",
          "url": "https://laravel.com/framework/docs/13.x/authentication"
        },
        "csp": {
          "status": "partial",
          "note": "Vite::useCspNonce generates or accepts nonces for emitted asset tags. Applications must set the matching HTTP policy and cover other script/style sources.",
          "url": "https://laravel.com/framework/docs/13.x/vite",
          "label": "Asset nonce integration",
          "reviewedOn": "2026-11-10"
        },
        "cspNonce": {
          "status": "partial",
          "note": "Vite::useCspNonce generates or accepts a nonce for Vite-emitted asset tags. Applications must set the matching response policy and nonce any other inline or streaming scripts; this is asset-tag coverage, not automatic coverage of every source.",
          "url": "https://laravel.com/framework/docs/13.x/vite#content-security-policy-csp-nonce",
          "reviewedOn": "2026-11-11",
          "label": "Vite asset-tag nonces"
        },
        "csrf": {
          "status": "native",
          "note": "CSRF middleware validates browser writes with tokens/origin checks according to configured middleware and exclusions.",
          "url": "https://laravel.com/framework/docs/13.x/csrf"
        },
        "environment": {
          "status": "native",
          "note": "Environment-backed configuration, encrypted environment files and production config caching are documented. Only deliberately exposed values should enter browser assets.",
          "url": "https://laravel.com/framework/docs/13.x/configuration"
        },
        "types": {
          "status": "undocumented",
          "note": "The reviewed Laravel/PHP testing workflow does not establish compile-time template/application type checking. PHP declarations are runtime checks; tools such as static analyzers are separate integrations.",
          "url": "https://laravel.com/framework/docs/13.x/testing"
        },
        "hmr": {
          "status": "native",
          "note": "Laravel's Vite integration handles asset URLs, hot updates and production manifests; browser tooling is installed separately.",
          "url": "https://laravel.com/framework/docs/13.x/vite"
        },
        "cli": {
          "status": "native",
          "note": "Artisan supplies application commands, generators, development processes, migrations and production maintenance operations.",
          "url": "https://laravel.com/framework/docs/13.x/artisan"
        },
        "bundleAnalysis": {
          "status": "undocumented",
          "note": "Not established in the reviewed Laravel tooling guide. External integrations or application code may provide this behavior.",
          "url": "https://laravel.com/framework/docs/13.x/vite"
        },
        "unitTests": {
          "status": "native",
          "note": "Laravel's test harness supplies HTTP/application assertions and database testing support with Pest or PHPUnit.",
          "url": "https://laravel.com/framework/docs/13.x/testing"
        },
        "e2eTests": {
          "status": "official",
          "note": "Laravel Dusk supplies browser automation and application-aware assertions.",
          "url": "https://laravel.com/framework/docs/13.x/dusk",
          "label": "Dusk"
        },
        "observability": {
          "status": "native",
          "note": "Logging channels integrate structured context and external transports; first-party Telescope/Pulse/Nightwatch add inspection and monitoring.",
          "url": "https://laravel.com/framework/docs/13.x/logging"
        },
        "errorHandling": {
          "status": "partial",
          "note": "Exception handling renders application error responses and reports failures. This is not a client component recovery boundary.",
          "url": "https://laravel.com/framework/docs/13.x/errors",
          "label": "Exception responses",
          "reviewedOn": "2026-11-10"
        },
        "serverHosting": {
          "status": "native",
          "note": "The production guide documents PHP server deployment, configuration/cache commands, workers and health checks.",
          "url": "https://laravel.com/framework/docs/13.x/deployment"
        },
        "staticHosting": {
          "status": "undocumented",
          "note": "Not established in the reviewed Laravel deployment guide. External integrations or application code may provide this behavior.",
          "url": "https://laravel.com/framework/docs/13.x/deployment"
        },
        "containers": {
          "status": "undocumented",
          "note": "Not established in the reviewed Laravel deployment guide. External integrations or application code may provide this behavior.",
          "url": "https://laravel.com/framework/docs/13.x/deployment"
        },
        "edgeHosting": {
          "status": "undocumented",
          "note": "Not established in the reviewed Laravel deployment guide. External integrations or application code may provide this behavior.",
          "url": "https://laravel.com/framework/docs/13.x/deployment"
        },
        "orm": {
          "status": "native",
          "note": "Eloquent models and query builders load relational data, with relationships, eager loading and model lifecycle hooks.",
          "url": "https://laravel.com/framework/docs/13.x/eloquent",
          "reviewedOn": "2026-11-11",
          "assessment": {
            "summary": "Eloquent integrates model relationships, explicit eager loading and opt-in detection of accidental lazy loading.",
            "strengths": [
              "Relationship queries and with/load can avoid common N+1 patterns.",
              "preventLazyLoading can reject or report accidental lazy relationships during development."
            ],
            "tradeoffs": [
              "These are configured behaviors, not a guarantee of optimal queries. Application code must choose eager loading and examine emitted SQL."
            ]
          }
        },
        "migrations": {
          "status": "native",
          "note": "Artisan migrations apply versioned schema changes and maintain execution history with rollback operations.",
          "url": "https://laravel.com/framework/docs/13.x/migrations"
        },
        "transactions": {
          "status": "native",
          "note": "Database APIs provide atomic transactions and request-scoped query-result caching; database behavior and drivers remain relevant.",
          "url": "https://laravel.com/framework/docs/13.x/database"
        },
        "jobs": {
          "status": "native",
          "note": "Queue connections/workers support job dispatch, retries, failures and lifecycle policy; a durable production driver must be configured.",
          "url": "https://laravel.com/framework/docs/13.x/queues"
        },
        "mail": {
          "status": "native",
          "note": "Mailables, transports, templates and queued delivery form the integrated mail workflow.",
          "url": "https://laravel.com/framework/docs/13.x/mail"
        },
        "uploads": {
          "status": "native",
          "note": "Uploaded files integrate with named filesystem disks, local/cloud storage, URLs and visibility controls.",
          "url": "https://laravel.com/framework/docs/13.x/filesystem"
        },
        "realtime": {
          "status": "official",
          "note": "Laravel broadcasting integrates channels/auth and Echo; the first-party Reverb package supplies a WebSocket server.",
          "url": "https://laravel.com/framework/docs/13.x/broadcasting",
          "label": "Broadcasting / Reverb"
        },
        "xssEscaping": {
          "status": "native",
          "note": "Blade {{ }} output is passed through htmlspecialchars; {!! !!} outputs unescaped data. The documentation warns against using unescaped output for user-controlled content.",
          "url": "https://laravel.com/framework/docs/13.x/blade#displaying-unescaped-data",
          "reviewedOn": "2026-11-11"
        },
        "htmlSanitization": {
          "status": "undocumented",
          "note": "The linked security API review does not establish the specific html sanitization contract defined here. This is a bounded documentation finding, not proof of absence; generic hooks or application-authored code are not counted as an owned implementation.",
          "url": "https://laravel.com/framework/docs/13.x/vite",
          "reviewedOn": "2026-11-11"
        },
        "authorization": {
          "status": "native",
          "note": "Gates and resource policies centralize authorization checks and convert denied actions to authorization failures. Authentication does not imply permission; callers must apply the policy.",
          "url": "https://laravel.com/framework/docs/13.x/authorization",
          "reviewedOn": "2026-11-11",
          "label": "Gates / policies"
        },
        "rateLimiting": {
          "status": "native",
          "note": "RateLimiter and throttle middleware provide keyed attempts/time windows through a configured cache store. Distributed enforcement requires shared storage and appropriate atomic operations.",
          "url": "https://laravel.com/framework/docs/13.x/rate-limiting",
          "reviewedOn": "2026-11-11",
          "label": "RateLimiter"
        },
        "progressiveEnhancement": {
          "status": "native",
          "note": "Blade forms submit native HTTP requests with CSRF tokens, validation redirects, old input and error bags. Inertia/other client forms have their own JS requirements and are not used to establish this native Blade behavior.",
          "url": "https://laravel.com/framework/docs/13.x/validation",
          "reviewedOn": "2026-11-11",
          "label": "Blade / validation redirects"
        },
        "optimisticUi": {
          "status": "undocumented",
          "note": "The linked data API review does not establish the specific optimistic updates contract defined here. This is a bounded documentation finding, not proof of absence; generic hooks or application-authored code are not counted as an owned implementation.",
          "url": "https://laravel.com/framework/docs/13.x/cache",
          "reviewedOn": "2026-11-11"
        },
        "requestCancellation": {
          "status": "undocumented",
          "note": "The linked data API review does not establish the specific stale request handling contract defined here. This is a bounded documentation finding, not proof of absence; generic hooks or application-authored code are not counted as an owned implementation.",
          "url": "https://laravel.com/framework/docs/13.x/cache",
          "reviewedOn": "2026-11-11"
        },
        "typedLinks": {
          "status": "undocumented",
          "note": "The linked routing API review does not establish the specific typed links & parameters contract defined here. This is a bounded documentation finding, not proof of absence; generic hooks or application-authored code are not counted as an owned implementation.",
          "url": "https://laravel.com/framework/docs/13.x/starter-kits",
          "reviewedOn": "2026-11-11"
        },
        "searchParams": {
          "status": "undocumented",
          "note": "The linked routing API review does not establish the specific validated url state contract defined here. This is a bounded documentation finding, not proof of absence; generic hooks or application-authored code are not counted as an owned implementation.",
          "url": "https://laravel.com/framework/docs/13.x/starter-kits",
          "reviewedOn": "2026-11-11"
        },
        "stateRestoration": {
          "status": "official",
          "note": "Inertia remembers configured local state and preserves component state on selected visits. This requires the Inertia starter-kit/frontend path; ordinary Blade pages do not inherit it automatically.",
          "url": "https://inertiajs.com/remembering-state",
          "reviewedOn": "2026-11-11",
          "label": "Inertia"
        },
        "scrollRestoration": {
          "status": "official",
          "note": "Inertia resets scroll on visits and restores document/marked scroll regions on history navigation; preserveScroll controls exceptions. This belongs to the Inertia frontend, not plain Blade.",
          "url": "https://inertiajs.com/scroll-management",
          "reviewedOn": "2026-11-11",
          "label": "Inertia"
        },
        "navigationBlocking": {
          "status": "undocumented",
          "note": "The linked routing API review does not establish the specific unsaved-change guards contract defined here. This is a bounded documentation finding, not proof of absence; generic hooks or application-authored code are not counted as an owned implementation.",
          "url": "https://laravel.com/framework/docs/13.x/starter-kits",
          "reviewedOn": "2026-11-11"
        },
        "navigationAccessibility": {
          "status": "undocumented",
          "note": "The linked client rendering API review does not establish the specific accessible navigation contract defined here. This is a bounded documentation finding, not proof of absence; generic hooks or application-authored code are not counted as an owned implementation.",
          "url": "https://laravel.com/framework/docs/13.x/starter-kits",
          "reviewedOn": "2026-11-11"
        },
        "a11yChecks": {
          "status": "undocumented",
          "note": "The linked client rendering API review does not establish the specific accessibility checks contract defined here. This is a bounded documentation finding, not proof of absence; generic hooks or application-authored code are not counted as an owned implementation.",
          "url": "https://laravel.com/framework/docs/13.x/starter-kits",
          "reviewedOn": "2026-11-11"
        },
        "lazyActivation": {
          "status": "undocumented",
          "note": "The linked rendering API review does not establish the specific deferred activation contract defined here. This is a bounded documentation finding, not proof of absence; generic hooks or application-authored code are not counted as an owned implementation.",
          "url": "https://laravel.com/framework/docs/13.x/starter-kits",
          "reviewedOn": "2026-11-11"
        },
        "codeSplitting": {
          "status": "official",
          "note": "Official Inertia starter kits use Vite page resolution; lazy import page modules can split frontend screens. This applies to the chosen starter kit and its import configuration, not server-rendered Blade alone.",
          "url": "https://inertiajs.com/code-splitting",
          "reviewedOn": "2026-11-11",
          "label": "Inertia / Vite"
        },
        "offline": {
          "status": "undocumented",
          "note": "The linked deployment API review does not establish the specific offline integration contract defined here. This is a bounded documentation finding, not proof of absence; generic hooks or application-authored code are not counted as an owned implementation.",
          "url": "https://laravel.com/framework/docs/13.x/deployment",
          "reviewedOn": "2026-11-11"
        },
        "scheduling": {
          "status": "native",
          "note": "The scheduler defines recurring jobs/commands; a scheduler runner or cron triggers it. withoutOverlapping and onOneServer use cache locks; distributed execution requires supported shared cache configuration.",
          "url": "https://laravel.com/framework/docs/13.x/scheduling",
          "reviewedOn": "2026-11-11",
          "label": "Task scheduler"
        },
        "notifications": {
          "status": "native",
          "note": "Notification classes select and format mail, database, broadcast, SMS and other channels, optionally queued. Delivery providers and many extra channels are separately configured services/packages.",
          "url": "https://laravel.com/framework/docs/13.x/notifications",
          "reviewedOn": "2026-11-11",
          "label": "Notifications"
        },
        "searchIndex": {
          "status": "official",
          "note": "Scout synchronizes searchable Eloquent models through model observers and offers database and external search drivers. External engines require their own service/configuration; this is more than a raw LIKE query.",
          "url": "https://laravel.com/framework/docs/13.x/scout",
          "reviewedOn": "2026-11-11",
          "label": "Laravel Scout"
        },
        "fieldEncryption": {
          "status": "native",
          "note": "Eloquent encrypted casts encrypt stored attributes and decrypt reads. Encrypted values cannot be queried normally; key rotation/re-encryption and larger storage are application/deployment concerns.",
          "url": "https://laravel.com/framework/docs/13.x/eloquent-mutators#encrypted-casting",
          "reviewedOn": "2026-11-11",
          "label": "Encrypted casts"
        },
        "httpTests": {
          "status": "native",
          "note": "The application test case simulates requests internally and exposes response/JSON, auth, cookie and session assertions. It does not require a running network server; middleware behavior must be considered in tests.",
          "url": "https://laravel.com/framework/docs/13.x/http-tests",
          "reviewedOn": "2026-11-11",
          "label": "HTTP test harness"
        }
      }
    },
    {
      "id": "leptos",
      "label": "Leptos",
      "kind": "UI framework",
      "logo": "logos/leptos.svg",
      "color": "#ef3939",
      "scope": "Leptos book and API documentation; official router/server crates named separately.",
      "reviewedOn": "2026-11-10",
      "updatedOn": "2026-11-11",
      "capabilities": {
        "ssr": {
          "status": "native",
          "note": "The ssr build mode generates server HTML; hydrate builds activate it in the browser.",
          "url": "https://docs.rs/leptos/latest/leptos/"
        },
        "streaming": {
          "status": "native",
          "note": "In-order, out-of-order, and partially blocked SSR modes are documented.",
          "url": "https://book.leptos.dev/ssr/23_ssr_modes.html"
        },
        "suspense": {
          "status": "native",
          "note": "Suspense boundaries coordinate resources and stream resolved content with fallback UI in out-of-order mode.",
          "url": "https://book.leptos.dev/ssr/23_ssr_modes.html"
        },
        "client": {
          "status": "native",
          "note": "The hydrate feature adds interactivity to server-rendered HTML; islands is a separate opt-in mode.",
          "url": "https://docs.rs/leptos/latest/leptos/",
          "label": "Hydration / islands"
        },
        "ssg": {
          "status": "official",
          "note": "StaticRouteGenerator and static route lists generate HTML files; dynamic parameters must be enumerated.",
          "url": "https://docs.rs/leptos_axum/latest/leptos_axum/struct.StaticRouteGenerator.html",
          "label": "leptos_axum"
        },
        "csr": {
          "status": "native",
          "note": "The csr feature renders the application in the browser; hydrate and ssr are separate build modes.",
          "url": "https://docs.rs/leptos/latest/leptos/"
        },
        "serverOnly": {
          "status": "native",
          "note": "Islands keep non-interactive component work on the server; server functions also exclude their bodies from browser builds. This is not RSC.",
          "url": "https://book.leptos.dev/islands.html",
          "label": "Islands / server functions"
        },
        "partialRendering": {
          "status": "undocumented",
          "note": "SSR modes control per-request streaming; the guide does not establish a prebuilt static shell with request-time dynamic holes.",
          "url": "https://book.leptos.dev/ssr/23_ssr_modes.html"
        },
        "routing": {
          "status": "official",
          "note": "leptos_router provides nested Routes and route parameters.",
          "url": "https://book.leptos.dev/router/16_routes.html",
          "label": "leptos_router"
        },
        "layouts": {
          "status": "official",
          "note": "Nested routes and Outlet compose layouts around child pages.",
          "url": "https://book.leptos.dev/router/17_nested_routing.html",
          "label": "leptos_router"
        },
        "dynamicRoutes": {
          "status": "official",
          "note": "Route parameters and query values can be read and parsed into typed values.",
          "url": "https://book.leptos.dev/router/18_params_and_queries.html",
          "label": "leptos_router"
        },
        "parallelRoutes": {
          "status": "undocumented",
          "note": "Nested Outlet routes are documented; independent named route slots are not established.",
          "url": "https://book.leptos.dev/router/17_nested_routing.html"
        },
        "interceptedRoutes": {
          "status": "undocumented",
          "note": "The reviewed router guide does not establish intercepted-modal/direct-entry route behavior.",
          "url": "https://book.leptos.dev/router/17_nested_routing.html"
        },
        "prefetch": {
          "status": "undocumented",
          "note": "The reviewed A component API resolves nested links and active state; automatic route/data prefetch is not established.",
          "url": "https://docs.rs/leptos_router/latest/leptos_router/components/struct.AProps.html"
        },
        "softNavigation": {
          "status": "official",
          "note": "leptos_router enhances local links, changes routes/history and updates the route outlet in the browser without a document reload.",
          "url": "https://book.leptos.dev/router/16_routes.html",
          "reviewedOn": "2026-11-11",
          "label": "leptos_router"
        },
        "viewTransitions": {
          "status": "official",
          "note": "Routes/FlatRoutes expose a transition flag to coordinate the browser View Transition API during navigation. Browser support and application CSS determine the animation; asynchronous UI Transition is a separate concept.",
          "url": "https://docs.rs/leptos_router/latest/leptos_router/components/struct.FlatRoutesProps.html",
          "reviewedOn": "2026-11-11",
          "label": "leptos_router transition"
        },
        "redirects": {
          "status": "official",
          "note": "Server integrations expose redirects and response options; router redirects handle client navigation.",
          "url": "https://book.leptos.dev/server/27_response.html",
          "label": "Router / server integrations"
        },
        "serverData": {
          "status": "native",
          "note": "Resource resolves asynchronous work on the server and serializes its value for hydration.",
          "url": "https://book.leptos.dev/async/10_resources.html"
        },
        "clientData": {
          "status": "native",
          "note": "Resource and LocalResource react to dependencies and expose asynchronous client data. Shared query caching needs additional policy.",
          "url": "https://book.leptos.dev/async/10_resources.html"
        },
        "requestDedupe": {
          "status": "undocumented",
          "note": "Resource sharing is possible through context, but an automatic request-wide keyed deduplication cache is not established.",
          "url": "https://book.leptos.dev/async/10_resources.html"
        },
        "persistentCache": {
          "status": "official",
          "note": "Static routes retain generated page files. This is a page-generation mechanism, not a general-purpose application data cache.",
          "url": "https://docs.rs/leptos_router/latest/leptos_router/static_routes/index.html",
          "label": "Static routes"
        },
        "invalidation": {
          "status": "native",
          "note": "Actions expose reactive versions/results that can drive Resource refetching. This is distinct from a path/tag server cache.",
          "url": "https://book.leptos.dev/async/13_actions.html",
          "label": "Reactive resource refetch"
        },
        "isr": {
          "status": "partial",
          "note": "Static route regeneration functions define when generated pages should be refreshed. Applications supply the trigger and host/storage configuration.",
          "url": "https://docs.rs/leptos_router/latest/leptos_router/static_routes/index.html",
          "label": "RegenerationFn",
          "reviewedOn": "2026-11-10"
        },
        "apiRoutes": {
          "status": "official",
          "note": "Axum/Actix integrations expose generated server-function routes and can be composed with custom HTTP handlers.",
          "url": "https://book.leptos.dev/server/26_extractors.html",
          "label": "leptos_axum / leptos_actix"
        },
        "actions": {
          "status": "official",
          "note": "The #[server] macro generates server endpoints and browser call stubs.",
          "url": "https://book.leptos.dev/server/25_server_functions.html",
          "label": "server_fn"
        },
        "forms": {
          "status": "official",
          "note": "ActionForm progressively enhances ServerAction forms and works without client JS. Applications still validate server-side inputs.",
          "url": "https://book.leptos.dev/progressive_enhancement/action_form.html",
          "label": "leptos_router ActionForm",
          "reviewedOn": "2026-11-11",
          "assessment": {
            "summary": "Form transport, validation, pending feedback and optimistic state are separate behaviors; the progressive-forms and optimistic-updates rows review the latter contracts explicitly.",
            "strengths": [
              "ActionForm progressively enhances ServerAction forms and works without client JS. Applications still validate server-side inputs."
            ],
            "tradeoffs": [
              "Do not infer a no-JavaScript submission path, automatic validation, accessible field errors or rollback merely from the ability to receive FormData."
            ]
          }
        },
        "middleware": {
          "status": "official",
          "note": "Server functions integrate host extractors and Axum/Actix request middleware.",
          "url": "https://book.leptos.dev/server/26_extractors.html",
          "label": "Server integrations"
        },
        "cookies": {
          "status": "official",
          "note": "ResponseOptions and host extractors can read/set cookie headers; session storage/policy is application-owned.",
          "url": "https://book.leptos.dev/server/27_response.html",
          "label": "Server integrations"
        },
        "cssModules": {
          "status": "community",
          "note": "Stylance maps CSS/SCSS modules into Rust class references.",
          "url": "https://book.leptos.dev/interlude_styling.html",
          "label": "Stylance"
        },
        "scopedCss": {
          "status": "community",
          "note": "Stylers supplies scoped inline CSS; Stylance offers external stylesheet modules.",
          "url": "https://book.leptos.dev/interlude_styling.html",
          "label": "Stylers / Stylance"
        },
        "tailwind": {
          "status": "community",
          "note": "cargo-leptos can run Tailwind’s external compiler as part of its build workflow.",
          "url": "https://book.leptos.dev/interlude_styling.html",
          "label": "cargo-leptos recipe"
        },
        "cssInJs": {
          "status": "undocumented",
          "note": "Rust scoped-style packages are documented; a JavaScript CSS-in-JS SSR registry is not established.",
          "url": "https://book.leptos.dev/interlude_styling.html"
        },
        "images": {
          "status": "undocumented",
          "note": "Styles/asset builds are documented; an automatic image resizing/format pipeline is not established.",
          "url": "https://book.leptos.dev/interlude_styling.html"
        },
        "fonts": {
          "status": "undocumented",
          "note": "Fonts may be authored in CSS; a font download/subset/fallback-optimization API is not established.",
          "url": "https://book.leptos.dev/interlude_styling.html"
        },
        "scripts": {
          "status": "partial",
          "note": "leptos_meta manages script elements in the head; sophisticated third-party scheduling is application-owned.",
          "url": "https://book.leptos.dev/metadata.html",
          "label": "leptos_meta Script",
          "reviewedOn": "2026-11-10"
        },
        "staticAssets": {
          "status": "official",
          "note": "cargo-leptos builds client assets and copies configured public assets into the site output.",
          "url": "https://book.leptos.dev/ssr/21_cargo_leptos.html",
          "label": "cargo-leptos"
        },
        "metadata": {
          "status": "official",
          "note": "leptos_meta supplies Title, Meta, Link, and other head components. It is component-based rather than a merged metadata object.",
          "url": "https://book.leptos.dev/metadata.html",
          "label": "Reactive head components",
          "assessment": {
            "label": "Reactive head components",
            "summary": "Head elements participate in the reactive component model, with a documented title formatter.",
            "strengths": [
              "Title, Meta, Link, and other head components can be authored within application components.",
              "Reactive values update metadata; a shared formatter composes route titles."
            ],
            "tradeoffs": [
              "This review has not established a general nested metadata-object merge/clear contract.",
              "Do not infer Next.js-equivalent inheritance behavior from the presence of a Meta component."
            ]
          }
        },
        "dynamicMetadata": {
          "status": "official",
          "note": "Metadata components accept reactive values, so document metadata can follow application state.",
          "url": "https://book.leptos.dev/metadata.html",
          "label": "leptos_meta"
        },
        "metadataInheritance": {
          "status": "partial",
          "note": "Reactive head components and context compose metadata; the Title formatter can be inherited independently of child title text. General nested metadata-object merging is not established.",
          "url": "https://docs.rs/leptos_meta/latest/leptos_meta/struct.TitleProps.html",
          "label": "Title/context composition",
          "reviewedOn": "2026-11-10"
        },
        "metadataOverrides": {
          "status": "partial",
          "note": "Child Title text can compose with an ancestor formatter. A uniform nested SEO-field merge/clear contract is not established.",
          "url": "https://docs.rs/leptos_meta/latest/leptos_meta/struct.TitleProps.html",
          "label": "Title-specific composition",
          "reviewedOn": "2026-11-10"
        },
        "titleTemplates": {
          "status": "official",
          "note": "Title accepts a formatter on the app and route-specific text. The book demonstrates a common suffix applied to route titles.",
          "url": "https://book.leptos.dev/metadata.html",
          "label": "Title formatter"
        },
        "socialImages": {
          "status": "undocumented",
          "note": "Head meta/link components do not establish a generated social-card image renderer.",
          "url": "https://book.leptos.dev/metadata.html"
        },
        "sitemaps": {
          "status": "undocumented",
          "note": "Route definitions do not themselves establish automatic crawler XML sitemap generation.",
          "url": "https://book.leptos.dev/router/16_routes.html"
        },
        "robots": {
          "status": "official",
          "note": "An application can publish an authored robots.txt from its configured assets directory.",
          "url": "https://book.leptos.dev/ssr/21_cargo_leptos.html",
          "label": "Public file"
        },
        "markdown": {
          "status": "undocumented",
          "note": "The reviewed view/component and build APIs do not establish a Markdown content pipeline; an additional parser/build step is needed.",
          "url": "https://book.leptos.dev/view/01_basic_component.html"
        },
        "collections": {
          "status": "undocumented",
          "note": "The build guide does not establish typed content collection schemas/loaders/query registries.",
          "url": "https://book.leptos.dev/ssr/21_cargo_leptos.html"
        },
        "draftMode": {
          "status": "undocumented",
          "note": "Application response/cache logic is available; a dedicated authenticated draft-preview API is not established.",
          "url": "https://book.leptos.dev/server/27_response.html"
        },
        "translations": {
          "status": "community",
          "note": "leptos_i18n supplies locale-aware translated messages for Leptos applications.",
          "url": "https://docs.rs/leptos_i18n/latest/leptos_i18n/",
          "label": "leptos_i18n"
        },
        "localeRouting": {
          "status": "undocumented",
          "note": "The reviewed leptos_i18n API establishes locale context/messages, but a locale-aware URL router/negotiation contract is not established here.",
          "url": "https://docs.rs/leptos_i18n/latest/leptos_i18n/"
        },
        "localeFormatting": {
          "status": "community",
          "note": "leptos_i18n’s formatters include ICU-backed number/date/time formatting; enable the relevant package features.",
          "url": "https://docs.rs/leptos_i18n_build/latest/leptos_i18n_build/enum.FormatterOptions.html",
          "label": "leptos_i18n"
        },
        "auth": {
          "status": "partial",
          "note": "Host extractors can supply an authenticated user to server functions. Login, identity storage, and authorization remain application/library work.",
          "url": "https://book.leptos.dev/server/26_extractors.html",
          "label": "Host auth extractors",
          "reviewedOn": "2026-11-10"
        },
        "csp": {
          "status": "official",
          "note": "The nonce feature generates request nonces and applies them to framework inline scripts/styles. Configure the matching CSP policy in the host response.",
          "url": "https://docs.rs/leptos/latest/leptos/nonce/struct.Nonce.html",
          "label": "Nonce feature"
        },
        "cspNonce": {
          "status": "official",
          "note": "The nonce feature generates request nonces and applies them to framework inline scripts/styles. Configure the matching CSP policy in the host response.",
          "url": "https://docs.rs/leptos/latest/leptos/nonce/struct.Nonce.html",
          "reviewedOn": "2026-11-11",
          "label": "Nonce feature"
        },
        "csrf": {
          "status": "undocumented",
          "note": "Server functions are public endpoints; the reviewed macro guide does not establish a complete CSRF token/origin protection policy. Applications must secure endpoints.",
          "url": "https://book.leptos.dev/server/25_server_functions.html"
        },
        "environment": {
          "status": "partial",
          "note": "Server-function implementations are excluded from client builds; applications must keep secrets out of serialized return values.",
          "url": "https://book.leptos.dev/server/25_server_functions.html",
          "label": "Server-function boundary",
          "reviewedOn": "2026-11-10"
        },
        "types": {
          "status": "native",
          "note": "Rust types and view macros check typed component composition during compilation.",
          "url": "https://docs.rs/leptos/latest/leptos/"
        },
        "hmr": {
          "status": "official",
          "note": "cargo-leptos watch rebuilds and reloads the app; CSS/assets can update without a full source rebuild.",
          "url": "https://book.leptos.dev/ssr/21_cargo_leptos.html",
          "label": "cargo-leptos"
        },
        "cli": {
          "status": "official",
          "note": "cargo-leptos integrates build, watch, test, and asset processing.",
          "url": "https://book.leptos.dev/ssr/21_cargo_leptos.html",
          "label": "cargo-leptos"
        },
        "bundleAnalysis": {
          "status": "undocumented",
          "note": "The reviewed CLI build workflow does not establish a graphical production bundle/module analyzer.",
          "url": "https://book.leptos.dev/ssr/21_cargo_leptos.html"
        },
        "unitTests": {
          "status": "community",
          "note": "The guide demonstrates native Rust tests and wasm-bindgen-test for browser-side code.",
          "url": "https://book.leptos.dev/testing.html",
          "label": "Rust / wasm-bindgen-test"
        },
        "e2eTests": {
          "status": "community",
          "note": "The testing guide uses Playwright against the running application.",
          "url": "https://book.leptos.dev/testing.html",
          "label": "Playwright"
        },
        "observability": {
          "status": "partial",
          "note": "The deployment recipe configures RUST_LOG and a production Rust server; exporters and monitoring infrastructure are application-owned.",
          "url": "https://book.leptos.dev/deployment/ssr.html",
          "label": "Host logging configuration",
          "reviewedOn": "2026-11-10"
        },
        "errorHandling": {
          "status": "native",
          "note": "ErrorBoundary renders fallback UI for errors carried by child views.",
          "url": "https://book.leptos.dev/view/07_errors.html"
        },
        "serverHosting": {
          "status": "official",
          "note": "Axum/Actix applications can run as production binaries on VMs.",
          "url": "https://book.leptos.dev/deployment/ssr.html",
          "label": "Server integrations"
        },
        "staticHosting": {
          "status": "partial",
          "note": "CSR builds can be served as static files; request-time SSR/server functions still need a server.",
          "url": "https://book.leptos.dev/deployment/csr.html",
          "label": "CSR static deployment",
          "reviewedOn": "2026-11-10"
        },
        "containers": {
          "status": "native",
          "note": "The official guide includes Docker/Podman multi-stage build recipes.",
          "url": "https://book.leptos.dev/deployment/ssr.html",
          "label": "Container recipe"
        },
        "edgeHosting": {
          "status": "partial",
          "note": "Leptos-Axum documents JS-hosted WASM targets including Cloudflare/Deno; dependencies must be WASM-compatible and setup differs.",
          "url": "https://book.leptos.dev/deployment/ssr.html",
          "label": "WASM server integration",
          "reviewedOn": "2026-11-10"
        },
        "orm": {
          "status": "undocumented",
          "note": "The reviewed framework documentation does not establish an owned orm / query builder API. Host libraries and application integrations may provide it.",
          "url": "https://leptos.dev"
        },
        "migrations": {
          "status": "undocumented",
          "note": "The reviewed framework documentation does not establish an owned schema migrations API. Host libraries and application integrations may provide it.",
          "url": "https://leptos.dev"
        },
        "transactions": {
          "status": "undocumented",
          "note": "The reviewed framework documentation does not establish an owned transactions API. Host libraries and application integrations may provide it.",
          "url": "https://leptos.dev"
        },
        "jobs": {
          "status": "undocumented",
          "note": "The reviewed framework documentation does not establish an owned background jobs API. Host libraries and application integrations may provide it.",
          "url": "https://leptos.dev"
        },
        "mail": {
          "status": "undocumented",
          "note": "The reviewed framework documentation does not establish an owned email API. Host libraries and application integrations may provide it.",
          "url": "https://leptos.dev"
        },
        "uploads": {
          "status": "undocumented",
          "note": "The reviewed framework documentation does not establish an owned file uploads & storage API. Host libraries and application integrations may provide it.",
          "url": "https://leptos.dev"
        },
        "realtime": {
          "status": "undocumented",
          "note": "The reviewed framework documentation does not establish an owned real-time delivery API. Host libraries and application integrations may provide it.",
          "url": "https://leptos.dev"
        },
        "xssEscaping": {
          "status": "native",
          "note": "view! renders dynamic strings as text; inner_html inserts raw HTML and requires trusted/sanitized input. Rendering text safely does not make untrusted HTML safe.",
          "url": "https://book.leptos.dev/view/01_basic_component.html",
          "reviewedOn": "2026-11-11"
        },
        "htmlSanitization": {
          "status": "undocumented",
          "note": "The linked security API review does not establish the specific html sanitization contract defined here. This is a bounded documentation finding, not proof of absence; generic hooks or application-authored code are not counted as an owned implementation.",
          "url": "https://docs.rs/leptos/latest/leptos/nonce/struct.Nonce.html",
          "reviewedOn": "2026-11-11"
        },
        "authorization": {
          "status": "undocumented",
          "note": "The linked security API review does not establish the specific authorization policies contract defined here. This is a bounded documentation finding, not proof of absence; generic hooks or application-authored code are not counted as an owned implementation.",
          "url": "https://docs.rs/leptos/latest/leptos/nonce/struct.Nonce.html",
          "reviewedOn": "2026-11-11"
        },
        "rateLimiting": {
          "status": "undocumented",
          "note": "The linked security API review does not establish the specific rate limiting contract defined here. This is a bounded documentation finding, not proof of absence; generic hooks or application-authored code are not counted as an owned implementation.",
          "url": "https://docs.rs/leptos/latest/leptos/nonce/struct.Nonce.html",
          "reviewedOn": "2026-11-11"
        },
        "progressiveEnhancement": {
          "status": "official",
          "note": "ActionForm maps server functions to a native form submission and enhances it when hydrated. Input types/encoding must support form submission; browser-only events do not supply a no-JS fallback.",
          "url": "https://book.leptos.dev/progressive_enhancement/action_form.html",
          "reviewedOn": "2026-11-11",
          "label": "leptos_router ActionForm"
        },
        "optimisticUi": {
          "status": "native",
          "note": "Actions expose input/pending/value and the book demonstrates deriving optimistic state from pending submissions. Application code still chooses merge/error behavior; a pending flag alone is not an optimistic update.",
          "url": "https://book.leptos.dev/async/13_actions.html",
          "reviewedOn": "2026-11-11",
          "label": "Actions / pending input"
        },
        "requestCancellation": {
          "status": "undocumented",
          "note": "The linked data API review does not establish the specific stale request handling contract defined here. This is a bounded documentation finding, not proof of absence; generic hooks or application-authored code are not counted as an owned implementation.",
          "url": "https://book.leptos.dev/async/10_resources.html",
          "reviewedOn": "2026-11-11"
        },
        "typedLinks": {
          "status": "undocumented",
          "note": "The linked routing API review does not establish the specific typed links & parameters contract defined here. This is a bounded documentation finding, not proof of absence; generic hooks or application-authored code are not counted as an owned implementation.",
          "url": "https://book.leptos.dev/router/16_routes.html",
          "reviewedOn": "2026-11-11"
        },
        "searchParams": {
          "status": "official",
          "note": "Params-derived query structs parse search values into typed Results; applications handle malformed values and defaults. Reading a raw ParamsMap is a separate, less constrained API.",
          "url": "https://book.leptos.dev/router/18_params_and_queries.html",
          "reviewedOn": "2026-11-11",
          "label": "leptos_router Params"
        },
        "stateRestoration": {
          "status": "undocumented",
          "note": "The linked routing API review does not establish the specific navigation state retention contract defined here. This is a bounded documentation finding, not proof of absence; generic hooks or application-authored code are not counted as an owned implementation.",
          "url": "https://book.leptos.dev/router/16_routes.html",
          "reviewedOn": "2026-11-11"
        },
        "scrollRestoration": {
          "status": "undocumented",
          "note": "The linked routing API review does not establish the specific scroll restoration contract defined here. This is a bounded documentation finding, not proof of absence; generic hooks or application-authored code are not counted as an owned implementation.",
          "url": "https://book.leptos.dev/router/16_routes.html",
          "reviewedOn": "2026-11-11"
        },
        "navigationBlocking": {
          "status": "undocumented",
          "note": "The linked routing API review does not establish the specific unsaved-change guards contract defined here. This is a bounded documentation finding, not proof of absence; generic hooks or application-authored code are not counted as an owned implementation.",
          "url": "https://book.leptos.dev/router/16_routes.html",
          "reviewedOn": "2026-11-11"
        },
        "navigationAccessibility": {
          "status": "undocumented",
          "note": "The linked client rendering API review does not establish the specific accessible navigation contract defined here. This is a bounded documentation finding, not proof of absence; generic hooks or application-authored code are not counted as an owned implementation.",
          "url": "https://docs.rs/leptos/latest/leptos/",
          "reviewedOn": "2026-11-11"
        },
        "a11yChecks": {
          "status": "undocumented",
          "note": "The linked client rendering API review does not establish the specific accessibility checks contract defined here. This is a bounded documentation finding, not proof of absence; generic hooks or application-authored code are not counted as an owned implementation.",
          "url": "https://docs.rs/leptos/latest/leptos/",
          "reviewedOn": "2026-11-11"
        },
        "lazyActivation": {
          "status": "undocumented",
          "note": "The linked rendering API review does not establish the specific deferred activation contract defined here. This is a bounded documentation finding, not proof of absence; generic hooks or application-authored code are not counted as an owned implementation.",
          "url": "https://docs.rs/leptos/latest/leptos/",
          "reviewedOn": "2026-11-11"
        },
        "codeSplitting": {
          "status": "official",
          "note": "The official lazy_routes example uses LazyRoute and cargo leptos watch --split to load route-specific browser WASM/code. It requires the opt-in split toolchain and is distinct from enabling islands; shared code and toolchain support constrain the resulting chunks.",
          "url": "https://github.com/leptos-rs/leptos/tree/5a6d608297486da55901ae32f493fb28db18f3fc/examples/lazy_routes",
          "reviewedOn": "2026-11-11",
          "label": "Router / cargo-leptos"
        },
        "offline": {
          "status": "undocumented",
          "note": "The linked deployment API review does not establish the specific offline integration contract defined here. This is a bounded documentation finding, not proof of absence; generic hooks or application-authored code are not counted as an owned implementation.",
          "url": "https://book.leptos.dev/deployment/ssr.html",
          "reviewedOn": "2026-11-11"
        },
        "scheduling": {
          "status": "undocumented",
          "note": "The linked backend API review does not establish the specific scheduled tasks contract defined here. This is a bounded documentation finding, not proof of absence; generic hooks or application-authored code are not counted as an owned implementation.",
          "url": "https://leptos.dev",
          "reviewedOn": "2026-11-11"
        },
        "notifications": {
          "status": "undocumented",
          "note": "The linked backend API review does not establish the specific multi-channel notifications contract defined here. This is a bounded documentation finding, not proof of absence; generic hooks or application-authored code are not counted as an owned implementation.",
          "url": "https://leptos.dev",
          "reviewedOn": "2026-11-11"
        },
        "searchIndex": {
          "status": "undocumented",
          "note": "The linked backend API review does not establish the specific search indexing contract defined here. This is a bounded documentation finding, not proof of absence; generic hooks or application-authored code are not counted as an owned implementation.",
          "url": "https://leptos.dev",
          "reviewedOn": "2026-11-11"
        },
        "fieldEncryption": {
          "status": "undocumented",
          "note": "The linked database API review does not establish the specific encrypted model fields contract defined here. This is a bounded documentation finding, not proof of absence; generic hooks or application-authored code are not counted as an owned implementation.",
          "url": "https://leptos.dev",
          "reviewedOn": "2026-11-11"
        },
        "httpTests": {
          "status": "undocumented",
          "note": "The linked testing API review does not establish the specific http integration tests contract defined here. This is a bounded documentation finding, not proof of absence; generic hooks or application-authored code are not counted as an owned implementation.",
          "url": "https://book.leptos.dev/testing.html",
          "reviewedOn": "2026-11-11"
        }
      }
    },
    {
      "id": "marko",
      "label": "Marko",
      "kind": "UI framework",
      "logo": "logos/marko.svg",
      "color": "#00b068",
      "scope": "Marko 6 documentation; @marko/run application features are identified explicitly.",
      "reviewedOn": "2026-11-10",
      "updatedOn": "2026-11-11",
      "capabilities": {
        "ssr": {
          "status": "native",
          "note": "Marko compiles templates for server-rendered HTML.",
          "url": "https://markojs.com/docs/explanation/streaming"
        },
        "streaming": {
          "status": "native",
          "note": "HTML flushes progressively around await tags; try boundaries support replacement content.",
          "url": "https://markojs.com/docs/explanation/streaming"
        },
        "suspense": {
          "status": "native",
          "note": "await plus try / @placeholder coordinates async content and loading states.",
          "url": "https://markojs.com/docs/explanation/streaming",
          "label": "await / try"
        },
        "client": {
          "status": "native",
          "note": "Marko resumes interactive expressions without re-rendering templates to recreate initial state.",
          "url": "https://markojs.com/docs/explanation/why-is-marko-fast",
          "label": "Resumability"
        },
        "ssg": {
          "status": "official",
          "note": "The static adapter crawls routes/links and accepts additional URLs to prerender.",
          "url": "https://markojs.com/docs/marko-run/adapters",
          "label": "@marko/run static adapter"
        },
        "csr": {
          "status": "native",
          "note": "Template.mount creates client UI without requiring initial server HTML.",
          "url": "https://markojs.com/docs/reference/template"
        },
        "serverOnly": {
          "status": "native",
          "note": "Server-only/static code is omitted from the interactive client build; this is targeted compilation, not React Server Components.",
          "url": "https://markojs.com/docs/explanation/targeted-compilation"
        },
        "partialRendering": {
          "status": "undocumented",
          "note": "The reviewed patch protocol does not establish production static-shell partial prerendering; persisted pages are described as future work.",
          "url": "https://markojs.com/docs/explanation/patch-protocol"
        },
        "routing": {
          "status": "official",
          "note": "@marko/run adds file-based routing, layouts, middleware, and deployment adapters.",
          "url": "https://markojs.com/docs/marko-run/getting-started",
          "label": "@marko/run"
        },
        "layouts": {
          "status": "official",
          "note": "Nested layout files wrap routed content.",
          "url": "https://markojs.com/docs/marko-run/file-based-routing",
          "label": "@marko/run"
        },
        "dynamicRoutes": {
          "status": "official",
          "note": "File route conventions support dynamic and catch-all segments.",
          "url": "https://markojs.com/docs/marko-run/file-based-routing",
          "label": "@marko/run"
        },
        "parallelRoutes": {
          "status": "undocumented",
          "note": "Nested layouts are documented; independent named route-slot navigation is not established.",
          "url": "https://markojs.com/docs/marko-run/file-based-routing"
        },
        "interceptedRoutes": {
          "status": "undocumented",
          "note": "The reviewed file router does not establish intercepted-modal/direct-navigation route semantics.",
          "url": "https://markojs.com/docs/marko-run/file-based-routing"
        },
        "prefetch": {
          "status": "undocumented",
          "note": "Typed URL and fetch/navigation helpers are documented; an automatic route/data prefetch policy is not established.",
          "url": "https://markojs.com/docs/marko-run/runtime"
        },
        "softNavigation": {
          "status": "undocumented",
          "note": "The reviewed routing API does not establish this navigation capability. Application code or another package may provide it; this finding is not proof of absence.",
          "url": "https://markojs.com/docs/marko-run/getting-started",
          "reviewedOn": "2026-11-11"
        },
        "viewTransitions": {
          "status": "undocumented",
          "note": "The reviewed routing API does not establish this navigation capability. Application code or another package may provide it; this finding is not proof of absence.",
          "url": "https://markojs.com/docs/marko-run/getting-started",
          "reviewedOn": "2026-11-11"
        },
        "redirects": {
          "status": "official",
          "note": "Run context helpers return redirects and back-navigation responses.",
          "url": "https://markojs.com/docs/marko-run/runtime",
          "label": "@marko/run"
        },
        "serverData": {
          "status": "official",
          "note": "Handlers and middleware populate ctx.data for server templates.",
          "url": "https://markojs.com/docs/marko-run/data-loading",
          "label": "@marko/run"
        },
        "clientData": {
          "status": "undocumented",
          "note": "Client template expressions can consume promises; shared query caches, retry policy, and stale-data handling are not supplied by this template API.",
          "url": "https://markojs.com/docs/reference/template",
          "label": "App promises"
        },
        "requestDedupe": {
          "status": "undocumented",
          "note": "The reviewed loading API does not establish automatic request-wide keyed data deduplication.",
          "url": "https://markojs.com/docs/marko-run/data-loading"
        },
        "persistentCache": {
          "status": "undocumented",
          "note": "ctx.data and compiler caching do not establish a cross-request application data/page cache.",
          "url": "https://markojs.com/docs/marko-run/data-loading"
        },
        "invalidation": {
          "status": "undocumented",
          "note": "A dependency-aware path/tag data-cache invalidation API is not established by the reviewed loading guide.",
          "url": "https://markojs.com/docs/marko-run/data-loading"
        },
        "isr": {
          "status": "undocumented",
          "note": "The static adapter builds files; request-time stale-page regeneration is not established.",
          "url": "https://markojs.com/docs/marko-run/adapters"
        },
        "apiRoutes": {
          "status": "official",
          "note": "Handler files expose HTTP routes and custom responses.",
          "url": "https://markojs.com/docs/marko-run/file-based-routing",
          "label": "@marko/run"
        },
        "actions": {
          "status": "partial",
          "note": "@marko/run documents POST handlers and parsed form bodies; these are explicit HTTP handlers rather than generated function RPC.",
          "url": "https://markojs.com/docs/marko-run/data-loading",
          "label": "POST handlers",
          "reviewedOn": "2026-11-10"
        },
        "forms": {
          "status": "official",
          "note": "Run validates form/JSON bodies and route/search inputs against Standard Schema validators; the validator package is application-selected.",
          "url": "https://markojs.com/docs/marko-run/validation",
          "label": "@marko/run validation",
          "reviewedOn": "2026-11-11",
          "assessment": {
            "summary": "Form transport, validation, pending feedback and optimistic state are separate behaviors; the progressive-forms and optimistic-updates rows review the latter contracts explicitly.",
            "strengths": [
              "Run validates form/JSON bodies and route/search inputs against Standard Schema validators; the validator package is application-selected."
            ],
            "tradeoffs": [
              "Do not infer a no-JavaScript submission path, automatic validation, accessible field errors or rollback merely from the ability to receive FormData."
            ]
          }
        },
        "middleware": {
          "status": "official",
          "note": "Middleware runs in the matched route tree before handlers/pages.",
          "url": "https://markojs.com/docs/marko-run/file-based-routing",
          "label": "@marko/run"
        },
        "cookies": {
          "status": "partial",
          "note": "WHATWG Request/Response headers are available; application code or another library manages cookie parsing and sessions.",
          "url": "https://markojs.com/docs/marko-run/runtime",
          "label": "HTTP headers",
          "reviewedOn": "2026-11-10"
        },
        "cssModules": {
          "status": "native",
          "note": "Enhanced style tags and CSS Modules provide compiled class mappings.",
          "url": "https://markojs.com/docs/guide/styling"
        },
        "scopedCss": {
          "status": "native",
          "note": "Enhanced style syntax scopes authored styles to the template.",
          "url": "https://markojs.com/docs/guide/styling"
        },
        "tailwind": {
          "status": "undocumented",
          "note": "The reviewed guide explains CSS imports and modules; it does not establish a dedicated Tailwind integration.",
          "url": "https://markojs.com/docs/guide/styling"
        },
        "cssInJs": {
          "status": "undocumented",
          "note": "Compiled template styles do not establish a general runtime CSS-in-JS SSR registry.",
          "url": "https://markojs.com/docs/guide/styling"
        },
        "images": {
          "status": "undocumented",
          "note": "The reviewed integrations list does not establish a Marko image optimization pipeline.",
          "url": "https://markojs.com/docs/introduction/integrations"
        },
        "fonts": {
          "status": "undocumented",
          "note": "Styles and asset imports are documented; automatic font downloading/subsetting/fallback optimization is not established.",
          "url": "https://markojs.com/docs/guide/styling"
        },
        "scripts": {
          "status": "undocumented",
          "note": "The template runtime manages generated activation code. Scheduling arbitrary third-party scripts remains application-owned.",
          "url": "https://markojs.com/docs/reference/template",
          "label": "Generated runtime scripts"
        },
        "staticAssets": {
          "status": "official",
          "note": "Run uses Vite for development/build asset integration.",
          "url": "https://markojs.com/docs/marko-run/getting-started",
          "label": "@marko/run / Vite"
        },
        "metadata": {
          "status": "partial",
          "note": "Head markup can be composed in layouts. +meta is route configuration data, not a typed SEO metadata-object API.",
          "url": "https://markojs.com/docs/marko-run/file-based-routing",
          "label": "Authored head markup",
          "reviewedOn": "2026-11-10"
        },
        "dynamicMetadata": {
          "status": "official",
          "note": "Loaded ctx.data can populate authored head tags; metadata lifecycle/merge policy is application code.",
          "url": "https://markojs.com/docs/marko-run/data-loading",
          "label": "Layout / ctx.data"
        },
        "metadataInheritance": {
          "status": "undocumented",
          "note": "Layout nesting and +meta configuration do not establish automatic SEO field inheritance.",
          "url": "https://markojs.com/docs/marko-run/file-based-routing"
        },
        "metadataOverrides": {
          "status": "undocumented",
          "note": "A structured document metadata merge/clear contract is not documented for nested layouts.",
          "url": "https://markojs.com/docs/marko-run/file-based-routing"
        },
        "titleTemplates": {
          "status": "undocumented",
          "note": "Applications can format title markup; no ancestor title-template/absolute-title API is established.",
          "url": "https://markojs.com/docs/marko-run/file-based-routing"
        },
        "socialImages": {
          "status": "undocumented",
          "note": "A generated route-aware Open Graph image renderer is not established by the reviewed integrations.",
          "url": "https://markojs.com/docs/introduction/integrations"
        },
        "sitemaps": {
          "status": "partial",
          "note": "The router demonstrates a sitemap.xml handler filename; generating its XML/URLs remains application code.",
          "url": "https://markojs.com/docs/marko-run/file-based-routing",
          "label": "Endpoint recipe",
          "reviewedOn": "2026-11-10"
        },
        "robots": {
          "status": "official",
          "note": "A static resource or handler can publish robots.txt; crawler directive generation is application-owned.",
          "url": "https://markojs.com/docs/marko-run/file-based-routing",
          "label": "Static file / handler"
        },
        "markdown": {
          "status": "undocumented",
          "note": "A Markdown content-page integration is not established by the reviewed first-party integrations list.",
          "url": "https://markojs.com/docs/introduction/integrations"
        },
        "collections": {
          "status": "undocumented",
          "note": "Run loads application data but does not document typed content collections/schema registries here.",
          "url": "https://markojs.com/docs/marko-run/data-loading"
        },
        "draftMode": {
          "status": "undocumented",
          "note": "An authenticated draft-preview mode with cache bypass is not documented in the reviewed loading API.",
          "url": "https://markojs.com/docs/marko-run/data-loading"
        },
        "translations": {
          "status": "undocumented",
          "note": "The reviewed integration docs do not establish a message-catalog/translation API.",
          "url": "https://markojs.com/docs/introduction/integrations"
        },
        "localeRouting": {
          "status": "partial",
          "note": "A dynamic route segment can carry a locale; language detection, dictionaries, and redirects are application code.",
          "url": "https://markojs.com/docs/marko-run/file-based-routing",
          "label": "Route segment",
          "reviewedOn": "2026-11-10"
        },
        "localeFormatting": {
          "status": "undocumented",
          "note": "Serialization of Intl objects does not itself supply locale selection or a framework formatter API.",
          "url": "https://markojs.com/docs/reference/template"
        },
        "auth": {
          "status": "undocumented",
          "note": "Middleware can host auth checks; an identity/session integration is not established by the reviewed Run docs.",
          "url": "https://markojs.com/docs/marko-run/file-based-routing"
        },
        "csp": {
          "status": "partial",
          "note": "$global.cspNonce is applied to generated scripts/styles. Applications must generate nonces and configure the HTTP policy.",
          "url": "https://markojs.com/docs/reference/template",
          "label": "Nonce interoperability",
          "reviewedOn": "2026-11-10"
        },
        "cspNonce": {
          "status": "partial",
          "note": "$global.cspNonce is applied to generated scripts/styles. Applications must generate nonces and configure the HTTP policy.",
          "url": "https://markojs.com/docs/reference/template",
          "reviewedOn": "2026-11-11",
          "label": "Nonce interoperability"
        },
        "csrf": {
          "status": "undocumented",
          "note": "Input/schema validation is documented, but a built-in CSRF token/origin enforcement mechanism is not established.",
          "url": "https://markojs.com/docs/marko-run/validation"
        },
        "environment": {
          "status": "official",
          "note": "The Vite-based server/client build separates runtime targets; applications must avoid serializing secrets into template globals.",
          "url": "https://markojs.com/docs/marko-run/getting-started",
          "label": "@marko/run / Vite"
        },
        "types": {
          "status": "official",
          "note": "Marko’s TypeScript tooling checks template inputs; mtc supplies command-line checking.",
          "url": "https://markojs.com/docs/reference/typescript",
          "label": "Marko TypeScript tooling"
        },
        "hmr": {
          "status": "official",
          "note": "Run’s Vite development server updates templates/assets.",
          "url": "https://markojs.com/docs/marko-run/getting-started",
          "label": "@marko/run / Vite"
        },
        "cli": {
          "status": "official",
          "note": "marko-run provides dev, build, and preview commands.",
          "url": "https://markojs.com/docs/marko-run/getting-started",
          "label": "@marko/run"
        },
        "bundleAnalysis": {
          "status": "undocumented",
          "note": "The reviewed CLI guide documents production builds but no built-in module-size visualization.",
          "url": "https://markojs.com/docs/marko-run/getting-started"
        },
        "unitTests": {
          "status": "official",
          "note": "@marko/testing-library supplies component testing helpers; it integrates with external test runners.",
          "url": "https://markojs.com/docs/introduction/integrations",
          "label": "@marko/testing-library"
        },
        "e2eTests": {
          "status": "undocumented",
          "note": "Component testing integrations are documented; a browser end-to-end setup is not established by this integrations review.",
          "url": "https://markojs.com/docs/introduction/integrations"
        },
        "observability": {
          "status": "partial",
          "note": "Middleware can instrument/log requests; production tracing/metrics exporters are application-selected.",
          "url": "https://markojs.com/docs/marko-run/file-based-routing",
          "label": "Middleware hooks",
          "reviewedOn": "2026-11-10"
        },
        "errorHandling": {
          "status": "native",
          "note": "try/@catch handles failed async UI; Run also provides +500 error pages.",
          "url": "https://markojs.com/docs/explanation/streaming"
        },
        "serverHosting": {
          "status": "official",
          "note": "The Node adapter supplies a production server target.",
          "url": "https://markojs.com/docs/marko-run/adapters",
          "label": "@marko/run Node adapter"
        },
        "staticHosting": {
          "status": "official",
          "note": "The static adapter emits deployable files; request-time server handlers are unavailable.",
          "url": "https://markojs.com/docs/marko-run/adapters",
          "label": "@marko/run static adapter"
        },
        "containers": {
          "status": "undocumented",
          "note": "Node/self-hosting adapters are documented; a maintained container deployment recipe is not established here.",
          "url": "https://markojs.com/docs/marko-run/adapters"
        },
        "edgeHosting": {
          "status": "official",
          "note": "The Netlify adapter documents an edge-function option; deployment behavior depends on that adapter.",
          "url": "https://markojs.com/docs/marko-run/adapters",
          "label": "@marko/run Netlify adapter"
        },
        "orm": {
          "status": "undocumented",
          "note": "The reviewed framework documentation does not establish an owned orm / query builder API. Host libraries and application integrations may provide it.",
          "url": "https://markojs.com"
        },
        "migrations": {
          "status": "undocumented",
          "note": "The reviewed framework documentation does not establish an owned schema migrations API. Host libraries and application integrations may provide it.",
          "url": "https://markojs.com"
        },
        "transactions": {
          "status": "undocumented",
          "note": "The reviewed framework documentation does not establish an owned transactions API. Host libraries and application integrations may provide it.",
          "url": "https://markojs.com"
        },
        "jobs": {
          "status": "undocumented",
          "note": "The reviewed framework documentation does not establish an owned background jobs API. Host libraries and application integrations may provide it.",
          "url": "https://markojs.com"
        },
        "mail": {
          "status": "undocumented",
          "note": "The reviewed framework documentation does not establish an owned email API. Host libraries and application integrations may provide it.",
          "url": "https://markojs.com"
        },
        "uploads": {
          "status": "undocumented",
          "note": "The reviewed framework documentation does not establish an owned file uploads & storage API. Host libraries and application integrations may provide it.",
          "url": "https://markojs.com"
        },
        "realtime": {
          "status": "undocumented",
          "note": "The reviewed framework documentation does not establish an owned real-time delivery API. Host libraries and application integrations may provide it.",
          "url": "https://markojs.com"
        },
        "xssEscaping": {
          "status": "native",
          "note": "Normal text interpolation is escaped; unescaped HTML interpolation is an explicit bypass. The reviewed output contract is not a rich-HTML sanitizer.",
          "url": "https://markojs.com/docs/reference/language",
          "reviewedOn": "2026-11-11"
        },
        "htmlSanitization": {
          "status": "undocumented",
          "note": "The linked security API review does not establish the specific html sanitization contract defined here. This is a bounded documentation finding, not proof of absence; generic hooks or application-authored code are not counted as an owned implementation.",
          "url": "https://markojs.com/docs/reference/template",
          "reviewedOn": "2026-11-11"
        },
        "authorization": {
          "status": "undocumented",
          "note": "The linked security API review does not establish the specific authorization policies contract defined here. This is a bounded documentation finding, not proof of absence; generic hooks or application-authored code are not counted as an owned implementation.",
          "url": "https://markojs.com/docs/reference/template",
          "reviewedOn": "2026-11-11"
        },
        "rateLimiting": {
          "status": "undocumented",
          "note": "The linked security API review does not establish the specific rate limiting contract defined here. This is a bounded documentation finding, not proof of absence; generic hooks or application-authored code are not counted as an owned implementation.",
          "url": "https://markojs.com/docs/reference/template",
          "reviewedOn": "2026-11-11"
        },
        "progressiveEnhancement": {
          "status": "undocumented",
          "note": "The linked server API review does not establish the specific progressive forms contract defined here. This is a bounded documentation finding, not proof of absence; generic hooks or application-authored code are not counted as an owned implementation.",
          "url": "https://markojs.com/docs/marko-run/validation",
          "reviewedOn": "2026-11-11"
        },
        "optimisticUi": {
          "status": "undocumented",
          "note": "The linked data API review does not establish the specific optimistic updates contract defined here. This is a bounded documentation finding, not proof of absence; generic hooks or application-authored code are not counted as an owned implementation.",
          "url": "https://markojs.com/docs/reference/template",
          "reviewedOn": "2026-11-11"
        },
        "requestCancellation": {
          "status": "undocumented",
          "note": "The linked data API review does not establish the specific stale request handling contract defined here. This is a bounded documentation finding, not proof of absence; generic hooks or application-authored code are not counted as an owned implementation.",
          "url": "https://markojs.com/docs/reference/template",
          "reviewedOn": "2026-11-11"
        },
        "typedLinks": {
          "status": "undocumented",
          "note": "The linked routing API review does not establish the specific typed links & parameters contract defined here. This is a bounded documentation finding, not proof of absence; generic hooks or application-authored code are not counted as an owned implementation.",
          "url": "https://markojs.com/docs/marko-run/getting-started",
          "reviewedOn": "2026-11-11"
        },
        "searchParams": {
          "status": "undocumented",
          "note": "The linked routing API review does not establish the specific validated url state contract defined here. This is a bounded documentation finding, not proof of absence; generic hooks or application-authored code are not counted as an owned implementation.",
          "url": "https://markojs.com/docs/marko-run/getting-started",
          "reviewedOn": "2026-11-11"
        },
        "stateRestoration": {
          "status": "undocumented",
          "note": "The linked routing API review does not establish the specific navigation state retention contract defined here. This is a bounded documentation finding, not proof of absence; generic hooks or application-authored code are not counted as an owned implementation.",
          "url": "https://markojs.com/docs/marko-run/getting-started",
          "reviewedOn": "2026-11-11"
        },
        "scrollRestoration": {
          "status": "undocumented",
          "note": "The linked routing API review does not establish the specific scroll restoration contract defined here. This is a bounded documentation finding, not proof of absence; generic hooks or application-authored code are not counted as an owned implementation.",
          "url": "https://markojs.com/docs/marko-run/getting-started",
          "reviewedOn": "2026-11-11"
        },
        "navigationBlocking": {
          "status": "undocumented",
          "note": "The linked routing API review does not establish the specific unsaved-change guards contract defined here. This is a bounded documentation finding, not proof of absence; generic hooks or application-authored code are not counted as an owned implementation.",
          "url": "https://markojs.com/docs/marko-run/getting-started",
          "reviewedOn": "2026-11-11"
        },
        "navigationAccessibility": {
          "status": "undocumented",
          "note": "The linked client rendering API review does not establish the specific accessible navigation contract defined here. This is a bounded documentation finding, not proof of absence; generic hooks or application-authored code are not counted as an owned implementation.",
          "url": "https://markojs.com/docs/explanation/why-is-marko-fast",
          "reviewedOn": "2026-11-11"
        },
        "a11yChecks": {
          "status": "undocumented",
          "note": "The linked client rendering API review does not establish the specific accessibility checks contract defined here. This is a bounded documentation finding, not proof of absence; generic hooks or application-authored code are not counted as an owned implementation.",
          "url": "https://markojs.com/docs/explanation/why-is-marko-fast",
          "reviewedOn": "2026-11-11"
        },
        "lazyActivation": {
          "status": "undocumented",
          "note": "The linked rendering API review does not establish the specific deferred activation contract defined here. This is a bounded documentation finding, not proof of absence; generic hooks or application-authored code are not counted as an owned implementation.",
          "url": "https://markojs.com/docs/explanation/why-is-marko-fast",
          "reviewedOn": "2026-11-11"
        },
        "codeSplitting": {
          "status": "undocumented",
          "note": "The linked rendering API review does not establish the specific route / island splitting contract defined here. This is a bounded documentation finding, not proof of absence; generic hooks or application-authored code are not counted as an owned implementation.",
          "url": "https://markojs.com/docs/explanation/why-is-marko-fast",
          "reviewedOn": "2026-11-11"
        },
        "offline": {
          "status": "undocumented",
          "note": "The linked deployment API review does not establish the specific offline integration contract defined here. This is a bounded documentation finding, not proof of absence; generic hooks or application-authored code are not counted as an owned implementation.",
          "url": "https://markojs.com/docs/marko-run/adapters",
          "reviewedOn": "2026-11-11"
        },
        "scheduling": {
          "status": "undocumented",
          "note": "The linked backend API review does not establish the specific scheduled tasks contract defined here. This is a bounded documentation finding, not proof of absence; generic hooks or application-authored code are not counted as an owned implementation.",
          "url": "https://markojs.com",
          "reviewedOn": "2026-11-11"
        },
        "notifications": {
          "status": "undocumented",
          "note": "The linked backend API review does not establish the specific multi-channel notifications contract defined here. This is a bounded documentation finding, not proof of absence; generic hooks or application-authored code are not counted as an owned implementation.",
          "url": "https://markojs.com",
          "reviewedOn": "2026-11-11"
        },
        "searchIndex": {
          "status": "undocumented",
          "note": "The linked backend API review does not establish the specific search indexing contract defined here. This is a bounded documentation finding, not proof of absence; generic hooks or application-authored code are not counted as an owned implementation.",
          "url": "https://markojs.com",
          "reviewedOn": "2026-11-11"
        },
        "fieldEncryption": {
          "status": "undocumented",
          "note": "The linked database API review does not establish the specific encrypted model fields contract defined here. This is a bounded documentation finding, not proof of absence; generic hooks or application-authored code are not counted as an owned implementation.",
          "url": "https://markojs.com",
          "reviewedOn": "2026-11-11"
        },
        "httpTests": {
          "status": "undocumented",
          "note": "The linked testing API review does not establish the specific http integration tests contract defined here. This is a bounded documentation finding, not proof of absence; generic hooks or application-authored code are not counted as an owned implementation.",
          "url": "https://markojs.com/docs/introduction/integrations",
          "reviewedOn": "2026-11-11"
        }
      }
    },
    {
      "id": "nextjs",
      "label": "Next.js",
      "kind": "Application framework",
      "logo": "logos/nextjs.svg",
      "color": "var(--fw-fg)",
      "scope": "Next.js App Router documentation, including its React integration.",
      "reviewedOn": "2026-11-10",
      "updatedOn": "2026-11-11",
      "capabilities": {
        "ssr": {
          "status": "native",
          "note": "App Router renders Server Components and initial page HTML on the server.",
          "url": "https://nextjs.org/docs/app/getting-started/server-and-client-components"
        },
        "streaming": {
          "status": "native",
          "note": "loading.js and Suspense stream HTML as route segments or components resolve.",
          "url": "https://nextjs.org/docs/app/api-reference/file-conventions/loading"
        },
        "suspense": {
          "status": "native",
          "note": "React Suspense boundaries display fallback UI while App Router streams resolved content.",
          "url": "https://nextjs.org/docs/app/api-reference/file-conventions/loading"
        },
        "client": {
          "status": "native",
          "note": "React hydration activates Client Components; Suspense enables selective hydration.",
          "url": "https://nextjs.org/docs/app/api-reference/file-conventions/loading",
          "label": "React hydration"
        },
        "ssg": {
          "status": "native",
          "note": "Static export generates an HTML file per route. Server-dependent features are unavailable in a static-only deployment.",
          "url": "https://nextjs.org/docs/app/guides/static-exports"
        },
        "csr": {
          "status": "native",
          "note": "Client Components render subsequent navigations in the browser. Initial visits still receive prerendered HTML.",
          "url": "https://nextjs.org/docs/app/getting-started/server-and-client-components"
        },
        "serverOnly": {
          "status": "native",
          "note": "React Server Components keep server implementation and dependencies out of the client bundle. Serialized props still reach the browser.",
          "url": "https://nextjs.org/docs/app/getting-started/server-and-client-components",
          "label": "React Server Components"
        },
        "partialRendering": {
          "status": "native",
          "note": "Cache Components combines a prerendered shell with request-time streaming. Existing apps must enable the documented configuration.",
          "url": "https://nextjs.org/docs/app/getting-started/caching",
          "label": "Cache Components"
        },
        "routing": {
          "status": "native",
          "note": "App Router uses files, nested layouts, page segments, and route handlers.",
          "url": "https://nextjs.org/docs/app/getting-started/layouts-and-pages"
        },
        "layouts": {
          "status": "native",
          "note": "Filesystem layout segments compose automatically and persist across navigation.",
          "url": "https://nextjs.org/docs/app/getting-started/layouts-and-pages"
        },
        "dynamicRoutes": {
          "status": "native",
          "note": "Bracketed segments support parameters, catch-all routes, and optional catch-all routes.",
          "url": "https://nextjs.org/docs/app/api-reference/file-conventions/dynamic-routes"
        },
        "parallelRoutes": {
          "status": "native",
          "note": "Named @slots have independent navigation state, loading UI, and defaults for unmatched routes.",
          "url": "https://nextjs.org/docs/app/api-reference/file-conventions/parallel-routes"
        },
        "interceptedRoutes": {
          "status": "native",
          "note": "Interception conventions support routed modals with different soft-navigation and direct-link behavior.",
          "url": "https://nextjs.org/docs/app/api-reference/file-conventions/intercepting-routes"
        },
        "prefetch": {
          "status": "native",
          "note": "Link prefetching and router.prefetch can prepare route data and UI. Static and dynamic routes have different prefetch behavior.",
          "url": "https://nextjs.org/docs/app/guides/prefetching"
        },
        "softNavigation": {
          "status": "native",
          "note": "App Router Link/router navigation updates the URL and replaces route segments without a full reload. Shared layouts stay mounted; loading UI and prefetching can cover server waits, but do not guarantee a latency target.",
          "url": "https://nextjs.org/docs/app/getting-started/linking-and-navigating",
          "reviewedOn": "2026-11-11",
          "label": "App Router"
        },
        "viewTransitions": {
          "status": "partial",
          "note": "Next.js documents an experimental React View Transitions integration. This review does not treat that experimental flag as a stable, automatically animated navigation API; application boundaries, CSS and browser support still matter.",
          "url": "https://nextjs.org/blog/next-15-2#react-view-transitions-experimental",
          "reviewedOn": "2026-11-11",
          "label": "Experimental integration"
        },
        "redirects": {
          "status": "native",
          "note": "Proxy can redirect or internally rewrite requests; configuration and render-time redirect APIs provide other boundaries.",
          "url": "https://nextjs.org/docs/app/getting-started/proxy"
        },
        "serverData": {
          "status": "native",
          "note": "Async Server Components load from fetch, databases, or other asynchronous I/O.",
          "url": "https://nextjs.org/docs/app/getting-started/fetching-data"
        },
        "clientData": {
          "status": "community",
          "note": "The guide recommends query libraries such as SWR or React Query. A client query cache is not supplied by Next.js itself.",
          "url": "https://nextjs.org/docs/app/guides/client-side-data-fetching",
          "label": "SWR / React Query"
        },
        "requestDedupe": {
          "status": "native",
          "note": "The guide documents fetch memoization and React.cache for sharing equivalent reads during rendering.",
          "url": "https://nextjs.org/docs/app/getting-started/fetching-data"
        },
        "persistentCache": {
          "status": "native",
          "note": "use cache retains function or component results with explicit lifetimes. Storage and coordination depend on deployment.",
          "url": "https://nextjs.org/docs/app/getting-started/caching",
          "label": "use cache"
        },
        "invalidation": {
          "status": "native",
          "note": "Path/tag invalidation and cache lifetime controls support different freshness semantics.",
          "url": "https://nextjs.org/docs/app/getting-started/revalidating"
        },
        "isr": {
          "status": "native",
          "note": "Regenerates cached pages by time or on demand; static-only export does not provide ISR.",
          "url": "https://nextjs.org/docs/app/guides/incremental-static-regeneration"
        },
        "apiRoutes": {
          "status": "native",
          "note": "route.ts handlers use Web Request/Response and support multiple HTTP methods.",
          "url": "https://nextjs.org/docs/app/getting-started/route-handlers"
        },
        "actions": {
          "status": "native",
          "note": "Server Functions marked with use server can be called from Client Components and used as form actions.",
          "url": "https://nextjs.org/docs/app/getting-started/mutating-data",
          "label": "Server Functions"
        },
        "forms": {
          "status": "native",
          "note": "Server Actions receive FormData and support pending/error feedback. Application validation or an external schema library is still required.",
          "url": "https://nextjs.org/docs/app/guides/forms",
          "reviewedOn": "2026-11-11",
          "assessment": {
            "summary": "Form transport, validation, pending feedback and optimistic state are separate behaviors; the progressive-forms and optimistic-updates rows review the latter contracts explicitly.",
            "strengths": [
              "Server Actions receive FormData and support pending/error feedback. Application validation or an external schema library is still required."
            ],
            "tradeoffs": [
              "Do not infer a no-JavaScript submission path, automatic validation, accessible field errors or rollback merely from the ability to receive FormData."
            ]
          }
        },
        "middleware": {
          "status": "native",
          "note": "Proxy runs before request completion for redirects, rewrites, and header logic. It is not a replacement for authorization in handlers.",
          "url": "https://nextjs.org/docs/app/getting-started/proxy",
          "label": "Proxy"
        },
        "cookies": {
          "status": "native",
          "note": "cookies() reads request cookies and writes them from Server Functions or Route Handlers. Session management remains application/library work.",
          "url": "https://nextjs.org/docs/app/api-reference/functions/cookies",
          "label": "Cookie API"
        },
        "cssModules": {
          "status": "native",
          "note": "Imports .module.css files with generated local class names.",
          "url": "https://nextjs.org/docs/app/getting-started/css"
        },
        "scopedCss": {
          "status": "official",
          "note": "styled-jsx provides locally scoped styles; the App Router guide documents the required style registry.",
          "url": "https://nextjs.org/docs/app/guides/css-in-js",
          "label": "styled-jsx"
        },
        "tailwind": {
          "status": "community",
          "note": "Official setup instructions integrate the external Tailwind compiler and PostCSS package.",
          "url": "https://nextjs.org/docs/app/getting-started/css",
          "label": "Tailwind CSS"
        },
        "cssInJs": {
          "status": "partial",
          "note": "Supported libraries need Client Components and server style insertion setup; not every CSS-in-JS library supports Server Components.",
          "url": "https://nextjs.org/docs/app/guides/css-in-js",
          "label": "Library-dependent",
          "reviewedOn": "2026-11-10"
        },
        "images": {
          "status": "native",
          "note": "Image generates responsive, size-optimized output. Remote sources and deployment image services require configuration.",
          "url": "https://nextjs.org/docs/app/getting-started/images",
          "label": "next/image"
        },
        "fonts": {
          "status": "native",
          "note": "next/font self-hosts local or downloaded fonts and configures optimized loading and fallback behavior.",
          "url": "https://nextjs.org/docs/app/getting-started/fonts",
          "label": "next/font"
        },
        "scripts": {
          "status": "native",
          "note": "Script supports beforeInteractive, afterInteractive, and lazyOnload. Worker offloading is experimental.",
          "url": "https://nextjs.org/docs/app/guides/scripts",
          "label": "next/script"
        },
        "staticAssets": {
          "status": "native",
          "note": "Files in public are served from the URL root; cache policy differs from fingerprinted build assets.",
          "url": "https://nextjs.org/docs/app/api-reference/file-conventions/public-folder"
        },
        "metadata": {
          "status": "native",
          "note": "Typed Metadata covers canonical/alternate links, social cards, robots, icons, and title fields.",
          "url": "https://nextjs.org/docs/app/api-reference/functions/generate-metadata",
          "label": "Extensive, integrated API",
          "assessment": {
            "label": "Extensive, integrated API",
            "summary": "Strong coverage of route-aware metadata and generated SEO assets, with explicit composition needed for nested objects.",
            "strengths": [
              "Typed static metadata and async generateMetadata.",
              "Automatic route-segment inheritance, title templates, and access to resolved parent metadata.",
              "File conventions integrate generated social images and crawler documents."
            ],
            "tradeoffs": [
              "Nested objects merge shallowly. Replacing openGraph can discard an inherited description or image list.",
              "Title templates have segment-specific rules; asynchronous metadata interacts with caching and rendering."
            ]
          }
        },
        "dynamicMetadata": {
          "status": "native",
          "note": "generateMetadata can await data and resolved parent metadata; eligible fetches are memoized.",
          "url": "https://nextjs.org/docs/app/api-reference/functions/generate-metadata"
        },
        "metadataInheritance": {
          "status": "native",
          "note": "Layouts and pages merge root-to-leaf. Merge is shallow: a child openGraph object replaces the parent object.",
          "url": "https://nextjs.org/docs/app/api-reference/functions/generate-metadata#merging"
        },
        "metadataOverrides": {
          "status": "native",
          "note": "Child keys replace ancestor keys. To retain parent OG images, read parent metadata and explicitly compose the array.",
          "url": "https://nextjs.org/docs/app/api-reference/functions/generate-metadata#overwriting-fields",
          "label": "Shallow replacement"
        },
        "titleTemplates": {
          "status": "native",
          "note": "Ancestor templates format child titles; title.absolute bypasses a template. A template does not format the same segment’s own page title.",
          "url": "https://nextjs.org/docs/app/api-reference/functions/generate-metadata#title"
        },
        "socialImages": {
          "status": "native",
          "note": "ImageResponse generates OG/Twitter images using a supported subset of CSS; file conventions publish them.",
          "url": "https://nextjs.org/docs/app/getting-started/metadata-and-og-images"
        },
        "sitemaps": {
          "status": "native",
          "note": "Structured sitemap generators support image/video entries, locales, and multiple sitemap files.",
          "url": "https://nextjs.org/docs/app/api-reference/file-conventions/metadata/sitemap"
        },
        "robots": {
          "status": "native",
          "note": "Static robots.txt or a typed robots generator defines user-agent rules and sitemap URLs.",
          "url": "https://nextjs.org/docs/app/api-reference/file-conventions/metadata/robots"
        },
        "markdown": {
          "status": "official",
          "note": "@next/mdx integrates Markdown/MDX with the App Router; remark/rehype plugins and component mapping are configurable.",
          "url": "https://nextjs.org/docs/app/guides/mdx",
          "label": "@next/mdx"
        },
        "collections": {
          "status": "undocumented",
          "note": "The reviewed MDX guide covers file/content rendering and remote sources, not a typed collection loader/schema/query registry. Add application/CMS tooling for that contract.",
          "url": "https://nextjs.org/docs/app/guides/mdx"
        },
        "draftMode": {
          "status": "native",
          "note": "Draft Mode bypasses cached/published content for preview requests. The application must secure the enabling endpoint.",
          "url": "https://nextjs.org/docs/app/guides/draft-mode"
        },
        "translations": {
          "status": "partial",
          "note": "The official guide demonstrates app-owned dictionaries and lists external translation libraries; it does not supply a message-catalog engine.",
          "url": "https://nextjs.org/docs/app/guides/internationalization",
          "label": "Dictionary recipe",
          "reviewedOn": "2026-11-10"
        },
        "localeRouting": {
          "status": "partial",
          "note": "The App Router guide uses a [lang] segment plus application proxy logic for language detection and redirects.",
          "url": "https://nextjs.org/docs/app/guides/internationalization",
          "label": "Routing recipe",
          "reviewedOn": "2026-11-10"
        },
        "localeFormatting": {
          "status": "community",
          "note": "next-intl provides locale-aware number and date/time formatters for Next.js applications; it is a separate package.",
          "url": "https://next-intl.dev/docs/usage/numbers",
          "label": "next-intl"
        },
        "auth": {
          "status": "community",
          "note": "The guide recommends an authentication library and shows application-owned session and authorization patterns. No complete identity service is bundled.",
          "url": "https://nextjs.org/docs/app/guides/authentication",
          "label": "Auth library / recipe"
        },
        "csp": {
          "status": "native",
          "note": "Nonce-aware script handling works with application-configured CSP. Per-request nonces require dynamic rendering.",
          "url": "https://nextjs.org/docs/app/guides/content-security-policy"
        },
        "cspNonce": {
          "status": "native",
          "note": "The application generates a nonce and matching CSP header; Next applies it to framework-generated scripts and supports nonce props. Per-request nonces require dynamic rendering and limit static generation, ISR and partial-prerendered shells.",
          "url": "https://nextjs.org/docs/app/guides/content-security-policy",
          "reviewedOn": "2026-11-11",
          "label": "Dynamic rendering required"
        },
        "csrf": {
          "status": "native",
          "note": "Server Actions enforce POST and compare Origin with Host; allowed origins are configurable. This is not universal CSRF protection for custom endpoints.",
          "url": "https://nextjs.org/docs/app/guides/data-security#allowed-origins-advanced",
          "label": "Server Actions only"
        },
        "environment": {
          "status": "native",
          "note": "Loads .env files; NEXT_PUBLIC_ values are inlined into browser bundles. Runtime server secrets remain separate.",
          "url": "https://nextjs.org/docs/app/guides/environment-variables",
          "reviewedOn": "2026-11-11",
          "assessment": {
            "summary": "Environment visibility and enforced server-only import boundaries are separate safeguards.",
            "strengths": [
              "Unprefixed environment values remain server-only by default; NEXT_PUBLIC values are public.",
              "server-only imports produce a build error when consumed by client code."
            ],
            "tradeoffs": [
              "Explicitly returned props/action results can still leak sensitive data. Authorization and minimal DTOs remain application responsibilities."
            ]
          }
        },
        "types": {
          "status": "native",
          "note": "TypeScript integration includes generated route-aware helpers and typed configuration. Type coverage is not a guarantee of runtime input validation.",
          "url": "https://nextjs.org/docs/app/api-reference/config/typescript"
        },
        "hmr": {
          "status": "native",
          "note": "Fast Refresh usually preserves component state; some edits trigger full reloads.",
          "url": "https://nextjs.org/docs/architecture/fast-refresh"
        },
        "cli": {
          "status": "native",
          "note": "create-next-app scaffolds projects; next provides development and production lifecycle commands.",
          "url": "https://nextjs.org/docs/app/api-reference/cli"
        },
        "bundleAnalysis": {
          "status": "native",
          "note": "The Turbopack analyzer inspects modules and import chains; Webpack uses the optional @next/bundle-analyzer package.",
          "url": "https://nextjs.org/docs/app/guides/package-bundling"
        },
        "unitTests": {
          "status": "community",
          "note": "The documented Vitest/React Testing Library setup covers synchronous components. Async Server Components need a different strategy.",
          "url": "https://nextjs.org/docs/app/guides/testing/vitest",
          "label": "Vitest / Jest"
        },
        "e2eTests": {
          "status": "community",
          "note": "The official recipe runs Playwright against a production build, including browser navigation tests.",
          "url": "https://nextjs.org/docs/app/guides/testing/playwright",
          "label": "Playwright"
        },
        "observability": {
          "status": "native",
          "note": "Next.js emits OpenTelemetry spans; an SDK/exporter or monitoring backend must be configured separately.",
          "url": "https://nextjs.org/docs/app/guides/open-telemetry",
          "label": "OpenTelemetry hooks"
        },
        "errorHandling": {
          "status": "native",
          "note": "Nested error and global-error boundaries provide fallback/retry UI; expected mutation failures are returned explicitly.",
          "url": "https://nextjs.org/docs/app/getting-started/error-handling"
        },
        "serverHosting": {
          "status": "native",
          "note": "Production Node server hosting supports the full feature set, subject to the documented infrastructure configuration.",
          "url": "https://nextjs.org/docs/app/getting-started/deploying",
          "reviewedOn": "2026-11-11",
          "assessment": {
            "summary": "Self-hosting is supported, with explicit requirements for streaming and consistent multi-instance deployments.",
            "strengths": [
              "A production Next server can run the framework's server features without requiring Vercel.",
              "deploymentId detects version skew; custom cache handlers can use shared storage."
            ],
            "tradeoffs": [
              "Rolling deployments need compatible assets/action encryption keys and deployment IDs.",
              "Shared cache/tag invalidation and proxy buffering need configuration; a container alone does not supply this coordination."
            ]
          }
        },
        "staticHosting": {
          "status": "native",
          "note": "Static export serves generated files without a server; request-time features and ISR are unavailable.",
          "url": "https://nextjs.org/docs/app/guides/static-exports"
        },
        "containers": {
          "status": "native",
          "note": "The deployment guide supports Docker and provides production container examples.",
          "url": "https://nextjs.org/docs/app/getting-started/deploying"
        },
        "edgeHosting": {
          "status": "partial",
          "note": "An optional Edge Runtime has restricted Node APIs and no ISR. Actual edge placement depends on the hosting platform.",
          "url": "https://nextjs.org/docs/app/api-reference/edge",
          "label": "Restricted runtime",
          "reviewedOn": "2026-11-10"
        },
        "orm": {
          "status": "undocumented",
          "note": "The reviewed framework documentation does not establish an owned orm / query builder API. Host libraries and application integrations may provide it.",
          "url": "https://nextjs.org"
        },
        "migrations": {
          "status": "undocumented",
          "note": "The reviewed framework documentation does not establish an owned schema migrations API. Host libraries and application integrations may provide it.",
          "url": "https://nextjs.org"
        },
        "transactions": {
          "status": "undocumented",
          "note": "The reviewed framework documentation does not establish an owned transactions API. Host libraries and application integrations may provide it.",
          "url": "https://nextjs.org"
        },
        "jobs": {
          "status": "undocumented",
          "note": "The reviewed framework documentation does not establish an owned background jobs API. Host libraries and application integrations may provide it.",
          "url": "https://nextjs.org"
        },
        "mail": {
          "status": "undocumented",
          "note": "The reviewed framework documentation does not establish an owned email API. Host libraries and application integrations may provide it.",
          "url": "https://nextjs.org"
        },
        "uploads": {
          "status": "partial",
          "note": "Server Actions and route handlers can receive FormData; durable storage, upload policy and size limits remain application/provider responsibilities.",
          "url": "https://nextjs.org/docs/app/guides/forms",
          "label": "FormData transport",
          "reviewedOn": "2026-11-10"
        },
        "realtime": {
          "status": "undocumented",
          "note": "The reviewed framework documentation does not establish an owned real-time delivery API. Host libraries and application integrations may provide it.",
          "url": "https://nextjs.org"
        },
        "xssEscaping": {
          "status": "native",
          "note": "Its integrated UI renderer supplies this policy. Normal text values are rendered as text; dangerouslySetInnerHTML bypasses this path and requires trusted/sanitized HTML. Do not infer arbitrary URL/CSS safety from text escaping.",
          "url": "https://react.dev/reference/react-dom/components/common#dangerously-setting-the-inner-html",
          "reviewedOn": "2026-11-11"
        },
        "htmlSanitization": {
          "status": "undocumented",
          "note": "The linked security API review does not establish the specific html sanitization contract defined here. This is a bounded documentation finding, not proof of absence; generic hooks or application-authored code are not counted as an owned implementation.",
          "url": "https://nextjs.org/docs/app/guides/content-security-policy",
          "reviewedOn": "2026-11-11"
        },
        "authorization": {
          "status": "partial",
          "note": "The data-security guide requires application authorization/ownership checks in each exposed action or DAL. Server Action identifiers, closure encryption and authentication do not constitute a resource-policy engine.",
          "url": "https://nextjs.org/docs/app/guides/data-security",
          "reviewedOn": "2026-11-11",
          "label": "Application checks"
        },
        "rateLimiting": {
          "status": "undocumented",
          "note": "The linked security API review does not establish the specific rate limiting contract defined here. This is a bounded documentation finding, not proof of absence; generic hooks or application-authored code are not counted as an owned implementation.",
          "url": "https://nextjs.org/docs/app/guides/content-security-policy",
          "reviewedOn": "2026-11-11"
        },
        "progressiveEnhancement": {
          "status": "native",
          "note": "Server Component forms with Server Actions can submit without JavaScript. Client Component action forms may queue until hydration; onSubmit-only client behavior is not a progressive submission path.",
          "url": "https://nextjs.org/docs/app/guides/forms",
          "reviewedOn": "2026-11-11",
          "label": "Server Action forms"
        },
        "optimisticUi": {
          "status": "native",
          "note": "React useOptimistic overlays pending mutation UI and reconciles against the supplied confirmed state through Actions/transitions. Application code must define the update and failure feedback; this is not a durable offline write queue.",
          "url": "https://react.dev/reference/react/useOptimistic",
          "reviewedOn": "2026-11-11",
          "label": "React useOptimistic"
        },
        "requestCancellation": {
          "status": "undocumented",
          "note": "The linked data API review does not establish the specific stale request handling contract defined here. This is a bounded documentation finding, not proof of absence; generic hooks or application-authored code are not counted as an owned implementation.",
          "url": "https://nextjs.org/docs/app/guides/client-side-data-fetching",
          "reviewedOn": "2026-11-11"
        },
        "typedLinks": {
          "status": "native",
          "note": "typedRoutes generates route types used by Link and navigation helpers to check destinations. It does not supply schema validation of arbitrary query strings, and nonliteral constructed paths may require type assertions.",
          "url": "https://nextjs.org/docs/app/api-reference/config/next-config-js/typedRoutes",
          "reviewedOn": "2026-11-11",
          "label": "typedRoutes"
        },
        "searchParams": {
          "status": "undocumented",
          "note": "The linked routing API review does not establish the specific validated url state contract defined here. This is a bounded documentation finding, not proof of absence; generic hooks or application-authored code are not counted as an owned implementation.",
          "url": "https://nextjs.org/docs/app/getting-started/linking-and-navigating",
          "reviewedOn": "2026-11-11"
        },
        "stateRestoration": {
          "status": "native",
          "note": "Shared layouts preserve state across soft navigation; Cache Components can retain recent pages through React Activity. Retention/eviction and resets are version/configuration dependent and do not guarantee every visited page survives.",
          "url": "https://nextjs.org/docs/app/guides/preserving-ui-state",
          "reviewedOn": "2026-11-11",
          "label": "Layouts / Activity"
        },
        "scrollRestoration": {
          "status": "native",
          "note": "Link/navigation controls scroll resets and App Router restores scroll for back/forward visits. scroll=false is an opt-out; this does not promise independent restoration of arbitrary nested scrollers.",
          "url": "https://nextjs.org/docs/app/api-reference/components/link#scroll",
          "reviewedOn": "2026-11-11",
          "label": "App Router"
        },
        "navigationBlocking": {
          "status": "undocumented",
          "note": "The linked routing API review does not establish the specific unsaved-change guards contract defined here. This is a bounded documentation finding, not proof of absence; generic hooks or application-authored code are not counted as an owned implementation.",
          "url": "https://nextjs.org/docs/app/getting-started/linking-and-navigating",
          "reviewedOn": "2026-11-11"
        },
        "navigationAccessibility": {
          "status": "native",
          "note": "Next.js includes route announcements based on title, heading or pathname, and documents accessible page naming. Authors remain responsible for focus behavior and accessible controls.",
          "url": "https://nextjs.org/docs/architecture/accessibility",
          "reviewedOn": "2026-11-11",
          "label": "Route announcer"
        },
        "a11yChecks": {
          "status": "community",
          "note": "The accessibility guide recommends eslint-plugin-jsx-a11y for static JSX checks. It is a separately configured linter; do not infer that every current Next build runs ESLint automatically.",
          "url": "https://nextjs.org/docs/architecture/accessibility",
          "reviewedOn": "2026-11-11",
          "label": "eslint-plugin-jsx-a11y"
        },
        "lazyActivation": {
          "status": "undocumented",
          "note": "The linked rendering API review does not establish the specific deferred activation contract defined here. This is a bounded documentation finding, not proof of absence; generic hooks or application-authored code are not counted as an owned implementation.",
          "url": "https://nextjs.org/docs/app/api-reference/file-conventions/loading",
          "reviewedOn": "2026-11-11"
        },
        "codeSplitting": {
          "status": "native",
          "note": "App Router splits route code, while next/dynamic and React.lazy defer Client Components. Server Components stay outside browser bundles; lazy importing a Server Component does not itself defer a client runtime.",
          "url": "https://nextjs.org/docs/app/guides/lazy-loading",
          "reviewedOn": "2026-11-11",
          "label": "Route bundles / next/dynamic"
        },
        "offline": {
          "status": "partial",
          "note": "The PWA guide demonstrates a service worker and web manifest; production cache strategies/offline data and retry UX remain application-owned. Installing a manifest does not make mutations work offline.",
          "url": "https://nextjs.org/docs/app/guides/progressive-web-apps",
          "reviewedOn": "2026-11-11",
          "label": "PWA recipe"
        },
        "scheduling": {
          "status": "undocumented",
          "note": "The linked backend API review does not establish the specific scheduled tasks contract defined here. This is a bounded documentation finding, not proof of absence; generic hooks or application-authored code are not counted as an owned implementation.",
          "url": "https://nextjs.org",
          "reviewedOn": "2026-11-11"
        },
        "notifications": {
          "status": "undocumented",
          "note": "The linked backend API review does not establish the specific multi-channel notifications contract defined here. This is a bounded documentation finding, not proof of absence; generic hooks or application-authored code are not counted as an owned implementation.",
          "url": "https://nextjs.org",
          "reviewedOn": "2026-11-11"
        },
        "searchIndex": {
          "status": "undocumented",
          "note": "The linked backend API review does not establish the specific search indexing contract defined here. This is a bounded documentation finding, not proof of absence; generic hooks or application-authored code are not counted as an owned implementation.",
          "url": "https://nextjs.org",
          "reviewedOn": "2026-11-11"
        },
        "fieldEncryption": {
          "status": "undocumented",
          "note": "The linked database API review does not establish the specific encrypted model fields contract defined here. This is a bounded documentation finding, not proof of absence; generic hooks or application-authored code are not counted as an owned implementation.",
          "url": "https://nextjs.org",
          "reviewedOn": "2026-11-11"
        },
        "httpTests": {
          "status": "undocumented",
          "note": "The linked testing API review does not establish the specific http integration tests contract defined here. This is a bounded documentation finding, not proof of absence; generic hooks or application-authored code are not counted as an owned implementation.",
          "url": "https://nextjs.org/docs/app/guides/testing/vitest",
          "reviewedOn": "2026-11-11"
        }
      }
    },
    {
      "id": "nuxt",
      "label": "Nuxt",
      "kind": "Application framework",
      "logo": "logos/nuxt.svg",
      "color": "#00dc82",
      "scope": "Nuxt 4.x with Vue 3, Nitro and explicitly named companion modules. Experimental APIs and provider-specific cache behavior are qualified.",
      "reviewedOn": "2026-11-10",
      "updatedOn": "2026-11-11",
      "capabilities": {
        "ssr": {
          "status": "native",
          "note": "Nuxt supports universal rendering/hydration, client-only routes and prerendered routes. Hybrid route rules choose behavior per path; this is not an assertion of Next-style partial prerendering.",
          "url": "https://nuxt.com/docs/4.x/guide/concepts/rendering"
        },
        "streaming": {
          "status": "partial",
          "note": "ssrStreaming is an experimental option in Nuxt 4.x. Default universal rendering must not be represented as production HTML streaming.",
          "url": "https://nuxt.com/docs/4.x/guide/going-further/experimental-features",
          "label": "Experimental SSR streaming",
          "reviewedOn": "2026-11-10"
        },
        "suspense": {
          "status": "partial",
          "note": "Nuxt uses Vue Suspense to coordinate async page data. Vue still marks Suspense experimental; data waiting alone is not out-of-order HTML delivery.",
          "url": "https://nuxt.com/docs/4.x/getting-started/data-fetching",
          "label": "Vue Suspense",
          "reviewedOn": "2026-11-10"
        },
        "client": {
          "status": "native",
          "note": "Nuxt supports universal rendering/hydration, client-only routes and prerendered routes. Hybrid route rules choose behavior per path; this is not an assertion of Next-style partial prerendering.",
          "url": "https://nuxt.com/docs/4.x/guide/concepts/rendering"
        },
        "ssg": {
          "status": "native",
          "note": "Nuxt supports universal rendering/hydration, client-only routes and prerendered routes. Hybrid route rules choose behavior per path; this is not an assertion of Next-style partial prerendering.",
          "url": "https://nuxt.com/docs/4.x/guide/concepts/rendering"
        },
        "csr": {
          "status": "native",
          "note": "Nuxt supports universal rendering/hydration, client-only routes and prerendered routes. Hybrid route rules choose behavior per path; this is not an assertion of Next-style partial prerendering.",
          "url": "https://nuxt.com/docs/4.x/guide/concepts/rendering"
        },
        "serverOnly": {
          "status": "partial",
          "note": "The opt-in componentIslands experiment enables server components and selective hydration. It is not an unqualified stable core capability in this Nuxt 4.x review.",
          "url": "https://nuxt.com/docs/4.x/guide/going-further/experimental-features",
          "label": "Experimental component islands",
          "reviewedOn": "2026-11-10"
        },
        "partialRendering": {
          "status": "partial",
          "note": "Hybrid rules mix prerendered, server-rendered and client-rendered routes. That does not establish a cached static shell plus dynamic holes within the same route.",
          "url": "https://nuxt.com/docs/4.x/guide/concepts/rendering",
          "label": "Hybrid routes",
          "reviewedOn": "2026-11-10"
        },
        "routing": {
          "status": "native",
          "note": "File-system pages, nested route composition, middleware and NuxtLink navigation/prefetching form the routing workflow.",
          "url": "https://nuxt.com/docs/4.x/getting-started/routing"
        },
        "layouts": {
          "status": "native",
          "note": "File-system pages, nested route composition, middleware and NuxtLink navigation/prefetching form the routing workflow.",
          "url": "https://nuxt.com/docs/4.x/getting-started/routing"
        },
        "dynamicRoutes": {
          "status": "native",
          "note": "File-system pages, nested route composition, middleware and NuxtLink navigation/prefetching form the routing workflow.",
          "url": "https://nuxt.com/docs/4.x/getting-started/routing"
        },
        "parallelRoutes": {
          "status": "undocumented",
          "note": "Not established in the reviewed Nuxt routing guide. External integrations or application code may provide this behavior.",
          "url": "https://nuxt.com/docs/4.x/getting-started/routing"
        },
        "interceptedRoutes": {
          "status": "undocumented",
          "note": "Not established in the reviewed Nuxt routing guide. External integrations or application code may provide this behavior.",
          "url": "https://nuxt.com/docs/4.x/getting-started/routing"
        },
        "prefetch": {
          "status": "native",
          "note": "File-system pages, nested route composition, middleware and NuxtLink navigation/prefetching form the routing workflow.",
          "url": "https://nuxt.com/docs/4.x/getting-started/routing"
        },
        "softNavigation": {
          "status": "native",
          "note": "NuxtLink and the integrated router update pages/history without a full reload. Internal links are prefetched according to the configured policy; external links and explicit reloads retain document navigation.",
          "url": "https://nuxt.com/docs/4.x/getting-started/routing",
          "reviewedOn": "2026-11-11",
          "label": "NuxtLink / Vue Router"
        },
        "viewTransitions": {
          "status": "native",
          "note": "pageTransition/layoutTransition coordinate Vue enter/leave animations across navigation. Native browser View Transitions are a separate experimental option, not required for the stable page-transition API. Authors supply CSS and reduced-motion treatment.",
          "url": "https://nuxt.com/docs/4.x/getting-started/transitions",
          "reviewedOn": "2026-11-11",
          "label": "Page / layout transitions"
        },
        "redirects": {
          "status": "native",
          "note": "File-system pages, nested route composition, middleware and NuxtLink navigation/prefetching form the routing workflow.",
          "url": "https://nuxt.com/docs/4.x/getting-started/routing"
        },
        "serverData": {
          "status": "native",
          "note": "useAsyncData/useFetch share keyed state, transfer SSR payloads, deduplicate pending reads and support refresh/clear operations. This is distinct from a durable server cache.",
          "url": "https://nuxt.com/docs/4.x/getting-started/data-fetching"
        },
        "clientData": {
          "status": "native",
          "note": "useAsyncData/useFetch share keyed state, transfer SSR payloads, deduplicate pending reads and support refresh/clear operations. This is distinct from a durable server cache.",
          "url": "https://nuxt.com/docs/4.x/getting-started/data-fetching"
        },
        "requestDedupe": {
          "status": "native",
          "note": "useAsyncData/useFetch share keyed state, transfer SSR payloads, deduplicate pending reads and support refresh/clear operations. This is distinct from a durable server cache.",
          "url": "https://nuxt.com/docs/4.x/getting-started/data-fetching"
        },
        "persistentCache": {
          "status": "native",
          "note": "Route rules support SWR and ISR caching. ISR behavior and durable storage depend on the Nitro hosting preset/provider.",
          "url": "https://nuxt.com/docs/4.x/guide/concepts/rendering"
        },
        "invalidation": {
          "status": "native",
          "note": "useAsyncData/useFetch share keyed state, transfer SSR payloads, deduplicate pending reads and support refresh/clear operations. This is distinct from a durable server cache.",
          "url": "https://nuxt.com/docs/4.x/getting-started/data-fetching"
        },
        "isr": {
          "status": "native",
          "note": "Route rules support SWR and ISR caching. ISR behavior and durable storage depend on the Nitro hosting preset/provider.",
          "url": "https://nuxt.com/docs/4.x/guide/concepts/rendering"
        },
        "apiRoutes": {
          "status": "native",
          "note": "Nitro registers server endpoints/middleware and exposes H3 request, cookie and response utilities.",
          "url": "https://nuxt.com/docs/4.x/guide/directory-structure/server"
        },
        "actions": {
          "status": "undocumented",
          "note": "Not established in the reviewed Nuxt server guide. External integrations or application code may provide this behavior.",
          "url": "https://nuxt.com/docs/4.x/guide/directory-structure/server"
        },
        "forms": {
          "status": "partial",
          "note": "Endpoints can read/validate request bodies, but a unified typed form-action and field-error workflow is not established by this guide.",
          "url": "https://nuxt.com/docs/4.x/guide/directory-structure/server",
          "label": "Endpoint validation",
          "reviewedOn": "2026-11-11",
          "assessment": {
            "summary": "Form transport, validation, pending feedback and optimistic state are separate behaviors; the progressive-forms and optimistic-updates rows review the latter contracts explicitly.",
            "strengths": [
              "Endpoints can read/validate request bodies, but a unified typed form-action and field-error workflow is not established by this guide."
            ],
            "tradeoffs": [
              "Do not infer a no-JavaScript submission path, automatic validation, accessible field errors or rollback merely from the ability to receive FormData."
            ]
          }
        },
        "middleware": {
          "status": "native",
          "note": "Nitro registers server endpoints/middleware and exposes H3 request, cookie and response utilities.",
          "url": "https://nuxt.com/docs/4.x/guide/directory-structure/server"
        },
        "cookies": {
          "status": "native",
          "note": "Nitro registers server endpoints/middleware and exposes H3 request, cookie and response utilities.",
          "url": "https://nuxt.com/docs/4.x/guide/directory-structure/server"
        },
        "cssModules": {
          "status": "native",
          "note": "Vue single-file component scoped styles and CSS Modules are supported by the build pipeline.",
          "url": "https://nuxt.com/docs/4.x/getting-started/styling"
        },
        "scopedCss": {
          "status": "native",
          "note": "Vue single-file component scoped styles and CSS Modules are supported by the build pipeline.",
          "url": "https://nuxt.com/docs/4.x/getting-started/styling"
        },
        "tailwind": {
          "status": "community",
          "note": "The styling guide integrates Tailwind as an external CSS compiler.",
          "url": "https://nuxt.com/docs/4.x/getting-started/styling",
          "label": "Tailwind"
        },
        "cssInJs": {
          "status": "undocumented",
          "note": "Not established in the reviewed Nuxt styling guide. External integrations or application code may provide this behavior.",
          "url": "https://nuxt.com/docs/4.x/getting-started/styling"
        },
        "images": {
          "status": "official",
          "note": "NuxtImg/NuxtPicture generate provider-backed responsive sizes and formats; install the companion module.",
          "url": "https://image.nuxt.com/",
          "label": "Nuxt Image"
        },
        "fonts": {
          "status": "official",
          "note": "The companion module self-hosts fonts and generates fallback metrics; provider/configuration determines the output.",
          "url": "https://fonts.nuxt.com/",
          "label": "Nuxt Fonts"
        },
        "scripts": {
          "status": "official",
          "note": "The companion module provides deferred third-party script loading and trigger strategies.",
          "url": "https://scripts.nuxt.com/",
          "label": "Nuxt Scripts"
        },
        "staticAssets": {
          "status": "undocumented",
          "note": "Not established in the reviewed Nuxt assets guide. External integrations or application code may provide this behavior.",
          "url": "https://nuxt.com/docs/4.x/getting-started/styling"
        },
        "metadata": {
          "status": "native",
          "note": "useHead/useSeoMeta provide typed reactive tags and titleTemplate composition; app.head is static configuration.",
          "url": "https://nuxt.com/docs/4.x/getting-started/seo-meta",
          "assessment": {
            "summary": "A reactive, typed head API powered by Unhead, with semantic tag deduplication and title templates.",
            "strengths": [
              "Page registrations can replace matching defaults without copying every tag.",
              "useSeoMeta types common SEO fields while useHead supports general head elements."
            ],
            "tradeoffs": [
              "app.head is static; reactive values belong in composables.",
              "Unhead tag identity/key rules differ from a nested metadata-object merge contract."
            ]
          }
        },
        "dynamicMetadata": {
          "status": "native",
          "note": "useHead/useSeoMeta provide typed reactive tags and titleTemplate composition; app.head is static configuration.",
          "url": "https://nuxt.com/docs/4.x/getting-started/seo-meta"
        },
        "metadataInheritance": {
          "status": "native",
          "note": "Unhead resolves duplicate semantic identities and keys across registrations; later/page entries replace matching defaults. Explicit keys and removal behavior differ from nested metadata-object merging.",
          "url": "https://unhead.unjs.io/docs/head/guides/core-concepts/handling-duplicates"
        },
        "metadataOverrides": {
          "status": "native",
          "note": "Unhead resolves duplicate semantic identities and keys across registrations; later/page entries replace matching defaults. Explicit keys and removal behavior differ from nested metadata-object merging.",
          "url": "https://unhead.unjs.io/docs/head/guides/core-concepts/handling-duplicates"
        },
        "titleTemplates": {
          "status": "native",
          "note": "useHead/useSeoMeta provide typed reactive tags and titleTemplate composition; app.head is static configuration.",
          "url": "https://nuxt.com/docs/4.x/getting-started/seo-meta"
        },
        "socialImages": {
          "status": "community",
          "note": "Nuxt SEO's separately maintained OG Image, Sitemap and Robots modules add generation APIs. These are not bundled Nuxt core features.",
          "url": "https://nuxtseo.com/",
          "label": "Nuxt SEO modules"
        },
        "sitemaps": {
          "status": "community",
          "note": "Nuxt SEO's separately maintained OG Image, Sitemap and Robots modules add generation APIs. These are not bundled Nuxt core features.",
          "url": "https://nuxtseo.com/",
          "label": "Nuxt SEO modules"
        },
        "robots": {
          "status": "community",
          "note": "Nuxt SEO's separately maintained OG Image, Sitemap and Robots modules add generation APIs. These are not bundled Nuxt core features.",
          "url": "https://nuxtseo.com/",
          "label": "Nuxt SEO modules"
        },
        "markdown": {
          "status": "official",
          "note": "The companion module loads Markdown and other content files with typed queries.",
          "url": "https://content.nuxt.com/",
          "label": "Nuxt Content"
        },
        "collections": {
          "status": "official",
          "note": "Content collections provide schemas, querying and structured content integration.",
          "url": "https://content.nuxt.com/",
          "label": "Nuxt Content"
        },
        "draftMode": {
          "status": "undocumented",
          "note": "Not established in the reviewed Nuxt content guide. External integrations or application code may provide this behavior.",
          "url": "https://nuxt.com/docs/4.x/getting-started/introduction"
        },
        "translations": {
          "status": "official",
          "note": "The companion module integrates Vue I18n catalogs, lazy messages and locale routing.",
          "url": "https://i18n.nuxtjs.org/",
          "label": "Nuxt i18n"
        },
        "localeRouting": {
          "status": "official",
          "note": "Locale-aware route generation, URL prefixes and SEO helpers are supplied by the i18n module.",
          "url": "https://i18n.nuxtjs.org/",
          "label": "Nuxt i18n"
        },
        "localeFormatting": {
          "status": "official",
          "note": "The module's Vue I18n integration supplies locale-sensitive number and date formatting.",
          "url": "https://i18n.nuxtjs.org/",
          "label": "Nuxt i18n"
        },
        "auth": {
          "status": "official",
          "note": "The documented Nuxt Auth Utils companion supplies encrypted sessions and auth helpers. Applications still choose persistence and authorization policy.",
          "url": "https://nuxt.com/docs/4.x/guide/recipes/sessions-and-authentication",
          "label": "Nuxt Auth Utils"
        },
        "csp": {
          "status": "community",
          "note": "nuxt-security coordinates random request nonces and strict CSP for SSR; static output uses hashes instead. The module is maintained outside Nuxt core and must be installed/configured.",
          "url": "https://nuxt-security.vercel.app/advanced/strict-csp",
          "reviewedOn": "2026-11-11",
          "label": "nuxt-security headers"
        },
        "cspNonce": {
          "status": "community",
          "note": "nuxt-security coordinates random request nonces and strict CSP for SSR; static output uses hashes instead. The module is maintained outside Nuxt core and must be installed/configured.",
          "url": "https://nuxt-security.vercel.app/advanced/strict-csp",
          "reviewedOn": "2026-11-11",
          "label": "nuxt-security"
        },
        "csrf": {
          "status": "undocumented",
          "note": "Not established in the reviewed Nuxt security guide. External integrations or application code may provide this behavior.",
          "url": "https://nuxt.com/docs/4.x/guide/directory-structure/server"
        },
        "environment": {
          "status": "native",
          "note": "Private runtimeConfig fields stay on the server; only explicit public configuration enters page payloads. Runtime secrets can be set without rebuilding.",
          "url": "https://nuxt.com/docs/4.x/guide/going-further/runtime-config"
        },
        "types": {
          "status": "native",
          "note": "Nuxt generates TypeScript types and provides a project CLI and Vite hot updates.",
          "url": "https://nuxt.com/docs/4.x/getting-started/introduction"
        },
        "hmr": {
          "status": "native",
          "note": "Nuxt generates TypeScript types and provides a project CLI and Vite hot updates.",
          "url": "https://nuxt.com/docs/4.x/getting-started/introduction"
        },
        "cli": {
          "status": "native",
          "note": "Nuxt generates TypeScript types and provides a project CLI and Vite hot updates.",
          "url": "https://nuxt.com/docs/4.x/getting-started/introduction"
        },
        "bundleAnalysis": {
          "status": "partial",
          "note": "nuxt analyze builds and serves production dependency analysis; the command is explicitly experimental.",
          "url": "https://nuxt.com/docs/4.x/api/commands/analyze",
          "label": "Experimental analyzer",
          "reviewedOn": "2026-11-10"
        },
        "unitTests": {
          "status": "official",
          "note": "@nuxt/test-utils supplies Nuxt-aware Vitest/browser helpers, with Playwright integration.",
          "url": "https://nuxt.com/docs/4.x/getting-started/testing",
          "label": "Nuxt Test Utils"
        },
        "e2eTests": {
          "status": "official",
          "note": "@nuxt/test-utils supplies Nuxt-aware Vitest/browser helpers, with Playwright integration.",
          "url": "https://nuxt.com/docs/4.x/getting-started/testing",
          "label": "Nuxt Test Utils"
        },
        "observability": {
          "status": "undocumented",
          "note": "Not established in the reviewed Nuxt testing guide. External integrations or application code may provide this behavior.",
          "url": "https://nuxt.com/docs/4.x/getting-started/testing"
        },
        "errorHandling": {
          "status": "native",
          "note": "NuxtErrorBoundary renders a resettable client fallback; server/application error pages and clearError handle broader failures.",
          "url": "https://nuxt.com/docs/4.x/getting-started/error-handling"
        },
        "serverHosting": {
          "status": "native",
          "note": "Nitro presets target Node, serverless and worker deployments; prerendered output can be static. Target capabilities and caches vary.",
          "url": "https://nuxt.com/docs/4.x/getting-started/deployment"
        },
        "staticHosting": {
          "status": "native",
          "note": "Nitro presets target Node, serverless and worker deployments; prerendered output can be static. Target capabilities and caches vary.",
          "url": "https://nuxt.com/docs/4.x/getting-started/deployment"
        },
        "containers": {
          "status": "undocumented",
          "note": "Not established in the reviewed Nuxt deployment guide. External integrations or application code may provide this behavior.",
          "url": "https://nuxt.com/docs/4.x/getting-started/deployment"
        },
        "edgeHosting": {
          "status": "native",
          "note": "Nitro presets target Node, serverless and worker deployments; prerendered output can be static. Target capabilities and caches vary.",
          "url": "https://nuxt.com/docs/4.x/getting-started/deployment"
        },
        "orm": {
          "status": "undocumented",
          "note": "The reviewed Nuxt server/data guides do not establish an owned orm / query builder API. An application can integrate a separate provider or library; this finding does not mean that integration is impossible.",
          "url": "https://nuxt.com/docs/4.x/guide/directory-structure/server"
        },
        "migrations": {
          "status": "undocumented",
          "note": "The reviewed Nuxt server/data guides do not establish an owned schema migrations API. An application can integrate a separate provider or library; this finding does not mean that integration is impossible.",
          "url": "https://nuxt.com/docs/4.x/guide/directory-structure/server"
        },
        "transactions": {
          "status": "undocumented",
          "note": "The reviewed Nuxt server/data guides do not establish an owned transactions API. An application can integrate a separate provider or library; this finding does not mean that integration is impossible.",
          "url": "https://nuxt.com/docs/4.x/guide/directory-structure/server"
        },
        "jobs": {
          "status": "partial",
          "note": "Nitro tasks are opt-in/experimental scheduled or programmatic work. The documented runner is not a durable queue with retries.",
          "url": "https://nitro.build/guide/tasks",
          "label": "Experimental Nitro tasks",
          "reviewedOn": "2026-11-10"
        },
        "mail": {
          "status": "undocumented",
          "note": "The reviewed Nuxt server/data guides do not establish an owned email API. An application can integrate a separate provider or library; this finding does not mean that integration is impossible.",
          "url": "https://nuxt.com/docs/4.x/guide/directory-structure/server"
        },
        "uploads": {
          "status": "undocumented",
          "note": "The reviewed Nuxt server/data guides do not establish an owned file uploads & storage API. An application can integrate a separate provider or library; this finding does not mean that integration is impossible.",
          "url": "https://nuxt.com/docs/4.x/guide/directory-structure/server"
        },
        "realtime": {
          "status": "undocumented",
          "note": "The reviewed Nuxt server/data guides do not establish an owned real-time delivery API. An application can integrate a separate provider or library; this finding does not mean that integration is impossible.",
          "url": "https://nuxt.com/docs/4.x/guide/directory-structure/server"
        },
        "xssEscaping": {
          "status": "native",
          "note": "Its integrated UI renderer supplies this policy. Vue escapes ordinary text and attribute bindings using browser APIs/server encoding. v-html and untrusted URLs/styles need separate controls; templates themselves must be trusted.",
          "url": "https://vuejs.org/guide/best-practices/security.html",
          "reviewedOn": "2026-11-11"
        },
        "htmlSanitization": {
          "status": "undocumented",
          "note": "The linked security API review does not establish the specific html sanitization contract defined here. This is a bounded documentation finding, not proof of absence; generic hooks or application-authored code are not counted as an owned implementation.",
          "url": "https://nuxt-security.vercel.app/advanced/strict-csp",
          "reviewedOn": "2026-11-11"
        },
        "authorization": {
          "status": "undocumented",
          "note": "The linked security API review does not establish the specific authorization policies contract defined here. This is a bounded documentation finding, not proof of absence; generic hooks or application-authored code are not counted as an owned implementation.",
          "url": "https://nuxt-security.vercel.app/advanced/strict-csp",
          "reviewedOn": "2026-11-11"
        },
        "rateLimiting": {
          "status": "community",
          "note": "nuxt-security supplies rate-limiter middleware and a configurable unstorage driver. The default LRU store is process-local; use an appropriate shared driver for distributed limits.",
          "url": "https://nuxt-security.vercel.app/middleware/rate-limiter",
          "reviewedOn": "2026-11-11",
          "label": "nuxt-security"
        },
        "progressiveEnhancement": {
          "status": "undocumented",
          "note": "The linked server API review does not establish the specific progressive forms contract defined here. This is a bounded documentation finding, not proof of absence; generic hooks or application-authored code are not counted as an owned implementation.",
          "url": "https://nuxt.com/docs/4.x/guide/directory-structure/server",
          "reviewedOn": "2026-11-11"
        },
        "optimisticUi": {
          "status": "undocumented",
          "note": "The linked data API review does not establish the specific optimistic updates contract defined here. This is a bounded documentation finding, not proof of absence; generic hooks or application-authored code are not counted as an owned implementation.",
          "url": "https://nuxt.com/docs/4.x/getting-started/data-fetching",
          "reviewedOn": "2026-11-11"
        },
        "requestCancellation": {
          "status": "native",
          "note": "useAsyncData/useFetch expose dedupe/cancel behavior and an AbortSignal for a cancelable handler. The handler must propagate cancellation to its underlying work; this cannot undo completed server mutations.",
          "url": "https://nuxt.com/docs/4.x/api/composables/use-async-data",
          "reviewedOn": "2026-11-11",
          "label": "useAsyncData"
        },
        "typedLinks": {
          "status": "partial",
          "note": "Typed page route generation is an experimental/configuration-dependent option in the reviewed Nuxt 4 routing guide. It is not equivalent to validation of all arbitrary query values.",
          "url": "https://nuxt.com/docs/4.x/guide/going-further/experimental-features#typedpages",
          "reviewedOn": "2026-11-11",
          "label": "Experimental typedPages"
        },
        "searchParams": {
          "status": "undocumented",
          "note": "The linked routing API review does not establish the specific validated url state contract defined here. This is a bounded documentation finding, not proof of absence; generic hooks or application-authored code are not counted as an owned implementation.",
          "url": "https://nuxt.com/docs/4.x/getting-started/routing",
          "reviewedOn": "2026-11-11"
        },
        "stateRestoration": {
          "status": "native",
          "note": "Vue KeepAlive can retain selected component instances/state across route switches when composed with RouterView; Nuxt also exposes page keepalive configuration. It is opt-in and limited by include/exclude/cache eviction.",
          "url": "https://nuxt.com/docs/4.x/api/components/nuxt-page",
          "reviewedOn": "2026-11-11",
          "label": "KeepAlive"
        },
        "scrollRestoration": {
          "status": "native",
          "note": "Vue Router scrollBehavior receives saved positions for history traversal and lets the app return scrolling behavior. Nuxt configures it through its router integration; the app can customize it.",
          "url": "https://router.vuejs.org/guide/advanced/scroll-behavior.html",
          "reviewedOn": "2026-11-11",
          "label": "Vue Router"
        },
        "navigationBlocking": {
          "status": "native",
          "note": "Navigation guards can return false or prompt before leaving a route, including in-component beforeRouteLeave. Full-document unload is a separate browser mechanism.",
          "url": "https://router.vuejs.org/guide/advanced/navigation-guards.html",
          "reviewedOn": "2026-11-11",
          "label": "Vue Router guards"
        },
        "navigationAccessibility": {
          "status": "native",
          "note": "NuxtRouteAnnouncer provides route announcements when included in the application. It is an explicit component rather than proof that every Nuxt app manages focus correctly.",
          "url": "https://nuxt.com/docs/4.x/api/components/nuxt-route-announcer",
          "reviewedOn": "2026-11-11",
          "label": "NuxtRouteAnnouncer"
        },
        "a11yChecks": {
          "status": "official",
          "note": "@nuxt/a11y adds axe-core accessibility audits in Nuxt DevTools. The reviewed module is alpha and optional; diagnostics are not a conformance certificate.",
          "url": "https://nuxt.com/modules/a11y",
          "reviewedOn": "2026-11-11",
          "label": "@nuxt/a11y"
        },
        "lazyActivation": {
          "status": "native",
          "note": "Nuxt documents lazy hydration triggers for delayed interactive components, built on Vue's hydration strategies. The selected trigger controls activation; this does not imply every component's code is withheld until then.",
          "url": "https://nuxt.com/docs/4.x/api/utils/define-lazy-hydration-component",
          "reviewedOn": "2026-11-11",
          "label": "Lazy hydration"
        },
        "codeSplitting": {
          "status": "native",
          "note": "Nuxt splits pages automatically and supports lazy component imports. Shared dependencies and auto-import usage still influence the chunks sent to a page.",
          "url": "https://nuxt.com/docs/4.x/guide/concepts/auto-imports",
          "reviewedOn": "2026-11-11",
          "label": "Page / component bundles"
        },
        "offline": {
          "status": "undocumented",
          "note": "The linked deployment API review does not establish the specific offline integration contract defined here. This is a bounded documentation finding, not proof of absence; generic hooks or application-authored code are not counted as an owned implementation.",
          "url": "https://nuxt.com/docs/4.x/getting-started/deployment",
          "reviewedOn": "2026-11-11"
        },
        "scheduling": {
          "status": "undocumented",
          "note": "The linked backend API review does not establish the specific scheduled tasks contract defined here. This is a bounded documentation finding, not proof of absence; generic hooks or application-authored code are not counted as an owned implementation.",
          "url": "https://nitro.build/guide/tasks",
          "reviewedOn": "2026-11-11"
        },
        "notifications": {
          "status": "undocumented",
          "note": "The linked backend API review does not establish the specific multi-channel notifications contract defined here. This is a bounded documentation finding, not proof of absence; generic hooks or application-authored code are not counted as an owned implementation.",
          "url": "https://nitro.build/guide/tasks",
          "reviewedOn": "2026-11-11"
        },
        "searchIndex": {
          "status": "undocumented",
          "note": "The linked backend API review does not establish the specific search indexing contract defined here. This is a bounded documentation finding, not proof of absence; generic hooks or application-authored code are not counted as an owned implementation.",
          "url": "https://nitro.build/guide/tasks",
          "reviewedOn": "2026-11-11"
        },
        "fieldEncryption": {
          "status": "undocumented",
          "note": "The linked database API review does not establish the specific encrypted model fields contract defined here. This is a bounded documentation finding, not proof of absence; generic hooks or application-authored code are not counted as an owned implementation.",
          "url": "https://nuxt.com/docs/4.x/guide/directory-structure/server",
          "reviewedOn": "2026-11-11"
        },
        "httpTests": {
          "status": "official",
          "note": "@nuxt/test-utils provides runtime and end-to-end helpers including server fetch against a test Nuxt app. Tests that start a server have a different boundary/cost from in-process Laravel request simulation.",
          "url": "https://nuxt.com/docs/4.x/getting-started/testing",
          "reviewedOn": "2026-11-11",
          "label": "@nuxt/test-utils"
        }
      }
    },
    {
      "id": "php",
      "label": "PHP",
      "kind": "Native templates",
      "logo": "logos/php.svg",
      "color": "#777bb3",
      "scope": "Native PHP templates and runtime extensions; no PHP application framework is implied.",
      "reviewedOn": "2026-11-10",
      "updatedOn": "2026-11-11",
      "capabilities": {
        "ssr": {
          "status": "native",
          "note": "Generates HTML from a template and supplied values on the server.",
          "url": "https://www.php.net/manual/en/tutorial.php"
        },
        "streaming": {
          "status": "native",
          "note": "flush() sends buffered output through PHP's backend; web-server and proxy buffering can still prevent immediate delivery.",
          "url": "https://www.php.net/manual/en/function.flush.php",
          "label": "Output flushing"
        },
        "suspense": {
          "status": "scope",
          "note": "The reviewed rendering API has no pending-UI/replacement protocol; the host application would need to provide one.",
          "url": "https://www.php.net/manual/en/tutorial.php"
        },
        "client": {
          "status": "scope",
          "note": "This review covers the standalone template API. Application routing, client activation, site generation, and server-function transports belong to the host application or an additional framework.",
          "url": "https://www.php.net/manual/en/tutorial.php"
        },
        "ssg": {
          "status": "scope",
          "note": "This review covers the standalone template API. Application routing, client activation, site generation, and server-function transports belong to the host application or an additional framework.",
          "url": "https://www.php.net/manual/en/tutorial.php"
        },
        "csr": {
          "status": "scope",
          "note": "This review covers the standalone template API. Application routing, client activation, site generation, and server-function transports belong to the host application or an additional framework.",
          "url": "https://www.php.net/manual/en/tutorial.php"
        },
        "serverOnly": {
          "status": "native",
          "note": "The server evaluates templates and sends rendered output rather than the renderer implementation. This is not React Server Components.",
          "url": "https://www.php.net/manual/en/tutorial.php",
          "label": "Server templates"
        },
        "partialRendering": {
          "status": "scope",
          "note": "This review covers the standalone template API. Application routing, client activation, site generation, and server-function transports belong to the host application or an additional framework.",
          "url": "https://www.php.net/manual/en/tutorial.php"
        },
        "routing": {
          "status": "scope",
          "note": "This review covers the standalone template API. Application routing, client activation, site generation, and server-function transports belong to the host application or an additional framework.",
          "url": "https://www.php.net/manual/en/tutorial.php"
        },
        "layouts": {
          "status": "scope",
          "note": "This review covers the standalone template API. Application routing, client activation, site generation, and server-function transports belong to the host application or an additional framework.",
          "url": "https://www.php.net/manual/en/tutorial.php"
        },
        "dynamicRoutes": {
          "status": "scope",
          "note": "This review covers the standalone template API. Application routing, client activation, site generation, and server-function transports belong to the host application or an additional framework.",
          "url": "https://www.php.net/manual/en/tutorial.php"
        },
        "parallelRoutes": {
          "status": "scope",
          "note": "This review covers the standalone template API. Application routing, client activation, site generation, and server-function transports belong to the host application or an additional framework.",
          "url": "https://www.php.net/manual/en/tutorial.php"
        },
        "interceptedRoutes": {
          "status": "scope",
          "note": "This review covers the standalone template API. Application routing, client activation, site generation, and server-function transports belong to the host application or an additional framework.",
          "url": "https://www.php.net/manual/en/tutorial.php"
        },
        "prefetch": {
          "status": "scope",
          "note": "This review covers the standalone template API. Application routing, client activation, site generation, and server-function transports belong to the host application or an additional framework.",
          "url": "https://www.php.net/manual/en/tutorial.php"
        },
        "softNavigation": {
          "status": "scope",
          "note": "This standalone template/runtime renders content; navigation and page-transition lifecycle belong to a browser router or host application. Compatibility with a generic JavaScript library is not a built-in integration.",
          "url": "https://www.php.net/manual/en/tutorial.php",
          "reviewedOn": "2026-11-11"
        },
        "viewTransitions": {
          "status": "scope",
          "note": "This standalone template/runtime renders content; navigation and page-transition lifecycle belong to a browser router or host application. Compatibility with a generic JavaScript library is not a built-in integration.",
          "url": "https://www.php.net/manual/en/tutorial.php",
          "reviewedOn": "2026-11-11"
        },
        "redirects": {
          "status": "scope",
          "note": "This review covers the standalone template API. Application routing, client activation, site generation, and server-function transports belong to the host application or an additional framework.",
          "url": "https://www.php.net/manual/en/tutorial.php"
        },
        "serverData": {
          "status": "partial",
          "note": "Native PHP scripts can load database data through PDO before rendering; drivers, connection policy, and data flow are application-owned.",
          "url": "https://www.php.net/manual/en/pdo.prepared-statements.php",
          "label": "PDO / app code",
          "reviewedOn": "2026-11-10"
        },
        "clientData": {
          "status": "scope",
          "note": "Browser query lifecycle/cache APIs belong to a client library or application framework.",
          "url": "https://www.php.net/manual/en/tutorial.php"
        },
        "requestDedupe": {
          "status": "scope",
          "note": "Template/compilation caching is distinct from request-scoped application data deduplication.",
          "url": "https://www.php.net/manual/en/tutorial.php"
        },
        "persistentCache": {
          "status": "community",
          "note": "Optional APCu stores application values in a shared user cache; it is not HTML page regeneration.",
          "url": "https://www.php.net/manual/en/book.apcu.php",
          "label": "APCu"
        },
        "invalidation": {
          "status": "community",
          "note": "APCu entries can be explicitly deleted; dependency/tag tracking remains application-owned.",
          "url": "https://www.php.net/manual/en/function.apcu-delete.php",
          "label": "APCu"
        },
        "isr": {
          "status": "scope",
          "note": "Regenerating deployed pages requires a host page cache/export pipeline.",
          "url": "https://www.php.net/manual/en/tutorial.php"
        },
        "apiRoutes": {
          "status": "partial",
          "note": "PHP scripts can emit JSON and HTTP headers; URL-to-script dispatch is configured by the host server.",
          "url": "https://www.php.net/manual/en/function.header.php",
          "label": "Script endpoints",
          "reviewedOn": "2026-11-10"
        },
        "actions": {
          "status": "scope",
          "note": "This review covers the standalone template API. Application routing, client activation, site generation, and server-function transports belong to the host application or an additional framework.",
          "url": "https://www.php.net/manual/en/tutorial.php"
        },
        "forms": {
          "status": "native",
          "note": "Native request variables receive form submissions. The application validates inputs and renders error feedback.",
          "url": "https://www.php.net/manual/en/tutorial.forms.php",
          "reviewedOn": "2026-11-11",
          "assessment": {
            "summary": "Form transport, validation, pending feedback and optimistic state are separate behaviors; the progressive-forms and optimistic-updates rows review the latter contracts explicitly.",
            "strengths": [
              "Native request variables receive form submissions. The application validates inputs and renders error feedback."
            ],
            "tradeoffs": [
              "Do not infer a no-JavaScript submission path, automatic validation, accessible field errors or rollback merely from the ability to receive FormData."
            ]
          }
        },
        "middleware": {
          "status": "scope",
          "note": "This review covers the standalone template API. Application routing, client activation, site generation, and server-function transports belong to the host application or an additional framework.",
          "url": "https://www.php.net/manual/en/tutorial.php"
        },
        "cookies": {
          "status": "official",
          "note": "The session extension stores request-to-request session state; PHP also exposes cookie APIs. Session policy still requires configuration.",
          "url": "https://www.php.net/manual/en/book.session.php",
          "label": "Session extension"
        },
        "cssModules": {
          "status": "scope",
          "note": "CSS class-name compilation is a separate asset-build concern.",
          "url": "https://www.php.net/manual/en/tutorial.php"
        },
        "scopedCss": {
          "status": "scope",
          "note": "The renderer emits authored classes/styles; component-local CSS selector rewriting is a separate build concern.",
          "url": "https://www.php.net/manual/en/tutorial.php"
        },
        "tailwind": {
          "status": "scope",
          "note": "Tailwind can process authored templates through application configuration; the template renderer does not own that build.",
          "url": "https://www.php.net/manual/en/tutorial.php"
        },
        "cssInJs": {
          "status": "scope",
          "note": "Runtime CSS-in-JS compilation is outside this server template API.",
          "url": "https://www.php.net/manual/en/tutorial.php"
        },
        "images": {
          "status": "scope",
          "note": "Templates emit image markup; image resizing/conversion requires a separate asset pipeline.",
          "url": "https://www.php.net/manual/en/tutorial.php"
        },
        "fonts": {
          "status": "scope",
          "note": "Font downloading, subsetting, and fallback optimization require a separate asset pipeline.",
          "url": "https://www.php.net/manual/en/tutorial.php"
        },
        "scripts": {
          "status": "scope",
          "note": "Templates emit script markup; script scheduling and lifecycle policy belong to the host application.",
          "url": "https://www.php.net/manual/en/tutorial.php"
        },
        "staticAssets": {
          "status": "scope",
          "note": "Serving files and assigning cache headers belong to the host web server.",
          "url": "https://www.php.net/manual/en/tutorial.php"
        },
        "metadata": {
          "status": "scope",
          "note": "Head tags can be templated directly; there is no structured metadata registry in the reviewed standalone API.",
          "url": "https://www.php.net/manual/en/tutorial.php"
        },
        "dynamicMetadata": {
          "status": "scope",
          "note": "Supplied values can populate head tags; request data loading and metadata composition remain application-owned.",
          "url": "https://www.php.net/manual/en/tutorial.php"
        },
        "metadataInheritance": {
          "status": "scope",
          "note": "Template inheritance/content composition is separate from a metadata-field inheritance contract.",
          "url": "https://www.php.net/manual/en/tutorial.php"
        },
        "metadataOverrides": {
          "status": "scope",
          "note": "A host head component or template block can override markup; structured field merge/clear rules are application-owned.",
          "url": "https://www.php.net/manual/en/tutorial.php"
        },
        "titleTemplates": {
          "status": "scope",
          "note": "Titles can use template expressions; ancestor metadata/title-template policy belongs to the application.",
          "url": "https://www.php.net/manual/en/tutorial.php"
        },
        "socialImages": {
          "status": "scope",
          "note": "Generating social-preview image bytes needs a separate image renderer/service.",
          "url": "https://www.php.net/manual/en/tutorial.php"
        },
        "sitemaps": {
          "status": "scope",
          "note": "XML can be templated, but route enumeration and a sitemap generator belong to the host.",
          "url": "https://www.php.net/manual/en/tutorial.php"
        },
        "robots": {
          "status": "scope",
          "note": "Text can be templated, but crawler-document publishing/configuration belongs to the host.",
          "url": "https://www.php.net/manual/en/tutorial.php"
        },
        "markdown": {
          "status": "scope",
          "note": "This is text/HTML templating; Markdown parsing and content-page integration require another tool.",
          "url": "https://www.php.net/manual/en/tutorial.php"
        },
        "collections": {
          "status": "scope",
          "note": "The host loads and validates structured content; the template API renders supplied values.",
          "url": "https://www.php.net/manual/en/tutorial.php"
        },
        "draftMode": {
          "status": "scope",
          "note": "Editorial preview authorization and published-cache bypass belong to the host application.",
          "url": "https://www.php.net/manual/en/tutorial.php"
        },
        "translations": {
          "status": "official",
          "note": "The gettext extension loads application-supplied message catalogs.",
          "url": "https://www.php.net/manual/en/book.gettext.php",
          "label": "gettext extension"
        },
        "localeRouting": {
          "status": "scope",
          "note": "This review covers the standalone template API. Application routing, client activation, site generation, and server-function transports belong to the host application or an additional framework.",
          "url": "https://www.php.net/manual/en/tutorial.php"
        },
        "localeFormatting": {
          "status": "official",
          "note": "The intl extension exposes ICU-backed locale-aware formatters; it must be installed and enabled.",
          "url": "https://www.php.net/manual/en/book.intl.php",
          "label": "intl extension"
        },
        "auth": {
          "status": "scope",
          "note": "Identity, login, and authorization are responsibilities of the host application.",
          "url": "https://www.php.net/manual/en/tutorial.php"
        },
        "csp": {
          "status": "partial",
          "note": "header() can send an application-authored CSP. PHP does not infer script nonces or an application-wide policy.",
          "url": "https://www.php.net/manual/en/function.header.php",
          "label": "App-owned headers",
          "reviewedOn": "2026-11-10"
        },
        "cspNonce": {
          "status": "scope",
          "note": "The HTTP application must generate a fresh nonce, set its policy and pass the value to authored tags. A template accepting attributes does not coordinate nonces for an application.",
          "url": "https://www.php.net/manual/en/function.header.php",
          "reviewedOn": "2026-11-11"
        },
        "csrf": {
          "status": "scope",
          "note": "HTML escaping does not establish CSRF protection; the host must protect mutation endpoints.",
          "url": "https://www.php.net/manual/en/tutorial.php"
        },
        "environment": {
          "status": "native",
          "note": "getenv reads runtime server configuration; applications decide which values to render into public HTML.",
          "url": "https://www.php.net/manual/en/function.getenv.php"
        },
        "types": {
          "status": "undocumented",
          "note": "Native PHP declarations check values at runtime. The reviewed language API does not supply the compile-time checking defined by this category; an external static analyzer is a separate integration.",
          "url": "https://www.php.net/manual/en/language.types.declarations.php",
          "label": "Runtime types"
        },
        "hmr": {
          "status": "scope",
          "note": "Application rebuild/browser refresh orchestration is outside the renderer API.",
          "url": "https://www.php.net/manual/en/tutorial.php"
        },
        "cli": {
          "status": "partial",
          "note": "The PHP CLI executes scripts and performs syntax checks; project scaffolding/build orchestration requires other tools.",
          "url": "https://www.php.net/manual/en/features.commandline.php",
          "label": "PHP CLI",
          "reviewedOn": "2026-11-10"
        },
        "bundleAnalysis": {
          "status": "scope",
          "note": "Production browser/server bundle inspection belongs to the host build toolchain.",
          "url": "https://www.php.net/manual/en/tutorial.php"
        },
        "unitTests": {
          "status": "scope",
          "note": "Applications test rendered output with their language test runner; no application test framework is supplied here.",
          "url": "https://www.php.net/manual/en/tutorial.php"
        },
        "e2eTests": {
          "status": "scope",
          "note": "Browser tests run against a host application, not a standalone template.",
          "url": "https://www.php.net/manual/en/tutorial.php"
        },
        "observability": {
          "status": "native",
          "note": "error_log writes application diagnostics to configured logging destinations; traces/metrics require additional tools.",
          "url": "https://www.php.net/manual/en/function.error-log.php",
          "label": "Runtime logging"
        },
        "errorHandling": {
          "status": "scope",
          "note": "Template errors are returned to the caller; application fallback/recovery UI is host-owned.",
          "url": "https://www.php.net/manual/en/tutorial.php"
        },
        "serverHosting": {
          "status": "official",
          "note": "PHP-FPM is the production FastCGI process manager; deploy it behind a web server. The CLI development server is not a production host.",
          "url": "https://www.php.net/manual/en/install.fpm.php",
          "label": "PHP-FPM"
        },
        "staticHosting": {
          "status": "scope",
          "note": "This review covers the standalone template API. Application routing, client activation, site generation, and server-function transports belong to the host application or an additional framework.",
          "url": "https://www.php.net/manual/en/tutorial.php"
        },
        "containers": {
          "status": "scope",
          "note": "This review covers the standalone template API. Application routing, client activation, site generation, and server-function transports belong to the host application or an additional framework.",
          "url": "https://www.php.net/manual/en/tutorial.php"
        },
        "edgeHosting": {
          "status": "scope",
          "note": "This review covers the standalone template API. Application routing, client activation, site generation, and server-function transports belong to the host application or an additional framework.",
          "url": "https://www.php.net/manual/en/tutorial.php"
        },
        "orm": {
          "status": "scope",
          "note": "ORM / query builder belongs to a server framework or external service, outside this standalone rendering API. This is not a missing template-rendering capability.",
          "url": "https://www.php.net"
        },
        "migrations": {
          "status": "scope",
          "note": "Schema migrations belongs to a server framework or external service, outside this standalone rendering API. This is not a missing template-rendering capability.",
          "url": "https://www.php.net"
        },
        "transactions": {
          "status": "official",
          "note": "PDO supports beginTransaction, commit and rollBack through installed database drivers. Driver/database limitations apply.",
          "url": "https://www.php.net/manual/en/pdo.transactions.php",
          "label": "PDO"
        },
        "jobs": {
          "status": "scope",
          "note": "Background jobs belongs to a server framework or external service, outside this standalone rendering API. This is not a missing template-rendering capability.",
          "url": "https://www.php.net"
        },
        "mail": {
          "status": "partial",
          "note": "mail() submits messages to a configured transport. It does not supply templated mailables, durable queues or delivery guarantees.",
          "url": "https://www.php.net/manual/en/function.mail.php",
          "label": "mail() transport",
          "reviewedOn": "2026-11-10"
        },
        "uploads": {
          "status": "partial",
          "note": "PHP parses multipart uploads into temporary files and exposes move_uploaded_file. Validation, persistent storage policy and cloud adapters remain application-owned.",
          "url": "https://www.php.net/manual/en/features.file-upload.php",
          "label": "Native multipart files",
          "reviewedOn": "2026-11-10"
        },
        "realtime": {
          "status": "scope",
          "note": "Real-time delivery belongs to a server framework or external service, outside this standalone rendering API. This is not a missing template-rendering capability.",
          "url": "https://www.php.net"
        },
        "xssEscaping": {
          "status": "partial",
          "note": "PHP output is not automatically escaped. htmlspecialchars encodes text/attribute values when the application calls it with appropriate flags/encoding; raw echo is not protected, and this is not a rich-HTML sanitizer.",
          "url": "https://www.php.net/manual/en/function.htmlspecialchars.php",
          "reviewedOn": "2026-11-11",
          "label": "Explicit htmlspecialchars"
        },
        "htmlSanitization": {
          "status": "undocumented",
          "note": "The linked security API review does not establish the specific html sanitization contract defined here. This is a bounded documentation finding, not proof of absence; generic hooks or application-authored code are not counted as an owned implementation.",
          "url": "https://www.php.net/manual/en/function.header.php",
          "reviewedOn": "2026-11-11"
        },
        "authorization": {
          "status": "scope",
          "note": "Authorization policies requires a host application or specialized integration beyond the reviewed template/runtime API. Emitting markup or using arbitrary host-language libraries does not establish this application-level contract.",
          "url": "https://www.php.net/manual/en/function.header.php",
          "reviewedOn": "2026-11-11"
        },
        "rateLimiting": {
          "status": "scope",
          "note": "Rate limiting requires a host application or specialized integration beyond the reviewed template/runtime API. Emitting markup or using arbitrary host-language libraries does not establish this application-level contract.",
          "url": "https://www.php.net/manual/en/function.header.php",
          "reviewedOn": "2026-11-11"
        },
        "progressiveEnhancement": {
          "status": "scope",
          "note": "Progressive forms requires a host application or specialized integration beyond the reviewed template/runtime API. Emitting markup or using arbitrary host-language libraries does not establish this application-level contract.",
          "url": "https://www.php.net/manual/en/tutorial.forms.php",
          "reviewedOn": "2026-11-11"
        },
        "optimisticUi": {
          "status": "scope",
          "note": "Optimistic updates requires a host application or specialized integration beyond the reviewed template/runtime API. Emitting markup or using arbitrary host-language libraries does not establish this application-level contract.",
          "url": "https://www.php.net/manual/en/tutorial.php",
          "reviewedOn": "2026-11-11"
        },
        "requestCancellation": {
          "status": "scope",
          "note": "Stale request handling requires a host application or specialized integration beyond the reviewed template/runtime API. Emitting markup or using arbitrary host-language libraries does not establish this application-level contract.",
          "url": "https://www.php.net/manual/en/tutorial.php",
          "reviewedOn": "2026-11-11"
        },
        "typedLinks": {
          "status": "scope",
          "note": "Typed links & parameters requires a host application or specialized integration beyond the reviewed template/runtime API. Emitting markup or using arbitrary host-language libraries does not establish this application-level contract.",
          "url": "https://www.php.net/manual/en/tutorial.php",
          "reviewedOn": "2026-11-11"
        },
        "searchParams": {
          "status": "scope",
          "note": "Validated URL state requires a host application or specialized integration beyond the reviewed template/runtime API. Emitting markup or using arbitrary host-language libraries does not establish this application-level contract.",
          "url": "https://www.php.net/manual/en/tutorial.php",
          "reviewedOn": "2026-11-11"
        },
        "stateRestoration": {
          "status": "scope",
          "note": "Navigation state retention requires a host application or specialized integration beyond the reviewed template/runtime API. Emitting markup or using arbitrary host-language libraries does not establish this application-level contract.",
          "url": "https://www.php.net/manual/en/tutorial.php",
          "reviewedOn": "2026-11-11"
        },
        "scrollRestoration": {
          "status": "scope",
          "note": "Scroll restoration requires a host application or specialized integration beyond the reviewed template/runtime API. Emitting markup or using arbitrary host-language libraries does not establish this application-level contract.",
          "url": "https://www.php.net/manual/en/tutorial.php",
          "reviewedOn": "2026-11-11"
        },
        "navigationBlocking": {
          "status": "scope",
          "note": "Unsaved-change guards requires a host application or specialized integration beyond the reviewed template/runtime API. Emitting markup or using arbitrary host-language libraries does not establish this application-level contract.",
          "url": "https://www.php.net/manual/en/tutorial.php",
          "reviewedOn": "2026-11-11"
        },
        "navigationAccessibility": {
          "status": "scope",
          "note": "Accessible navigation requires a host application or specialized integration beyond the reviewed template/runtime API. Emitting markup or using arbitrary host-language libraries does not establish this application-level contract.",
          "url": "https://www.php.net/manual/en/tutorial.php",
          "reviewedOn": "2026-11-11"
        },
        "a11yChecks": {
          "status": "scope",
          "note": "Accessibility checks requires a host application or specialized integration beyond the reviewed template/runtime API. Emitting markup or using arbitrary host-language libraries does not establish this application-level contract.",
          "url": "https://www.php.net/manual/en/tutorial.php",
          "reviewedOn": "2026-11-11"
        },
        "lazyActivation": {
          "status": "scope",
          "note": "Deferred activation requires a host application or specialized integration beyond the reviewed template/runtime API. Emitting markup or using arbitrary host-language libraries does not establish this application-level contract.",
          "url": "https://www.php.net/manual/en/tutorial.php",
          "reviewedOn": "2026-11-11"
        },
        "codeSplitting": {
          "status": "scope",
          "note": "Route / island splitting requires a host application or specialized integration beyond the reviewed template/runtime API. Emitting markup or using arbitrary host-language libraries does not establish this application-level contract.",
          "url": "https://www.php.net/manual/en/tutorial.php",
          "reviewedOn": "2026-11-11"
        },
        "offline": {
          "status": "scope",
          "note": "Offline integration requires a host application or specialized integration beyond the reviewed template/runtime API. Emitting markup or using arbitrary host-language libraries does not establish this application-level contract.",
          "url": "https://www.php.net/manual/en/install.fpm.php",
          "reviewedOn": "2026-11-11"
        },
        "scheduling": {
          "status": "scope",
          "note": "Scheduled tasks requires a host application or specialized integration beyond the reviewed template/runtime API. Emitting markup or using arbitrary host-language libraries does not establish this application-level contract.",
          "url": "https://www.php.net",
          "reviewedOn": "2026-11-11"
        },
        "notifications": {
          "status": "scope",
          "note": "Multi-channel notifications requires a host application or specialized integration beyond the reviewed template/runtime API. Emitting markup or using arbitrary host-language libraries does not establish this application-level contract.",
          "url": "https://www.php.net",
          "reviewedOn": "2026-11-11"
        },
        "searchIndex": {
          "status": "scope",
          "note": "Search indexing requires a host application or specialized integration beyond the reviewed template/runtime API. Emitting markup or using arbitrary host-language libraries does not establish this application-level contract.",
          "url": "https://www.php.net",
          "reviewedOn": "2026-11-11"
        },
        "fieldEncryption": {
          "status": "scope",
          "note": "Encrypted model fields requires a host application or specialized integration beyond the reviewed template/runtime API. Emitting markup or using arbitrary host-language libraries does not establish this application-level contract.",
          "url": "https://www.php.net",
          "reviewedOn": "2026-11-11"
        },
        "httpTests": {
          "status": "scope",
          "note": "HTTP integration tests requires a host application or specialized integration beyond the reviewed template/runtime API. Emitting markup or using arbitrary host-language libraries does not establish this application-level contract.",
          "url": "https://www.php.net/manual/en/tutorial.php",
          "reviewedOn": "2026-11-11"
        }
      }
    },
    {
      "id": "proa",
      "label": "Proa",
      "kind": "Application framework",
      "logo": "logos/proa.svg",
      "color": "#ff6a13",
      "scope": "Published Proa documentation reviewed on the same date as other projects. Capabilities are not inferred from benchmark rank.",
      "reviewedOn": "2026-11-10",
      "updatedOn": "2026-11-11",
      "capabilities": {
        "ssr": {
          "status": "native",
          "note": "Typed Rust templates render HTML on the server.",
          "url": "https://proa.so/docs/core/html-rendering"
        },
        "streaming": {
          "status": "native",
          "note": "The streaming substrate supports in-order and out-of-order delivery through framework response adapters.",
          "url": "https://proa.so/docs/core/streaming-ssr"
        },
        "suspense": {
          "status": "native",
          "note": "Suspense holds async children and fallback UI, with priority and timeout options.",
          "url": "https://proa.so/docs/core/streaming-ssr"
        },
        "client": {
          "status": "native",
          "note": "RSJS islands activate immediately or through visible, idle, interaction, and media strategies.",
          "url": "https://proa.so/docs/rsjs/hydration",
          "label": "RSJS islands"
        },
        "ssg": {
          "status": "undocumented",
          "note": "The reviewed deployment workflow produces a Rust server and public assets; a route-to-static-HTML export command is not established.",
          "url": "https://proa.so/docs/framework/deployment"
        },
        "csr": {
          "status": "undocumented",
          "note": "RSJS activates server-authored islands and updates DOM; a standalone client-rendered application root is not established.",
          "url": "https://proa.so/docs/rsjs/hydration"
        },
        "serverOnly": {
          "status": "native",
          "note": "Ordinary Rust components stay on the server; only analyzed RSJS graphs become browser JavaScript. This is not the React RSC protocol.",
          "url": "https://proa.so/docs/rsjs/server-only",
          "label": "Rust / RSJS boundary"
        },
        "partialRendering": {
          "status": "undocumented",
          "note": "Suspense streams request-time HTML; a prebuilt static shell with dynamic request holes is not established.",
          "url": "https://proa.so/docs/core/streaming-ssr"
        },
        "routing": {
          "status": "official",
          "note": "The framework's route/page layer integrates request handling with Axum.",
          "url": "https://proa.so/docs/framework/routing",
          "label": "Framework / Axum"
        },
        "layouts": {
          "status": "native",
          "note": "Role-marked layouts nest around a selected Page. The handler composes them explicitly rather than using filesystem layout discovery.",
          "url": "https://proa.so/docs/framework/layouts-and-pages"
        },
        "dynamicRoutes": {
          "status": "official",
          "note": "The Axum integration reads route parameters through the request context.",
          "url": "https://proa.so/docs/framework/routing",
          "label": "Axum integration"
        },
        "parallelRoutes": {
          "status": "undocumented",
          "note": "The reviewed router/layout API does not establish independently navigable named route slots.",
          "url": "https://proa.so/docs/framework/routing"
        },
        "interceptedRoutes": {
          "status": "undocumented",
          "note": "The reviewed routing guide does not establish intercepted-modal/direct-entry route semantics.",
          "url": "https://proa.so/docs/framework/routing"
        },
        "prefetch": {
          "status": "community",
          "note": "The documented optional Turbo integration prefetches eligible links on hover and supports explicit preloads. Plain rel=prefetch is a browser hint, not a Proa scheduler; Turbo must be installed separately.",
          "url": "https://proa.so/docs/framework/linking",
          "reviewedOn": "2026-11-11",
          "label": "Turbo Drive"
        },
        "softNavigation": {
          "status": "community",
          "note": "The documented Turbo Drive integration enhances ordinary server-rendered anchors with HTML swaps and browser history. Turbo is installed separately; normal document navigation remains the baseline.",
          "url": "https://proa.so/docs/framework/linking",
          "reviewedOn": "2026-11-11",
          "label": "Turbo Drive integration"
        },
        "viewTransitions": {
          "status": "community",
          "note": "Turbo Drive can start browser View Transitions when both documents opt in with the view-transition meta tag. CSS controls the animation; unsupported browsers continue ordinary Turbo navigation. Apps must honor reduced-motion preferences.",
          "url": "https://turbo.hotwired.dev/handbook/drive#view-transitions",
          "reviewedOn": "2026-11-11",
          "label": "Turbo Drive"
        },
        "redirects": {
          "status": "official",
          "note": "Framework handlers use Axum redirects and explicit response status; this source does not establish a rewrite configuration API.",
          "url": "https://proa.so/docs/framework/errors",
          "label": "Redirects via Axum"
        },
        "serverData": {
          "status": "native",
          "note": "Keyed loaders share typed asynchronous results and feed streamed components.",
          "url": "https://proa.so/docs/framework/data-loading"
        },
        "clientData": {
          "status": "native",
          "note": "RSJS queries seed from server data, expose fetch state, and support invalidating mutations against explicit URLs.",
          "url": "https://proa.so/docs/rsjs/queries-mutations"
        },
        "requestDedupe": {
          "status": "native",
          "note": "Request-scoped keyed resolution deduplicates equivalent loads; cross-request policy is separate.",
          "url": "https://proa.so/docs/framework/caching"
        },
        "persistentCache": {
          "status": "native",
          "note": "The documented data cache retains keyed results across requests with explicit policy.",
          "url": "https://proa.so/docs/framework/caching"
        },
        "invalidation": {
          "status": "native",
          "note": "Invalidation targets data keys and render dependencies; cache traces expose dependency behavior.",
          "url": "https://proa.so/docs/framework/caching"
        },
        "isr": {
          "status": "partial",
          "note": "PageCache configures stale-while-revalidate/CDN behavior. There is no in-process page cache; without a CDN the page still renders.",
          "url": "https://proa.so/docs/framework/page-caching",
          "label": "CDN-dependent",
          "reviewedOn": "2026-11-10"
        },
        "apiRoutes": {
          "status": "official",
          "note": "Route::endpoint registers Axum handlers for JSON, forms, raw bodies, and webhooks.",
          "url": "https://proa.so/docs/framework/route-handlers",
          "label": "Axum integration"
        },
        "actions": {
          "status": "partial",
          "note": "RSJS query/mutation helpers call explicit server URLs. The reviewed form guide uses an authored Axum POST handler, rather than a generated server-function RPC.",
          "url": "https://proa.so/docs/rsjs/queries-mutations",
          "label": "Explicit endpoints",
          "reviewedOn": "2026-11-10"
        },
        "forms": {
          "status": "partial",
          "note": "Native forms submit to explicit Axum handlers; Wellformed validates inputs. Typed client actions are not generated server RPC.",
          "url": "https://proa.so/docs/guides/forms-actions",
          "label": "Forms + Wellformed",
          "reviewedOn": "2026-11-11",
          "assessment": {
            "summary": "Form transport, validation, pending feedback and optimistic state are separate behaviors; the progressive-forms and optimistic-updates rows review the latter contracts explicitly.",
            "strengths": [
              "Native forms submit to explicit Axum handlers; Wellformed validates inputs. Typed client actions are not generated server RPC."
            ],
            "tradeoffs": [
              "Do not infer a no-JavaScript submission path, automatic validation, accessible field errors or rollback merely from the ability to receive FormData."
            ]
          }
        },
        "middleware": {
          "status": "official",
          "note": "Axum handlers/layers compose around endpoints; framework security layers apply to registered endpoints.",
          "url": "https://proa.so/docs/framework/route-handlers",
          "label": "Axum layers"
        },
        "cookies": {
          "status": "partial",
          "note": "ResponseContext stages Set-Cookie values through append_set_cookie before headers are committed. Request parsing and session/identity policy remain host/application-owned.",
          "url": "https://proa.so/docs/framework/errors",
          "label": "Host HTTP integration",
          "reviewedOn": "2026-11-10"
        },
        "cssModules": {
          "status": "undocumented",
          "note": "The reviewed linked asset pipeline does not establish CSS Modules selector/class-map compilation.",
          "url": "https://proa.so/docs/framework/static-assets"
        },
        "scopedCss": {
          "status": "undocumented",
          "note": "ClassList and authored styles do not establish automatic component-local CSS selector rewriting.",
          "url": "https://proa.so/docs/core/html-rendering"
        },
        "tailwind": {
          "status": "community",
          "note": "The official guide configures external Tailwind tooling for Rust-authored classes; it is not a required styling runtime.",
          "url": "https://proa.so/docs/guides/tailwind-intellisense",
          "label": "Tailwind tooling recipe"
        },
        "cssInJs": {
          "status": "undocumented",
          "note": "The reviewed client/asset pipeline does not establish a CSS-in-JS compiler and SSR style registry.",
          "url": "https://proa.so/docs/rsjs/runtime"
        },
        "images": {
          "status": "partial",
          "note": "No image transformation pipeline is provided. The app prepares variants and authors srcset/sizes itself.",
          "url": "https://proa.so/docs/framework/images",
          "label": "Manual variants",
          "reviewedOn": "2026-11-10"
        },
        "fonts": {
          "status": "official",
          "note": "proa_fonts vendors self-hosted fonts, hashes assets, emits preload CSS, and provides metric-matched fallbacks.",
          "url": "https://proa.so/docs/framework/fonts",
          "label": "proa_fonts"
        },
        "scripts": {
          "status": "official",
          "note": "proa_third_party supports consent-aware analytics and deferred scripts; browser execution still requires CSP authorization.",
          "url": "https://proa.so/docs/framework/third-party",
          "label": "proa_third_party"
        },
        "staticAssets": {
          "status": "official",
          "note": "FrameworkBuilder mounts an application-supplied static router; disk/embedded service and cache headers are explicit.",
          "url": "https://proa.so/docs/framework/static-assets",
          "label": "Static router"
        },
        "metadata": {
          "status": "native",
          "note": "Managed head builders produce structured title, canonical, social, and named metadata at one head outlet.",
          "url": "https://proa.so/docs/framework/metadata",
          "label": "Explicit, composable API",
          "assessment": {
            "label": "Explicit, composable API",
            "summary": "Structured metadata with field-level inheritance and clear operations; setup and document ordering are explicit.",
            "strengths": [
              "Shared request loaders can feed both render_head and the page body.",
              "Layout defaults, field patches, explicit clears, and absolute titles are documented."
            ],
            "tradeoffs": [
              "Requires managed-head setup, role-marked components, and a head outlet; direct body rendering skips the metadata hook.",
              "Metadata seals before the selected page body; it cannot be treated as unrestricted late head mutation."
            ]
          }
        },
        "dynamicMetadata": {
          "status": "native",
          "note": "Async render_head can use the same keyed loader as the body; metadata seals before the selected Page body starts.",
          "url": "https://proa.so/docs/framework/metadata"
        },
        "metadataInheritance": {
          "status": "native",
          "note": "Layout hooks supply defaults; child hooks change only the fields they write. Handlers must compose role-marked components.",
          "url": "https://proa.so/docs/framework/metadata#inherit-layout-defaults"
        },
        "metadataOverrides": {
          "status": "native",
          "note": "Children can patch or clear inherited fields. Image arrays replace the inherited list; images([]) removes it.",
          "url": "https://proa.so/docs/framework/metadata-reference#replace-inherited-images",
          "label": "Field patches / clears"
        },
        "titleTemplates": {
          "status": "native",
          "note": "title_template composes inherited titles; absolute_title bypasses it and clear_title_template resets it.",
          "url": "https://proa.so/docs/framework/metadata-reference"
        },
        "socialImages": {
          "status": "official",
          "note": "Optional proa_og generates images using WPE WebKit on Linux and requires native libraries; metadata itself only emits image URLs.",
          "url": "https://proa.so/docs/framework/images#open-graph-images",
          "label": "proa_og / Linux"
        },
        "sitemaps": {
          "status": "native",
          "note": "Typed and asynchronous generators support individual sitemap documents and a multi-sitemap index.",
          "url": "https://proa.so/docs/framework/sitemaps"
        },
        "robots": {
          "status": "native",
          "note": "Structured generators support user-agent groups, sitemap links, and asynchronous generation.",
          "url": "https://proa.so/docs/framework/robots"
        },
        "markdown": {
          "status": "native",
          "note": "md! / md_sync! render typed Markdown output. This is not itself a filesystem Markdown-to-HTML content pipeline.",
          "url": "https://proa.so/docs/core/markdown",
          "label": "Typed Markdown output"
        },
        "collections": {
          "status": "official",
          "note": "Proa Docs compiles frontmatter schemas, file-routed Markdown, search/navigation data, and a static Rust page registry. It is documentation-content tooling.",
          "url": "https://proa.so/docs/proa-docs",
          "label": "Proa Docs"
        },
        "draftMode": {
          "status": "undocumented",
          "note": "Application cache hints/bypass can implement previews, but a dedicated authenticated editorial draft API is not established.",
          "url": "https://proa.so/docs/framework/page-caching"
        },
        "translations": {
          "status": "undocumented",
          "note": "The reviewed published rendering API does not establish locale message catalogs, interpolation keys, and pluralization.",
          "url": "https://proa.so/docs/core/html-rendering"
        },
        "localeRouting": {
          "status": "undocumented",
          "note": "Application routes can carry a locale segment; automatic language negotiation/locale URL policy is not established.",
          "url": "https://proa.so/docs/framework/routing"
        },
        "localeFormatting": {
          "status": "undocumented",
          "note": "The reviewed published renderer does not establish locale-aware date/number formatter APIs.",
          "url": "https://proa.so/docs/core/html-rendering"
        },
        "auth": {
          "status": "partial",
          "note": "Axum extractors/middleware can authenticate requests. Identity storage, login, and session policy require application/library code.",
          "url": "https://proa.so/docs/framework/route-handlers",
          "label": "Host authentication hooks",
          "reviewedOn": "2026-11-10"
        },
        "csp": {
          "status": "native",
          "note": "Configured CSP can assign a fresh per-response nonce to generated scripts; CSP and HSTS are opt-in.",
          "url": "https://proa.so/docs/framework/security-headers"
        },
        "cspNonce": {
          "status": "native",
          "note": "Opt-in strict CSP generates a fresh 128-bit nonce per response and applies it to framework bootstraps, import maps and streaming scripts. Authored scripts must use the request nonce too; nonce-bearing HTML must not be reused as a shared cached response.",
          "url": "https://proa.so/docs/framework/security-headers",
          "reviewedOn": "2026-11-11",
          "label": "Strict CSP / streaming nonces"
        },
        "csrf": {
          "status": "native",
          "note": "Default outer hardening rejects unsafe browser cross-origin writes unless trusted, covering pages and endpoints. This is origin-based protection, not a CSRF-token service; same-origin XSS and stolen sessions require other defenses.",
          "url": "https://proa.so/docs/framework/cross-origin",
          "label": "Origin checks; no tokens"
        },
        "environment": {
          "status": "partial",
          "note": "The application defines and validates runtime environment configuration. Only explicitly selected values should enter browser props.",
          "url": "https://proa.so/docs/framework/environment",
          "label": "Application-owned config",
          "reviewedOn": "2026-11-11",
          "assessment": {
            "summary": "Only analyzed RSJS client graphs become JavaScript; runtime configuration and serialization policy remain explicit application work.",
            "strengths": [
              "The documented server-only boundary keeps ordinary server implementation out of browser modules."
            ],
            "tradeoffs": [
              "The application must validate environment configuration and select safe browser props/query seeds. A typed value can still contain a secret."
            ]
          }
        },
        "types": {
          "status": "native",
          "note": "Rust type checking and template macros validate typed server templates at compile time.",
          "url": "https://proa.so/docs/core/html-rendering"
        },
        "hmr": {
          "status": "native",
          "note": "proa dev watches files and rebuilds assets/server. This source does not promise React-style state-preserving hot updates.",
          "url": "https://proa.so/docs/framework/project-config",
          "label": "Watch / rebuild"
        },
        "cli": {
          "status": "native",
          "note": "proa dev and proa build coordinate project assets and compilation through proa.config.json.",
          "url": "https://proa.so/docs/framework/project-config"
        },
        "bundleAnalysis": {
          "status": "partial",
          "note": "Linked asset/descriptor diagnostics help inspect generated client artifacts; a module-size visualization is not established.",
          "url": "https://proa.so/docs/rsjs/runtime",
          "label": "Linked artifact diagnostics",
          "reviewedOn": "2026-11-10"
        },
        "unitTests": {
          "status": "native",
          "note": "Rust library tests use cargo test; linked RSJS integration targets use proa test.",
          "url": "https://proa.so/docs/guides/testing",
          "label": "Rust / proa test"
        },
        "e2eTests": {
          "status": "partial",
          "note": "The guide recommends browser automation for behavior/accessibility workflows, but does not supply a dedicated browser runner.",
          "url": "https://proa.so/docs/guides/testing",
          "label": "Application browser tests",
          "reviewedOn": "2026-11-10"
        },
        "observability": {
          "status": "native",
          "note": "Cache Trace exposes render/cache dependency diagnostics, and host tracing supplies production logging. Exporters and monitoring dashboards remain application-owned; those are not required by this instrumentation category.",
          "url": "https://proa.so/docs/framework/caching",
          "label": "Cache traces / host logging"
        },
        "errorHandling": {
          "status": "partial",
          "note": "The published guide documents HTTP errors, fallback responses, and logging. A documented general component recovery-boundary contract is not established here.",
          "url": "https://proa.so/docs/framework/errors",
          "label": "HTTP fallback handling",
          "reviewedOn": "2026-11-10"
        },
        "serverHosting": {
          "status": "native",
          "note": "Deploy a release binary plus public assets on your own server.",
          "url": "https://proa.so/docs/framework/deployment"
        },
        "staticHosting": {
          "status": "undocumented",
          "note": "Compiled static article fragments still run inside the Rust request handler. A complete static-site export workflow is not established.",
          "url": "https://proa.so/docs/framework/deployment"
        },
        "containers": {
          "status": "native",
          "note": "The documented Docker build packages the Rust binary and required assets for a production runtime.",
          "url": "https://proa.so/docs/framework/railway"
        },
        "edgeHosting": {
          "status": "undocumented",
          "note": "Cloudflare can cache/proxy origin responses, but the reviewed deployment guide does not establish running Proa SSR inside Workers.",
          "url": "https://proa.so/docs/framework/deployment"
        },
        "orm": {
          "status": "undocumented",
          "note": "The reviewed framework documentation does not establish an owned orm / query builder API. Host libraries and application integrations may provide it.",
          "url": "https://proa.so"
        },
        "migrations": {
          "status": "undocumented",
          "note": "The reviewed framework documentation does not establish an owned schema migrations API. Host libraries and application integrations may provide it.",
          "url": "https://proa.so"
        },
        "transactions": {
          "status": "undocumented",
          "note": "The reviewed framework documentation does not establish an owned transactions API. Host libraries and application integrations may provide it.",
          "url": "https://proa.so"
        },
        "jobs": {
          "status": "undocumented",
          "note": "The reviewed framework documentation does not establish an owned background jobs API. Host libraries and application integrations may provide it.",
          "url": "https://proa.so"
        },
        "mail": {
          "status": "undocumented",
          "note": "The reviewed framework documentation does not establish an owned email API. Host libraries and application integrations may provide it.",
          "url": "https://proa.so"
        },
        "uploads": {
          "status": "undocumented",
          "note": "The reviewed framework documentation does not establish an owned file uploads & storage API. Host libraries and application integrations may provide it.",
          "url": "https://proa.so"
        },
        "realtime": {
          "status": "undocumented",
          "note": "The reviewed framework documentation does not establish an owned real-time delivery API. Host libraries and application integrations may provide it.",
          "url": "https://proa.so"
        },
        "xssEscaping": {
          "status": "native",
          "note": "Dynamic template values are encoded for their HTML context, including separate URL policy. UnsafeRaw bypasses output protection; it does not sanitize user-authored rich HTML.",
          "url": "https://proa.so/docs/core/escaping",
          "reviewedOn": "2026-11-11"
        },
        "htmlSanitization": {
          "status": "undocumented",
          "note": "The reviewed escaping API encodes output and offers UnsafeRaw, but does not establish a maintained allowlist-based sanitizer. UnsafeRaw is a trust bypass, not a way to clean untrusted rich HTML.",
          "url": "https://proa.so/docs/core/escaping",
          "reviewedOn": "2026-11-11"
        },
        "authorization": {
          "status": "undocumented",
          "note": "The linked security API review does not establish the specific authorization policies contract defined here. This is a bounded documentation finding, not proof of absence; generic hooks or application-authored code are not counted as an owned implementation.",
          "url": "https://proa.so/docs/framework/security-headers",
          "reviewedOn": "2026-11-11"
        },
        "rateLimiting": {
          "status": "undocumented",
          "note": "The linked security API review does not establish the specific rate limiting contract defined here. This is a bounded documentation finding, not proof of absence; generic hooks or application-authored code are not counted as an owned implementation.",
          "url": "https://proa.so/docs/framework/security-headers",
          "reviewedOn": "2026-11-11"
        },
        "progressiveEnhancement": {
          "status": "official",
          "note": "The documented native HTML form submits to an explicit Axum handler that validates and writes data. This path works without client handlers; RSJS actions enhance controls but are not generated server RPC or automatic form rollback.",
          "url": "https://proa.so/docs/guides/forms-actions",
          "reviewedOn": "2026-11-11",
          "label": "Native forms / Axum"
        },
        "optimisticUi": {
          "status": "undocumented",
          "note": "The reviewed query/mutation guide establishes pending/error state and invalidation, but not an optimistic overlay with reconciliation/rollback. An authored signal update alone is not evidence of that contract.",
          "url": "https://proa.so/docs/rsjs/queries-mutations",
          "reviewedOn": "2026-11-11"
        },
        "requestCancellation": {
          "status": "undocumented",
          "note": "The reviewed query/mutation guide does not establish the cancellation or stale-result suppression contract for superseded requests. Pending state and keyed queries alone do not prove it.",
          "url": "https://proa.so/docs/rsjs/queries-mutations",
          "reviewedOn": "2026-11-11"
        },
        "typedLinks": {
          "status": "undocumented",
          "note": "The linked routing API review does not establish the specific typed links & parameters contract defined here. This is a bounded documentation finding, not proof of absence; generic hooks or application-authored code are not counted as an owned implementation.",
          "url": "https://proa.so/docs/framework/linking",
          "reviewedOn": "2026-11-11"
        },
        "searchParams": {
          "status": "undocumented",
          "note": "The linked routing API review does not establish the specific validated url state contract defined here. This is a bounded documentation finding, not proof of absence; generic hooks or application-authored code are not counted as an owned implementation.",
          "url": "https://proa.so/docs/framework/linking",
          "reviewedOn": "2026-11-11"
        },
        "stateRestoration": {
          "status": "community",
          "note": "Requires the documented optional Turbo integration, not Proa's plain document navigation. Turbo Drive caches page snapshots for restoration visits and supports data-turbo-permanent elements. Snapshots are DOM state, not a guarantee to serialize arbitrary JavaScript state; applications must implement lifecycle cleanup.",
          "url": "https://turbo.hotwired.dev/handbook/building",
          "reviewedOn": "2026-11-11",
          "label": "Turbo snapshots"
        },
        "scrollRestoration": {
          "status": "community",
          "note": "Requires the documented optional Turbo integration, not Proa's plain document navigation. Turbo restoration visits restore the recorded page scroll position. This establishes window/document restoration, not arbitrary nested scrollport state.",
          "url": "https://turbo.hotwired.dev/handbook/drive",
          "reviewedOn": "2026-11-11",
          "label": "Turbo Drive"
        },
        "navigationBlocking": {
          "status": "community",
          "note": "Requires the documented optional Turbo integration, not Proa's plain document navigation. turbo:before-visit can cancel an application visit. This does not intercept every browser history restoration or tab close; beforeunload remains a separate browser mechanism.",
          "url": "https://turbo.hotwired.dev/reference/events#turbo-before-visit",
          "reviewedOn": "2026-11-11",
          "label": "Turbo visit events"
        },
        "navigationAccessibility": {
          "status": "community",
          "note": "Requires the documented optional Turbo integration, not Proa's plain document navigation. Turbo documents aria-busy during requests, focus of autofocus elements and updating the document title. It does not promise the same route-announcement/live-region contract as SvelteKit.",
          "url": "https://turbo.hotwired.dev/handbook/drive",
          "reviewedOn": "2026-11-11",
          "label": "Turbo focus / busy state"
        },
        "a11yChecks": {
          "status": "native",
          "note": "The HTML compiler checks statically visible accessibility requirements, including required attributes and supported ARIA contracts. Runtime focus/contrast and cross-component context still need integration checks; these diagnostics do not certify accessibility.",
          "url": "https://proa.so/docs/guides/accessibility",
          "reviewedOn": "2026-11-11",
          "label": "Compile-time checks"
        },
        "lazyActivation": {
          "status": "native",
          "note": "RSJS final owners activate immediately or on visible, idle, interaction or media triggers. Server HTML is present first; runtime planning decides owner assets and query wiring. A delayed strategy is not a claim of zero browser runtime.",
          "url": "https://proa.so/docs/rsjs/hydration",
          "reviewedOn": "2026-11-11",
          "label": "RSJS strategies"
        },
        "codeSplitting": {
          "status": "native",
          "note": "RSJS emits linked per-owner island modules, and a page runtime plan selects modules for rendered owners. Shared runtime dependencies may be needed; this differs from route-level SPA chunking.",
          "url": "https://proa.so/docs/rsjs/runtime",
          "reviewedOn": "2026-11-11",
          "label": "RSJS owner modules"
        },
        "offline": {
          "status": "undocumented",
          "note": "The linked deployment API review does not establish the specific offline integration contract defined here. This is a bounded documentation finding, not proof of absence; generic hooks or application-authored code are not counted as an owned implementation.",
          "url": "https://proa.so/docs/framework/deployment",
          "reviewedOn": "2026-11-11"
        },
        "scheduling": {
          "status": "undocumented",
          "note": "The linked backend API review does not establish the specific scheduled tasks contract defined here. This is a bounded documentation finding, not proof of absence; generic hooks or application-authored code are not counted as an owned implementation.",
          "url": "https://proa.so",
          "reviewedOn": "2026-11-11"
        },
        "notifications": {
          "status": "undocumented",
          "note": "The linked backend API review does not establish the specific multi-channel notifications contract defined here. This is a bounded documentation finding, not proof of absence; generic hooks or application-authored code are not counted as an owned implementation.",
          "url": "https://proa.so",
          "reviewedOn": "2026-11-11"
        },
        "searchIndex": {
          "status": "undocumented",
          "note": "The linked backend API review does not establish the specific search indexing contract defined here. This is a bounded documentation finding, not proof of absence; generic hooks or application-authored code are not counted as an owned implementation.",
          "url": "https://proa.so",
          "reviewedOn": "2026-11-11"
        },
        "fieldEncryption": {
          "status": "undocumented",
          "note": "The linked database API review does not establish the specific encrypted model fields contract defined here. This is a bounded documentation finding, not proof of absence; generic hooks or application-authored code are not counted as an owned implementation.",
          "url": "https://proa.so",
          "reviewedOn": "2026-11-11"
        },
        "httpTests": {
          "status": "undocumented",
          "note": "The linked testing API review does not establish the specific http integration tests contract defined here. This is a bounded documentation finding, not proof of absence; generic hooks or application-authored code are not counted as an owned implementation.",
          "url": "https://proa.so/docs/guides/testing",
          "reviewedOn": "2026-11-11"
        }
      }
    },
    {
      "id": "rails",
      "label": "Rails",
      "kind": "Application framework",
      "logo": "logos/rails.svg",
      "color": "#cc0000",
      "scope": "Rails documentation. Optional browser frameworks are not attributed to the server template engine.",
      "reviewedOn": "2026-11-10",
      "updatedOn": "2026-11-11",
      "capabilities": {
        "ssr": {
          "status": "native",
          "note": "Action View renders server templates and layouts.",
          "url": "https://guides.rubyonrails.org/layouts_and_rendering.html"
        },
        "streaming": {
          "status": "native",
          "note": "render stream: true streams the layout and template progressively. Middleware buffering and template constraints apply.",
          "url": "https://api.rubyonrails.org/classes/ActionController/Streaming.html"
        },
        "suspense": {
          "status": "undocumented",
          "note": "Progressive layout streaming and separately fetched Turbo Frames do not establish a declarative original-response async UI replacement boundary.",
          "url": "https://guides.rubyonrails.org/layouts_and_rendering.html"
        },
        "client": {
          "status": "official",
          "note": "Turbo progressively enhances server HTML navigation and frame/stream updates; this is DOM replacement rather than hydration of a Ruby component tree.",
          "url": "https://turbo.hotwired.dev/handbook/drive",
          "label": "Turbo / Hotwire"
        },
        "ssg": {
          "status": "undocumented",
          "note": "Rendering/caching templates does not establish a complete static HTML site-export workflow.",
          "url": "https://guides.rubyonrails.org/layouts_and_rendering.html"
        },
        "csr": {
          "status": "scope",
          "note": "Rails supplies server HTML and integrates optional browser tools; a general component CSR runtime belongs to that selected library.",
          "url": "https://guides.rubyonrails.org/working_with_javascript_in_rails.html"
        },
        "serverOnly": {
          "status": "native",
          "note": "Action View evaluates templates on the server and sends output, keeping Ruby component/template implementations off the browser.",
          "url": "https://guides.rubyonrails.org/layouts_and_rendering.html"
        },
        "partialRendering": {
          "status": "undocumented",
          "note": "Partial templates and fragment caches are not a prebuilt static-shell/request-time dynamic-hole pipeline.",
          "url": "https://guides.rubyonrails.org/layouts_and_rendering.html"
        },
        "routing": {
          "status": "native",
          "note": "The Rails router maps verbs and URLs to controller actions and resource routes.",
          "url": "https://guides.rubyonrails.org/routing.html"
        },
        "layouts": {
          "status": "native",
          "note": "Layouts wrap views; nested layouts use render/yield composition rather than a filesystem segment hierarchy.",
          "url": "https://guides.rubyonrails.org/layouts_and_rendering.html"
        },
        "dynamicRoutes": {
          "status": "native",
          "note": "Routes expose dynamic segments through params and support constraints.",
          "url": "https://guides.rubyonrails.org/routing.html"
        },
        "parallelRoutes": {
          "status": "undocumented",
          "note": "The reviewed Rails router does not establish independently navigable named client-route slots.",
          "url": "https://guides.rubyonrails.org/routing.html"
        },
        "interceptedRoutes": {
          "status": "undocumented",
          "note": "Router resources and controller actions do not establish intercepted-modal/direct-navigation semantics.",
          "url": "https://guides.rubyonrails.org/routing.html"
        },
        "prefetch": {
          "status": "official",
          "note": "Turbo Drive prefetches eligible hovered links; attributes/events can opt out.",
          "url": "https://turbo.hotwired.dev/handbook/drive",
          "label": "Turbo Drive"
        },
        "softNavigation": {
          "status": "official",
          "note": "Turbo Drive intercepts eligible links/forms, fetches HTML and replaces page content without a full document reload. It maintains browser history and supports permanent elements; apps must follow Turbo's visit lifecycle.",
          "url": "https://turbo.hotwired.dev/handbook/drive",
          "reviewedOn": "2026-11-11",
          "label": "Turbo Drive"
        },
        "viewTransitions": {
          "status": "official",
          "note": "Turbo Drive can start browser View Transitions when both documents opt in with the view-transition meta tag. CSS controls the animation; unsupported browsers continue ordinary Turbo navigation. Apps must honor reduced-motion preferences.",
          "url": "https://turbo.hotwired.dev/handbook/drive#view-transitions",
          "reviewedOn": "2026-11-11",
          "label": "Turbo Drive"
        },
        "redirects": {
          "status": "native",
          "note": "redirect_to/redirect_back issue HTTP redirects; routing can also declare redirects.",
          "url": "https://guides.rubyonrails.org/layouts_and_rendering.html"
        },
        "serverData": {
          "status": "native",
          "note": "Controllers/models load database/application data before rendering Action View.",
          "url": "https://guides.rubyonrails.org/getting_started.html"
        },
        "clientData": {
          "status": "partial",
          "note": "Turbo Frames request server-rendered fragments and replace matching regions; this is not a browser application query cache.",
          "url": "https://turbo.hotwired.dev/handbook/frames",
          "label": "Turbo Frames",
          "reviewedOn": "2026-11-10"
        },
        "requestDedupe": {
          "status": "partial",
          "note": "SQL query caching reuses repeated query results within a request. It does not deduplicate arbitrary application HTTP/data loaders.",
          "url": "https://guides.rubyonrails.org/caching_with_rails.html",
          "label": "SQL query cache",
          "reviewedOn": "2026-11-10"
        },
        "persistentCache": {
          "status": "native",
          "note": "Rails.cache and fragment caching support configured stores, including Solid Cache.",
          "url": "https://guides.rubyonrails.org/caching_with_rails.html"
        },
        "invalidation": {
          "status": "native",
          "note": "Versioned cache keys and dependency-aware fragment caching handle expiration; manual deletion is also available.",
          "url": "https://guides.rubyonrails.org/caching_with_rails.html"
        },
        "isr": {
          "status": "undocumented",
          "note": "Fragment/low-level caches and expiry are documented; a static-page export/regeneration contract is not established.",
          "url": "https://guides.rubyonrails.org/caching_with_rails.html"
        },
        "apiRoutes": {
          "status": "native",
          "note": "Controllers handle routed HTTP requests and can render JSON responses.",
          "url": "https://guides.rubyonrails.org/getting_started.html"
        },
        "actions": {
          "status": "partial",
          "note": "Controller actions accept explicit HTTP requests/forms; this is distinct from generated function-call RPC stubs.",
          "url": "https://guides.rubyonrails.org/action_controller_overview.html",
          "label": "Controller endpoints",
          "reviewedOn": "2026-11-10"
        },
        "forms": {
          "status": "native",
          "note": "Form builders connect model validation, controller submission, and CSRF tokens.",
          "url": "https://guides.rubyonrails.org/getting_started.html",
          "reviewedOn": "2026-11-11",
          "assessment": {
            "summary": "Form transport, validation, pending feedback and optimistic state are separate behaviors; the progressive-forms and optimistic-updates rows review the latter contracts explicitly.",
            "strengths": [
              "Form builders connect model validation, controller submission, and CSRF tokens."
            ],
            "tradeoffs": [
              "Do not infer a no-JavaScript submission path, automatic validation, accessible field errors or rollback merely from the ability to receive FormData."
            ]
          }
        },
        "middleware": {
          "status": "native",
          "note": "Rails composes a configurable Rack middleware stack.",
          "url": "https://guides.rubyonrails.org/rails_on_rack.html"
        },
        "cookies": {
          "status": "native",
          "note": "Rails supplies signed/encrypted cookie and session mechanisms; security depends on correct application configuration.",
          "url": "https://guides.rubyonrails.org/security.html"
        },
        "cssModules": {
          "status": "scope",
          "note": "Propshaft fingerprints/publishes assets; CSS Modules compilation belongs to an additional bundler.",
          "url": "https://guides.rubyonrails.org/asset_pipeline.html"
        },
        "scopedCss": {
          "status": "scope",
          "note": "Action View/Propshaft do not compile component-local CSS selectors; select separate styling/build tooling.",
          "url": "https://guides.rubyonrails.org/asset_pipeline.html"
        },
        "tailwind": {
          "status": "official",
          "note": "tailwindcss-rails integrates the Tailwind compiler with Rails asset/build tasks.",
          "url": "https://github.com/rails/tailwindcss-rails",
          "label": "tailwindcss-rails"
        },
        "cssInJs": {
          "status": "scope",
          "note": "JavaScript styling runtimes and their SSR integrations belong to the chosen UI/bundler stack.",
          "url": "https://guides.rubyonrails.org/working_with_javascript_in_rails.html"
        },
        "images": {
          "status": "native",
          "note": "Active Storage variants resize/transform attached images through configured image processors. This is not arbitrary remote-image optimization.",
          "url": "https://guides.rubyonrails.org/active_storage_overview.html"
        },
        "fonts": {
          "status": "partial",
          "note": "Font assets can be fingerprinted and served; automatic subsetting and fallback-metric optimization are not established.",
          "url": "https://guides.rubyonrails.org/asset_pipeline.html",
          "label": "Asset files",
          "reviewedOn": "2026-11-10"
        },
        "scripts": {
          "status": "partial",
          "note": "Asset helpers emit script tags with options; import maps/bundlers integrate browser code. A unified third-party scheduling API is not established.",
          "url": "https://guides.rubyonrails.org/action_view_helpers.html",
          "label": "Asset helpers",
          "reviewedOn": "2026-11-10"
        },
        "staticAssets": {
          "status": "official",
          "note": "Propshaft fingerprints assets and maps them through a manifest; it is enabled in generated applications.",
          "url": "https://guides.rubyonrails.org/asset_pipeline.html",
          "label": "Propshaft"
        },
        "metadata": {
          "status": "partial",
          "note": "content_for/capture and tag helpers compose authored head markup. A structured SEO metadata-object registry is not established.",
          "url": "https://guides.rubyonrails.org/action_view_helpers.html",
          "label": "View helpers / blocks",
          "reviewedOn": "2026-11-10"
        },
        "dynamicMetadata": {
          "status": "native",
          "note": "Controller values and view blocks render request-dependent head tags.",
          "url": "https://guides.rubyonrails.org/layouts_and_rendering.html",
          "label": "Controller / view values"
        },
        "metadataInheritance": {
          "status": "partial",
          "note": "content_for/yield shares named layout blocks; SEO field merging is application-authored.",
          "url": "https://guides.rubyonrails.org/action_view_helpers.html",
          "label": "Layout blocks",
          "reviewedOn": "2026-11-10"
        },
        "metadataOverrides": {
          "status": "partial",
          "note": "content_for can append or flush a named block; this is markup-block replacement, not uniform metadata-field merging.",
          "url": "https://guides.rubyonrails.org/action_view_helpers.html",
          "label": "content_for flush",
          "reviewedOn": "2026-11-10"
        },
        "titleTemplates": {
          "status": "undocumented",
          "note": "Titles can be formatted in view helpers; a dedicated inherited title-template/absolute-title API is not established.",
          "url": "https://guides.rubyonrails.org/action_view_helpers.html"
        },
        "socialImages": {
          "status": "undocumented",
          "note": "Attachment image variants do not establish a route-aware generated social-card renderer.",
          "url": "https://guides.rubyonrails.org/active_storage_overview.html"
        },
        "sitemaps": {
          "status": "undocumented",
          "note": "Routes can expose XML responses; the reviewed router does not provide automatic crawler sitemap generation.",
          "url": "https://guides.rubyonrails.org/routing.html"
        },
        "robots": {
          "status": "native",
          "note": "public contains files served as-is, including an application-authored robots.txt.",
          "url": "https://guides.rubyonrails.org/getting_started.html",
          "label": "Public file"
        },
        "markdown": {
          "status": "undocumented",
          "note": "The reviewed Action View helpers do not establish Markdown parsing/content-page routing.",
          "url": "https://guides.rubyonrails.org/action_view_helpers.html"
        },
        "collections": {
          "status": "undocumented",
          "note": "Rendering an Active Record collection is different from a file-content schema/loader/query registry, which is not established here.",
          "url": "https://guides.rubyonrails.org/action_view_helpers.html"
        },
        "draftMode": {
          "status": "undocumented",
          "note": "Applications can authenticate previews and bypass caches; a standardized editorial draft mode is not established.",
          "url": "https://guides.rubyonrails.org/caching_with_rails.html"
        },
        "translations": {
          "status": "native",
          "note": "Rails ships with the Ruby i18n gem, message lookup, interpolation, and pluralization.",
          "url": "https://guides.rubyonrails.org/i18n.html"
        },
        "localeRouting": {
          "status": "native",
          "note": "The i18n guide documents locale URL parameters, route scopes, and request-scoped locale selection.",
          "url": "https://guides.rubyonrails.org/i18n.html"
        },
        "localeFormatting": {
          "status": "native",
          "note": "I18n.l and locale translation data provide localized date/time formats and related helpers.",
          "url": "https://guides.rubyonrails.org/i18n.html"
        },
        "auth": {
          "status": "native",
          "note": "The authentication generator creates application models/controllers/views for session-based login; it is not a hosted identity provider.",
          "url": "https://guides.rubyonrails.org/getting_started.html",
          "label": "Authentication generator"
        },
        "csp": {
          "status": "native",
          "note": "A CSP DSL supports global policies, per-resource overrides, and nonces.",
          "url": "https://guides.rubyonrails.org/security.html"
        },
        "cspNonce": {
          "status": "native",
          "note": "Rails supplies a configurable nonce generator, nonce directives and script/style tag helpers under its CSP policy. Applications choose a cryptographically random per-response generator and pass nonce values to authored tags.",
          "url": "https://guides.rubyonrails.org/security.html#content-security-policy",
          "reviewedOn": "2026-11-11",
          "label": "CSP nonce generator / tag helpers"
        },
        "csrf": {
          "status": "native",
          "note": "Action Controller forgery protection and form tokens defend configured browser mutation endpoints. API-only apps differ.",
          "url": "https://guides.rubyonrails.org/security.html"
        },
        "environment": {
          "status": "native",
          "note": "Environment-specific configuration and encrypted credentials manage server settings; applications control what reaches views.",
          "url": "https://guides.rubyonrails.org/configuring.html"
        },
        "types": {
          "status": "undocumented",
          "note": "The reviewed Ruby/ERB workflow does not establish static component/template-prop type checking. Optional Ruby typing tools are separate.",
          "url": "https://guides.rubyonrails.org/action_view_overview.html"
        },
        "hmr": {
          "status": "native",
          "note": "Development reloads changed Ruby constants per request. Browser component state-preserving hot replacement requires separate tooling.",
          "url": "https://guides.rubyonrails.org/autoloading_and_reloading_constants.html",
          "label": "Server code reload"
        },
        "cli": {
          "status": "native",
          "note": "bin/rails provides generators, server, console, tests, and application tasks.",
          "url": "https://guides.rubyonrails.org/command_line.html"
        },
        "bundleAnalysis": {
          "status": "undocumented",
          "note": "Asset fingerprints/manifests do not establish a graphical production module-size analyzer.",
          "url": "https://guides.rubyonrails.org/asset_pipeline.html"
        },
        "unitTests": {
          "status": "native",
          "note": "Rails test cases integrate Minitest with model, controller, and integration helpers.",
          "url": "https://guides.rubyonrails.org/testing.html"
        },
        "e2eTests": {
          "status": "official",
          "note": "System tests integrate browser drivers through Capybara; driver/browser configuration remains separate.",
          "url": "https://guides.rubyonrails.org/testing.html",
          "label": "System tests / Capybara"
        },
        "observability": {
          "status": "native",
          "note": "Rails provides structured request logging, instrumentation, and debugging hooks. External exporters/services add monitoring.",
          "url": "https://guides.rubyonrails.org/debugging_rails_applications.html"
        },
        "errorHandling": {
          "status": "partial",
          "note": "rescue_from and exception handling render application error responses; component-local recovery boundaries are not established.",
          "url": "https://guides.rubyonrails.org/action_controller_advanced_topics.html",
          "label": "Controller rescue / error pages",
          "reviewedOn": "2026-11-10"
        },
        "serverHosting": {
          "status": "native",
          "note": "Production Rails applications run a Ruby application server; the guide deploys through the generated production setup.",
          "url": "https://guides.rubyonrails.org/getting_started.html"
        },
        "staticHosting": {
          "status": "scope",
          "note": "Public assets can be served statically, but dynamic Rails controllers/templates need a Ruby host; complete static-site export is not supplied here.",
          "url": "https://guides.rubyonrails.org/getting_started.html"
        },
        "containers": {
          "status": "native",
          "note": "Generated applications include Docker packaging; the deployment walkthrough uses Kamal.",
          "url": "https://guides.rubyonrails.org/getting_started.html",
          "label": "Docker / Kamal"
        },
        "edgeHosting": {
          "status": "undocumented",
          "note": "The reviewed Docker/server deployment does not establish a worker runtime adapter for Rails SSR.",
          "url": "https://guides.rubyonrails.org/getting_started.html"
        },
        "orm": {
          "status": "native",
          "note": "Active Record supplies relational models, associations, validations and a query API.",
          "url": "https://guides.rubyonrails.org/active_record_basics.html",
          "label": "Active Record",
          "reviewedOn": "2026-11-11",
          "assessment": {
            "summary": "Active Record integrates relationships and eager loading, with strict loading to catch unintended lazy association queries.",
            "strengths": [
              "includes/preload/eager_load support different association loading strategies.",
              "Strict loading can expose accidental lazy loads."
            ],
            "tradeoffs": [
              "Joins, batching and query behavior differ by strategy/adapter. An ORM checkmark does not promise the absence of N+1 queries."
            ]
          }
        },
        "migrations": {
          "status": "native",
          "note": "Versioned migrations apply/roll back schema changes and track schema history through Rails tasks.",
          "url": "https://guides.rubyonrails.org/active_record_migrations.html",
          "label": "Active Record migrations"
        },
        "transactions": {
          "status": "native",
          "note": "Active Record transactions group writes atomically and roll back on failure; adapter/database semantics still apply.",
          "url": "https://guides.rubyonrails.org/active_record_querying.html",
          "label": "Active Record"
        },
        "jobs": {
          "status": "native",
          "note": "Active Job supplies queue adapters, dispatch, retries and failure handling. Solid Queue is the default durable backend in new Rails applications.",
          "url": "https://guides.rubyonrails.org/active_job_basics.html",
          "label": "Active Job / Solid Queue"
        },
        "mail": {
          "status": "native",
          "note": "Action Mailer integrates mail templates, delivery configuration and queued delivery through Active Job.",
          "url": "https://guides.rubyonrails.org/action_mailer_basics.html",
          "label": "Action Mailer"
        },
        "uploads": {
          "status": "native",
          "note": "Active Storage attaches uploads to models, manages local/cloud services and supports direct uploads and variants.",
          "url": "https://guides.rubyonrails.org/active_storage_overview.html",
          "label": "Active Storage"
        },
        "realtime": {
          "status": "native",
          "note": "Action Cable integrates WebSocket connections, channels and pub/sub adapters with the Rails application.",
          "url": "https://guides.rubyonrails.org/action_cable_overview.html",
          "label": "Action Cable"
        },
        "xssEscaping": {
          "status": "native",
          "note": "Action View escapes ordinary output; raw/html_safe marks trusted content and bypasses that encoding. Sanitization helpers are a separate API for user-authored rich HTML.",
          "url": "https://guides.rubyonrails.org/security.html#cross-site-scripting-xss",
          "reviewedOn": "2026-11-11"
        },
        "htmlSanitization": {
          "status": "native",
          "note": "Action View sanitize uses the maintained Rails HTML sanitizer with configurable tag/attribute allowlists. Bypassing it with raw/html_safe transfers responsibility to the application.",
          "url": "https://api.rubyonrails.org/classes/ActionView/Helpers/SanitizeHelper.html",
          "reviewedOn": "2026-11-11",
          "label": "Rails HTML sanitizer"
        },
        "authorization": {
          "status": "community",
          "note": "Pundit supplies resource policy classes and authorization helpers. Rails authentication and controller callbacks alone do not enforce resource permissions; applications must call the policies consistently.",
          "url": "https://www.rubydoc.info/gems/pundit",
          "reviewedOn": "2026-11-11",
          "label": "Pundit"
        },
        "rateLimiting": {
          "status": "native",
          "note": "Controller rate_limit defines counts, windows, identity keys and rejection behavior through a cache store. Shared deployment enforcement requires a shared store; this is not enabled for every endpoint automatically.",
          "url": "https://api.rubyonrails.org/classes/ActionController/RateLimiting/ClassMethods.html",
          "reviewedOn": "2026-11-11",
          "label": "Controller rate_limit"
        },
        "progressiveEnhancement": {
          "status": "native",
          "note": "form_with can emit ordinary server POST forms with authenticity tokens and validation responses. Turbo may enhance delivery; a form that only uses browser handlers must retain a real server submission path.",
          "url": "https://guides.rubyonrails.org/form_helpers.html",
          "reviewedOn": "2026-11-11",
          "label": "Native HTML forms"
        },
        "optimisticUi": {
          "status": "undocumented",
          "note": "The linked data API review does not establish the specific optimistic updates contract defined here. This is a bounded documentation finding, not proof of absence; generic hooks or application-authored code are not counted as an owned implementation.",
          "url": "https://turbo.hotwired.dev/handbook/frames",
          "reviewedOn": "2026-11-11"
        },
        "requestCancellation": {
          "status": "undocumented",
          "note": "The linked data API review does not establish the specific stale request handling contract defined here. This is a bounded documentation finding, not proof of absence; generic hooks or application-authored code are not counted as an owned implementation.",
          "url": "https://turbo.hotwired.dev/handbook/frames",
          "reviewedOn": "2026-11-11"
        },
        "typedLinks": {
          "status": "undocumented",
          "note": "The linked routing API review does not establish the specific typed links & parameters contract defined here. This is a bounded documentation finding, not proof of absence; generic hooks or application-authored code are not counted as an owned implementation.",
          "url": "https://turbo.hotwired.dev/handbook/drive",
          "reviewedOn": "2026-11-11"
        },
        "searchParams": {
          "status": "undocumented",
          "note": "The linked routing API review does not establish the specific validated url state contract defined here. This is a bounded documentation finding, not proof of absence; generic hooks or application-authored code are not counted as an owned implementation.",
          "url": "https://turbo.hotwired.dev/handbook/drive",
          "reviewedOn": "2026-11-11"
        },
        "stateRestoration": {
          "status": "official",
          "note": "Turbo Drive caches page snapshots for restoration visits and supports data-turbo-permanent elements. Snapshots are DOM state, not a guarantee to serialize arbitrary JavaScript state; applications must implement lifecycle cleanup.",
          "url": "https://turbo.hotwired.dev/handbook/building",
          "reviewedOn": "2026-11-11",
          "label": "Turbo snapshots"
        },
        "scrollRestoration": {
          "status": "official",
          "note": "Turbo restoration visits restore the recorded page scroll position. This establishes window/document restoration, not arbitrary nested scrollport state.",
          "url": "https://turbo.hotwired.dev/handbook/drive",
          "reviewedOn": "2026-11-11",
          "label": "Turbo Drive"
        },
        "navigationBlocking": {
          "status": "official",
          "note": "turbo:before-visit can cancel an application visit. This does not intercept every browser history restoration or tab close; beforeunload remains a separate browser mechanism.",
          "url": "https://turbo.hotwired.dev/reference/events#turbo-before-visit",
          "reviewedOn": "2026-11-11",
          "label": "Turbo visit events"
        },
        "navigationAccessibility": {
          "status": "official",
          "note": "Turbo documents aria-busy during requests, focus of autofocus elements and updating the document title. It does not promise the same route-announcement/live-region contract as SvelteKit.",
          "url": "https://turbo.hotwired.dev/handbook/drive",
          "reviewedOn": "2026-11-11",
          "label": "Turbo focus / busy state"
        },
        "a11yChecks": {
          "status": "undocumented",
          "note": "The linked client rendering API review does not establish the specific accessibility checks contract defined here. This is a bounded documentation finding, not proof of absence; generic hooks or application-authored code are not counted as an owned implementation.",
          "url": "https://turbo.hotwired.dev/handbook/drive",
          "reviewedOn": "2026-11-11"
        },
        "lazyActivation": {
          "status": "undocumented",
          "note": "The linked rendering API review does not establish the specific deferred activation contract defined here. This is a bounded documentation finding, not proof of absence; generic hooks or application-authored code are not counted as an owned implementation.",
          "url": "https://turbo.hotwired.dev/handbook/drive",
          "reviewedOn": "2026-11-11"
        },
        "codeSplitting": {
          "status": "undocumented",
          "note": "The linked rendering API review does not establish the specific route / island splitting contract defined here. This is a bounded documentation finding, not proof of absence; generic hooks or application-authored code are not counted as an owned implementation.",
          "url": "https://turbo.hotwired.dev/handbook/drive",
          "reviewedOn": "2026-11-11"
        },
        "offline": {
          "status": "undocumented",
          "note": "The linked deployment API review does not establish the specific offline integration contract defined here. This is a bounded documentation finding, not proof of absence; generic hooks or application-authored code are not counted as an owned implementation.",
          "url": "https://guides.rubyonrails.org/getting_started.html",
          "reviewedOn": "2026-11-11"
        },
        "scheduling": {
          "status": "official",
          "note": "Solid Queue recurring tasks use recurring.yml and a scheduler process. Concurrency/deduplication depends on the queue database and retention; do not interpret a recurring schedule as exactly-once execution.",
          "url": "https://guides.rubyonrails.org/active_job_basics.html#recurring-tasks",
          "reviewedOn": "2026-11-11",
          "label": "Solid Queue"
        },
        "notifications": {
          "status": "community",
          "note": "Noticed adds notifier objects with per-recipient and bulk delivery methods, including email, ActionCable, push and messaging providers. It uses ActiveJob and persistence; provider credentials, queue workers and delivery/error policy remain deployment/application responsibilities.",
          "url": "https://github.com/excid3/noticed/blob/0d91fc5a2723d490f251a1dbf3094c16f8d71638/README.md#-delivery-methods",
          "reviewedOn": "2026-11-11",
          "label": "Noticed / ActiveJob"
        },
        "searchIndex": {
          "status": "community",
          "note": "Searchkick adds model search_data, reindexing and inline, queued, async or manual synchronization with Elasticsearch/OpenSearch. It requires a separate search service; association updates are not automatically synchronized and may need explicit reindex callbacks.",
          "url": "https://github.com/ankane/searchkick/blob/3ded578f28992070317dd168f28256f876a23757/README.md#strategies",
          "reviewedOn": "2026-11-11",
          "label": "Searchkick / external search service"
        },
        "fieldEncryption": {
          "status": "native",
          "note": "Active Record encrypts declared attributes on persistence and decrypts on reads. Deterministic versus nondeterministic encryption changes query/uniqueness behavior; keys, rotation and storage expansion need configuration.",
          "url": "https://guides.rubyonrails.org/active_record_encryption.html",
          "reviewedOn": "2026-11-11",
          "label": "Active Record encryption"
        },
        "httpTests": {
          "status": "native",
          "note": "ActionDispatch integration tests exercise routing/controllers with session/cookies and response assertions in-process; a real network server is not required. Browser/system tests are separate.",
          "url": "https://guides.rubyonrails.org/testing.html#integration-testing",
          "reviewedOn": "2026-11-11",
          "label": "Integration tests"
        }
      }
    },
    {
      "id": "react",
      "label": "React",
      "kind": "UI library",
      "logo": "logos/react.svg",
      "color": "#61dafb",
      "scope": "React / React DOM documentation. Framework-provided features are not counted as React core.",
      "reviewedOn": "2026-11-10",
      "updatedOn": "2026-11-11",
      "capabilities": {
        "ssr": {
          "status": "native",
          "note": "react-dom/server renders initial HTML with string or stream APIs.",
          "url": "https://react.dev/reference/react-dom/server"
        },
        "streaming": {
          "status": "native",
          "note": "renderToPipeableStream and renderToReadableStream progressively produce HTML.",
          "url": "https://react.dev/reference/react-dom/server"
        },
        "suspense": {
          "status": "native",
          "note": "Suspense displays a fallback until its supported async dependencies resolve; framework integration governs data loading.",
          "url": "https://react.dev/reference/react/Suspense"
        },
        "client": {
          "status": "native",
          "note": "hydrateRoot attaches React behavior to existing server-rendered HTML.",
          "url": "https://react.dev/reference/react-dom/client/hydrateRoot",
          "label": "hydrateRoot"
        },
        "ssg": {
          "status": "community",
          "note": "The recommended full-stack frameworks supply static-site generation; it is not a site-export workflow in React core.",
          "url": "https://react.dev/learn/creating-a-react-app",
          "label": "App framework"
        },
        "csr": {
          "status": "native",
          "note": "createRoot renders and updates browser application UI.",
          "url": "https://react.dev/reference/react-dom/client/createRoot"
        },
        "serverOnly": {
          "status": "partial",
          "note": "Server Components require a supporting framework/bundler. React alone does not supply production routing or deployment.",
          "url": "https://react.dev/reference/rsc/server-components",
          "label": "Framework required",
          "reviewedOn": "2026-11-10"
        },
        "partialRendering": {
          "status": "scope",
          "note": "A prebuilt shell with request-time UI needs an application rendering pipeline.",
          "url": "https://react.dev/learn/creating-a-react-app"
        },
        "routing": {
          "status": "community",
          "note": "React recommends an application framework, such as React Router or Next.js, for integrated routing.",
          "url": "https://react.dev/learn/creating-a-react-app",
          "label": "App framework"
        },
        "layouts": {
          "status": "scope",
          "note": "React core renders UI; template includes/layout composition are available; automatic route-layout selection belongs to the host. React recommends selecting a router or application framework.",
          "url": "https://react.dev/learn/creating-a-react-app"
        },
        "dynamicRoutes": {
          "status": "scope",
          "note": "React core renders UI; route parameter matching belongs to the host router; templates receive prepared values. React recommends selecting a router or application framework.",
          "url": "https://react.dev/learn/creating-a-react-app"
        },
        "parallelRoutes": {
          "status": "scope",
          "note": "React core renders UI; independently navigable routed regions require a host router and client runtime. React recommends selecting a router or application framework.",
          "url": "https://react.dev/learn/creating-a-react-app"
        },
        "interceptedRoutes": {
          "status": "scope",
          "note": "React core renders UI; routed-modal/direct-link behavior belongs to the host router. React recommends selecting a router or application framework.",
          "url": "https://react.dev/learn/creating-a-react-app"
        },
        "prefetch": {
          "status": "community",
          "note": "React Router Link prefetch can load route data/modules on intent (hover/focus), render or viewport entry. It requires a configured router/framework mode; React core alone does not prefetch navigation destinations.",
          "url": "https://reactrouter.com/api/components/Link#prefetch",
          "reviewedOn": "2026-11-11",
          "label": "React Router"
        },
        "softNavigation": {
          "status": "community",
          "note": "React Router Link/useNavigate and router providers support browser history and navigation without document reloads. React core alone does not provide a router.",
          "url": "https://reactrouter.com/start/declarative/navigating",
          "reviewedOn": "2026-11-11",
          "label": "React Router"
        },
        "viewTransitions": {
          "status": "community",
          "note": "React Router integrates animated navigation with browser View Transitions. Current v8 docs deprecate the Link viewTransition option in favor of React ViewTransition; choose a compatible React/router version. Styling and reduced-motion handling remain application-owned.",
          "url": "https://reactrouter.com/how-to/view-transitions",
          "reviewedOn": "2026-11-11",
          "label": "React Router"
        },
        "redirects": {
          "status": "scope",
          "note": "React core renders UI; hTTP redirects and URL rewrites are owned by the host server/router. React recommends selecting a router or application framework.",
          "url": "https://react.dev/learn/creating-a-react-app"
        },
        "serverData": {
          "status": "partial",
          "note": "Server Components can load data before client delivery; build/transport/cache integration requires a supporting framework.",
          "url": "https://react.dev/reference/rsc/server-components",
          "label": "Server Components / framework",
          "reviewedOn": "2026-11-10"
        },
        "clientData": {
          "status": "community",
          "note": "The guide recommends purpose-built data libraries including TanStack Query and SWR for browser request state/caching.",
          "url": "https://react.dev/learn/build-a-react-app-from-scratch",
          "label": "TanStack Query / SWR"
        },
        "requestDedupe": {
          "status": "native",
          "note": "cache memoizes equivalent calls within a Server Components request; it is not a general client cache or persistent data cache.",
          "url": "https://react.dev/reference/react/cache",
          "label": "RSC cache"
        },
        "persistentCache": {
          "status": "scope",
          "note": "Retaining application data or rendered pages across requests belongs to the host cache.",
          "url": "https://react.dev/learn/creating-a-react-app"
        },
        "invalidation": {
          "status": "scope",
          "note": "Application data/page invalidation belongs to the host; recompiling a template is a different cache boundary.",
          "url": "https://react.dev/learn/creating-a-react-app"
        },
        "isr": {
          "status": "scope",
          "note": "Regenerating deployed pages requires a host page cache/export pipeline.",
          "url": "https://react.dev/learn/creating-a-react-app"
        },
        "apiRoutes": {
          "status": "scope",
          "note": "The host server exposes HTTP endpoints and invokes the template renderer.",
          "url": "https://react.dev/learn/creating-a-react-app"
        },
        "actions": {
          "status": "community",
          "note": "Next.js App Router is one implementation of React Server Functions; a hosting framework is needed for the end-to-end server transport.",
          "url": "https://nextjs.org/docs/app/getting-started/mutating-data",
          "label": "App framework"
        },
        "forms": {
          "status": "native",
          "note": "Function-valued form actions integrate pending state, optimistic UI, and error handling. Server-function transport requires a supporting framework.",
          "url": "https://react.dev/reference/react-dom/components/form",
          "label": "Form actions",
          "reviewedOn": "2026-11-11",
          "assessment": {
            "summary": "Form transport, validation, pending feedback and optimistic state are separate behaviors; the progressive-forms and optimistic-updates rows review the latter contracts explicitly.",
            "strengths": [
              "Function-valued form actions integrate pending state, optimistic UI, and error handling. Server-function transport requires a supporting framework."
            ],
            "tradeoffs": [
              "Do not infer a no-JavaScript submission path, automatic validation, accessible field errors or rollback merely from the ability to receive FormData."
            ]
          }
        },
        "middleware": {
          "status": "scope",
          "note": "Request middleware belongs to the host server.",
          "url": "https://react.dev/learn/creating-a-react-app"
        },
        "cookies": {
          "status": "scope",
          "note": "HTTP cookies and sessions belong to the host request/response layer.",
          "url": "https://react.dev/learn/creating-a-react-app"
        },
        "cssModules": {
          "status": "community",
          "note": "React delegates styling builds to tools such as Vite/Parcel; CSS Modules support comes from that selected tool.",
          "url": "https://react.dev/learn/build-a-react-app-from-scratch",
          "label": "Build tool"
        },
        "scopedCss": {
          "status": "scope",
          "note": "className and inline style do not compile scoped selectors; use a stylesheet build tool or styling library.",
          "url": "https://react.dev/learn"
        },
        "tailwind": {
          "status": "scope",
          "note": "React accepts authored className values; Tailwind’s scanner/compiler is separate application tooling.",
          "url": "https://react.dev/learn"
        },
        "cssInJs": {
          "status": "scope",
          "note": "React can render/deduplicate style elements; a CSS-in-JS language/compiler must be supplied by a styling library.",
          "url": "https://react.dev/reference/react-dom/components/style"
        },
        "images": {
          "status": "scope",
          "note": "Templates emit image markup; image resizing/conversion requires a separate asset pipeline.",
          "url": "https://react.dev/learn/creating-a-react-app"
        },
        "fonts": {
          "status": "scope",
          "note": "Font downloading, subsetting, and fallback optimization require a separate asset pipeline.",
          "url": "https://react.dev/learn/creating-a-react-app"
        },
        "scripts": {
          "status": "native",
          "note": "Async script elements are hoisted and deduplicated; React also exposes preinit/preload resource hints. This is not an all-purpose third-party consent scheduler.",
          "url": "https://react.dev/reference/react-dom/components/script"
        },
        "staticAssets": {
          "status": "scope",
          "note": "Serving files and assigning cache headers belong to the host web server.",
          "url": "https://react.dev/learn/creating-a-react-app"
        },
        "metadata": {
          "status": "partial",
          "note": "React hoists title elements into the document head. Multiple simultaneous titles are not automatically merged; the application must ensure one.",
          "url": "https://react.dev/reference/react-dom/components/title",
          "label": "Element-level support",
          "assessment": {
            "label": "Element-level support",
            "summary": "Head element hoisting is useful, but it does not by itself establish a route-aware metadata system.",
            "strengths": [
              "A rendered title element can use component values and move into the document head."
            ],
            "tradeoffs": [
              "The application must ensure only one title is rendered; multiple titles are not automatically resolved.",
              "Routing, inherited metadata policy, and generated SEO assets depend on the surrounding application/framework."
            ]
          },
          "reviewedOn": "2026-11-10"
        },
        "dynamicMetadata": {
          "status": "native",
          "note": "Title text can come from component values; this does not establish layout metadata inheritance.",
          "url": "https://react.dev/reference/react-dom/components/title"
        },
        "metadataInheritance": {
          "status": "scope",
          "note": "Template inheritance/content composition is separate from a metadata-field inheritance contract.",
          "url": "https://react.dev/learn/creating-a-react-app"
        },
        "metadataOverrides": {
          "status": "scope",
          "note": "A host head component or template block can override markup; structured field merge/clear rules are application-owned.",
          "url": "https://react.dev/learn/creating-a-react-app"
        },
        "titleTemplates": {
          "status": "scope",
          "note": "Titles can use template expressions; ancestor metadata/title-template policy belongs to the application.",
          "url": "https://react.dev/learn/creating-a-react-app"
        },
        "socialImages": {
          "status": "scope",
          "note": "Generating social-preview image bytes needs a separate image renderer/service.",
          "url": "https://react.dev/learn/creating-a-react-app"
        },
        "sitemaps": {
          "status": "scope",
          "note": "XML can be templated, but route enumeration and a sitemap generator belong to the host.",
          "url": "https://react.dev/learn/creating-a-react-app"
        },
        "robots": {
          "status": "scope",
          "note": "Text can be templated, but crawler-document publishing/configuration belongs to the host.",
          "url": "https://react.dev/learn/creating-a-react-app"
        },
        "markdown": {
          "status": "scope",
          "note": "This is text/HTML templating; Markdown parsing and content-page integration require another tool.",
          "url": "https://react.dev/learn/creating-a-react-app"
        },
        "collections": {
          "status": "scope",
          "note": "The host loads and validates structured content; the template API renders supplied values.",
          "url": "https://react.dev/learn/creating-a-react-app"
        },
        "draftMode": {
          "status": "scope",
          "note": "Editorial preview authorization and published-cache bypass belong to the host application.",
          "url": "https://react.dev/learn/creating-a-react-app"
        },
        "translations": {
          "status": "community",
          "note": "react-i18next provides message translation, pluralization, and interpolation.",
          "url": "https://react.i18next.com/",
          "label": "react-i18next"
        },
        "localeRouting": {
          "status": "scope",
          "note": "Language URL matching/detection belongs to the host router.",
          "url": "https://react.dev/learn/creating-a-react-app"
        },
        "localeFormatting": {
          "status": "scope",
          "note": "Locale-aware number/date formatting belongs to Intl or an i18n library; it is not supplied by React’s rendering API.",
          "url": "https://react.dev/learn"
        },
        "auth": {
          "status": "scope",
          "note": "Identity, login, and authorization are responsibilities of the host application.",
          "url": "https://react.dev/learn/creating-a-react-app"
        },
        "csp": {
          "status": "partial",
          "note": "The stream renderer accepts nonce for generated scripts. The host must generate nonces and set the matching HTTP policy.",
          "url": "https://react.dev/reference/react-dom/server/renderToPipeableStream",
          "label": "Stream nonce option",
          "reviewedOn": "2026-11-10"
        },
        "cspNonce": {
          "status": "partial",
          "note": "The stream renderer accepts nonce for generated scripts. The host must generate nonces and set the matching HTTP policy.",
          "url": "https://react.dev/reference/react-dom/server/renderToPipeableStream",
          "reviewedOn": "2026-11-11",
          "label": "Stream nonce option"
        },
        "csrf": {
          "status": "scope",
          "note": "HTML escaping does not establish CSRF protection; the host must protect mutation endpoints.",
          "url": "https://react.dev/learn/creating-a-react-app"
        },
        "environment": {
          "status": "scope",
          "note": "Server/client secret configuration belongs to the host application, not template evaluation.",
          "url": "https://react.dev/learn/creating-a-react-app"
        },
        "types": {
          "status": "community",
          "note": "The official guide uses TypeScript with @types/react and @types/react-dom; those type packages are maintained through DefinitelyTyped.",
          "url": "https://react.dev/learn/typescript",
          "label": "TypeScript / DefinitelyTyped"
        },
        "hmr": {
          "status": "community",
          "note": "Vite, Parcel, and Rsbuild integrate Fast Refresh during development; React alone is not a dev server.",
          "url": "https://react.dev/learn/build-a-react-app-from-scratch",
          "label": "Bundler Fast Refresh"
        },
        "cli": {
          "status": "scope",
          "note": "This renderer integrates with its language/build toolchain rather than supplying an application CLI.",
          "url": "https://react.dev/learn/creating-a-react-app"
        },
        "bundleAnalysis": {
          "status": "scope",
          "note": "Production browser/server bundle inspection belongs to the host build toolchain.",
          "url": "https://react.dev/learn/creating-a-react-app"
        },
        "unitTests": {
          "status": "community",
          "note": "React Testing Library supplies DOM-oriented component testing utilities; install an external test runner and DOM environment as appropriate.",
          "url": "https://testing-library.com/docs/react-testing-library/intro/",
          "label": "React Testing Library"
        },
        "e2eTests": {
          "status": "scope",
          "note": "Browser end-to-end setup belongs to the chosen application framework/test runner, not React core.",
          "url": "https://react.dev/learn/creating-a-react-app"
        },
        "observability": {
          "status": "native",
          "note": "Profiler reports component render timing through a callback. Production request traces/metrics require host instrumentation.",
          "url": "https://react.dev/reference/react/Profiler",
          "label": "Profiler"
        },
        "errorHandling": {
          "status": "native",
          "note": "Error boundary components use getDerivedStateFromError/componentDidCatch for descendant UI failures. They do not catch every event, async callback, or server-rendering failure.",
          "url": "https://react.dev/reference/react/Component"
        },
        "serverHosting": {
          "status": "scope",
          "note": "The renderer needs a host server; it is not a production server runtime.",
          "url": "https://react.dev/learn/creating-a-react-app"
        },
        "staticHosting": {
          "status": "scope",
          "note": "Publishing generated pages requires a host export/deployment workflow.",
          "url": "https://react.dev/learn/creating-a-react-app"
        },
        "containers": {
          "status": "scope",
          "note": "A container packages the host application and renderer together; the template API has no container workflow.",
          "url": "https://react.dev/learn/creating-a-react-app"
        },
        "edgeHosting": {
          "status": "scope",
          "note": "Edge deployment depends on the host runtime and its adapter, not template syntax.",
          "url": "https://react.dev/learn/creating-a-react-app"
        },
        "orm": {
          "status": "scope",
          "note": "ORM / query builder belongs to a server framework or external service, outside this standalone rendering API. This is not a missing template-rendering capability.",
          "url": "https://react.dev"
        },
        "migrations": {
          "status": "scope",
          "note": "Schema migrations belongs to a server framework or external service, outside this standalone rendering API. This is not a missing template-rendering capability.",
          "url": "https://react.dev"
        },
        "transactions": {
          "status": "scope",
          "note": "Transactions belongs to a server framework or external service, outside this standalone rendering API. This is not a missing template-rendering capability.",
          "url": "https://react.dev"
        },
        "jobs": {
          "status": "scope",
          "note": "Background jobs belongs to a server framework or external service, outside this standalone rendering API. This is not a missing template-rendering capability.",
          "url": "https://react.dev"
        },
        "mail": {
          "status": "scope",
          "note": "Email belongs to a server framework or external service, outside this standalone rendering API. This is not a missing template-rendering capability.",
          "url": "https://react.dev"
        },
        "uploads": {
          "status": "scope",
          "note": "File uploads & storage belongs to a server framework or external service, outside this standalone rendering API. This is not a missing template-rendering capability.",
          "url": "https://react.dev"
        },
        "realtime": {
          "status": "scope",
          "note": "Real-time delivery belongs to a server framework or external service, outside this standalone rendering API. This is not a missing template-rendering capability.",
          "url": "https://react.dev"
        },
        "xssEscaping": {
          "status": "native",
          "note": "Normal text values are rendered as text; dangerouslySetInnerHTML bypasses this path and requires trusted/sanitized HTML. Do not infer arbitrary URL/CSS safety from text escaping.",
          "url": "https://react.dev/reference/react-dom/components/common#dangerously-setting-the-inner-html",
          "reviewedOn": "2026-11-11"
        },
        "htmlSanitization": {
          "status": "undocumented",
          "note": "The linked security API review does not establish the specific html sanitization contract defined here. This is a bounded documentation finding, not proof of absence; generic hooks or application-authored code are not counted as an owned implementation.",
          "url": "https://react.dev/reference/react-dom/server/renderToPipeableStream",
          "reviewedOn": "2026-11-11"
        },
        "authorization": {
          "status": "undocumented",
          "note": "The linked security API review does not establish the specific authorization policies contract defined here. This is a bounded documentation finding, not proof of absence; generic hooks or application-authored code are not counted as an owned implementation.",
          "url": "https://react.dev/reference/react-dom/server/renderToPipeableStream",
          "reviewedOn": "2026-11-11"
        },
        "rateLimiting": {
          "status": "undocumented",
          "note": "The linked security API review does not establish the specific rate limiting contract defined here. This is a bounded documentation finding, not proof of absence; generic hooks or application-authored code are not counted as an owned implementation.",
          "url": "https://react.dev/reference/react-dom/server/renderToPipeableStream",
          "reviewedOn": "2026-11-11"
        },
        "progressiveEnhancement": {
          "status": "community",
          "note": "React Router framework-mode Form produces a real server submission before JavaScript loads and enhances it afterward. A plain client-only React app has no server action endpoint from React core.",
          "url": "https://reactrouter.com/explanation/progressive-enhancement",
          "reviewedOn": "2026-11-11",
          "label": "React Router framework mode"
        },
        "optimisticUi": {
          "status": "native",
          "note": "React useOptimistic overlays pending mutation UI and reconciles against the supplied confirmed state through Actions/transitions. Application code must define the update and failure feedback; this is not a durable offline write queue.",
          "url": "https://react.dev/reference/react/useOptimistic",
          "reviewedOn": "2026-11-11",
          "label": "React useOptimistic"
        },
        "requestCancellation": {
          "status": "community",
          "note": "React Router cancels interrupted navigations/fetcher requests and discards stale revalidation responses. The server may still process canceled requests; this is not backend rollback.",
          "url": "https://reactrouter.com/explanation/race-conditions",
          "reviewedOn": "2026-11-11",
          "label": "React Router"
        },
        "typedLinks": {
          "status": "community",
          "note": "React Router framework type generation and href utilities check registered paths and required route parameters. Framework-mode type generation must run; this is not a React core router.",
          "url": "https://reactrouter.com/how-to/route-module-type-safety",
          "reviewedOn": "2026-11-11",
          "label": "React Router type generation"
        },
        "searchParams": {
          "status": "undocumented",
          "note": "The linked routing API review does not establish the specific validated url state contract defined here. This is a bounded documentation finding, not proof of absence; generic hooks or application-authored code are not counted as an owned implementation.",
          "url": "https://reactrouter.com/start/declarative/navigating",
          "reviewedOn": "2026-11-11"
        },
        "stateRestoration": {
          "status": "community",
          "note": "Nested router layouts can preserve mounted parent UI while outlets change. Unmounted route component state is not automatically retained; arbitrary form drafts need URL/session/app storage.",
          "url": "https://reactrouter.com/explanation/state-management",
          "reviewedOn": "2026-11-11",
          "label": "React Router layouts"
        },
        "scrollRestoration": {
          "status": "community",
          "note": "ScrollRestoration emulates browser restoration after data loads, with custom keys and reset controls. It requires a data/framework router and does not establish automatic nested-scrollport restoration.",
          "url": "https://reactrouter.com/api/components/ScrollRestoration",
          "reviewedOn": "2026-11-11",
          "label": "React Router"
        },
        "navigationBlocking": {
          "status": "community",
          "note": "useBlocker can pause SPA navigation and let the application proceed/reset after an unsaved-change prompt. Hard reloads and cross-origin navigation require separate browser handling.",
          "url": "https://reactrouter.com/how-to/navigation-blocking",
          "reviewedOn": "2026-11-11",
          "label": "React Router"
        },
        "navigationAccessibility": {
          "status": "undocumented",
          "note": "The linked client rendering API review does not establish the specific accessible navigation contract defined here. This is a bounded documentation finding, not proof of absence; generic hooks or application-authored code are not counted as an owned implementation.",
          "url": "https://react.dev/reference/react-dom/client/hydrateRoot",
          "reviewedOn": "2026-11-11"
        },
        "a11yChecks": {
          "status": "community",
          "note": "The recommended eslint-plugin-jsx-a11y integration statically checks JSX accessibility patterns. This is an external lint tool, not runtime enforcement or accessibility certification.",
          "url": "https://legacy.reactjs.org/docs/accessibility.html#development-assistance",
          "reviewedOn": "2026-11-11",
          "label": "eslint-plugin-jsx-a11y"
        },
        "lazyActivation": {
          "status": "undocumented",
          "note": "The linked rendering API review does not establish the specific deferred activation contract defined here. This is a bounded documentation finding, not proof of absence; generic hooks or application-authored code are not counted as an owned implementation.",
          "url": "https://react.dev/reference/react-dom/client/hydrateRoot",
          "reviewedOn": "2026-11-11"
        },
        "codeSplitting": {
          "status": "community",
          "note": "Framework mode splits browser route modules and removes server-only exports. Declarative router usage alone does not enable this build pipeline.",
          "url": "https://reactrouter.com/explanation/code-splitting",
          "reviewedOn": "2026-11-11",
          "label": "React Router framework mode"
        },
        "offline": {
          "status": "undocumented",
          "note": "The linked deployment API review does not establish the specific offline integration contract defined here. This is a bounded documentation finding, not proof of absence; generic hooks or application-authored code are not counted as an owned implementation.",
          "url": "https://react.dev/learn/creating-a-react-app",
          "reviewedOn": "2026-11-11"
        },
        "scheduling": {
          "status": "scope",
          "note": "Scheduled tasks requires a host application or specialized integration beyond the reviewed UI API. Emitting markup or using arbitrary host-language libraries does not establish this application-level contract.",
          "url": "https://react.dev",
          "reviewedOn": "2026-11-11"
        },
        "notifications": {
          "status": "scope",
          "note": "Multi-channel notifications requires a host application or specialized integration beyond the reviewed UI API. Emitting markup or using arbitrary host-language libraries does not establish this application-level contract.",
          "url": "https://react.dev",
          "reviewedOn": "2026-11-11"
        },
        "searchIndex": {
          "status": "scope",
          "note": "Search indexing requires a host application or specialized integration beyond the reviewed UI API. Emitting markup or using arbitrary host-language libraries does not establish this application-level contract.",
          "url": "https://react.dev",
          "reviewedOn": "2026-11-11"
        },
        "fieldEncryption": {
          "status": "scope",
          "note": "Encrypted model fields requires a host application or specialized integration beyond the reviewed UI API. Emitting markup or using arbitrary host-language libraries does not establish this application-level contract.",
          "url": "https://react.dev",
          "reviewedOn": "2026-11-11"
        },
        "httpTests": {
          "status": "undocumented",
          "note": "The linked testing API review does not establish the specific http integration tests contract defined here. This is a bounded documentation finding, not proof of absence; generic hooks or application-authored code are not counted as an owned implementation.",
          "url": "https://testing-library.com/docs/react-testing-library/intro/",
          "reviewedOn": "2026-11-11"
        }
      }
    },
    {
      "id": "remix",
      "label": "Remix",
      "kind": "Application framework",
      "logo": "logos/remix.svg",
      "color": "var(--fw-fg)",
      "scope": "Remix 3.1 documentation and package APIs. This is the new Remix component/Fetch architecture, not React-based Remix v2 or React Router framework mode.",
      "reviewedOn": "2026-11-10",
      "updatedOn": "2026-11-11",
      "capabilities": {
        "ssr": {
          "status": "native",
          "note": "The closure-based component runtime renders server HTML, selectively hydrates clientEntry components, and can create browser roots. It does not use React.",
          "url": "https://docs.remix.run/api/component/"
        },
        "streaming": {
          "status": "native",
          "note": "Frame can stream fallback HTML first and reconcile a route-owned HTML region when it resolves. Frames can also reload through separate browser requests; components themselves are synchronous.",
          "url": "https://docs.remix.run/streaming-ui-with-frames/",
          "label": "Streaming Frames"
        },
        "suspense": {
          "status": "native",
          "note": "Frame can stream fallback HTML first and reconcile a route-owned HTML region when it resolves. Frames can also reload through separate browser requests; components themselves are synchronous.",
          "url": "https://docs.remix.run/streaming-ui-with-frames/",
          "label": "Streaming Frames"
        },
        "client": {
          "status": "native",
          "note": "The closure-based component runtime renders server HTML, selectively hydrates clientEntry components, and can create browser roots. It does not use React.",
          "url": "https://docs.remix.run/api/component/"
        },
        "ssg": {
          "status": "undocumented",
          "note": "Not established in the reviewed Remix rendering guide. External integrations or application code may provide this behavior.",
          "url": "https://docs.remix.run/rendering-ui/"
        },
        "csr": {
          "status": "native",
          "note": "The closure-based component runtime renders server HTML, selectively hydrates clientEntry components, and can create browser roots. It does not use React.",
          "url": "https://docs.remix.run/api/component/"
        },
        "serverOnly": {
          "status": "native",
          "note": "Only explicitly declared client entries hydrate; ordinary server component code need not become a browser entry.",
          "url": "https://docs.remix.run/rendering-ui/"
        },
        "partialRendering": {
          "status": "undocumented",
          "note": "Not established in the reviewed Remix rendering guide. External integrations or application code may provide this behavior.",
          "url": "https://docs.remix.run/rendering-ui/"
        },
        "routing": {
          "status": "native",
          "note": "Typed routes and Fetch controllers match URLs, handle HTTP methods, compose middleware and return standard Responses including redirects.",
          "url": "https://docs.remix.run/request-handling/"
        },
        "layouts": {
          "status": "native",
          "note": "Shared Document/layout components receive nested children explicitly. This satisfies layout composition without a filesystem-selected layout convention.",
          "url": "https://docs.remix.run/rendering-ui/",
          "label": "Explicit layouts"
        },
        "dynamicRoutes": {
          "status": "native",
          "note": "Typed routes and Fetch controllers match URLs, handle HTTP methods, compose middleware and return standard Responses including redirects.",
          "url": "https://docs.remix.run/request-handling/"
        },
        "parallelRoutes": {
          "status": "undocumented",
          "note": "Not established in the reviewed Remix routing guide. External integrations or application code may provide this behavior.",
          "url": "https://docs.remix.run/routing-and-controllers/"
        },
        "interceptedRoutes": {
          "status": "undocumented",
          "note": "Not established in the reviewed Remix routing guide. External integrations or application code may provide this behavior.",
          "url": "https://docs.remix.run/routing-and-controllers/"
        },
        "prefetch": {
          "status": "native",
          "note": "The link mixin supports navigation prefetching; frame navigation reconciles route HTML.",
          "url": "https://docs.remix.run/api/component/"
        },
        "softNavigation": {
          "status": "native",
          "note": "Remix 3.1's run() runtime handles eligible links/forms as frame navigation and reconciles server HTML, with navigation/scroll/focus handling. This is the new Remix frame runtime, not Remix v2's React Router integration.",
          "url": "https://docs.remix.run/api/component/",
          "reviewedOn": "2026-11-11",
          "label": "Remix 3 frames"
        },
        "viewTransitions": {
          "status": "undocumented",
          "note": "Remix 3.1 documents component enter/exit/list animation helpers, but the reviewed guide does not establish a coordinated page-navigation animation API. Remix v2 React Router viewTransition examples do not establish support in Remix 3.",
          "url": "https://docs.remix.run/animation/",
          "reviewedOn": "2026-11-11"
        },
        "redirects": {
          "status": "native",
          "note": "Typed routes and Fetch controllers match URLs, handle HTTP methods, compose middleware and return standard Responses including redirects.",
          "url": "https://docs.remix.run/request-handling/"
        },
        "serverData": {
          "status": "native",
          "note": "Route actions load and validate data before passing props into synchronous components.",
          "url": "https://docs.remix.run/data-and-validation/"
        },
        "clientData": {
          "status": "partial",
          "note": "Named Frames reload and reconcile server HTML, preserving matching client state. This is not an application query cache.",
          "url": "https://docs.remix.run/streaming-ui-with-frames/",
          "label": "Frame reloads",
          "reviewedOn": "2026-11-10"
        },
        "requestDedupe": {
          "status": "undocumented",
          "note": "Not established in the reviewed Remix data guide. External integrations or application code may provide this behavior.",
          "url": "https://docs.remix.run/data-and-validation/"
        },
        "persistentCache": {
          "status": "undocumented",
          "note": "Not established in the reviewed Remix data guide. External integrations or application code may provide this behavior.",
          "url": "https://docs.remix.run/data-and-validation/"
        },
        "invalidation": {
          "status": "undocumented",
          "note": "Not established in the reviewed Remix data guide. External integrations or application code may provide this behavior.",
          "url": "https://docs.remix.run/data-and-validation/"
        },
        "isr": {
          "status": "undocumented",
          "note": "Not established in the reviewed Remix data guide. External integrations or application code may provide this behavior.",
          "url": "https://docs.remix.run/data-and-validation/"
        },
        "apiRoutes": {
          "status": "native",
          "note": "Typed routes and Fetch controllers match URLs, handle HTTP methods, compose middleware and return standard Responses including redirects.",
          "url": "https://docs.remix.run/request-handling/"
        },
        "actions": {
          "status": "partial",
          "note": "Controller actions handle named HTTP routes and enhanced forms. A generated arbitrary function-call RPC boundary is not established.",
          "url": "https://docs.remix.run/forms-and-mutations/",
          "label": "Controller actions",
          "reviewedOn": "2026-11-10"
        },
        "forms": {
          "status": "native",
          "note": "Route form helpers, form-data middleware and data-schema validation support ordinary and enhanced submissions.",
          "url": "https://docs.remix.run/forms-and-mutations/",
          "reviewedOn": "2026-11-11",
          "assessment": {
            "summary": "Form transport, validation, pending feedback and optimistic state are separate behaviors; the progressive-forms and optimistic-updates rows review the latter contracts explicitly.",
            "strengths": [
              "Route form helpers, form-data middleware and data-schema validation support ordinary and enhanced submissions."
            ],
            "tradeoffs": [
              "Do not infer a no-JavaScript submission path, automatic validation, accessible field errors or rollback merely from the ability to receive FormData."
            ]
          }
        },
        "middleware": {
          "status": "native",
          "note": "Typed routes and Fetch controllers match URLs, handle HTTP methods, compose middleware and return standard Responses including redirects.",
          "url": "https://docs.remix.run/request-handling/"
        },
        "cookies": {
          "status": "native",
          "note": "Cookie/session, authentication and CSRF middleware are provided as Remix modules; applications must configure stores, strategies and protection on their routes. The narrative chapter is unfinished; linked package APIs are the authority.",
          "url": "https://docs.remix.run/auth-sessions-security/"
        },
        "cssModules": {
          "status": "undocumented",
          "note": "Not established in the reviewed Remix styling guide. External integrations or application code may provide this behavior.",
          "url": "https://docs.remix.run/rendering-ui/"
        },
        "scopedCss": {
          "status": "native",
          "note": "The css mixin supplies component-scoped styles, nested selectors, dynamic values and cascade layers.",
          "url": "https://docs.remix.run/api/component/"
        },
        "tailwind": {
          "status": "undocumented",
          "note": "Not established in the reviewed Remix styling guide. External integrations or application code may provide this behavior.",
          "url": "https://docs.remix.run/rendering-ui/"
        },
        "cssInJs": {
          "status": "native",
          "note": "The css mixin supplies component-scoped styles, nested selectors, dynamic values and cascade layers.",
          "url": "https://docs.remix.run/api/component/"
        },
        "images": {
          "status": "community",
          "note": "The documented transform pipeline uses optional Sharp for image resizing/encoding; Sharp is installed separately.",
          "url": "https://docs.remix.run/api/assets/",
          "label": "Sharp transforms"
        },
        "fonts": {
          "status": "partial",
          "note": "Font files can be served and preloaded through asset URLs. Automatic subsetting and fallback metrics are not established.",
          "url": "https://docs.remix.run/files-and-assets/",
          "label": "Asset files / preloads",
          "reviewedOn": "2026-11-10"
        },
        "scripts": {
          "status": "undocumented",
          "note": "Not established in the reviewed Remix assets guide. External integrations or application code may provide this behavior.",
          "url": "https://docs.remix.run/files-and-assets/"
        },
        "staticAssets": {
          "status": "native",
          "note": "The asset server compiles browser source on demand, exposes controlled files/packages, supports fingerprinting and live code updates.",
          "url": "https://docs.remix.run/api/assets/"
        },
        "metadata": {
          "status": "partial",
          "note": "An application-owned Document component receives title/data and authors head tags. No structured metadata field-merging registry is established.",
          "url": "https://docs.remix.run/rendering-ui/",
          "label": "Document props",
          "reviewedOn": "2026-11-10"
        },
        "dynamicMetadata": {
          "status": "partial",
          "note": "An application-owned Document component receives title/data and authors head tags. No structured metadata field-merging registry is established.",
          "url": "https://docs.remix.run/rendering-ui/",
          "label": "Document props",
          "reviewedOn": "2026-11-10"
        },
        "metadataInheritance": {
          "status": "undocumented",
          "note": "Not established in the reviewed Remix metadata guide. External integrations or application code may provide this behavior.",
          "url": "https://docs.remix.run/rendering-ui/"
        },
        "metadataOverrides": {
          "status": "undocumented",
          "note": "Not established in the reviewed Remix metadata guide. External integrations or application code may provide this behavior.",
          "url": "https://docs.remix.run/rendering-ui/"
        },
        "titleTemplates": {
          "status": "undocumented",
          "note": "Not established in the reviewed Remix metadata guide. External integrations or application code may provide this behavior.",
          "url": "https://docs.remix.run/rendering-ui/"
        },
        "socialImages": {
          "status": "undocumented",
          "note": "Not established in the reviewed Remix metadata guide. External integrations or application code may provide this behavior.",
          "url": "https://docs.remix.run/rendering-ui/"
        },
        "sitemaps": {
          "status": "undocumented",
          "note": "Not established in the reviewed Remix metadata guide. External integrations or application code may provide this behavior.",
          "url": "https://docs.remix.run/rendering-ui/"
        },
        "robots": {
          "status": "native",
          "note": "staticFiles serves an authored robots.txt; directive generation is application-owned.",
          "url": "https://docs.remix.run/files-and-assets/",
          "label": "Static file"
        },
        "markdown": {
          "status": "undocumented",
          "note": "Not established in the reviewed Remix content guide. External integrations or application code may provide this behavior.",
          "url": "https://docs.remix.run/files-and-assets/"
        },
        "collections": {
          "status": "undocumented",
          "note": "Not established in the reviewed Remix content guide. External integrations or application code may provide this behavior.",
          "url": "https://docs.remix.run/files-and-assets/"
        },
        "draftMode": {
          "status": "undocumented",
          "note": "Not established in the reviewed Remix content guide. External integrations or application code may provide this behavior.",
          "url": "https://docs.remix.run/files-and-assets/"
        },
        "translations": {
          "status": "undocumented",
          "note": "Not established in the reviewed Remix i18n guide. External integrations or application code may provide this behavior.",
          "url": "https://docs.remix.run/rendering-ui/"
        },
        "localeRouting": {
          "status": "undocumented",
          "note": "Not established in the reviewed Remix i18n guide. External integrations or application code may provide this behavior.",
          "url": "https://docs.remix.run/rendering-ui/"
        },
        "localeFormatting": {
          "status": "undocumented",
          "note": "Not established in the reviewed Remix i18n guide. External integrations or application code may provide this behavior.",
          "url": "https://docs.remix.run/rendering-ui/"
        },
        "auth": {
          "status": "native",
          "note": "Authentication primitives include credentials, external providers and extensible strategies. Account persistence and authorization remain application policy.",
          "url": "https://docs.remix.run/api/auth/"
        },
        "csp": {
          "status": "undocumented",
          "note": "Not established in the reviewed Remix security guide. External integrations or application code may provide this behavior.",
          "url": "https://docs.remix.run/auth-sessions-security/"
        },
        "cspNonce": {
          "status": "undocumented",
          "note": "The reviewed security/rendering API does not establish coordinated per-response CSP nonces for generated scripts and styles. Hash-based CSP and application-authored headers are different mechanisms.",
          "url": "https://docs.remix.run/auth-sessions-security/",
          "reviewedOn": "2026-11-11"
        },
        "csrf": {
          "status": "native",
          "note": "csrf middleware supports token sources and origin validation. Register it on the relevant routes and follow the cookie/session caveats.",
          "url": "https://docs.remix.run/api/middleware/csrf/"
        },
        "environment": {
          "status": "undocumented",
          "note": "Not established in the reviewed Remix security guide. External integrations or application code may provide this behavior.",
          "url": "https://docs.remix.run/auth-sessions-security/"
        },
        "types": {
          "status": "native",
          "note": "Typed APIs and remix commands support project development, asset inspection and database lifecycle operations. Compilation does not replace TypeScript type checking.",
          "url": "https://docs.remix.run/cli-and-tooling/"
        },
        "hmr": {
          "status": "native",
          "note": "The asset server compiles browser source on demand, exposes controlled files/packages, supports fingerprinting and live code updates.",
          "url": "https://docs.remix.run/api/assets/"
        },
        "cli": {
          "status": "native",
          "note": "Typed APIs and remix commands support project development, asset inspection and database lifecycle operations. Compilation does not replace TypeScript type checking.",
          "url": "https://docs.remix.run/cli-and-tooling/"
        },
        "bundleAnalysis": {
          "status": "undocumented",
          "note": "Not established in the reviewed Remix tooling guide. External integrations or application code may provide this behavior.",
          "url": "https://docs.remix.run/cli-and-tooling/"
        },
        "unitTests": {
          "status": "native",
          "note": "Remix's test tooling exercises Fetch controllers, components and application behavior; the reviewed guide links runnable package examples.",
          "url": "https://docs.remix.run/testing/"
        },
        "e2eTests": {
          "status": "native",
          "note": "remix/test has an e2e runner and server lifecycle helpers driven through Playwright; browser component tests run in isolated browser frames.",
          "url": "https://docs.remix.run/testing/"
        },
        "observability": {
          "status": "undocumented",
          "note": "Not established in the reviewed Remix testing guide. External integrations or application code may provide this behavior.",
          "url": "https://docs.remix.run/testing/"
        },
        "errorHandling": {
          "status": "undocumented",
          "note": "Not established in the reviewed Remix testing guide. External integrations or application code may provide this behavior.",
          "url": "https://docs.remix.run/testing/"
        },
        "serverHosting": {
          "status": "native",
          "note": "The documented Node Fetch adapter serves router.fetch. The production chapter is unfinished, so deployment configuration and operations remain application-owned.",
          "url": "https://docs.remix.run/production/"
        },
        "staticHosting": {
          "status": "undocumented",
          "note": "Not established in the reviewed Remix deployment guide. External integrations or application code may provide this behavior.",
          "url": "https://docs.remix.run/production/"
        },
        "containers": {
          "status": "undocumented",
          "note": "Not established in the reviewed Remix deployment guide. External integrations or application code may provide this behavior.",
          "url": "https://docs.remix.run/production/"
        },
        "edgeHosting": {
          "status": "undocumented",
          "note": "Not established in the reviewed Remix deployment guide. External integrations or application code may provide this behavior.",
          "url": "https://docs.remix.run/production/"
        },
        "orm": {
          "status": "native",
          "note": "data-table supplies typed relational queries, transactional operations, and journaled up/down SQL migrations. Database drivers are separate dependencies.",
          "url": "https://docs.remix.run/api/data-table/",
          "label": "data-table",
          "reviewedOn": "2026-11-11",
          "assessment": {
            "summary": "An ORM/query API establishes a data-access surface, not identical relationship loading, N+1 detection, migration or encryption behavior.",
            "strengths": [
              "data-table supplies typed relational queries, transactional operations, and journaled up/down SQL migrations. Database drivers are separate dependencies."
            ],
            "tradeoffs": [
              "Review eager loading, query counts and transaction semantics for the selected driver. Schema migrations, transactions and encrypted fields are compared separately."
            ]
          }
        },
        "migrations": {
          "status": "native",
          "note": "data-table supplies typed relational queries, transactional operations, and journaled up/down SQL migrations. Database drivers are separate dependencies.",
          "url": "https://docs.remix.run/api/data-table/",
          "label": "data-table"
        },
        "transactions": {
          "status": "native",
          "note": "data-table supplies typed relational queries, transactional operations, and journaled up/down SQL migrations. Database drivers are separate dependencies.",
          "url": "https://docs.remix.run/api/data-table/",
          "label": "data-table"
        },
        "jobs": {
          "status": "undocumented",
          "note": "The reviewed Remix server/data guides do not establish an owned background jobs API. An application can integrate a separate provider or library; this finding does not mean that integration is impossible.",
          "url": "https://docs.remix.run/files-and-assets/"
        },
        "mail": {
          "status": "undocumented",
          "note": "The reviewed Remix server/data guides do not establish an owned email API. An application can integrate a separate provider or library; this finding does not mean that integration is impossible.",
          "url": "https://docs.remix.run/files-and-assets/"
        },
        "uploads": {
          "status": "native",
          "note": "Multipart parsing, streaming uploads, size limits and file-storage APIs include local and S3-compatible storage.",
          "url": "https://docs.remix.run/files-and-assets/"
        },
        "realtime": {
          "status": "undocumented",
          "note": "The reviewed Remix server/data guides do not establish an owned real-time delivery API. An application can integrate a separate provider or library; this finding does not mean that integration is impossible.",
          "url": "https://docs.remix.run/files-and-assets/"
        },
        "xssEscaping": {
          "status": "native",
          "note": "remix/html-template escapes interpolated values and composes branded SafeHtml without double escaping. html.raw is an explicit trusted-output bypass; this HTML-encoding policy does not establish arbitrary script/URL safety or rich-HTML sanitization.",
          "url": "https://docs.remix.run/api/html-template/",
          "reviewedOn": "2026-11-11",
          "label": "HTML templates / trusted raw bypass"
        },
        "htmlSanitization": {
          "status": "undocumented",
          "note": "The linked security API review does not establish the specific html sanitization contract defined here. This is a bounded documentation finding, not proof of absence; generic hooks or application-authored code are not counted as an owned implementation.",
          "url": "https://docs.remix.run/auth-sessions-security/",
          "reviewedOn": "2026-11-11"
        },
        "authorization": {
          "status": "undocumented",
          "note": "The linked security API review does not establish the specific authorization policies contract defined here. This is a bounded documentation finding, not proof of absence; generic hooks or application-authored code are not counted as an owned implementation.",
          "url": "https://docs.remix.run/auth-sessions-security/",
          "reviewedOn": "2026-11-11"
        },
        "rateLimiting": {
          "status": "undocumented",
          "note": "The linked security API review does not establish the specific rate limiting contract defined here. This is a bounded documentation finding, not proof of absence; generic hooks or application-authored code are not counted as an owned implementation.",
          "url": "https://docs.remix.run/auth-sessions-security/",
          "reviewedOn": "2026-11-11"
        },
        "progressiveEnhancement": {
          "status": "native",
          "note": "The router guide demonstrates ordinary HTML forms posted to server handlers, followed by useful HTML responses. Enhanced component forms are separate; a browser-only handler must not replace the real submission path if no-JS behavior is required.",
          "url": "https://docs.remix.run/api/router/#links-and-form-actions",
          "reviewedOn": "2026-11-11",
          "label": "Native form handlers"
        },
        "optimisticUi": {
          "status": "undocumented",
          "note": "The linked data API review does not establish the specific optimistic updates contract defined here. This is a bounded documentation finding, not proof of absence; generic hooks or application-authored code are not counted as an owned implementation.",
          "url": "https://docs.remix.run/streaming-ui-with-frames/",
          "reviewedOn": "2026-11-11"
        },
        "requestCancellation": {
          "status": "undocumented",
          "note": "The linked data API review does not establish the specific stale request handling contract defined here. This is a bounded documentation finding, not proof of absence; generic hooks or application-authored code are not counted as an owned implementation.",
          "url": "https://docs.remix.run/streaming-ui-with-frames/",
          "reviewedOn": "2026-11-11"
        },
        "typedLinks": {
          "status": "native",
          "note": "Typed route maps expose href construction with route parameter inference for links and form destinations. This is Remix 3's Fetch/router API, not React Router type generation.",
          "url": "https://docs.remix.run/api/router/#links-and-form-actions",
          "reviewedOn": "2026-11-11",
          "label": "Typed route maps"
        },
        "searchParams": {
          "status": "undocumented",
          "note": "The linked routing API review does not establish the specific validated url state contract defined here. This is a bounded documentation finding, not proof of absence; generic hooks or application-authored code are not counted as an owned implementation.",
          "url": "https://docs.remix.run/api/component/",
          "reviewedOn": "2026-11-11"
        },
        "stateRestoration": {
          "status": "undocumented",
          "note": "The linked routing API review does not establish the specific navigation state retention contract defined here. This is a bounded documentation finding, not proof of absence; generic hooks or application-authored code are not counted as an owned implementation.",
          "url": "https://docs.remix.run/api/component/",
          "reviewedOn": "2026-11-11"
        },
        "scrollRestoration": {
          "status": "undocumented",
          "note": "The linked routing API review does not establish the specific scroll restoration contract defined here. This is a bounded documentation finding, not proof of absence; generic hooks or application-authored code are not counted as an owned implementation.",
          "url": "https://docs.remix.run/api/component/",
          "reviewedOn": "2026-11-11"
        },
        "navigationBlocking": {
          "status": "undocumented",
          "note": "The linked routing API review does not establish the specific unsaved-change guards contract defined here. This is a bounded documentation finding, not proof of absence; generic hooks or application-authored code are not counted as an owned implementation.",
          "url": "https://docs.remix.run/api/component/",
          "reviewedOn": "2026-11-11"
        },
        "navigationAccessibility": {
          "status": "undocumented",
          "note": "The linked client rendering API review does not establish the specific accessible navigation contract defined here. This is a bounded documentation finding, not proof of absence; generic hooks or application-authored code are not counted as an owned implementation.",
          "url": "https://docs.remix.run/api/component/",
          "reviewedOn": "2026-11-11"
        },
        "a11yChecks": {
          "status": "undocumented",
          "note": "The linked client rendering API review does not establish the specific accessibility checks contract defined here. This is a bounded documentation finding, not proof of absence; generic hooks or application-authored code are not counted as an owned implementation.",
          "url": "https://docs.remix.run/api/component/",
          "reviewedOn": "2026-11-11"
        },
        "lazyActivation": {
          "status": "undocumented",
          "note": "The linked rendering API review does not establish the specific deferred activation contract defined here. This is a bounded documentation finding, not proof of absence; generic hooks or application-authored code are not counted as an owned implementation.",
          "url": "https://docs.remix.run/api/component/",
          "reviewedOn": "2026-11-11"
        },
        "codeSplitting": {
          "status": "undocumented",
          "note": "The linked rendering API review does not establish the specific route / island splitting contract defined here. This is a bounded documentation finding, not proof of absence; generic hooks or application-authored code are not counted as an owned implementation.",
          "url": "https://docs.remix.run/api/component/",
          "reviewedOn": "2026-11-11"
        },
        "offline": {
          "status": "undocumented",
          "note": "The linked deployment API review does not establish the specific offline integration contract defined here. This is a bounded documentation finding, not proof of absence; generic hooks or application-authored code are not counted as an owned implementation.",
          "url": "https://docs.remix.run/production/",
          "reviewedOn": "2026-11-11"
        },
        "scheduling": {
          "status": "undocumented",
          "note": "The linked backend API review does not establish the specific scheduled tasks contract defined here. This is a bounded documentation finding, not proof of absence; generic hooks or application-authored code are not counted as an owned implementation.",
          "url": "https://docs.remix.run/files-and-assets/",
          "reviewedOn": "2026-11-11"
        },
        "notifications": {
          "status": "undocumented",
          "note": "The linked backend API review does not establish the specific multi-channel notifications contract defined here. This is a bounded documentation finding, not proof of absence; generic hooks or application-authored code are not counted as an owned implementation.",
          "url": "https://docs.remix.run/files-and-assets/",
          "reviewedOn": "2026-11-11"
        },
        "searchIndex": {
          "status": "undocumented",
          "note": "The linked backend API review does not establish the specific search indexing contract defined here. This is a bounded documentation finding, not proof of absence; generic hooks or application-authored code are not counted as an owned implementation.",
          "url": "https://docs.remix.run/files-and-assets/",
          "reviewedOn": "2026-11-11"
        },
        "fieldEncryption": {
          "status": "undocumented",
          "note": "The linked database API review does not establish the specific encrypted model fields contract defined here. This is a bounded documentation finding, not proof of absence; generic hooks or application-authored code are not counted as an owned implementation.",
          "url": "https://docs.remix.run/api/data-table/",
          "reviewedOn": "2026-11-11"
        },
        "httpTests": {
          "status": "native",
          "note": "Fetch-style handlers can be called with Request objects and their Responses asserted without an HTTP listener. This is the documented Fetch-handler boundary, not an attributed Rails-style session test DSL.",
          "url": "https://docs.remix.run/testing/",
          "reviewedOn": "2026-11-11",
          "label": "Fetch handler tests"
        }
      }
    },
    {
      "id": "rocker",
      "label": "Rocker",
      "kind": "Template engine",
      "logo": "logos/rocker.svg",
      "color": "var(--fw-fg)",
      "scope": "Standalone templating API; adding a host framework can provide separate application features.",
      "reviewedOn": "2026-11-10",
      "updatedOn": "2026-11-11",
      "capabilities": {
        "ssr": {
          "status": "native",
          "note": "Generates HTML from a template and supplied values on the server.",
          "url": "https://github.com/fizzed/rocker"
        },
        "streaming": {
          "status": "partial",
          "note": "Rocker renders to an output abstraction; its default composite buffers avoid repeated string concatenation. Host output adapters determine delivery.",
          "url": "https://github.com/fizzed/rocker",
          "label": "Output abstraction",
          "reviewedOn": "2026-11-10"
        },
        "suspense": {
          "status": "scope",
          "note": "The reviewed rendering API has no pending-UI/replacement protocol; the host application would need to provide one.",
          "url": "https://github.com/fizzed/rocker"
        },
        "client": {
          "status": "scope",
          "note": "This review covers the standalone template API. Application routing, client activation, site generation, and server-function transports belong to the host application or an additional framework.",
          "url": "https://github.com/fizzed/rocker"
        },
        "ssg": {
          "status": "scope",
          "note": "This review covers the standalone template API. Application routing, client activation, site generation, and server-function transports belong to the host application or an additional framework.",
          "url": "https://github.com/fizzed/rocker"
        },
        "csr": {
          "status": "scope",
          "note": "This review covers the standalone template API. Application routing, client activation, site generation, and server-function transports belong to the host application or an additional framework.",
          "url": "https://github.com/fizzed/rocker"
        },
        "serverOnly": {
          "status": "native",
          "note": "The server evaluates templates and sends rendered output rather than the renderer implementation. This is not React Server Components.",
          "url": "https://github.com/fizzed/rocker",
          "label": "Server templates"
        },
        "partialRendering": {
          "status": "scope",
          "note": "This review covers the standalone template API. Application routing, client activation, site generation, and server-function transports belong to the host application or an additional framework.",
          "url": "https://github.com/fizzed/rocker"
        },
        "routing": {
          "status": "scope",
          "note": "This review covers the standalone template API. Application routing, client activation, site generation, and server-function transports belong to the host application or an additional framework.",
          "url": "https://github.com/fizzed/rocker"
        },
        "layouts": {
          "status": "scope",
          "note": "This review covers the standalone template API. Application routing, client activation, site generation, and server-function transports belong to the host application or an additional framework.",
          "url": "https://github.com/fizzed/rocker"
        },
        "dynamicRoutes": {
          "status": "scope",
          "note": "This review covers the standalone template API. Application routing, client activation, site generation, and server-function transports belong to the host application or an additional framework.",
          "url": "https://github.com/fizzed/rocker"
        },
        "parallelRoutes": {
          "status": "scope",
          "note": "This review covers the standalone template API. Application routing, client activation, site generation, and server-function transports belong to the host application or an additional framework.",
          "url": "https://github.com/fizzed/rocker"
        },
        "interceptedRoutes": {
          "status": "scope",
          "note": "This review covers the standalone template API. Application routing, client activation, site generation, and server-function transports belong to the host application or an additional framework.",
          "url": "https://github.com/fizzed/rocker"
        },
        "prefetch": {
          "status": "scope",
          "note": "This review covers the standalone template API. Application routing, client activation, site generation, and server-function transports belong to the host application or an additional framework.",
          "url": "https://github.com/fizzed/rocker"
        },
        "softNavigation": {
          "status": "scope",
          "note": "This standalone template/runtime renders content; navigation and page-transition lifecycle belong to a browser router or host application. Compatibility with a generic JavaScript library is not a built-in integration.",
          "url": "https://github.com/fizzed/rocker",
          "reviewedOn": "2026-11-11"
        },
        "viewTransitions": {
          "status": "scope",
          "note": "This standalone template/runtime renders content; navigation and page-transition lifecycle belong to a browser router or host application. Compatibility with a generic JavaScript library is not a built-in integration.",
          "url": "https://github.com/fizzed/rocker",
          "reviewedOn": "2026-11-11"
        },
        "redirects": {
          "status": "scope",
          "note": "This review covers the standalone template API. Application routing, client activation, site generation, and server-function transports belong to the host application or an additional framework.",
          "url": "https://github.com/fizzed/rocker"
        },
        "serverData": {
          "status": "scope",
          "note": "This API consumes supplied template values; application data loading happens outside it.",
          "url": "https://github.com/fizzed/rocker"
        },
        "clientData": {
          "status": "scope",
          "note": "Browser query lifecycle/cache APIs belong to a client library or application framework.",
          "url": "https://github.com/fizzed/rocker"
        },
        "requestDedupe": {
          "status": "scope",
          "note": "Template/compilation caching is distinct from request-scoped application data deduplication.",
          "url": "https://github.com/fizzed/rocker"
        },
        "persistentCache": {
          "status": "scope",
          "note": "Retaining application data or rendered pages across requests belongs to the host cache.",
          "url": "https://github.com/fizzed/rocker"
        },
        "invalidation": {
          "status": "scope",
          "note": "Application data/page invalidation belongs to the host; recompiling a template is a different cache boundary.",
          "url": "https://github.com/fizzed/rocker"
        },
        "isr": {
          "status": "scope",
          "note": "Regenerating deployed pages requires a host page cache/export pipeline.",
          "url": "https://github.com/fizzed/rocker"
        },
        "apiRoutes": {
          "status": "scope",
          "note": "This review covers the standalone template API. Application routing, client activation, site generation, and server-function transports belong to the host application or an additional framework.",
          "url": "https://github.com/fizzed/rocker"
        },
        "actions": {
          "status": "scope",
          "note": "This review covers the standalone template API. Application routing, client activation, site generation, and server-function transports belong to the host application or an additional framework.",
          "url": "https://github.com/fizzed/rocker"
        },
        "forms": {
          "status": "scope",
          "note": "Templates can emit form markup; submission, validation, and feedback policy belong to the host application.",
          "url": "https://github.com/fizzed/rocker"
        },
        "middleware": {
          "status": "scope",
          "note": "This review covers the standalone template API. Application routing, client activation, site generation, and server-function transports belong to the host application or an additional framework.",
          "url": "https://github.com/fizzed/rocker"
        },
        "cookies": {
          "status": "scope",
          "note": "This review covers the standalone template API. Application routing, client activation, site generation, and server-function transports belong to the host application or an additional framework.",
          "url": "https://github.com/fizzed/rocker"
        },
        "cssModules": {
          "status": "scope",
          "note": "CSS class-name compilation is a separate asset-build concern.",
          "url": "https://github.com/fizzed/rocker"
        },
        "scopedCss": {
          "status": "scope",
          "note": "The renderer emits authored classes/styles; component-local CSS selector rewriting is a separate build concern.",
          "url": "https://github.com/fizzed/rocker"
        },
        "tailwind": {
          "status": "scope",
          "note": "Tailwind can process authored templates through application configuration; the template renderer does not own that build.",
          "url": "https://github.com/fizzed/rocker"
        },
        "cssInJs": {
          "status": "scope",
          "note": "Runtime CSS-in-JS compilation is outside this server template API.",
          "url": "https://github.com/fizzed/rocker"
        },
        "images": {
          "status": "scope",
          "note": "Templates emit image markup; image resizing/conversion requires a separate asset pipeline.",
          "url": "https://github.com/fizzed/rocker"
        },
        "fonts": {
          "status": "scope",
          "note": "Font downloading, subsetting, and fallback optimization require a separate asset pipeline.",
          "url": "https://github.com/fizzed/rocker"
        },
        "scripts": {
          "status": "scope",
          "note": "Templates emit script markup; script scheduling and lifecycle policy belong to the host application.",
          "url": "https://github.com/fizzed/rocker"
        },
        "staticAssets": {
          "status": "scope",
          "note": "Serving files and assigning cache headers belong to the host web server.",
          "url": "https://github.com/fizzed/rocker"
        },
        "metadata": {
          "status": "scope",
          "note": "Head tags can be templated directly; there is no structured metadata registry in the reviewed standalone API.",
          "url": "https://github.com/fizzed/rocker"
        },
        "dynamicMetadata": {
          "status": "scope",
          "note": "Supplied values can populate head tags; request data loading and metadata composition remain application-owned.",
          "url": "https://github.com/fizzed/rocker"
        },
        "metadataInheritance": {
          "status": "scope",
          "note": "Template inheritance/content composition is separate from a metadata-field inheritance contract.",
          "url": "https://github.com/fizzed/rocker"
        },
        "metadataOverrides": {
          "status": "scope",
          "note": "A host head component or template block can override markup; structured field merge/clear rules are application-owned.",
          "url": "https://github.com/fizzed/rocker"
        },
        "titleTemplates": {
          "status": "scope",
          "note": "Titles can use template expressions; ancestor metadata/title-template policy belongs to the application.",
          "url": "https://github.com/fizzed/rocker"
        },
        "socialImages": {
          "status": "scope",
          "note": "Generating social-preview image bytes needs a separate image renderer/service.",
          "url": "https://github.com/fizzed/rocker"
        },
        "sitemaps": {
          "status": "scope",
          "note": "XML can be templated, but route enumeration and a sitemap generator belong to the host.",
          "url": "https://github.com/fizzed/rocker"
        },
        "robots": {
          "status": "scope",
          "note": "Text can be templated, but crawler-document publishing/configuration belongs to the host.",
          "url": "https://github.com/fizzed/rocker"
        },
        "markdown": {
          "status": "scope",
          "note": "This is text/HTML templating; Markdown parsing and content-page integration require another tool.",
          "url": "https://github.com/fizzed/rocker"
        },
        "collections": {
          "status": "scope",
          "note": "The host loads and validates structured content; the template API renders supplied values.",
          "url": "https://github.com/fizzed/rocker"
        },
        "draftMode": {
          "status": "scope",
          "note": "Editorial preview authorization and published-cache bypass belong to the host application.",
          "url": "https://github.com/fizzed/rocker"
        },
        "translations": {
          "status": "scope",
          "note": "Applications can supply translated strings/helpers; the reviewed renderer does not supply message catalogs.",
          "url": "https://github.com/fizzed/rocker"
        },
        "localeRouting": {
          "status": "scope",
          "note": "This review covers the standalone template API. Application routing, client activation, site generation, and server-function transports belong to the host application or an additional framework.",
          "url": "https://github.com/fizzed/rocker"
        },
        "localeFormatting": {
          "status": "scope",
          "note": "The host supplies locale-aware values or formatter helpers.",
          "url": "https://github.com/fizzed/rocker"
        },
        "auth": {
          "status": "scope",
          "note": "Identity, login, and authorization are responsibilities of the host application.",
          "url": "https://github.com/fizzed/rocker"
        },
        "csp": {
          "status": "scope",
          "note": "The host configures HTTP CSP headers and any nonce values passed into templates.",
          "url": "https://github.com/fizzed/rocker"
        },
        "cspNonce": {
          "status": "scope",
          "note": "The HTTP application must generate a fresh nonce, set its policy and pass the value to authored tags. A template accepting attributes does not coordinate nonces for an application.",
          "url": "https://github.com/fizzed/rocker",
          "reviewedOn": "2026-11-11"
        },
        "csrf": {
          "status": "scope",
          "note": "HTML escaping does not establish CSRF protection; the host must protect mutation endpoints.",
          "url": "https://github.com/fizzed/rocker"
        },
        "environment": {
          "status": "scope",
          "note": "Server/client secret configuration belongs to the host application, not template evaluation.",
          "url": "https://github.com/fizzed/rocker"
        },
        "types": {
          "status": "native",
          "note": "Generated templates are plain Java classes; arguments and logic are checked by the Java compiler.",
          "url": "https://github.com/fizzed/rocker",
          "label": "Java templates"
        },
        "hmr": {
          "status": "official",
          "note": "Development hot reloading recompiles template implementations, with an optional more dynamic model mode.",
          "url": "https://github.com/fizzed/rocker",
          "label": "Template reload"
        },
        "cli": {
          "status": "official",
          "note": "Maven/Gradle plugins generate template Java sources within the application build.",
          "url": "https://github.com/fizzed/rocker",
          "label": "Build plugins"
        },
        "bundleAnalysis": {
          "status": "scope",
          "note": "Production browser/server bundle inspection belongs to the host build toolchain.",
          "url": "https://github.com/fizzed/rocker"
        },
        "unitTests": {
          "status": "scope",
          "note": "Applications test rendered output with their language test runner; no application test framework is supplied here.",
          "url": "https://github.com/fizzed/rocker"
        },
        "e2eTests": {
          "status": "scope",
          "note": "Browser tests run against a host application, not a standalone template.",
          "url": "https://github.com/fizzed/rocker"
        },
        "observability": {
          "status": "scope",
          "note": "Production request traces/metrics/logging belong to the host application.",
          "url": "https://github.com/fizzed/rocker"
        },
        "errorHandling": {
          "status": "scope",
          "note": "Template errors are returned to the caller; application fallback/recovery UI is host-owned.",
          "url": "https://github.com/fizzed/rocker"
        },
        "serverHosting": {
          "status": "scope",
          "note": "This review covers the standalone template API. Application routing, client activation, site generation, and server-function transports belong to the host application or an additional framework.",
          "url": "https://github.com/fizzed/rocker"
        },
        "staticHosting": {
          "status": "scope",
          "note": "This review covers the standalone template API. Application routing, client activation, site generation, and server-function transports belong to the host application or an additional framework.",
          "url": "https://github.com/fizzed/rocker"
        },
        "containers": {
          "status": "scope",
          "note": "This review covers the standalone template API. Application routing, client activation, site generation, and server-function transports belong to the host application or an additional framework.",
          "url": "https://github.com/fizzed/rocker"
        },
        "edgeHosting": {
          "status": "scope",
          "note": "This review covers the standalone template API. Application routing, client activation, site generation, and server-function transports belong to the host application or an additional framework.",
          "url": "https://github.com/fizzed/rocker"
        },
        "orm": {
          "status": "scope",
          "note": "ORM / query builder belongs to a server framework or external service, outside this standalone rendering API. This is not a missing template-rendering capability.",
          "url": "https://github.com/fizzed/rocker"
        },
        "migrations": {
          "status": "scope",
          "note": "Schema migrations belongs to a server framework or external service, outside this standalone rendering API. This is not a missing template-rendering capability.",
          "url": "https://github.com/fizzed/rocker"
        },
        "transactions": {
          "status": "scope",
          "note": "Transactions belongs to a server framework or external service, outside this standalone rendering API. This is not a missing template-rendering capability.",
          "url": "https://github.com/fizzed/rocker"
        },
        "jobs": {
          "status": "scope",
          "note": "Background jobs belongs to a server framework or external service, outside this standalone rendering API. This is not a missing template-rendering capability.",
          "url": "https://github.com/fizzed/rocker"
        },
        "mail": {
          "status": "scope",
          "note": "Email belongs to a server framework or external service, outside this standalone rendering API. This is not a missing template-rendering capability.",
          "url": "https://github.com/fizzed/rocker"
        },
        "uploads": {
          "status": "scope",
          "note": "File uploads & storage belongs to a server framework or external service, outside this standalone rendering API. This is not a missing template-rendering capability.",
          "url": "https://github.com/fizzed/rocker"
        },
        "realtime": {
          "status": "scope",
          "note": "Real-time delivery belongs to a server framework or external service, outside this standalone rendering API. This is not a missing template-rendering capability.",
          "url": "https://github.com/fizzed/rocker"
        },
        "xssEscaping": {
          "status": "native",
          "note": "HTML ContentType uses an HTML stringifier; RAW selects unescaped output. The template/content type matters, and this is not a sanitizer for authored HTML.",
          "url": "https://www.javadoc.io/doc/com.fizzed/rocker-runtime/latest/com/fizzed/rocker/ContentType.html",
          "reviewedOn": "2026-11-11"
        },
        "htmlSanitization": {
          "status": "undocumented",
          "note": "The linked security API review does not establish the specific html sanitization contract defined here. This is a bounded documentation finding, not proof of absence; generic hooks or application-authored code are not counted as an owned implementation.",
          "url": "https://github.com/fizzed/rocker",
          "reviewedOn": "2026-11-11"
        },
        "authorization": {
          "status": "scope",
          "note": "Authorization policies requires a host application or specialized integration beyond the reviewed template/runtime API. Emitting markup or using arbitrary host-language libraries does not establish this application-level contract.",
          "url": "https://github.com/fizzed/rocker",
          "reviewedOn": "2026-11-11"
        },
        "rateLimiting": {
          "status": "scope",
          "note": "Rate limiting requires a host application or specialized integration beyond the reviewed template/runtime API. Emitting markup or using arbitrary host-language libraries does not establish this application-level contract.",
          "url": "https://github.com/fizzed/rocker",
          "reviewedOn": "2026-11-11"
        },
        "progressiveEnhancement": {
          "status": "scope",
          "note": "Progressive forms requires a host application or specialized integration beyond the reviewed template/runtime API. Emitting markup or using arbitrary host-language libraries does not establish this application-level contract.",
          "url": "https://github.com/fizzed/rocker",
          "reviewedOn": "2026-11-11"
        },
        "optimisticUi": {
          "status": "scope",
          "note": "Optimistic updates requires a host application or specialized integration beyond the reviewed template/runtime API. Emitting markup or using arbitrary host-language libraries does not establish this application-level contract.",
          "url": "https://github.com/fizzed/rocker",
          "reviewedOn": "2026-11-11"
        },
        "requestCancellation": {
          "status": "scope",
          "note": "Stale request handling requires a host application or specialized integration beyond the reviewed template/runtime API. Emitting markup or using arbitrary host-language libraries does not establish this application-level contract.",
          "url": "https://github.com/fizzed/rocker",
          "reviewedOn": "2026-11-11"
        },
        "typedLinks": {
          "status": "scope",
          "note": "Typed links & parameters requires a host application or specialized integration beyond the reviewed template/runtime API. Emitting markup or using arbitrary host-language libraries does not establish this application-level contract.",
          "url": "https://github.com/fizzed/rocker",
          "reviewedOn": "2026-11-11"
        },
        "searchParams": {
          "status": "scope",
          "note": "Validated URL state requires a host application or specialized integration beyond the reviewed template/runtime API. Emitting markup or using arbitrary host-language libraries does not establish this application-level contract.",
          "url": "https://github.com/fizzed/rocker",
          "reviewedOn": "2026-11-11"
        },
        "stateRestoration": {
          "status": "scope",
          "note": "Navigation state retention requires a host application or specialized integration beyond the reviewed template/runtime API. Emitting markup or using arbitrary host-language libraries does not establish this application-level contract.",
          "url": "https://github.com/fizzed/rocker",
          "reviewedOn": "2026-11-11"
        },
        "scrollRestoration": {
          "status": "scope",
          "note": "Scroll restoration requires a host application or specialized integration beyond the reviewed template/runtime API. Emitting markup or using arbitrary host-language libraries does not establish this application-level contract.",
          "url": "https://github.com/fizzed/rocker",
          "reviewedOn": "2026-11-11"
        },
        "navigationBlocking": {
          "status": "scope",
          "note": "Unsaved-change guards requires a host application or specialized integration beyond the reviewed template/runtime API. Emitting markup or using arbitrary host-language libraries does not establish this application-level contract.",
          "url": "https://github.com/fizzed/rocker",
          "reviewedOn": "2026-11-11"
        },
        "navigationAccessibility": {
          "status": "scope",
          "note": "Accessible navigation requires a host application or specialized integration beyond the reviewed template/runtime API. Emitting markup or using arbitrary host-language libraries does not establish this application-level contract.",
          "url": "https://github.com/fizzed/rocker",
          "reviewedOn": "2026-11-11"
        },
        "a11yChecks": {
          "status": "scope",
          "note": "Accessibility checks requires a host application or specialized integration beyond the reviewed template/runtime API. Emitting markup or using arbitrary host-language libraries does not establish this application-level contract.",
          "url": "https://github.com/fizzed/rocker",
          "reviewedOn": "2026-11-11"
        },
        "lazyActivation": {
          "status": "scope",
          "note": "Deferred activation requires a host application or specialized integration beyond the reviewed template/runtime API. Emitting markup or using arbitrary host-language libraries does not establish this application-level contract.",
          "url": "https://github.com/fizzed/rocker",
          "reviewedOn": "2026-11-11"
        },
        "codeSplitting": {
          "status": "scope",
          "note": "Route / island splitting requires a host application or specialized integration beyond the reviewed template/runtime API. Emitting markup or using arbitrary host-language libraries does not establish this application-level contract.",
          "url": "https://github.com/fizzed/rocker",
          "reviewedOn": "2026-11-11"
        },
        "offline": {
          "status": "scope",
          "note": "Offline integration requires a host application or specialized integration beyond the reviewed template/runtime API. Emitting markup or using arbitrary host-language libraries does not establish this application-level contract.",
          "url": "https://github.com/fizzed/rocker",
          "reviewedOn": "2026-11-11"
        },
        "scheduling": {
          "status": "scope",
          "note": "Scheduled tasks requires a host application or specialized integration beyond the reviewed template/runtime API. Emitting markup or using arbitrary host-language libraries does not establish this application-level contract.",
          "url": "https://github.com/fizzed/rocker",
          "reviewedOn": "2026-11-11"
        },
        "notifications": {
          "status": "scope",
          "note": "Multi-channel notifications requires a host application or specialized integration beyond the reviewed template/runtime API. Emitting markup or using arbitrary host-language libraries does not establish this application-level contract.",
          "url": "https://github.com/fizzed/rocker",
          "reviewedOn": "2026-11-11"
        },
        "searchIndex": {
          "status": "scope",
          "note": "Search indexing requires a host application or specialized integration beyond the reviewed template/runtime API. Emitting markup or using arbitrary host-language libraries does not establish this application-level contract.",
          "url": "https://github.com/fizzed/rocker",
          "reviewedOn": "2026-11-11"
        },
        "fieldEncryption": {
          "status": "scope",
          "note": "Encrypted model fields requires a host application or specialized integration beyond the reviewed template/runtime API. Emitting markup or using arbitrary host-language libraries does not establish this application-level contract.",
          "url": "https://github.com/fizzed/rocker",
          "reviewedOn": "2026-11-11"
        },
        "httpTests": {
          "status": "scope",
          "note": "HTTP integration tests requires a host application or specialized integration beyond the reviewed template/runtime API. Emitting markup or using arbitrary host-language libraries does not establish this application-level contract.",
          "url": "https://github.com/fizzed/rocker",
          "reviewedOn": "2026-11-11"
        }
      }
    },
    {
      "id": "sailfish",
      "label": "Sailfish",
      "kind": "Template engine",
      "logo": "logos/sailfish.svg",
      "color": "var(--fw-fg)",
      "scope": "Standalone templating API; adding a host framework can provide separate application features.",
      "reviewedOn": "2026-11-10",
      "updatedOn": "2026-11-11",
      "capabilities": {
        "ssr": {
          "status": "native",
          "note": "Generates HTML from a template and supplied values on the server.",
          "url": "https://docs.rs/sailfish/latest/sailfish/"
        },
        "streaming": {
          "status": "undocumented",
          "note": "The reviewed Template methods render into an owned result or Sailfish Buffer; no HTTP/async streaming destination API is documented.",
          "url": "https://docs.rs/sailfish/0.10.2/sailfish/trait.Template.html"
        },
        "suspense": {
          "status": "scope",
          "note": "The reviewed rendering API has no pending-UI/replacement protocol; the host application would need to provide one.",
          "url": "https://docs.rs/sailfish/0.10.2/sailfish/trait.Template.html"
        },
        "client": {
          "status": "scope",
          "note": "This review covers the standalone template API. Application routing, client activation, site generation, and server-function transports belong to the host application or an additional framework.",
          "url": "https://docs.rs/sailfish/latest/sailfish/"
        },
        "ssg": {
          "status": "scope",
          "note": "This review covers the standalone template API. Application routing, client activation, site generation, and server-function transports belong to the host application or an additional framework.",
          "url": "https://docs.rs/sailfish/latest/sailfish/"
        },
        "csr": {
          "status": "scope",
          "note": "This review covers the standalone template API. Application routing, client activation, site generation, and server-function transports belong to the host application or an additional framework.",
          "url": "https://docs.rs/sailfish/latest/sailfish/"
        },
        "serverOnly": {
          "status": "native",
          "note": "The server evaluates templates and sends rendered output rather than the renderer implementation. This is not React Server Components.",
          "url": "https://docs.rs/sailfish/0.10.2/sailfish/trait.Template.html",
          "label": "Server templates"
        },
        "partialRendering": {
          "status": "scope",
          "note": "This review covers the standalone template API. Application routing, client activation, site generation, and server-function transports belong to the host application or an additional framework.",
          "url": "https://docs.rs/sailfish/latest/sailfish/"
        },
        "routing": {
          "status": "scope",
          "note": "This review covers the standalone template API. Application routing, client activation, site generation, and server-function transports belong to the host application or an additional framework.",
          "url": "https://docs.rs/sailfish/latest/sailfish/"
        },
        "layouts": {
          "status": "scope",
          "note": "This review covers the standalone template API. Application routing, client activation, site generation, and server-function transports belong to the host application or an additional framework.",
          "url": "https://docs.rs/sailfish/latest/sailfish/"
        },
        "dynamicRoutes": {
          "status": "scope",
          "note": "This review covers the standalone template API. Application routing, client activation, site generation, and server-function transports belong to the host application or an additional framework.",
          "url": "https://docs.rs/sailfish/latest/sailfish/"
        },
        "parallelRoutes": {
          "status": "scope",
          "note": "This review covers the standalone template API. Application routing, client activation, site generation, and server-function transports belong to the host application or an additional framework.",
          "url": "https://docs.rs/sailfish/latest/sailfish/"
        },
        "interceptedRoutes": {
          "status": "scope",
          "note": "This review covers the standalone template API. Application routing, client activation, site generation, and server-function transports belong to the host application or an additional framework.",
          "url": "https://docs.rs/sailfish/latest/sailfish/"
        },
        "prefetch": {
          "status": "scope",
          "note": "This review covers the standalone template API. Application routing, client activation, site generation, and server-function transports belong to the host application or an additional framework.",
          "url": "https://docs.rs/sailfish/latest/sailfish/"
        },
        "softNavigation": {
          "status": "scope",
          "note": "This standalone template/runtime renders content; navigation and page-transition lifecycle belong to a browser router or host application. Compatibility with a generic JavaScript library is not a built-in integration.",
          "url": "https://docs.rs/sailfish/latest/sailfish/",
          "reviewedOn": "2026-11-11"
        },
        "viewTransitions": {
          "status": "scope",
          "note": "This standalone template/runtime renders content; navigation and page-transition lifecycle belong to a browser router or host application. Compatibility with a generic JavaScript library is not a built-in integration.",
          "url": "https://docs.rs/sailfish/latest/sailfish/",
          "reviewedOn": "2026-11-11"
        },
        "redirects": {
          "status": "scope",
          "note": "This review covers the standalone template API. Application routing, client activation, site generation, and server-function transports belong to the host application or an additional framework.",
          "url": "https://docs.rs/sailfish/latest/sailfish/"
        },
        "serverData": {
          "status": "scope",
          "note": "This API consumes supplied template values; application data loading happens outside it.",
          "url": "https://docs.rs/sailfish/0.10.2/sailfish/trait.Template.html"
        },
        "clientData": {
          "status": "scope",
          "note": "Browser query lifecycle/cache APIs belong to a client library or application framework.",
          "url": "https://docs.rs/sailfish/0.10.2/sailfish/trait.Template.html"
        },
        "requestDedupe": {
          "status": "scope",
          "note": "Template/compilation caching is distinct from request-scoped application data deduplication.",
          "url": "https://docs.rs/sailfish/0.10.2/sailfish/trait.Template.html"
        },
        "persistentCache": {
          "status": "scope",
          "note": "Retaining application data or rendered pages across requests belongs to the host cache.",
          "url": "https://docs.rs/sailfish/0.10.2/sailfish/trait.Template.html"
        },
        "invalidation": {
          "status": "scope",
          "note": "Application data/page invalidation belongs to the host; recompiling a template is a different cache boundary.",
          "url": "https://docs.rs/sailfish/0.10.2/sailfish/trait.Template.html"
        },
        "isr": {
          "status": "scope",
          "note": "Regenerating deployed pages requires a host page cache/export pipeline.",
          "url": "https://docs.rs/sailfish/0.10.2/sailfish/trait.Template.html"
        },
        "apiRoutes": {
          "status": "scope",
          "note": "This review covers the standalone template API. Application routing, client activation, site generation, and server-function transports belong to the host application or an additional framework.",
          "url": "https://docs.rs/sailfish/latest/sailfish/"
        },
        "actions": {
          "status": "scope",
          "note": "This review covers the standalone template API. Application routing, client activation, site generation, and server-function transports belong to the host application or an additional framework.",
          "url": "https://docs.rs/sailfish/latest/sailfish/"
        },
        "forms": {
          "status": "scope",
          "note": "Templates can emit form markup; submission, validation, and feedback policy belong to the host application.",
          "url": "https://docs.rs/sailfish/0.10.2/sailfish/trait.Template.html"
        },
        "middleware": {
          "status": "scope",
          "note": "This review covers the standalone template API. Application routing, client activation, site generation, and server-function transports belong to the host application or an additional framework.",
          "url": "https://docs.rs/sailfish/latest/sailfish/"
        },
        "cookies": {
          "status": "scope",
          "note": "This review covers the standalone template API. Application routing, client activation, site generation, and server-function transports belong to the host application or an additional framework.",
          "url": "https://docs.rs/sailfish/latest/sailfish/"
        },
        "cssModules": {
          "status": "scope",
          "note": "CSS class-name compilation is a separate asset-build concern.",
          "url": "https://docs.rs/sailfish/0.10.2/sailfish/trait.Template.html"
        },
        "scopedCss": {
          "status": "scope",
          "note": "The renderer emits authored classes/styles; component-local CSS selector rewriting is a separate build concern.",
          "url": "https://docs.rs/sailfish/0.10.2/sailfish/trait.Template.html"
        },
        "tailwind": {
          "status": "scope",
          "note": "Tailwind can process authored templates through application configuration; the template renderer does not own that build.",
          "url": "https://docs.rs/sailfish/0.10.2/sailfish/trait.Template.html"
        },
        "cssInJs": {
          "status": "scope",
          "note": "Runtime CSS-in-JS compilation is outside this server template API.",
          "url": "https://docs.rs/sailfish/0.10.2/sailfish/trait.Template.html"
        },
        "images": {
          "status": "scope",
          "note": "Templates emit image markup; image resizing/conversion requires a separate asset pipeline.",
          "url": "https://docs.rs/sailfish/0.10.2/sailfish/trait.Template.html"
        },
        "fonts": {
          "status": "scope",
          "note": "Font downloading, subsetting, and fallback optimization require a separate asset pipeline.",
          "url": "https://docs.rs/sailfish/0.10.2/sailfish/trait.Template.html"
        },
        "scripts": {
          "status": "scope",
          "note": "Templates emit script markup; script scheduling and lifecycle policy belong to the host application.",
          "url": "https://docs.rs/sailfish/0.10.2/sailfish/trait.Template.html"
        },
        "staticAssets": {
          "status": "scope",
          "note": "Serving files and assigning cache headers belong to the host web server.",
          "url": "https://docs.rs/sailfish/0.10.2/sailfish/trait.Template.html"
        },
        "metadata": {
          "status": "scope",
          "note": "Head tags can be templated directly; there is no structured metadata registry in the reviewed standalone API.",
          "url": "https://docs.rs/sailfish/0.10.2/sailfish/trait.Template.html"
        },
        "dynamicMetadata": {
          "status": "scope",
          "note": "Supplied values can populate head tags; request data loading and metadata composition remain application-owned.",
          "url": "https://docs.rs/sailfish/0.10.2/sailfish/trait.Template.html"
        },
        "metadataInheritance": {
          "status": "scope",
          "note": "Template inheritance/content composition is separate from a metadata-field inheritance contract.",
          "url": "https://docs.rs/sailfish/0.10.2/sailfish/trait.Template.html"
        },
        "metadataOverrides": {
          "status": "scope",
          "note": "A host head component or template block can override markup; structured field merge/clear rules are application-owned.",
          "url": "https://docs.rs/sailfish/0.10.2/sailfish/trait.Template.html"
        },
        "titleTemplates": {
          "status": "scope",
          "note": "Titles can use template expressions; ancestor metadata/title-template policy belongs to the application.",
          "url": "https://docs.rs/sailfish/0.10.2/sailfish/trait.Template.html"
        },
        "socialImages": {
          "status": "scope",
          "note": "Generating social-preview image bytes needs a separate image renderer/service.",
          "url": "https://docs.rs/sailfish/0.10.2/sailfish/trait.Template.html"
        },
        "sitemaps": {
          "status": "scope",
          "note": "XML can be templated, but route enumeration and a sitemap generator belong to the host.",
          "url": "https://docs.rs/sailfish/0.10.2/sailfish/trait.Template.html"
        },
        "robots": {
          "status": "scope",
          "note": "Text can be templated, but crawler-document publishing/configuration belongs to the host.",
          "url": "https://docs.rs/sailfish/0.10.2/sailfish/trait.Template.html"
        },
        "markdown": {
          "status": "scope",
          "note": "This is text/HTML templating; Markdown parsing and content-page integration require another tool.",
          "url": "https://docs.rs/sailfish/0.10.2/sailfish/trait.Template.html"
        },
        "collections": {
          "status": "scope",
          "note": "The host loads and validates structured content; the template API renders supplied values.",
          "url": "https://docs.rs/sailfish/0.10.2/sailfish/trait.Template.html"
        },
        "draftMode": {
          "status": "scope",
          "note": "Editorial preview authorization and published-cache bypass belong to the host application.",
          "url": "https://docs.rs/sailfish/0.10.2/sailfish/trait.Template.html"
        },
        "translations": {
          "status": "scope",
          "note": "Applications can supply translated strings/helpers; the reviewed renderer does not supply message catalogs.",
          "url": "https://docs.rs/sailfish/0.10.2/sailfish/trait.Template.html"
        },
        "localeRouting": {
          "status": "scope",
          "note": "This review covers the standalone template API. Application routing, client activation, site generation, and server-function transports belong to the host application or an additional framework.",
          "url": "https://docs.rs/sailfish/latest/sailfish/"
        },
        "localeFormatting": {
          "status": "scope",
          "note": "The host supplies locale-aware values or formatter helpers.",
          "url": "https://docs.rs/sailfish/0.10.2/sailfish/trait.Template.html"
        },
        "auth": {
          "status": "scope",
          "note": "Identity, login, and authorization are responsibilities of the host application.",
          "url": "https://docs.rs/sailfish/0.10.2/sailfish/trait.Template.html"
        },
        "csp": {
          "status": "scope",
          "note": "The host configures HTTP CSP headers and any nonce values passed into templates.",
          "url": "https://docs.rs/sailfish/0.10.2/sailfish/trait.Template.html"
        },
        "cspNonce": {
          "status": "scope",
          "note": "The HTTP application must generate a fresh nonce, set its policy and pass the value to authored tags. A template accepting attributes does not coordinate nonces for an application.",
          "url": "https://docs.rs/sailfish/0.10.2/sailfish/trait.Template.html",
          "reviewedOn": "2026-11-11"
        },
        "csrf": {
          "status": "scope",
          "note": "HTML escaping does not establish CSRF protection; the host must protect mutation endpoints.",
          "url": "https://docs.rs/sailfish/0.10.2/sailfish/trait.Template.html"
        },
        "environment": {
          "status": "scope",
          "note": "Server/client secret configuration belongs to the host application, not template evaluation.",
          "url": "https://docs.rs/sailfish/0.10.2/sailfish/trait.Template.html"
        },
        "types": {
          "status": "native",
          "note": "Rust derive macros compile template expressions against typed context fields.",
          "url": "https://docs.rs/sailfish/0.10.2/sailfish/",
          "label": "Rust templates"
        },
        "hmr": {
          "status": "scope",
          "note": "Application rebuild/browser refresh orchestration is outside the renderer API.",
          "url": "https://docs.rs/sailfish/0.10.2/sailfish/trait.Template.html"
        },
        "cli": {
          "status": "scope",
          "note": "This renderer integrates with its language/build toolchain rather than supplying an application CLI.",
          "url": "https://docs.rs/sailfish/0.10.2/sailfish/trait.Template.html"
        },
        "bundleAnalysis": {
          "status": "scope",
          "note": "Production browser/server bundle inspection belongs to the host build toolchain.",
          "url": "https://docs.rs/sailfish/0.10.2/sailfish/trait.Template.html"
        },
        "unitTests": {
          "status": "scope",
          "note": "Applications test rendered output with their language test runner; no application test framework is supplied here.",
          "url": "https://docs.rs/sailfish/0.10.2/sailfish/trait.Template.html"
        },
        "e2eTests": {
          "status": "scope",
          "note": "Browser tests run against a host application, not a standalone template.",
          "url": "https://docs.rs/sailfish/0.10.2/sailfish/trait.Template.html"
        },
        "observability": {
          "status": "scope",
          "note": "Production request traces/metrics/logging belong to the host application.",
          "url": "https://docs.rs/sailfish/0.10.2/sailfish/trait.Template.html"
        },
        "errorHandling": {
          "status": "scope",
          "note": "Template errors are returned to the caller; application fallback/recovery UI is host-owned.",
          "url": "https://docs.rs/sailfish/0.10.2/sailfish/trait.Template.html"
        },
        "serverHosting": {
          "status": "scope",
          "note": "This review covers the standalone template API. Application routing, client activation, site generation, and server-function transports belong to the host application or an additional framework.",
          "url": "https://docs.rs/sailfish/latest/sailfish/"
        },
        "staticHosting": {
          "status": "scope",
          "note": "This review covers the standalone template API. Application routing, client activation, site generation, and server-function transports belong to the host application or an additional framework.",
          "url": "https://docs.rs/sailfish/latest/sailfish/"
        },
        "containers": {
          "status": "scope",
          "note": "This review covers the standalone template API. Application routing, client activation, site generation, and server-function transports belong to the host application or an additional framework.",
          "url": "https://docs.rs/sailfish/latest/sailfish/"
        },
        "edgeHosting": {
          "status": "scope",
          "note": "This review covers the standalone template API. Application routing, client activation, site generation, and server-function transports belong to the host application or an additional framework.",
          "url": "https://docs.rs/sailfish/latest/sailfish/"
        },
        "orm": {
          "status": "scope",
          "note": "ORM / query builder belongs to a server framework or external service, outside this standalone rendering API. This is not a missing template-rendering capability.",
          "url": "https://sailfish-template.github.io/sailfish"
        },
        "migrations": {
          "status": "scope",
          "note": "Schema migrations belongs to a server framework or external service, outside this standalone rendering API. This is not a missing template-rendering capability.",
          "url": "https://sailfish-template.github.io/sailfish"
        },
        "transactions": {
          "status": "scope",
          "note": "Transactions belongs to a server framework or external service, outside this standalone rendering API. This is not a missing template-rendering capability.",
          "url": "https://sailfish-template.github.io/sailfish"
        },
        "jobs": {
          "status": "scope",
          "note": "Background jobs belongs to a server framework or external service, outside this standalone rendering API. This is not a missing template-rendering capability.",
          "url": "https://sailfish-template.github.io/sailfish"
        },
        "mail": {
          "status": "scope",
          "note": "Email belongs to a server framework or external service, outside this standalone rendering API. This is not a missing template-rendering capability.",
          "url": "https://sailfish-template.github.io/sailfish"
        },
        "uploads": {
          "status": "scope",
          "note": "File uploads & storage belongs to a server framework or external service, outside this standalone rendering API. This is not a missing template-rendering capability.",
          "url": "https://sailfish-template.github.io/sailfish"
        },
        "realtime": {
          "status": "scope",
          "note": "Real-time delivery belongs to a server framework or external service, outside this standalone rendering API. This is not a missing template-rendering capability.",
          "url": "https://sailfish-template.github.io/sailfish"
        },
        "xssEscaping": {
          "status": "native",
          "note": "Escaped template interpolation encodes dynamic HTML content; raw interpolation bypasses it. The reviewed contract does not establish rich-HTML sanitization or arbitrary script-context safety.",
          "url": "https://rust-sailfish.github.io/sailfish/syntax/tags/",
          "reviewedOn": "2026-11-11"
        },
        "htmlSanitization": {
          "status": "undocumented",
          "note": "The linked security API review does not establish the specific html sanitization contract defined here. This is a bounded documentation finding, not proof of absence; generic hooks or application-authored code are not counted as an owned implementation.",
          "url": "https://docs.rs/sailfish/latest/sailfish/",
          "reviewedOn": "2026-11-11"
        },
        "authorization": {
          "status": "scope",
          "note": "Authorization policies requires a host application or specialized integration beyond the reviewed template/runtime API. Emitting markup or using arbitrary host-language libraries does not establish this application-level contract.",
          "url": "https://docs.rs/sailfish/latest/sailfish/",
          "reviewedOn": "2026-11-11"
        },
        "rateLimiting": {
          "status": "scope",
          "note": "Rate limiting requires a host application or specialized integration beyond the reviewed template/runtime API. Emitting markup or using arbitrary host-language libraries does not establish this application-level contract.",
          "url": "https://docs.rs/sailfish/latest/sailfish/",
          "reviewedOn": "2026-11-11"
        },
        "progressiveEnhancement": {
          "status": "scope",
          "note": "Progressive forms requires a host application or specialized integration beyond the reviewed template/runtime API. Emitting markup or using arbitrary host-language libraries does not establish this application-level contract.",
          "url": "https://docs.rs/sailfish/latest/sailfish/",
          "reviewedOn": "2026-11-11"
        },
        "optimisticUi": {
          "status": "scope",
          "note": "Optimistic updates requires a host application or specialized integration beyond the reviewed template/runtime API. Emitting markup or using arbitrary host-language libraries does not establish this application-level contract.",
          "url": "https://docs.rs/sailfish/latest/sailfish/",
          "reviewedOn": "2026-11-11"
        },
        "requestCancellation": {
          "status": "scope",
          "note": "Stale request handling requires a host application or specialized integration beyond the reviewed template/runtime API. Emitting markup or using arbitrary host-language libraries does not establish this application-level contract.",
          "url": "https://docs.rs/sailfish/latest/sailfish/",
          "reviewedOn": "2026-11-11"
        },
        "typedLinks": {
          "status": "scope",
          "note": "Typed links & parameters requires a host application or specialized integration beyond the reviewed template/runtime API. Emitting markup or using arbitrary host-language libraries does not establish this application-level contract.",
          "url": "https://docs.rs/sailfish/latest/sailfish/",
          "reviewedOn": "2026-11-11"
        },
        "searchParams": {
          "status": "scope",
          "note": "Validated URL state requires a host application or specialized integration beyond the reviewed template/runtime API. Emitting markup or using arbitrary host-language libraries does not establish this application-level contract.",
          "url": "https://docs.rs/sailfish/latest/sailfish/",
          "reviewedOn": "2026-11-11"
        },
        "stateRestoration": {
          "status": "scope",
          "note": "Navigation state retention requires a host application or specialized integration beyond the reviewed template/runtime API. Emitting markup or using arbitrary host-language libraries does not establish this application-level contract.",
          "url": "https://docs.rs/sailfish/latest/sailfish/",
          "reviewedOn": "2026-11-11"
        },
        "scrollRestoration": {
          "status": "scope",
          "note": "Scroll restoration requires a host application or specialized integration beyond the reviewed template/runtime API. Emitting markup or using arbitrary host-language libraries does not establish this application-level contract.",
          "url": "https://docs.rs/sailfish/latest/sailfish/",
          "reviewedOn": "2026-11-11"
        },
        "navigationBlocking": {
          "status": "scope",
          "note": "Unsaved-change guards requires a host application or specialized integration beyond the reviewed template/runtime API. Emitting markup or using arbitrary host-language libraries does not establish this application-level contract.",
          "url": "https://docs.rs/sailfish/latest/sailfish/",
          "reviewedOn": "2026-11-11"
        },
        "navigationAccessibility": {
          "status": "scope",
          "note": "Accessible navigation requires a host application or specialized integration beyond the reviewed template/runtime API. Emitting markup or using arbitrary host-language libraries does not establish this application-level contract.",
          "url": "https://docs.rs/sailfish/latest/sailfish/",
          "reviewedOn": "2026-11-11"
        },
        "a11yChecks": {
          "status": "scope",
          "note": "Accessibility checks requires a host application or specialized integration beyond the reviewed template/runtime API. Emitting markup or using arbitrary host-language libraries does not establish this application-level contract.",
          "url": "https://docs.rs/sailfish/latest/sailfish/",
          "reviewedOn": "2026-11-11"
        },
        "lazyActivation": {
          "status": "scope",
          "note": "Deferred activation requires a host application or specialized integration beyond the reviewed template/runtime API. Emitting markup or using arbitrary host-language libraries does not establish this application-level contract.",
          "url": "https://docs.rs/sailfish/latest/sailfish/",
          "reviewedOn": "2026-11-11"
        },
        "codeSplitting": {
          "status": "scope",
          "note": "Route / island splitting requires a host application or specialized integration beyond the reviewed template/runtime API. Emitting markup or using arbitrary host-language libraries does not establish this application-level contract.",
          "url": "https://docs.rs/sailfish/latest/sailfish/",
          "reviewedOn": "2026-11-11"
        },
        "offline": {
          "status": "scope",
          "note": "Offline integration requires a host application or specialized integration beyond the reviewed template/runtime API. Emitting markup or using arbitrary host-language libraries does not establish this application-level contract.",
          "url": "https://docs.rs/sailfish/latest/sailfish/",
          "reviewedOn": "2026-11-11"
        },
        "scheduling": {
          "status": "scope",
          "note": "Scheduled tasks requires a host application or specialized integration beyond the reviewed template/runtime API. Emitting markup or using arbitrary host-language libraries does not establish this application-level contract.",
          "url": "https://docs.rs/sailfish/latest/sailfish/",
          "reviewedOn": "2026-11-11"
        },
        "notifications": {
          "status": "scope",
          "note": "Multi-channel notifications requires a host application or specialized integration beyond the reviewed template/runtime API. Emitting markup or using arbitrary host-language libraries does not establish this application-level contract.",
          "url": "https://docs.rs/sailfish/latest/sailfish/",
          "reviewedOn": "2026-11-11"
        },
        "searchIndex": {
          "status": "scope",
          "note": "Search indexing requires a host application or specialized integration beyond the reviewed template/runtime API. Emitting markup or using arbitrary host-language libraries does not establish this application-level contract.",
          "url": "https://docs.rs/sailfish/latest/sailfish/",
          "reviewedOn": "2026-11-11"
        },
        "fieldEncryption": {
          "status": "scope",
          "note": "Encrypted model fields requires a host application or specialized integration beyond the reviewed template/runtime API. Emitting markup or using arbitrary host-language libraries does not establish this application-level contract.",
          "url": "https://docs.rs/sailfish/latest/sailfish/",
          "reviewedOn": "2026-11-11"
        },
        "httpTests": {
          "status": "scope",
          "note": "HTTP integration tests requires a host application or specialized integration beyond the reviewed template/runtime API. Emitting markup or using arbitrary host-language libraries does not establish this application-level contract.",
          "url": "https://docs.rs/sailfish/latest/sailfish/",
          "reviewedOn": "2026-11-11"
        }
      }
    },
    {
      "id": "solid",
      "label": "SolidJS",
      "kind": "UI library",
      "logo": "logos/solid.svg",
      "color": "#2c4f7c",
      "scope": "Solid v1 UI library with explicitly named Solid Router and Solid Meta companions. SolidStart application features are reviewed in their own row.",
      "reviewedOn": "2026-11-10",
      "updatedOn": "2026-11-11",
      "capabilities": {
        "ssr": {
          "status": "native",
          "note": "renderToString produces synchronous HTML and hydration metadata.",
          "url": "https://docs.solidjs.com/reference/rendering/render-to-string"
        },
        "streaming": {
          "status": "native",
          "note": "renderToStream integrates Suspense fallback boundaries and streams their resolved content; the host must preserve flushing.",
          "url": "https://docs.solidjs.com/reference/rendering/render-to-stream"
        },
        "suspense": {
          "status": "native",
          "note": "renderToStream integrates Suspense fallback boundaries and streams their resolved content; the host must preserve flushing.",
          "url": "https://docs.solidjs.com/reference/rendering/render-to-stream"
        },
        "client": {
          "status": "native",
          "note": "hydrate attaches reactive behavior to SSR HTML; render creates a client application root.",
          "url": "https://docs.solidjs.com/reference/rendering/hydrate"
        },
        "ssg": {
          "status": "scope",
          "note": "These application/server responsibilities are outside the standalone Solid UI library. SolidStart and host libraries are reviewed separately.",
          "url": "https://docs.solidjs.com/solid-start/v2"
        },
        "csr": {
          "status": "native",
          "note": "hydrate attaches reactive behavior to SSR HTML; render creates a client application root.",
          "url": "https://docs.solidjs.com/reference/rendering/hydrate"
        },
        "serverOnly": {
          "status": "scope",
          "note": "These application/server responsibilities are outside the standalone Solid UI library. SolidStart and host libraries are reviewed separately.",
          "url": "https://docs.solidjs.com/solid-start/v2"
        },
        "partialRendering": {
          "status": "scope",
          "note": "These application/server responsibilities are outside the standalone Solid UI library. SolidStart and host libraries are reviewed separately.",
          "url": "https://docs.solidjs.com/solid-start/v2"
        },
        "routing": {
          "status": "official",
          "note": "Solid Router provides nested routes, parameters, navigation/preload helpers, cached queries and query revalidation.",
          "url": "https://docs.solidjs.com/solid-router",
          "label": "Solid Router"
        },
        "layouts": {
          "status": "official",
          "note": "Solid Router provides nested routes, parameters, navigation/preload helpers, cached queries and query revalidation.",
          "url": "https://docs.solidjs.com/solid-router",
          "label": "Solid Router"
        },
        "dynamicRoutes": {
          "status": "official",
          "note": "Solid Router provides nested routes, parameters, navigation/preload helpers, cached queries and query revalidation.",
          "url": "https://docs.solidjs.com/solid-router",
          "label": "Solid Router"
        },
        "parallelRoutes": {
          "status": "undocumented",
          "note": "Not established in the reviewed SolidJS routing guide. External integrations or application code may provide this behavior.",
          "url": "https://docs.solidjs.com/solid-router"
        },
        "interceptedRoutes": {
          "status": "undocumented",
          "note": "Not established in the reviewed SolidJS routing guide. External integrations or application code may provide this behavior.",
          "url": "https://docs.solidjs.com/solid-router"
        },
        "prefetch": {
          "status": "official",
          "note": "Solid Router provides nested routes, parameters, navigation/preload helpers, cached queries and query revalidation.",
          "url": "https://docs.solidjs.com/solid-router",
          "label": "Solid Router"
        },
        "softNavigation": {
          "status": "official",
          "note": "Solid Router's delegated link handling and navigation primitives update route content and browser history without a full reload. Explicit link/reload controls determine which anchors are intercepted.",
          "url": "https://docs.solidjs.com/solid-router/reference/components/router",
          "reviewedOn": "2026-11-11",
          "label": "Solid Router"
        },
        "viewTransitions": {
          "status": "undocumented",
          "note": "The reviewed routing API does not establish this navigation capability. Application code or another package may provide it; this finding is not proof of absence.",
          "url": "https://docs.solidjs.com/solid-router",
          "reviewedOn": "2026-11-11"
        },
        "redirects": {
          "status": "official",
          "note": "Solid Router provides nested routes, parameters, navigation/preload helpers, cached queries and query revalidation.",
          "url": "https://docs.solidjs.com/solid-router",
          "label": "Solid Router"
        },
        "serverData": {
          "status": "native",
          "note": "createResource tracks asynchronous reads with loading/error state and refetch/mutate controls; transport and persistent caching are separate.",
          "url": "https://docs.solidjs.com/reference/basic-reactivity/create-resource"
        },
        "clientData": {
          "status": "native",
          "note": "createResource tracks asynchronous reads with loading/error state and refetch/mutate controls; transport and persistent caching are separate.",
          "url": "https://docs.solidjs.com/reference/basic-reactivity/create-resource"
        },
        "requestDedupe": {
          "status": "official",
          "note": "Solid Router provides nested routes, parameters, navigation/preload helpers, cached queries and query revalidation.",
          "url": "https://docs.solidjs.com/solid-router",
          "label": "Solid Router"
        },
        "persistentCache": {
          "status": "undocumented",
          "note": "Not established in the reviewed SolidJS data guide. External integrations or application code may provide this behavior.",
          "url": "https://docs.solidjs.com/reference/basic-reactivity/create-resource"
        },
        "invalidation": {
          "status": "official",
          "note": "Solid Router provides nested routes, parameters, navigation/preload helpers, cached queries and query revalidation.",
          "url": "https://docs.solidjs.com/solid-router",
          "label": "Solid Router"
        },
        "isr": {
          "status": "undocumented",
          "note": "Not established in the reviewed SolidJS data guide. External integrations or application code may provide this behavior.",
          "url": "https://docs.solidjs.com/reference/basic-reactivity/create-resource"
        },
        "apiRoutes": {
          "status": "scope",
          "note": "These application/server responsibilities are outside the standalone Solid UI library. SolidStart and host libraries are reviewed separately.",
          "url": "https://docs.solidjs.com/solid-start/v2"
        },
        "actions": {
          "status": "scope",
          "note": "These application/server responsibilities are outside the standalone Solid UI library. SolidStart and host libraries are reviewed separately.",
          "url": "https://docs.solidjs.com/solid-start/v2"
        },
        "forms": {
          "status": "undocumented",
          "note": "Not established in the reviewed SolidJS server guide. External integrations or application code may provide this behavior.",
          "url": "https://docs.solidjs.com/solid-router"
        },
        "middleware": {
          "status": "scope",
          "note": "These application/server responsibilities are outside the standalone Solid UI library. SolidStart and host libraries are reviewed separately.",
          "url": "https://docs.solidjs.com/solid-start/v2"
        },
        "cookies": {
          "status": "scope",
          "note": "These application/server responsibilities are outside the standalone Solid UI library. SolidStart and host libraries are reviewed separately.",
          "url": "https://docs.solidjs.com/solid-start/v2"
        },
        "cssModules": {
          "status": "community",
          "note": "The documented Vite/CSS Modules setup supplies local class names; Solid's runtime does not compile CSS itself.",
          "url": "https://docs.solidjs.com/guides/styling-components/css-modules",
          "label": "CSS Modules / Vite"
        },
        "scopedCss": {
          "status": "community",
          "note": "The documented Vite/CSS Modules setup supplies local class names; Solid's runtime does not compile CSS itself.",
          "url": "https://docs.solidjs.com/guides/styling-components/css-modules",
          "label": "CSS Modules / Vite"
        },
        "tailwind": {
          "status": "community",
          "note": "The guide configures the separately installed Tailwind compiler.",
          "url": "https://docs.solidjs.com/guides/styling-components/tailwind",
          "label": "Tailwind"
        },
        "cssInJs": {
          "status": "community",
          "note": "Macaron is a separately installed compile-time CSS-in-JS integration.",
          "url": "https://docs.solidjs.com/guides/styling-components/macaron",
          "label": "Macaron"
        },
        "images": {
          "status": "undocumented",
          "note": "Not established in the reviewed SolidJS assets guide. External integrations or application code may provide this behavior.",
          "url": "https://docs.solidjs.com/guides/styling-components/css-modules"
        },
        "fonts": {
          "status": "undocumented",
          "note": "Not established in the reviewed SolidJS assets guide. External integrations or application code may provide this behavior.",
          "url": "https://docs.solidjs.com/guides/styling-components/css-modules"
        },
        "scripts": {
          "status": "undocumented",
          "note": "Not established in the reviewed SolidJS assets guide. External integrations or application code may provide this behavior.",
          "url": "https://docs.solidjs.com/guides/styling-components/css-modules"
        },
        "staticAssets": {
          "status": "undocumented",
          "note": "Not established in the reviewed SolidJS assets guide. External integrations or application code may provide this behavior.",
          "url": "https://docs.solidjs.com/guides/styling-components/css-modules"
        },
        "metadata": {
          "status": "official",
          "note": "Solid Meta provides reactive Title, Meta and Link components under MetaProvider, including server collection and client navigation updates.",
          "url": "https://docs.solidjs.com/solid-start/v2/building-your-application/head-and-metadata",
          "label": "Solid Meta"
        },
        "dynamicMetadata": {
          "status": "official",
          "note": "Solid Meta provides reactive Title, Meta and Link components under MetaProvider, including server collection and client navigation updates.",
          "url": "https://docs.solidjs.com/solid-start/v2/building-your-application/head-and-metadata",
          "label": "Solid Meta"
        },
        "metadataInheritance": {
          "status": "partial",
          "note": "MetaProvider composes descendant head components. The reviewed guide does not establish a general nested object merge/reset contract for inherited SEO fields.",
          "url": "https://docs.solidjs.com/solid-start/v2/building-your-application/head-and-metadata",
          "label": "Component composition",
          "reviewedOn": "2026-11-10"
        },
        "metadataOverrides": {
          "status": "partial",
          "note": "MetaProvider composes descendant head components. The reviewed guide does not establish a general nested object merge/reset contract for inherited SEO fields.",
          "url": "https://docs.solidjs.com/solid-start/v2/building-your-application/head-and-metadata",
          "label": "Component composition",
          "reviewedOn": "2026-11-10"
        },
        "titleTemplates": {
          "status": "undocumented",
          "note": "Not established in the reviewed SolidJS metadata guide. External integrations or application code may provide this behavior.",
          "url": "https://docs.solidjs.com/solid-meta"
        },
        "socialImages": {
          "status": "undocumented",
          "note": "Not established in the reviewed SolidJS metadata guide. External integrations or application code may provide this behavior.",
          "url": "https://docs.solidjs.com/solid-meta"
        },
        "sitemaps": {
          "status": "undocumented",
          "note": "Not established in the reviewed SolidJS metadata guide. External integrations or application code may provide this behavior.",
          "url": "https://docs.solidjs.com/solid-meta"
        },
        "robots": {
          "status": "undocumented",
          "note": "Not established in the reviewed SolidJS metadata guide. External integrations or application code may provide this behavior.",
          "url": "https://docs.solidjs.com/solid-meta"
        },
        "markdown": {
          "status": "undocumented",
          "note": "Not established in the reviewed SolidJS content guide. External integrations or application code may provide this behavior.",
          "url": "https://docs.solidjs.com/solid-start/v2"
        },
        "collections": {
          "status": "undocumented",
          "note": "Not established in the reviewed SolidJS content guide. External integrations or application code may provide this behavior.",
          "url": "https://docs.solidjs.com/solid-start/v2"
        },
        "draftMode": {
          "status": "undocumented",
          "note": "Not established in the reviewed SolidJS content guide. External integrations or application code may provide this behavior.",
          "url": "https://docs.solidjs.com/solid-start/v2"
        },
        "translations": {
          "status": "community",
          "note": "Solid Primitives supplies reactive dictionaries and translation helpers; application code supplies locale policy.",
          "url": "https://primitives.solidjs.community/package/i18n",
          "label": "Solid Primitives"
        },
        "localeRouting": {
          "status": "undocumented",
          "note": "Not established in the reviewed SolidJS i18n guide. External integrations or application code may provide this behavior.",
          "url": "https://docs.solidjs.com/solid-start/v2"
        },
        "localeFormatting": {
          "status": "undocumented",
          "note": "Not established in the reviewed SolidJS i18n guide. External integrations or application code may provide this behavior.",
          "url": "https://docs.solidjs.com/solid-start/v2"
        },
        "auth": {
          "status": "undocumented",
          "note": "Not established in the reviewed SolidJS security guide. External integrations or application code may provide this behavior.",
          "url": "https://docs.solidjs.com/solid-start/v2"
        },
        "csp": {
          "status": "undocumented",
          "note": "Not established in the reviewed SolidJS security guide. External integrations or application code may provide this behavior.",
          "url": "https://docs.solidjs.com/solid-start/v2"
        },
        "cspNonce": {
          "status": "partial",
          "note": "Solid's server renderers accept a nonce for hydration scripts, but the host must generate it, set the policy and cover other inline sources. A supplied renderer nonce is less than automatic application-wide enforcement.",
          "url": "https://docs.solidjs.com/reference/rendering/render-to-string",
          "reviewedOn": "2026-11-11",
          "label": "Renderer nonce option"
        },
        "csrf": {
          "status": "undocumented",
          "note": "Not established in the reviewed SolidJS security guide. External integrations or application code may provide this behavior.",
          "url": "https://docs.solidjs.com/solid-start/v2"
        },
        "environment": {
          "status": "partial",
          "note": "Build-tool environment conventions determine browser exposure. They do not create a server application boundary on their own.",
          "url": "https://docs.solidjs.com/configuration/environment-variables",
          "label": "Build-tool boundary",
          "reviewedOn": "2026-11-10"
        },
        "types": {
          "status": "native",
          "note": "Solid supplies TypeScript declarations and JSX typing; run the TypeScript compiler separately from bundling.",
          "url": "https://docs.solidjs.com/configuration/typescript"
        },
        "hmr": {
          "status": "undocumented",
          "note": "Not established in the reviewed SolidJS tooling guide. External integrations or application code may provide this behavior.",
          "url": "https://docs.solidjs.com/configuration/typescript"
        },
        "cli": {
          "status": "undocumented",
          "note": "Not established in the reviewed SolidJS tooling guide. External integrations or application code may provide this behavior.",
          "url": "https://docs.solidjs.com/configuration/typescript"
        },
        "bundleAnalysis": {
          "status": "undocumented",
          "note": "Not established in the reviewed SolidJS tooling guide. External integrations or application code may provide this behavior.",
          "url": "https://docs.solidjs.com/configuration/typescript"
        },
        "unitTests": {
          "status": "community",
          "note": "The guide documents Vitest with Solid Testing Library and Playwright for browser workflows; these are external test tools.",
          "url": "https://docs.solidjs.com/guides/testing",
          "label": "Vitest / Playwright"
        },
        "e2eTests": {
          "status": "community",
          "note": "The guide documents Vitest with Solid Testing Library and Playwright for browser workflows; these are external test tools.",
          "url": "https://docs.solidjs.com/guides/testing",
          "label": "Vitest / Playwright"
        },
        "observability": {
          "status": "undocumented",
          "note": "Not established in the reviewed SolidJS testing guide. External integrations or application code may provide this behavior.",
          "url": "https://docs.solidjs.com/guides/testing"
        },
        "errorHandling": {
          "status": "undocumented",
          "note": "Not established in the reviewed SolidJS testing guide. External integrations or application code may provide this behavior.",
          "url": "https://docs.solidjs.com/guides/testing"
        },
        "serverHosting": {
          "status": "scope",
          "note": "These application/server responsibilities are outside the standalone Solid UI library. SolidStart and host libraries are reviewed separately.",
          "url": "https://docs.solidjs.com/solid-start/v2"
        },
        "staticHosting": {
          "status": "partial",
          "note": "A browser build can be served as static files through its build tool. This does not provide request-time SSR or a static page-generation API.",
          "url": "https://docs.solidjs.com/solid-start/v2",
          "label": "Client build",
          "reviewedOn": "2026-11-10"
        },
        "containers": {
          "status": "scope",
          "note": "These application/server responsibilities are outside the standalone Solid UI library. SolidStart and host libraries are reviewed separately.",
          "url": "https://docs.solidjs.com/solid-start/v2"
        },
        "edgeHosting": {
          "status": "scope",
          "note": "These application/server responsibilities are outside the standalone Solid UI library. SolidStart and host libraries are reviewed separately.",
          "url": "https://docs.solidjs.com/solid-start/v2"
        },
        "orm": {
          "status": "scope",
          "note": "These application/server responsibilities are outside the standalone Solid UI library. SolidStart and host libraries are reviewed separately.",
          "url": "https://docs.solidjs.com/solid-start/v2"
        },
        "migrations": {
          "status": "scope",
          "note": "These application/server responsibilities are outside the standalone Solid UI library. SolidStart and host libraries are reviewed separately.",
          "url": "https://docs.solidjs.com/solid-start/v2"
        },
        "transactions": {
          "status": "scope",
          "note": "These application/server responsibilities are outside the standalone Solid UI library. SolidStart and host libraries are reviewed separately.",
          "url": "https://docs.solidjs.com/solid-start/v2"
        },
        "jobs": {
          "status": "scope",
          "note": "These application/server responsibilities are outside the standalone Solid UI library. SolidStart and host libraries are reviewed separately.",
          "url": "https://docs.solidjs.com/solid-start/v2"
        },
        "mail": {
          "status": "scope",
          "note": "These application/server responsibilities are outside the standalone Solid UI library. SolidStart and host libraries are reviewed separately.",
          "url": "https://docs.solidjs.com/solid-start/v2"
        },
        "uploads": {
          "status": "scope",
          "note": "These application/server responsibilities are outside the standalone Solid UI library. SolidStart and host libraries are reviewed separately.",
          "url": "https://docs.solidjs.com/solid-start/v2"
        },
        "realtime": {
          "status": "scope",
          "note": "These application/server responsibilities are outside the standalone Solid UI library. SolidStart and host libraries are reviewed separately.",
          "url": "https://docs.solidjs.com/solid-start/v2"
        },
        "xssEscaping": {
          "status": "native",
          "note": "JSX text interpolation uses text output; innerHTML is a raw-HTML sink. Applications must sanitize untrusted content supplied to innerHTML.",
          "url": "https://docs.solidjs.com/reference/jsx-attributes/innerhtml",
          "reviewedOn": "2026-11-11"
        },
        "htmlSanitization": {
          "status": "undocumented",
          "note": "The linked security API review does not establish the specific html sanitization contract defined here. This is a bounded documentation finding, not proof of absence; generic hooks or application-authored code are not counted as an owned implementation.",
          "url": "https://docs.solidjs.com/solid-start/v2",
          "reviewedOn": "2026-11-11"
        },
        "authorization": {
          "status": "undocumented",
          "note": "The linked security API review does not establish the specific authorization policies contract defined here. This is a bounded documentation finding, not proof of absence; generic hooks or application-authored code are not counted as an owned implementation.",
          "url": "https://docs.solidjs.com/solid-start/v2",
          "reviewedOn": "2026-11-11"
        },
        "rateLimiting": {
          "status": "undocumented",
          "note": "The linked security API review does not establish the specific rate limiting contract defined here. This is a bounded documentation finding, not proof of absence; generic hooks or application-authored code are not counted as an owned implementation.",
          "url": "https://docs.solidjs.com/solid-start/v2",
          "reviewedOn": "2026-11-11"
        },
        "progressiveEnhancement": {
          "status": "scope",
          "note": "Progressive forms requires a host application or specialized integration beyond the reviewed UI API. Emitting markup or using arbitrary host-language libraries does not establish this application-level contract.",
          "url": "https://docs.solidjs.com/solid-router",
          "reviewedOn": "2026-11-11"
        },
        "optimisticUi": {
          "status": "partial",
          "note": "createResource.mutate supports a local optimistic value; application code owns confirmed-state reconciliation, failure rollback and overlapping mutations. This is weaker than an automatic mutation reconciliation contract.",
          "url": "https://docs.solidjs.com/reference/basic-reactivity/create-resource",
          "reviewedOn": "2026-11-11",
          "label": "Resource mutate / app rollback"
        },
        "requestCancellation": {
          "status": "undocumented",
          "note": "The linked data API review does not establish the specific stale request handling contract defined here. This is a bounded documentation finding, not proof of absence; generic hooks or application-authored code are not counted as an owned implementation.",
          "url": "https://docs.solidjs.com/reference/basic-reactivity/create-resource",
          "reviewedOn": "2026-11-11"
        },
        "typedLinks": {
          "status": "undocumented",
          "note": "The linked routing API review does not establish the specific typed links & parameters contract defined here. This is a bounded documentation finding, not proof of absence; generic hooks or application-authored code are not counted as an owned implementation.",
          "url": "https://docs.solidjs.com/solid-router/reference/components/router",
          "reviewedOn": "2026-11-11"
        },
        "searchParams": {
          "status": "undocumented",
          "note": "The linked routing API review does not establish the specific validated url state contract defined here. This is a bounded documentation finding, not proof of absence; generic hooks or application-authored code are not counted as an owned implementation.",
          "url": "https://docs.solidjs.com/solid-router/reference/components/router",
          "reviewedOn": "2026-11-11"
        },
        "stateRestoration": {
          "status": "undocumented",
          "note": "The linked routing API review does not establish the specific navigation state retention contract defined here. This is a bounded documentation finding, not proof of absence; generic hooks or application-authored code are not counted as an owned implementation.",
          "url": "https://docs.solidjs.com/solid-router/reference/components/router",
          "reviewedOn": "2026-11-11"
        },
        "scrollRestoration": {
          "status": "undocumented",
          "note": "The linked routing API review does not establish the specific scroll restoration contract defined here. This is a bounded documentation finding, not proof of absence; generic hooks or application-authored code are not counted as an owned implementation.",
          "url": "https://docs.solidjs.com/solid-router/reference/components/router",
          "reviewedOn": "2026-11-11"
        },
        "navigationBlocking": {
          "status": "undocumented",
          "note": "The linked routing API review does not establish the specific unsaved-change guards contract defined here. This is a bounded documentation finding, not proof of absence; generic hooks or application-authored code are not counted as an owned implementation.",
          "url": "https://docs.solidjs.com/solid-router/reference/components/router",
          "reviewedOn": "2026-11-11"
        },
        "navigationAccessibility": {
          "status": "undocumented",
          "note": "The linked client rendering API review does not establish the specific accessible navigation contract defined here. This is a bounded documentation finding, not proof of absence; generic hooks or application-authored code are not counted as an owned implementation.",
          "url": "https://docs.solidjs.com/reference/rendering/hydrate",
          "reviewedOn": "2026-11-11"
        },
        "a11yChecks": {
          "status": "undocumented",
          "note": "The linked client rendering API review does not establish the specific accessibility checks contract defined here. This is a bounded documentation finding, not proof of absence; generic hooks or application-authored code are not counted as an owned implementation.",
          "url": "https://docs.solidjs.com/reference/rendering/hydrate",
          "reviewedOn": "2026-11-11"
        },
        "lazyActivation": {
          "status": "undocumented",
          "note": "The linked rendering API review does not establish the specific deferred activation contract defined here. This is a bounded documentation finding, not proof of absence; generic hooks or application-authored code are not counted as an owned implementation.",
          "url": "https://docs.solidjs.com/reference/rendering/hydrate",
          "reviewedOn": "2026-11-11"
        },
        "codeSplitting": {
          "status": "undocumented",
          "note": "The linked rendering API review does not establish the specific route / island splitting contract defined here. This is a bounded documentation finding, not proof of absence; generic hooks or application-authored code are not counted as an owned implementation.",
          "url": "https://docs.solidjs.com/reference/rendering/hydrate",
          "reviewedOn": "2026-11-11"
        },
        "offline": {
          "status": "undocumented",
          "note": "The linked deployment API review does not establish the specific offline integration contract defined here. This is a bounded documentation finding, not proof of absence; generic hooks or application-authored code are not counted as an owned implementation.",
          "url": "https://docs.solidjs.com/solid-start/v2",
          "reviewedOn": "2026-11-11"
        },
        "scheduling": {
          "status": "scope",
          "note": "Scheduled tasks requires a host application or specialized integration beyond the reviewed UI API. Emitting markup or using arbitrary host-language libraries does not establish this application-level contract.",
          "url": "https://docs.solidjs.com/solid-start/v2",
          "reviewedOn": "2026-11-11"
        },
        "notifications": {
          "status": "scope",
          "note": "Multi-channel notifications requires a host application or specialized integration beyond the reviewed UI API. Emitting markup or using arbitrary host-language libraries does not establish this application-level contract.",
          "url": "https://docs.solidjs.com/solid-start/v2",
          "reviewedOn": "2026-11-11"
        },
        "searchIndex": {
          "status": "scope",
          "note": "Search indexing requires a host application or specialized integration beyond the reviewed UI API. Emitting markup or using arbitrary host-language libraries does not establish this application-level contract.",
          "url": "https://docs.solidjs.com/solid-start/v2",
          "reviewedOn": "2026-11-11"
        },
        "fieldEncryption": {
          "status": "scope",
          "note": "Encrypted model fields requires a host application or specialized integration beyond the reviewed UI API. Emitting markup or using arbitrary host-language libraries does not establish this application-level contract.",
          "url": "https://docs.solidjs.com/solid-start/v2",
          "reviewedOn": "2026-11-11"
        },
        "httpTests": {
          "status": "undocumented",
          "note": "The linked testing API review does not establish the specific http integration tests contract defined here. This is a bounded documentation finding, not proof of absence; generic hooks or application-authored code are not counted as an owned implementation.",
          "url": "https://docs.solidjs.com/guides/testing",
          "reviewedOn": "2026-11-11"
        }
      }
    },
    {
      "id": "solidstart",
      "label": "SolidStart",
      "kind": "Application framework",
      "logo": "logos/solidstart.svg",
      "color": "#2c4f7c",
      "scope": "SolidStart v2 with Solid v1, Solid Router v1 and Vite v8. Nitro and other deployment plugins are named separately.",
      "reviewedOn": "2026-11-10",
      "updatedOn": "2026-11-11",
      "capabilities": {
        "ssr": {
          "status": "native",
          "note": "renderToString produces synchronous HTML and hydration metadata.",
          "url": "https://docs.solidjs.com/reference/rendering/render-to-string"
        },
        "streaming": {
          "status": "native",
          "note": "renderToStream integrates Suspense fallback boundaries and streams their resolved content; the host must preserve flushing.",
          "url": "https://docs.solidjs.com/reference/rendering/render-to-stream"
        },
        "suspense": {
          "status": "native",
          "note": "renderToStream integrates Suspense fallback boundaries and streams their resolved content; the host must preserve flushing.",
          "url": "https://docs.solidjs.com/reference/rendering/render-to-stream"
        },
        "client": {
          "status": "native",
          "note": "hydrate attaches reactive behavior to SSR HTML; render creates a client application root.",
          "url": "https://docs.solidjs.com/reference/rendering/hydrate"
        },
        "ssg": {
          "status": "community",
          "note": "The documented Nitro plugin prerenders listed or crawled routes into static output. Server functions still require a server.",
          "url": "https://docs.solidjs.com/solid-start/v2/building-your-application/route-prerendering",
          "label": "Nitro prerendering"
        },
        "csr": {
          "status": "native",
          "note": "hydrate attaches reactive behavior to SSR HTML; render creates a client application root.",
          "url": "https://docs.solidjs.com/reference/rendering/hydrate"
        },
        "serverOnly": {
          "status": "undocumented",
          "note": "The reviewed API excludes server modules or function bodies from browser builds, but does not establish server-only UI components whose implementation is omitted from hydration bundles. These are different capabilities.",
          "url": "https://docs.solidjs.com/solid-start/v2/building-your-application/data-fetching",
          "label": "Server modules / functions only"
        },
        "partialRendering": {
          "status": "undocumented",
          "note": "Not established in the reviewed SolidStart rendering guide. External integrations or application code may provide this behavior.",
          "url": "https://docs.solidjs.com/solid-start/v2/building-your-application/data-fetching"
        },
        "routing": {
          "status": "native",
          "note": "FileRoutes maps page files and dynamic segments; Solid Router supplies nested layout/navigation behavior. SolidStart v2 also supports a TanStack Router integration.",
          "url": "https://docs.solidjs.com/solid-start/v2/building-your-application/routing"
        },
        "layouts": {
          "status": "native",
          "note": "FileRoutes maps page files and dynamic segments; Solid Router supplies nested layout/navigation behavior. SolidStart v2 also supports a TanStack Router integration.",
          "url": "https://docs.solidjs.com/solid-start/v2/building-your-application/routing"
        },
        "dynamicRoutes": {
          "status": "native",
          "note": "FileRoutes maps page files and dynamic segments; Solid Router supplies nested layout/navigation behavior. SolidStart v2 also supports a TanStack Router integration.",
          "url": "https://docs.solidjs.com/solid-start/v2/building-your-application/routing"
        },
        "parallelRoutes": {
          "status": "undocumented",
          "note": "Not established in the reviewed SolidStart routing guide. External integrations or application code may provide this behavior.",
          "url": "https://docs.solidjs.com/solid-start/v2/building-your-application/routing"
        },
        "interceptedRoutes": {
          "status": "undocumented",
          "note": "Not established in the reviewed SolidStart routing guide. External integrations or application code may provide this behavior.",
          "url": "https://docs.solidjs.com/solid-start/v2/building-your-application/routing"
        },
        "prefetch": {
          "status": "native",
          "note": "FileRoutes maps page files and dynamic segments; Solid Router supplies nested layout/navigation behavior. SolidStart v2 also supports a TanStack Router integration.",
          "url": "https://docs.solidjs.com/solid-start/v2/building-your-application/routing"
        },
        "softNavigation": {
          "status": "native",
          "note": "Solid Router's delegated link handling and navigation primitives update route content and browser history without a full reload. Explicit link/reload controls determine which anchors are intercepted.",
          "url": "https://docs.solidjs.com/solid-router/reference/components/router",
          "reviewedOn": "2026-11-11",
          "label": "Solid Router"
        },
        "viewTransitions": {
          "status": "undocumented",
          "note": "The reviewed routing API does not establish this navigation capability. Application code or another package may provide it; this finding is not proof of absence.",
          "url": "https://docs.solidjs.com/solid-start/v2/building-your-application/routing",
          "reviewedOn": "2026-11-11"
        },
        "redirects": {
          "status": "native",
          "note": "FileRoutes maps page files and dynamic segments; Solid Router supplies nested layout/navigation behavior. SolidStart v2 also supports a TanStack Router integration.",
          "url": "https://docs.solidjs.com/solid-start/v2/building-your-application/routing"
        },
        "serverData": {
          "status": "official",
          "note": "Solid Router query/createAsync loads cached data and preloads route reads; use server keeps the body on the server.",
          "url": "https://docs.solidjs.com/solid-start/v2/building-your-application/data-fetching",
          "label": "Solid Router queries"
        },
        "clientData": {
          "status": "official",
          "note": "Solid Router query/createAsync loads cached data and preloads route reads; use server keeps the body on the server.",
          "url": "https://docs.solidjs.com/solid-start/v2/building-your-application/data-fetching",
          "label": "Solid Router queries"
        },
        "requestDedupe": {
          "status": "official",
          "note": "Solid Router query/createAsync loads cached data and preloads route reads; use server keeps the body on the server.",
          "url": "https://docs.solidjs.com/solid-start/v2/building-your-application/data-fetching",
          "label": "Solid Router queries"
        },
        "persistentCache": {
          "status": "undocumented",
          "note": "Not established in the reviewed SolidStart data guide. External integrations or application code may provide this behavior.",
          "url": "https://docs.solidjs.com/solid-start/v2/building-your-application/data-fetching"
        },
        "invalidation": {
          "status": "official",
          "note": "Solid Router actions revalidate queries and expose submission state.",
          "url": "https://docs.solidjs.com/solid-start/v2/building-your-application/data-mutation",
          "label": "Solid Router actions"
        },
        "isr": {
          "status": "undocumented",
          "note": "Not established in the reviewed SolidStart data guide. External integrations or application code may provide this behavior.",
          "url": "https://docs.solidjs.com/solid-start/v2/building-your-application/data-fetching"
        },
        "apiRoutes": {
          "status": "native",
          "note": "Route files export HTTP method handlers returning Responses, with typed request/route context.",
          "url": "https://docs.solidjs.com/solid-start/v2/building-your-application/api-routes"
        },
        "actions": {
          "status": "native",
          "note": "The use server directive extracts server functions and provides a browser-callable transport; authorization is still checked inside protected functions.",
          "url": "https://docs.solidjs.com/solid-start/v2/building-your-application/data-fetching"
        },
        "forms": {
          "status": "official",
          "note": "Router actions accept form data and expose pending/error state. Validation is authored in the action or supplied by a validation library.",
          "url": "https://docs.solidjs.com/solid-start/v2/building-your-application/data-mutation",
          "label": "Solid Router actions",
          "reviewedOn": "2026-11-11",
          "assessment": {
            "summary": "Form transport, validation, pending feedback and optimistic state are separate behaviors; the progressive-forms and optimistic-updates rows review the latter contracts explicitly.",
            "strengths": [
              "Router actions accept form data and expose pending/error state. Validation is authored in the action or supplied by a validation library."
            ],
            "tradeoffs": [
              "Do not infer a no-JavaScript submission path, automatic validation, accessible field errors or rollback merely from the ability to receive FormData."
            ]
          }
        },
        "middleware": {
          "status": "native",
          "note": "Configured H3 middleware wraps request handling and exposes request-scoped locals.",
          "url": "https://docs.solidjs.com/solid-start/v2/advanced/middleware"
        },
        "cookies": {
          "status": "native",
          "note": "SolidStart exposes H3 cookie helpers and encrypted cookie-session operations; secrets and cookie flags require configuration.",
          "url": "https://docs.solidjs.com/solid-start/v2/advanced/session"
        },
        "cssModules": {
          "status": "native",
          "note": "Vite integration supports module.css files and scoped imported class names, including SSR CSS deduplication.",
          "url": "https://docs.solidjs.com/solid-start/v2/building-your-application/css-and-styling"
        },
        "scopedCss": {
          "status": "native",
          "note": "Vite integration supports module.css files and scoped imported class names, including SSR CSS deduplication.",
          "url": "https://docs.solidjs.com/solid-start/v2/building-your-application/css-and-styling"
        },
        "tailwind": {
          "status": "community",
          "note": "The styling guide integrates separate Tailwind and CSS-in-JS packages; they are not SolidStart-owned compilers.",
          "url": "https://docs.solidjs.com/solid-start/v2/building-your-application/css-and-styling"
        },
        "cssInJs": {
          "status": "community",
          "note": "The styling guide integrates separate Tailwind and CSS-in-JS packages; they are not SolidStart-owned compilers.",
          "url": "https://docs.solidjs.com/solid-start/v2/building-your-application/css-and-styling"
        },
        "images": {
          "status": "undocumented",
          "note": "Not established in the reviewed SolidStart assets guide. External integrations or application code may provide this behavior.",
          "url": "https://docs.solidjs.com/solid-start/v2/building-your-application/static-assets"
        },
        "fonts": {
          "status": "undocumented",
          "note": "Not established in the reviewed SolidStart assets guide. External integrations or application code may provide this behavior.",
          "url": "https://docs.solidjs.com/solid-start/v2/building-your-application/static-assets"
        },
        "scripts": {
          "status": "undocumented",
          "note": "Not established in the reviewed SolidStart assets guide. External integrations or application code may provide this behavior.",
          "url": "https://docs.solidjs.com/solid-start/v2/building-your-application/static-assets"
        },
        "staticAssets": {
          "status": "native",
          "note": "Public files retain stable URLs; imported assets receive Vite-generated hashed filenames.",
          "url": "https://docs.solidjs.com/solid-start/v2/building-your-application/static-assets"
        },
        "metadata": {
          "status": "official",
          "note": "Solid Meta provides reactive Title, Meta and Link components under MetaProvider, including server collection and client navigation updates.",
          "url": "https://docs.solidjs.com/solid-start/v2/building-your-application/head-and-metadata",
          "label": "Solid Meta"
        },
        "dynamicMetadata": {
          "status": "official",
          "note": "Solid Meta provides reactive Title, Meta and Link components under MetaProvider, including server collection and client navigation updates.",
          "url": "https://docs.solidjs.com/solid-start/v2/building-your-application/head-and-metadata",
          "label": "Solid Meta"
        },
        "metadataInheritance": {
          "status": "partial",
          "note": "MetaProvider composes descendant head components. The reviewed guide does not establish a general nested object merge/reset contract for inherited SEO fields.",
          "url": "https://docs.solidjs.com/solid-start/v2/building-your-application/head-and-metadata",
          "label": "Component composition",
          "reviewedOn": "2026-11-10"
        },
        "metadataOverrides": {
          "status": "partial",
          "note": "MetaProvider composes descendant head components. The reviewed guide does not establish a general nested object merge/reset contract for inherited SEO fields.",
          "url": "https://docs.solidjs.com/solid-start/v2/building-your-application/head-and-metadata",
          "label": "Component composition",
          "reviewedOn": "2026-11-10"
        },
        "titleTemplates": {
          "status": "undocumented",
          "note": "Not established in the reviewed SolidStart metadata guide. External integrations or application code may provide this behavior.",
          "url": "https://docs.solidjs.com/solid-start/v2/building-your-application/head-and-metadata"
        },
        "socialImages": {
          "status": "undocumented",
          "note": "Not established in the reviewed SolidStart metadata guide. External integrations or application code may provide this behavior.",
          "url": "https://docs.solidjs.com/solid-start/v2/building-your-application/head-and-metadata"
        },
        "sitemaps": {
          "status": "undocumented",
          "note": "Not established in the reviewed SolidStart metadata guide. External integrations or application code may provide this behavior.",
          "url": "https://docs.solidjs.com/solid-start/v2/building-your-application/head-and-metadata"
        },
        "robots": {
          "status": "undocumented",
          "note": "Not established in the reviewed SolidStart metadata guide. External integrations or application code may provide this behavior.",
          "url": "https://docs.solidjs.com/solid-start/v2/building-your-application/head-and-metadata"
        },
        "markdown": {
          "status": "undocumented",
          "note": "Not established in the reviewed SolidStart content guide. External integrations or application code may provide this behavior.",
          "url": "https://docs.solidjs.com/solid-start/v2/building-your-application/routing"
        },
        "collections": {
          "status": "undocumented",
          "note": "Not established in the reviewed SolidStart content guide. External integrations or application code may provide this behavior.",
          "url": "https://docs.solidjs.com/solid-start/v2/building-your-application/routing"
        },
        "draftMode": {
          "status": "undocumented",
          "note": "Not established in the reviewed SolidStart content guide. External integrations or application code may provide this behavior.",
          "url": "https://docs.solidjs.com/solid-start/v2/building-your-application/routing"
        },
        "translations": {
          "status": "community",
          "note": "Solid Primitives supplies reactive dictionaries and translation helpers; application code supplies locale policy.",
          "url": "https://primitives.solidjs.community/package/i18n",
          "label": "Solid Primitives"
        },
        "localeRouting": {
          "status": "undocumented",
          "note": "Not established in the reviewed SolidStart i18n guide. External integrations or application code may provide this behavior.",
          "url": "https://docs.solidjs.com/solid-start/v2/building-your-application/routing"
        },
        "localeFormatting": {
          "status": "undocumented",
          "note": "Not established in the reviewed SolidStart i18n guide. External integrations or application code may provide this behavior.",
          "url": "https://docs.solidjs.com/solid-start/v2/building-your-application/routing"
        },
        "auth": {
          "status": "partial",
          "note": "The guide implements application-owned session/user checks in queries and server functions. A bundled account/provider service is not established.",
          "url": "https://docs.solidjs.com/solid-start/v2/advanced/auth",
          "label": "Session recipe",
          "reviewedOn": "2026-11-10"
        },
        "csp": {
          "status": "partial",
          "note": "The guide shows app-authored nonce/CSP middleware and CSRF checks. These must be installed and configured; the recipe is not automatic global enforcement.",
          "url": "https://docs.solidjs.com/solid-start/v2/guides/security",
          "label": "Security middleware recipe",
          "reviewedOn": "2026-11-10"
        },
        "cspNonce": {
          "status": "native",
          "note": "The official security guide supplies a middleware recipe for generating a random nonce and matching HTTP policy. createHandler's nonce option coordinates generated renderer scripts. Apps own middleware installation and policy coverage; v2's JSON serialization avoids unsafe-eval.",
          "url": "https://docs.solidjs.com/solid-start/v2/guides/security",
          "reviewedOn": "2026-11-11",
          "label": "Configured createHandler nonce"
        },
        "csrf": {
          "status": "partial",
          "note": "The guide shows app-authored nonce/CSP middleware and CSRF checks. These must be installed and configured; the recipe is not automatic global enforcement.",
          "url": "https://docs.solidjs.com/solid-start/v2/guides/security",
          "label": "Security middleware recipe",
          "reviewedOn": "2026-11-10"
        },
        "environment": {
          "status": "native",
          "note": "Server functions can read private runtime session secrets. Keep those values in server-only code and out of returned props/results.",
          "url": "https://docs.solidjs.com/solid-start/v2/advanced/session"
        },
        "types": {
          "status": "native",
          "note": "SolidStart's TypeScript/Vite setup supplies typed application APIs and development hot updates.",
          "url": "https://docs.solidjs.com/solid-start/v2/building-your-application/css-and-styling"
        },
        "hmr": {
          "status": "native",
          "note": "SolidStart's TypeScript/Vite setup supplies typed application APIs and development hot updates.",
          "url": "https://docs.solidjs.com/solid-start/v2/building-your-application/css-and-styling"
        },
        "cli": {
          "status": "official",
          "note": "The Solid scaffolding tool creates SolidStart templates; project scripts run Vite development and production builds.",
          "url": "https://docs.solidjs.com/solid-start/v2/getting-started",
          "label": "Create Solid"
        },
        "bundleAnalysis": {
          "status": "undocumented",
          "note": "Not established in the reviewed SolidStart tooling guide. External integrations or application code may provide this behavior.",
          "url": "https://docs.solidjs.com/solid-start/v2/guides/deployment-plugins"
        },
        "unitTests": {
          "status": "community",
          "note": "The guide documents Vitest with Solid Testing Library and Playwright for browser workflows; these are external test tools.",
          "url": "https://docs.solidjs.com/guides/testing",
          "label": "Vitest / Playwright"
        },
        "e2eTests": {
          "status": "community",
          "note": "The guide documents Vitest with Solid Testing Library and Playwright for browser workflows; these are external test tools.",
          "url": "https://docs.solidjs.com/guides/testing",
          "label": "Vitest / Playwright"
        },
        "observability": {
          "status": "undocumented",
          "note": "Not established in the reviewed SolidStart testing guide. External integrations or application code may provide this behavior.",
          "url": "https://docs.solidjs.com/solid-start/v2/guides/deployment-plugins"
        },
        "errorHandling": {
          "status": "undocumented",
          "note": "Not established in the reviewed SolidStart testing guide. External integrations or application code may provide this behavior.",
          "url": "https://docs.solidjs.com/solid-start/v2/guides/deployment-plugins"
        },
        "serverHosting": {
          "status": "community",
          "note": "Vite deployment plugins such as Nitro, Cloudflare and Netlify determine runtime output. Target compatibility depends on the plugin and server dependencies.",
          "url": "https://docs.solidjs.com/solid-start/v2/guides/deployment-plugins",
          "label": "Deployment plugins"
        },
        "staticHosting": {
          "status": "community",
          "note": "The documented Nitro plugin prerenders listed or crawled routes into static output. Server functions still require a server.",
          "url": "https://docs.solidjs.com/solid-start/v2/building-your-application/route-prerendering",
          "label": "Nitro prerendering"
        },
        "containers": {
          "status": "community",
          "note": "Vite deployment plugins such as Nitro, Cloudflare and Netlify determine runtime output. Target compatibility depends on the plugin and server dependencies.",
          "url": "https://docs.solidjs.com/solid-start/v2/guides/deployment-plugins",
          "label": "Deployment plugins"
        },
        "edgeHosting": {
          "status": "community",
          "note": "Vite deployment plugins such as Nitro, Cloudflare and Netlify determine runtime output. Target compatibility depends on the plugin and server dependencies.",
          "url": "https://docs.solidjs.com/solid-start/v2/guides/deployment-plugins",
          "label": "Deployment plugins"
        },
        "orm": {
          "status": "undocumented",
          "note": "The reviewed SolidStart server/data guides do not establish an owned orm / query builder API. An application can integrate a separate provider or library; this finding does not mean that integration is impossible.",
          "url": "https://docs.solidjs.com/solid-start/v2/building-your-application/data-fetching"
        },
        "migrations": {
          "status": "undocumented",
          "note": "The reviewed SolidStart server/data guides do not establish an owned schema migrations API. An application can integrate a separate provider or library; this finding does not mean that integration is impossible.",
          "url": "https://docs.solidjs.com/solid-start/v2/building-your-application/data-fetching"
        },
        "transactions": {
          "status": "undocumented",
          "note": "The reviewed SolidStart server/data guides do not establish an owned transactions API. An application can integrate a separate provider or library; this finding does not mean that integration is impossible.",
          "url": "https://docs.solidjs.com/solid-start/v2/building-your-application/data-fetching"
        },
        "jobs": {
          "status": "partial",
          "note": "Nitro tasks can run or be scheduled outside request handling. The documented task runner is not a durable queue with retries/acknowledgement.",
          "url": "https://docs.solidjs.com/solid-start/v2/guides/background-tasks",
          "label": "Nitro tasks",
          "reviewedOn": "2026-11-10"
        },
        "mail": {
          "status": "undocumented",
          "note": "The reviewed SolidStart server/data guides do not establish an owned email API. An application can integrate a separate provider or library; this finding does not mean that integration is impossible.",
          "url": "https://docs.solidjs.com/solid-start/v2/guides/background-tasks"
        },
        "uploads": {
          "status": "undocumented",
          "note": "The reviewed SolidStart server/data guides do not establish an owned file uploads & storage API. An application can integrate a separate provider or library; this finding does not mean that integration is impossible.",
          "url": "https://docs.solidjs.com/solid-start/v2/guides/background-tasks"
        },
        "realtime": {
          "status": "community",
          "note": "The documented Nitro v3 plugin enables cross-platform WebSocket handlers. Applications own authorization and pub/sub topology.",
          "url": "https://docs.solidjs.com/solid-start/v2/advanced/websocket",
          "label": "Nitro WebSockets"
        },
        "xssEscaping": {
          "status": "native",
          "note": "Its integrated UI renderer supplies this policy. JSX text interpolation uses text output; innerHTML is a raw-HTML sink. Applications must sanitize untrusted content supplied to innerHTML.",
          "url": "https://docs.solidjs.com/reference/jsx-attributes/innerhtml",
          "reviewedOn": "2026-11-11"
        },
        "htmlSanitization": {
          "status": "undocumented",
          "note": "The linked security API review does not establish the specific html sanitization contract defined here. This is a bounded documentation finding, not proof of absence; generic hooks or application-authored code are not counted as an owned implementation.",
          "url": "https://docs.solidjs.com/solid-start/v2/guides/security",
          "reviewedOn": "2026-11-11"
        },
        "authorization": {
          "status": "undocumented",
          "note": "The linked security API review does not establish the specific authorization policies contract defined here. This is a bounded documentation finding, not proof of absence; generic hooks or application-authored code are not counted as an owned implementation.",
          "url": "https://docs.solidjs.com/solid-start/v2/guides/security",
          "reviewedOn": "2026-11-11"
        },
        "rateLimiting": {
          "status": "undocumented",
          "note": "The linked security API review does not establish the specific rate limiting contract defined here. This is a bounded documentation finding, not proof of absence; generic hooks or application-authored code are not counted as an owned implementation.",
          "url": "https://docs.solidjs.com/solid-start/v2/guides/security",
          "reviewedOn": "2026-11-11"
        },
        "progressiveEnhancement": {
          "status": "undocumented",
          "note": "The linked server API review does not establish the specific progressive forms contract defined here. This is a bounded documentation finding, not proof of absence; generic hooks or application-authored code are not counted as an owned implementation.",
          "url": "https://docs.solidjs.com/solid-start/v2/building-your-application/data-mutation",
          "reviewedOn": "2026-11-11"
        },
        "optimisticUi": {
          "status": "partial",
          "note": "Solid resource mutation/submission APIs let the application display optimistic data, but confirmation, rollback and overlapping mutations need application logic.",
          "url": "https://docs.solidjs.com/solid-router/concepts/actions",
          "reviewedOn": "2026-11-11",
          "label": "Application reconciliation"
        },
        "requestCancellation": {
          "status": "undocumented",
          "note": "The linked data API review does not establish the specific stale request handling contract defined here. This is a bounded documentation finding, not proof of absence; generic hooks or application-authored code are not counted as an owned implementation.",
          "url": "https://docs.solidjs.com/solid-start/v2/building-your-application/data-fetching",
          "reviewedOn": "2026-11-11"
        },
        "typedLinks": {
          "status": "undocumented",
          "note": "The linked routing API review does not establish the specific typed links & parameters contract defined here. This is a bounded documentation finding, not proof of absence; generic hooks or application-authored code are not counted as an owned implementation.",
          "url": "https://docs.solidjs.com/solid-router/reference/components/router",
          "reviewedOn": "2026-11-11"
        },
        "searchParams": {
          "status": "undocumented",
          "note": "The linked routing API review does not establish the specific validated url state contract defined here. This is a bounded documentation finding, not proof of absence; generic hooks or application-authored code are not counted as an owned implementation.",
          "url": "https://docs.solidjs.com/solid-router/reference/components/router",
          "reviewedOn": "2026-11-11"
        },
        "stateRestoration": {
          "status": "undocumented",
          "note": "The linked routing API review does not establish the specific navigation state retention contract defined here. This is a bounded documentation finding, not proof of absence; generic hooks or application-authored code are not counted as an owned implementation.",
          "url": "https://docs.solidjs.com/solid-router/reference/components/router",
          "reviewedOn": "2026-11-11"
        },
        "scrollRestoration": {
          "status": "undocumented",
          "note": "The linked routing API review does not establish the specific scroll restoration contract defined here. This is a bounded documentation finding, not proof of absence; generic hooks or application-authored code are not counted as an owned implementation.",
          "url": "https://docs.solidjs.com/solid-router/reference/components/router",
          "reviewedOn": "2026-11-11"
        },
        "navigationBlocking": {
          "status": "undocumented",
          "note": "The linked routing API review does not establish the specific unsaved-change guards contract defined here. This is a bounded documentation finding, not proof of absence; generic hooks or application-authored code are not counted as an owned implementation.",
          "url": "https://docs.solidjs.com/solid-router/reference/components/router",
          "reviewedOn": "2026-11-11"
        },
        "navigationAccessibility": {
          "status": "undocumented",
          "note": "The linked client rendering API review does not establish the specific accessible navigation contract defined here. This is a bounded documentation finding, not proof of absence; generic hooks or application-authored code are not counted as an owned implementation.",
          "url": "https://docs.solidjs.com/reference/rendering/hydrate",
          "reviewedOn": "2026-11-11"
        },
        "a11yChecks": {
          "status": "undocumented",
          "note": "The linked client rendering API review does not establish the specific accessibility checks contract defined here. This is a bounded documentation finding, not proof of absence; generic hooks or application-authored code are not counted as an owned implementation.",
          "url": "https://docs.solidjs.com/reference/rendering/hydrate",
          "reviewedOn": "2026-11-11"
        },
        "lazyActivation": {
          "status": "undocumented",
          "note": "The linked rendering API review does not establish the specific deferred activation contract defined here. This is a bounded documentation finding, not proof of absence; generic hooks or application-authored code are not counted as an owned implementation.",
          "url": "https://docs.solidjs.com/reference/rendering/hydrate",
          "reviewedOn": "2026-11-11"
        },
        "codeSplitting": {
          "status": "native",
          "note": "SolidStart's file router loads route components through lazy imports, and its build emits route/client chunks plus shared dependencies. This is an integrated route boundary, not just the availability of JavaScript import().",
          "url": "https://github.com/solidjs/solid-start/blob/903f0769db6538be9dc7985f0a176d2d415ad16f/packages/start/src/router.tsx",
          "reviewedOn": "2026-11-11",
          "label": "File route chunks"
        },
        "offline": {
          "status": "undocumented",
          "note": "The linked deployment API review does not establish the specific offline integration contract defined here. This is a bounded documentation finding, not proof of absence; generic hooks or application-authored code are not counted as an owned implementation.",
          "url": "https://docs.solidjs.com/solid-start/v2/guides/deployment-plugins",
          "reviewedOn": "2026-11-11"
        },
        "scheduling": {
          "status": "undocumented",
          "note": "The linked backend API review does not establish the specific scheduled tasks contract defined here. This is a bounded documentation finding, not proof of absence; generic hooks or application-authored code are not counted as an owned implementation.",
          "url": "https://docs.solidjs.com/solid-start/v2/guides/background-tasks",
          "reviewedOn": "2026-11-11"
        },
        "notifications": {
          "status": "undocumented",
          "note": "The linked backend API review does not establish the specific multi-channel notifications contract defined here. This is a bounded documentation finding, not proof of absence; generic hooks or application-authored code are not counted as an owned implementation.",
          "url": "https://docs.solidjs.com/solid-start/v2/guides/background-tasks",
          "reviewedOn": "2026-11-11"
        },
        "searchIndex": {
          "status": "undocumented",
          "note": "The linked backend API review does not establish the specific search indexing contract defined here. This is a bounded documentation finding, not proof of absence; generic hooks or application-authored code are not counted as an owned implementation.",
          "url": "https://docs.solidjs.com/solid-start/v2/guides/background-tasks",
          "reviewedOn": "2026-11-11"
        },
        "fieldEncryption": {
          "status": "undocumented",
          "note": "The linked database API review does not establish the specific encrypted model fields contract defined here. This is a bounded documentation finding, not proof of absence; generic hooks or application-authored code are not counted as an owned implementation.",
          "url": "https://docs.solidjs.com/solid-start/v2/building-your-application/data-fetching",
          "reviewedOn": "2026-11-11"
        },
        "httpTests": {
          "status": "undocumented",
          "note": "The linked testing API review does not establish the specific http integration tests contract defined here. This is a bounded documentation finding, not proof of absence; generic hooks or application-authored code are not counted as an owned implementation.",
          "url": "https://docs.solidjs.com/guides/testing",
          "reviewedOn": "2026-11-11"
        }
      }
    },
    {
      "id": "svelte",
      "label": "Svelte",
      "kind": "UI framework",
      "logo": "logos/svelte.svg",
      "color": "#ff3e00",
      "scope": "Svelte 5 documentation, with SvelteKit functionality shown as an official companion.",
      "reviewedOn": "2026-11-10",
      "updatedOn": "2026-11-11",
      "capabilities": {
        "ssr": {
          "status": "native",
          "note": "svelte/server render produces HTML; async rendering requires the documented async configuration.",
          "url": "https://svelte.dev/docs/svelte/svelte-server"
        },
        "streaming": {
          "status": "partial",
          "note": "SvelteKit streams promises as data for client resolution. This source does not establish resolved-HTML streaming equivalent to React or Marko.",
          "url": "https://svelte.dev/docs/kit/load#Streaming-with-promises",
          "label": "Kit data stream",
          "reviewedOn": "2026-11-10"
        },
        "suspense": {
          "status": "partial",
          "note": "await expressions with svelte:boundary pending UI require experimental.async in Svelte 5.",
          "url": "https://svelte.dev/docs/svelte/await-expressions",
          "label": "Experimental async",
          "reviewedOn": "2026-11-10"
        },
        "client": {
          "status": "native",
          "note": "Svelte supplies hydration for server-rendered components.",
          "url": "https://svelte.dev/docs/svelte/imperative-component-api#hydrate",
          "label": "Hydration"
        },
        "ssg": {
          "status": "official",
          "note": "SvelteKit's adapter-static prerenders the application for static hosting.",
          "url": "https://svelte.dev/docs/kit/adapter-static",
          "label": "SvelteKit"
        },
        "csr": {
          "status": "native",
          "note": "mount creates a component in the browser; hydrate activates server-rendered output.",
          "url": "https://svelte.dev/docs/svelte/imperative-component-api"
        },
        "serverOnly": {
          "status": "undocumented",
          "note": "The reviewed API excludes server modules or function bodies from browser builds, but does not establish server-only UI components whose implementation is omitted from hydration bundles. These are different capabilities.",
          "url": "https://svelte.dev/docs/kit/server-only-modules",
          "label": "Server modules / functions only"
        },
        "partialRendering": {
          "status": "undocumented",
          "note": "Prerender/SSR/CSR options apply to pages; the reviewed API does not establish a prebuilt shell with request-time dynamic holes.",
          "url": "https://svelte.dev/docs/kit/page-options"
        },
        "routing": {
          "status": "official",
          "note": "SvelteKit supplies filesystem-based page and endpoint routes.",
          "url": "https://svelte.dev/docs/kit/routing",
          "label": "SvelteKit"
        },
        "layouts": {
          "status": "official",
          "note": "SvelteKit +layout components nest by route hierarchy and survive child navigation.",
          "url": "https://svelte.dev/docs/kit/routing",
          "label": "SvelteKit"
        },
        "dynamicRoutes": {
          "status": "official",
          "note": "SvelteKit maps parameterized filenames and catch-all segments into route params.",
          "url": "https://svelte.dev/docs/kit/routing",
          "label": "SvelteKit"
        },
        "parallelRoutes": {
          "status": "undocumented",
          "note": "Route groups and layout resets are documented; independent named route-slot navigation is not established.",
          "url": "https://svelte.dev/docs/kit/advanced-routing"
        },
        "interceptedRoutes": {
          "status": "undocumented",
          "note": "The reviewed routing guide does not establish intercepted-modal/direct-entry route semantics.",
          "url": "https://svelte.dev/docs/kit/advanced-routing"
        },
        "prefetch": {
          "status": "official",
          "note": "data-sveltekit-preload-data/code controls hover/tap/viewport preloading.",
          "url": "https://svelte.dev/docs/kit/link-options",
          "label": "SvelteKit"
        },
        "softNavigation": {
          "status": "official",
          "note": "SvelteKit enhances internal links and goto() with client-side page navigation, URL/history updates and persistent layouts. data-sveltekit-reload opts back into full document navigation.",
          "url": "https://svelte.dev/docs/kit/link-options",
          "reviewedOn": "2026-11-11",
          "label": "SvelteKit router"
        },
        "viewTransitions": {
          "status": "official",
          "note": "SvelteKit onNavigate waits for an application callback before committing navigation, explicitly supporting document.startViewTransition. This is a lifecycle integration, not a bundled animation preset; CSS, feature detection and reduced-motion behavior are application-owned.",
          "url": "https://svelte.dev/docs/kit/$app-navigation#onNavigate",
          "reviewedOn": "2026-11-11",
          "label": "onNavigate integration"
        },
        "redirects": {
          "status": "official",
          "note": "redirect sends a typed redirect response during loading/actions. Rewrites/proxy policy require host configuration.",
          "url": "https://svelte.dev/docs/kit/load",
          "label": "SvelteKit"
        },
        "serverData": {
          "status": "official",
          "note": "Server and universal load functions fetch page data and share layout data with pages.",
          "url": "https://svelte.dev/docs/kit/load",
          "label": "SvelteKit"
        },
        "clientData": {
          "status": "official",
          "note": "Universal load runs on navigation and supports dependency tracking; remote queries add reactive client/server data calls.",
          "url": "https://svelte.dev/docs/kit/load",
          "label": "SvelteKit"
        },
        "requestDedupe": {
          "status": "partial",
          "note": "SSR fetch responses are captured for hydration reuse; this is not a general request-wide cache for arbitrary equivalent application loads.",
          "url": "https://svelte.dev/docs/kit/load",
          "label": "Hydration fetch reuse",
          "reviewedOn": "2026-11-10"
        },
        "persistentCache": {
          "status": "partial",
          "note": "setHeaders configures HTTP cache policy for the hosting layer; a universal cross-request data cache is not established.",
          "url": "https://svelte.dev/docs/kit/load",
          "label": "HTTP cache policy",
          "reviewedOn": "2026-11-10"
        },
        "invalidation": {
          "status": "official",
          "note": "invalidate targets load dependencies; refreshAll reruns active loads/queries. These are client data refreshes, not a universal CDN purge API.",
          "url": "https://svelte.dev/docs/kit/load",
          "label": "SvelteKit"
        },
        "isr": {
          "status": "official",
          "note": "The official Vercel adapter exposes ISR configuration; regeneration is deployment-specific.",
          "url": "https://svelte.dev/docs/kit/adapter-vercel",
          "label": "SvelteKit Vercel adapter"
        },
        "apiRoutes": {
          "status": "official",
          "note": "SvelteKit +server modules define HTTP method handlers.",
          "url": "https://svelte.dev/docs/kit/routing",
          "label": "SvelteKit"
        },
        "actions": {
          "status": "official",
          "note": "SvelteKit remote functions expose server queries, forms, and commands. Availability depends on the documented Kit configuration.",
          "url": "https://svelte.dev/docs/kit/remote-functions",
          "label": "SvelteKit"
        },
        "forms": {
          "status": "official",
          "note": "Server form actions return validation failures; use:enhance preserves progressive enhancement. Applications define validation rules.",
          "url": "https://svelte.dev/docs/kit/form-actions",
          "label": "SvelteKit",
          "reviewedOn": "2026-11-11",
          "assessment": {
            "summary": "Form transport, validation, pending feedback and optimistic state are separate behaviors; the progressive-forms and optimistic-updates rows review the latter contracts explicitly.",
            "strengths": [
              "Server form actions return validation failures; use:enhance preserves progressive enhancement. Applications define validation rules."
            ],
            "tradeoffs": [
              "Do not infer a no-JavaScript submission path, automatic validation, accessible field errors or rollback merely from the ability to receive FormData."
            ]
          }
        },
        "middleware": {
          "status": "official",
          "note": "SvelteKit handle hooks wrap requests and share server context.",
          "url": "https://svelte.dev/docs/kit/hooks",
          "label": "SvelteKit"
        },
        "cookies": {
          "status": "official",
          "note": "Request cookies can be read/set through Kit’s cookie API; session/identity policy remains application-owned.",
          "url": "https://svelte.dev/docs/kit/load",
          "label": "SvelteKit cookies"
        },
        "cssModules": {
          "status": "undocumented",
          "note": "Svelte compiles scoped selectors; a CSS Modules imported class-map API is not established in the reviewed core styling docs.",
          "url": "https://svelte.dev/docs/svelte/scoped-styles"
        },
        "scopedCss": {
          "status": "native",
          "note": "Component style selectors receive generated scoping classes.",
          "url": "https://svelte.dev/docs/svelte/scoped-styles"
        },
        "tailwind": {
          "status": "official",
          "note": "The official sv addon configures Tailwind’s external package/compiler.",
          "url": "https://svelte.dev/docs/cli/tailwind",
          "label": "sv Tailwind addon"
        },
        "cssInJs": {
          "status": "scope",
          "note": "Compiled Svelte styles do not supply a JavaScript CSS-in-JS runtime/SSR registry; additional tooling would own it.",
          "url": "https://svelte.dev/docs/svelte/scoped-styles"
        },
        "images": {
          "status": "official",
          "note": "@sveltejs/enhanced-img optimizes local build-time images and responsive sources; dynamic images need a service/provider.",
          "url": "https://svelte.dev/docs/kit/images",
          "label": "@sveltejs/enhanced-img"
        },
        "fonts": {
          "status": "partial",
          "note": "Fonts can be published from static and preloaded through authored markup; automatic subsetting/fallback optimization is not established.",
          "url": "https://svelte.dev/docs/kit/project-structure",
          "label": "Static font files",
          "reviewedOn": "2026-11-10"
        },
        "scripts": {
          "status": "partial",
          "note": "app.html and component scripts configure application scripts; a dedicated third-party scheduling/consent API is not established.",
          "url": "https://svelte.dev/docs/kit/project-structure",
          "label": "App shell / components",
          "reviewedOn": "2026-11-10"
        },
        "staticAssets": {
          "status": "official",
          "note": "Kit serves static files and Vite processes imported assets.",
          "url": "https://svelte.dev/docs/kit/project-structure",
          "label": "SvelteKit / Vite"
        },
        "metadata": {
          "status": "partial",
          "note": "svelte:head emits page head elements. The application composes tags; this is not a typed metadata-object merge API.",
          "url": "https://svelte.dev/docs/svelte/svelte-head",
          "label": "Element-level support",
          "assessment": {
            "label": "Element-level support",
            "summary": "Reactive head markup offers direct control; application code owns the metadata composition policy.",
            "strengths": [
              "svelte:head allows title and metadata values to follow component state."
            ],
            "tradeoffs": [
              "A typed metadata-object API and general child-override policy are not established by this source.",
              "Head markup support alone does not establish generated social images or automatic layout merging."
            ]
          },
          "reviewedOn": "2026-11-10"
        },
        "dynamicMetadata": {
          "status": "native",
          "note": "Reactive values in svelte:head update title and metadata elements.",
          "url": "https://svelte.dev/docs/svelte/svelte-head"
        },
        "metadataInheritance": {
          "status": "undocumented",
          "note": "svelte:head emits component head content; automatic route metadata-field inheritance is not established.",
          "url": "https://svelte.dev/docs/svelte/svelte-head"
        },
        "metadataOverrides": {
          "status": "undocumented",
          "note": "The reviewed head element does not define a uniform nested metadata-object merge/clear contract.",
          "url": "https://svelte.dev/docs/svelte/svelte-head"
        },
        "titleTemplates": {
          "status": "undocumented",
          "note": "Layouts can format title values manually; an inherited title-template/absolute-title API is not established.",
          "url": "https://svelte.dev/docs/svelte/svelte-head"
        },
        "socialImages": {
          "status": "undocumented",
          "note": "The reviewed SEO guide does not establish a generated social-card image renderer.",
          "url": "https://svelte.dev/docs/kit/seo"
        },
        "sitemaps": {
          "status": "partial",
          "note": "The SEO guide provides a sitemap.xml endpoint recipe; the application supplies URL enumeration/XML.",
          "url": "https://svelte.dev/docs/kit/seo",
          "label": "Endpoint recipe",
          "reviewedOn": "2026-11-10"
        },
        "robots": {
          "status": "official",
          "note": "An app-authored robots.txt can be published from static.",
          "url": "https://svelte.dev/docs/kit/project-structure",
          "label": "Static file"
        },
        "markdown": {
          "status": "community",
          "note": "The official sv addon configures the external mdsvex Markdown/Svelte compiler.",
          "url": "https://svelte.dev/docs/cli/mdsvex",
          "label": "mdsvex"
        },
        "collections": {
          "status": "undocumented",
          "note": "Filesystem routes and Markdown integrations do not establish a typed content collection schema/query registry.",
          "url": "https://svelte.dev/docs/kit/project-structure"
        },
        "draftMode": {
          "status": "undocumented",
          "note": "Hooks can authorize application previews, but a dedicated draft-preview/cache-bypass mode is not established.",
          "url": "https://svelte.dev/docs/kit/auth"
        },
        "translations": {
          "status": "community",
          "note": "The Svelte package directory lists i18n integrations, including Paraglide JS and Wuchale.",
          "url": "https://svelte.dev/packages",
          "label": "i18n packages"
        },
        "localeRouting": {
          "status": "community",
          "note": "The Paraglide addon configures locale-aware app routing and messages through an external package.",
          "url": "https://svelte.dev/docs/cli/paraglide",
          "label": "Paraglide"
        },
        "localeFormatting": {
          "status": "undocumented",
          "note": "The reviewed Kit SEO/i18n surface does not establish a first-party locale-aware number/date formatting API.",
          "url": "https://svelte.dev/docs/kit/seo"
        },
        "auth": {
          "status": "community",
          "note": "Kit documents cookie/session integration and external authentication libraries, including Better Auth.",
          "url": "https://svelte.dev/docs/kit/auth",
          "label": "Better Auth / app sessions"
        },
        "csp": {
          "status": "official",
          "note": "CSP configuration generates hashes/nonces for framework inline scripts and applies configured directives.",
          "url": "https://svelte.dev/docs/kit/configuration",
          "label": "SvelteKit CSP"
        },
        "cspNonce": {
          "status": "official",
          "note": "CSP configuration generates hashes/nonces for framework inline scripts and applies configured directives.",
          "url": "https://svelte.dev/docs/kit/configuration",
          "reviewedOn": "2026-11-11",
          "label": "SvelteKit CSP"
        },
        "csrf": {
          "status": "official",
          "note": "Kit checks origins on mutative form-like requests; current configuration allows trusted origins. It is not a general token service.",
          "url": "https://svelte.dev/docs/kit/configuration",
          "label": "SvelteKit origin checks"
        },
        "environment": {
          "status": "official",
          "note": "Kit blocks imports of private environment/server-only modules into client code.",
          "url": "https://svelte.dev/docs/kit/server-only-modules",
          "label": "SvelteKit private modules",
          "reviewedOn": "2026-11-11",
          "assessment": {
            "summary": "SvelteKit separates private environment/server modules from code imported into browser builds.",
            "strengths": [
              "Private environment modules and .server files are guarded against client imports."
            ],
            "tradeoffs": [
              "Values intentionally serialized by server load/functions can still be disclosed. Import guards do not replace authorization or output review."
            ]
          }
        },
        "types": {
          "status": "official",
          "note": "Svelte supports TypeScript; svelte-check and generated Kit route types add build-time checking.",
          "url": "https://svelte.dev/docs/svelte/typescript",
          "label": "svelte-check / Kit types"
        },
        "hmr": {
          "status": "official",
          "note": "The official Vite-based toolchain hot-updates Svelte components during development.",
          "url": "https://svelte.dev/docs/kit/creating-a-project",
          "label": "Svelte Vite plugin"
        },
        "cli": {
          "status": "official",
          "note": "sv provides create/add/check-style project tooling; Kit/Vite handles dev/build.",
          "url": "https://svelte.dev/docs/cli/overview",
          "label": "sv"
        },
        "bundleAnalysis": {
          "status": "undocumented",
          "note": "Production builds are documented; a built-in graphical module-size analyzer is not established.",
          "url": "https://svelte.dev/docs/kit/building-your-app"
        },
        "unitTests": {
          "status": "community",
          "note": "The guide documents Vitest and Testing Library for component behavior.",
          "url": "https://svelte.dev/docs/svelte/testing",
          "label": "Vitest / Testing Library"
        },
        "e2eTests": {
          "status": "community",
          "note": "The testing guide uses Playwright for browser end-to-end workflows.",
          "url": "https://svelte.dev/docs/svelte/testing",
          "label": "Playwright"
        },
        "observability": {
          "status": "official",
          "note": "SvelteKit documents optional server-side OpenTelemetry tracing; instrumentation setup/exporters are separate.",
          "url": "https://svelte.dev/docs/kit/observability",
          "label": "SvelteKit tracing"
        },
        "errorHandling": {
          "status": "partial",
          "note": "svelte:boundary provides failed/pending snippets and reset behavior. Server rendering and event/async failures have documented limits.",
          "url": "https://svelte.dev/docs/svelte/svelte-boundary",
          "label": "Svelte boundary",
          "reviewedOn": "2026-11-10"
        },
        "serverHosting": {
          "status": "official",
          "note": "adapter-node produces a standalone production Node server.",
          "url": "https://svelte.dev/docs/kit/adapter-node",
          "label": "SvelteKit adapter-node"
        },
        "staticHosting": {
          "status": "official",
          "note": "adapter-static prerenders pages; dynamic routes and fallback mode require deliberate configuration.",
          "url": "https://svelte.dev/docs/kit/adapter-static",
          "label": "adapter-static"
        },
        "containers": {
          "status": "undocumented",
          "note": "A production Node output is documented; a maintained container recipe is not established by the reviewed adapter guide.",
          "url": "https://svelte.dev/docs/kit/adapter-node"
        },
        "edgeHosting": {
          "status": "official",
          "note": "The official Cloudflare adapter builds for Workers; Node-only dependencies and platform APIs require care.",
          "url": "https://svelte.dev/docs/kit/adapter-cloudflare",
          "label": "SvelteKit Cloudflare adapter"
        },
        "orm": {
          "status": "scope",
          "note": "ORM / query builder belongs to a server framework or external service, outside this standalone rendering API. This is not a missing template-rendering capability.",
          "url": "https://svelte.dev"
        },
        "migrations": {
          "status": "scope",
          "note": "Schema migrations belongs to a server framework or external service, outside this standalone rendering API. This is not a missing template-rendering capability.",
          "url": "https://svelte.dev"
        },
        "transactions": {
          "status": "scope",
          "note": "Transactions belongs to a server framework or external service, outside this standalone rendering API. This is not a missing template-rendering capability.",
          "url": "https://svelte.dev"
        },
        "jobs": {
          "status": "scope",
          "note": "Background jobs belongs to a server framework or external service, outside this standalone rendering API. This is not a missing template-rendering capability.",
          "url": "https://svelte.dev"
        },
        "mail": {
          "status": "scope",
          "note": "Email belongs to a server framework or external service, outside this standalone rendering API. This is not a missing template-rendering capability.",
          "url": "https://svelte.dev"
        },
        "uploads": {
          "status": "scope",
          "note": "File uploads & storage belongs to a server framework or external service, outside this standalone rendering API. This is not a missing template-rendering capability.",
          "url": "https://svelte.dev"
        },
        "realtime": {
          "status": "scope",
          "note": "Real-time delivery belongs to a server framework or external service, outside this standalone rendering API. This is not a missing template-rendering capability.",
          "url": "https://svelte.dev"
        },
        "xssEscaping": {
          "status": "native",
          "note": "Ordinary interpolated text is escaped; @html explicitly inserts raw HTML. Svelte directs authors to escape or sanitize untrusted HTML before using that bypass.",
          "url": "https://svelte.dev/docs/svelte/@html",
          "reviewedOn": "2026-11-11"
        },
        "htmlSanitization": {
          "status": "undocumented",
          "note": "The linked security API review does not establish the specific html sanitization contract defined here. This is a bounded documentation finding, not proof of absence; generic hooks or application-authored code are not counted as an owned implementation.",
          "url": "https://svelte.dev/docs/kit/configuration",
          "reviewedOn": "2026-11-11"
        },
        "authorization": {
          "status": "undocumented",
          "note": "The linked security API review does not establish the specific authorization policies contract defined here. This is a bounded documentation finding, not proof of absence; generic hooks or application-authored code are not counted as an owned implementation.",
          "url": "https://svelte.dev/docs/kit/configuration",
          "reviewedOn": "2026-11-11"
        },
        "rateLimiting": {
          "status": "undocumented",
          "note": "The linked security API review does not establish the specific rate limiting contract defined here. This is a bounded documentation finding, not proof of absence; generic hooks or application-authored code are not counted as an owned implementation.",
          "url": "https://svelte.dev/docs/kit/configuration",
          "reviewedOn": "2026-11-11"
        },
        "progressiveEnhancement": {
          "status": "official",
          "note": "Requires the SvelteKit application framework, not Svelte core. Form actions support native server POST plus use:enhance. The server submission/validation path works without JavaScript; enhancement supplies pending/reset/update behavior, not a separate endpoint.",
          "url": "https://svelte.dev/docs/kit/form-actions",
          "reviewedOn": "2026-11-11",
          "label": "Form actions / use:enhance"
        },
        "optimisticUi": {
          "status": "undocumented",
          "note": "The linked data API review does not establish the specific optimistic updates contract defined here. This is a bounded documentation finding, not proof of absence; generic hooks or application-authored code are not counted as an owned implementation.",
          "url": "https://svelte.dev/docs/kit/load",
          "reviewedOn": "2026-11-11"
        },
        "requestCancellation": {
          "status": "undocumented",
          "note": "The linked data API review does not establish the specific stale request handling contract defined here. This is a bounded documentation finding, not proof of absence; generic hooks or application-authored code are not counted as an owned implementation.",
          "url": "https://svelte.dev/docs/kit/load",
          "reviewedOn": "2026-11-11"
        },
        "typedLinks": {
          "status": "undocumented",
          "note": "The linked routing API review does not establish the specific typed links & parameters contract defined here. This is a bounded documentation finding, not proof of absence; generic hooks or application-authored code are not counted as an owned implementation.",
          "url": "https://svelte.dev/docs/kit/link-options",
          "reviewedOn": "2026-11-11"
        },
        "searchParams": {
          "status": "undocumented",
          "note": "The linked routing API review does not establish the specific validated url state contract defined here. This is a bounded documentation finding, not proof of absence; generic hooks or application-authored code are not counted as an owned implementation.",
          "url": "https://svelte.dev/docs/kit/link-options",
          "reviewedOn": "2026-11-11"
        },
        "stateRestoration": {
          "status": "official",
          "note": "Requires the SvelteKit application framework, not Svelte core. Snapshots capture/restore configured local state across history traversal, with serialization and sessionStorage limitations. Persistent layouts and snapshot state are distinct; large values and sensitive data need care.",
          "url": "https://svelte.dev/docs/kit/snapshots",
          "reviewedOn": "2026-11-11",
          "label": "Snapshots"
        },
        "scrollRestoration": {
          "status": "official",
          "note": "Requires the SvelteKit application framework, not Svelte core. The client router restores history scroll and controls navigation resets through goto/link options. disableScrollHandling transfers that responsibility to the app; arbitrary nested-scrollport restoration is not established here.",
          "url": "https://svelte.dev/docs/kit/$app-navigation",
          "reviewedOn": "2026-11-11",
          "label": "Kit router"
        },
        "navigationBlocking": {
          "status": "official",
          "note": "Requires the SvelteKit application framework, not Svelte core. beforeNavigate can cancel client navigation and request browser confirmation for document exits. Browser unload prompts are restricted and do not provide arbitrary custom UI.",
          "url": "https://svelte.dev/docs/kit/$app-navigation#beforeNavigate",
          "reviewedOn": "2026-11-11",
          "label": "beforeNavigate"
        },
        "navigationAccessibility": {
          "status": "official",
          "note": "Requires the SvelteKit application framework, not Svelte core. Kit announces route titles through a live region and resets focus after navigation/enhanced forms, with documented exceptions. Authors supply meaningful titles and remain responsible for app accessibility.",
          "url": "https://svelte.dev/docs/kit/accessibility",
          "reviewedOn": "2026-11-11",
          "label": "Focus / route announcer"
        },
        "a11yChecks": {
          "status": "native",
          "note": "The Svelte compiler emits accessibility warnings for detectable markup/ARIA/keyboard patterns. Warnings can be suppressed, and static checks do not establish complete keyboard or screen-reader correctness.",
          "url": "https://svelte.dev/docs/svelte/compiler-warnings",
          "reviewedOn": "2026-11-11",
          "label": "Compiler warnings"
        },
        "lazyActivation": {
          "status": "undocumented",
          "note": "The linked rendering API review does not establish the specific deferred activation contract defined here. This is a bounded documentation finding, not proof of absence; generic hooks or application-authored code are not counted as an owned implementation.",
          "url": "https://svelte.dev/docs/svelte/imperative-component-api#hydrate",
          "reviewedOn": "2026-11-11"
        },
        "codeSplitting": {
          "status": "official",
          "note": "Requires the SvelteKit application framework, not Svelte core. Kit builds route-specific browser bundles and loads the code needed for navigation. Shared dependencies and component imports still affect what each page downloads.",
          "url": "https://svelte.dev/docs/kit/performance",
          "reviewedOn": "2026-11-11",
          "label": "Route bundles"
        },
        "offline": {
          "status": "official",
          "note": "Requires the SvelteKit application framework, not Svelte core. Kit bundles/registers an authored service worker and exposes versioned build/static/prerender manifests for caching. The app owns fetch strategies, updates and offline data behavior; server actions still need a server.",
          "url": "https://svelte.dev/docs/kit/service-workers",
          "reviewedOn": "2026-11-11",
          "label": "Service-worker integration"
        },
        "scheduling": {
          "status": "scope",
          "note": "Scheduled tasks requires a host application or specialized integration beyond the reviewed UI API. Emitting markup or using arbitrary host-language libraries does not establish this application-level contract.",
          "url": "https://svelte.dev",
          "reviewedOn": "2026-11-11"
        },
        "notifications": {
          "status": "scope",
          "note": "Multi-channel notifications requires a host application or specialized integration beyond the reviewed UI API. Emitting markup or using arbitrary host-language libraries does not establish this application-level contract.",
          "url": "https://svelte.dev",
          "reviewedOn": "2026-11-11"
        },
        "searchIndex": {
          "status": "scope",
          "note": "Search indexing requires a host application or specialized integration beyond the reviewed UI API. Emitting markup or using arbitrary host-language libraries does not establish this application-level contract.",
          "url": "https://svelte.dev",
          "reviewedOn": "2026-11-11"
        },
        "fieldEncryption": {
          "status": "scope",
          "note": "Encrypted model fields requires a host application or specialized integration beyond the reviewed UI API. Emitting markup or using arbitrary host-language libraries does not establish this application-level contract.",
          "url": "https://svelte.dev",
          "reviewedOn": "2026-11-11"
        },
        "httpTests": {
          "status": "undocumented",
          "note": "The linked testing API review does not establish the specific http integration tests contract defined here. This is a bounded documentation finding, not proof of absence; generic hooks or application-authored code are not counted as an owned implementation.",
          "url": "https://svelte.dev/docs/svelte/testing",
          "reviewedOn": "2026-11-11"
        }
      }
    },
    {
      "id": "sveltekit",
      "label": "SvelteKit",
      "kind": "Application framework",
      "logo": "logos/sveltekit.svg",
      "color": "#ff3e00",
      "scope": "Current SvelteKit documentation with Svelte 5. Remote functions and asynchronous Svelte rendering retain their documented experimental qualifications.",
      "reviewedOn": "2026-11-10",
      "updatedOn": "2026-11-11",
      "capabilities": {
        "ssr": {
          "status": "native",
          "note": "Page/layout options control SSR, hydration, client routing and prerendering independently.",
          "url": "https://svelte.dev/docs/kit/page-options"
        },
        "streaming": {
          "status": "partial",
          "note": "Server load promises stream data for browser resolution. This does not establish resolved HTML streaming equivalent to React/Marko.",
          "url": "https://svelte.dev/docs/kit/load",
          "label": "Deferred data stream",
          "reviewedOn": "2026-11-10"
        },
        "suspense": {
          "status": "partial",
          "note": "Async component rendering uses experimental Svelte await support; remote functions are also marked experimental.",
          "url": "https://svelte.dev/docs/kit/remote-functions",
          "label": "Experimental async rendering",
          "reviewedOn": "2026-11-10"
        },
        "client": {
          "status": "native",
          "note": "Page/layout options control SSR, hydration, client routing and prerendering independently.",
          "url": "https://svelte.dev/docs/kit/page-options"
        },
        "ssg": {
          "status": "native",
          "note": "Page/layout options control SSR, hydration, client routing and prerendering independently.",
          "url": "https://svelte.dev/docs/kit/page-options"
        },
        "csr": {
          "status": "native",
          "note": "Page/layout options control SSR, hydration, client routing and prerendering independently.",
          "url": "https://svelte.dev/docs/kit/page-options"
        },
        "serverOnly": {
          "status": "undocumented",
          "note": "The reviewed API excludes server modules or function bodies from browser builds, but does not establish server-only UI components whose implementation is omitted from hydration bundles. These are different capabilities.",
          "url": "https://svelte.dev/docs/kit/server-only-modules",
          "label": "Server modules / functions only"
        },
        "partialRendering": {
          "status": "undocumented",
          "note": "Not established in the reviewed SvelteKit rendering guide. External integrations or application code may provide this behavior.",
          "url": "https://svelte.dev/docs/kit/page-options"
        },
        "routing": {
          "status": "native",
          "note": "File-based page/layout and HTTP-method endpoint modules expose route params and request cookie helpers.",
          "url": "https://svelte.dev/docs/kit/routing"
        },
        "layouts": {
          "status": "native",
          "note": "File-based page/layout and HTTP-method endpoint modules expose route params and request cookie helpers.",
          "url": "https://svelte.dev/docs/kit/routing"
        },
        "dynamicRoutes": {
          "status": "native",
          "note": "File-based page/layout and HTTP-method endpoint modules expose route params and request cookie helpers.",
          "url": "https://svelte.dev/docs/kit/routing"
        },
        "parallelRoutes": {
          "status": "undocumented",
          "note": "Not established in the reviewed SvelteKit routing guide. External integrations or application code may provide this behavior.",
          "url": "https://svelte.dev/docs/kit/routing"
        },
        "interceptedRoutes": {
          "status": "undocumented",
          "note": "Not established in the reviewed SvelteKit routing guide. External integrations or application code may provide this behavior.",
          "url": "https://svelte.dev/docs/kit/routing"
        },
        "prefetch": {
          "status": "native",
          "note": "data-sveltekit-preload-data/code supports hover/tap/viewport navigation preloading.",
          "url": "https://svelte.dev/docs/kit/link-options"
        },
        "softNavigation": {
          "status": "native",
          "note": "SvelteKit enhances internal links and goto() with client-side page navigation, URL/history updates and persistent layouts. data-sveltekit-reload opts back into full document navigation.",
          "url": "https://svelte.dev/docs/kit/link-options",
          "reviewedOn": "2026-11-11",
          "label": "SvelteKit router"
        },
        "viewTransitions": {
          "status": "native",
          "note": "SvelteKit onNavigate waits for an application callback before committing navigation, explicitly supporting document.startViewTransition. This is a lifecycle integration, not a bundled animation preset; CSS, feature detection and reduced-motion behavior are application-owned.",
          "url": "https://svelte.dev/docs/kit/$app-navigation#onNavigate",
          "reviewedOn": "2026-11-11",
          "label": "onNavigate integration"
        },
        "redirects": {
          "status": "native",
          "note": "Server/universal load functions supply route data; dependency tracking and invalidation rerun reads, and redirect responses are documented.",
          "url": "https://svelte.dev/docs/kit/load"
        },
        "serverData": {
          "status": "native",
          "note": "Server/universal load functions supply route data; dependency tracking and invalidation rerun reads, and redirect responses are documented.",
          "url": "https://svelte.dev/docs/kit/load"
        },
        "clientData": {
          "status": "native",
          "note": "Server/universal load functions supply route data; dependency tracking and invalidation rerun reads, and redirect responses are documented.",
          "url": "https://svelte.dev/docs/kit/load"
        },
        "requestDedupe": {
          "status": "partial",
          "note": "Server fetch responses can be captured for hydration reuse. This is not a general cache for equivalent arbitrary server loaders.",
          "url": "https://svelte.dev/docs/kit/load",
          "label": "Hydration fetch reuse",
          "reviewedOn": "2026-11-10"
        },
        "persistentCache": {
          "status": "partial",
          "note": "setHeaders controls HTTP cache policy at the hosting layer; a general durable data cache is not supplied.",
          "url": "https://svelte.dev/docs/kit/load",
          "label": "HTTP cache policy",
          "reviewedOn": "2026-11-10"
        },
        "invalidation": {
          "status": "native",
          "note": "Server/universal load functions supply route data; dependency tracking and invalidation rerun reads, and redirect responses are documented.",
          "url": "https://svelte.dev/docs/kit/load"
        },
        "isr": {
          "status": "undocumented",
          "note": "Not established in the reviewed SvelteKit data guide. External integrations or application code may provide this behavior.",
          "url": "https://svelte.dev/docs/kit/load"
        },
        "apiRoutes": {
          "status": "native",
          "note": "File-based page/layout and HTTP-method endpoint modules expose route params and request cookie helpers.",
          "url": "https://svelte.dev/docs/kit/routing"
        },
        "actions": {
          "status": "partial",
          "note": "query/form/command remote functions provide typed server calls but are explicitly experimental and opt-in.",
          "url": "https://svelte.dev/docs/kit/remote-functions",
          "label": "Experimental remote functions",
          "reviewedOn": "2026-11-10"
        },
        "forms": {
          "status": "native",
          "note": "Page server actions accept normal form POSTs, validation failures and progressively enhanced submission without requiring JS.",
          "url": "https://svelte.dev/docs/kit/form-actions",
          "reviewedOn": "2026-11-11",
          "assessment": {
            "summary": "Form transport, validation, pending feedback and optimistic state are separate behaviors; the progressive-forms and optimistic-updates rows review the latter contracts explicitly.",
            "strengths": [
              "Page server actions accept normal form POSTs, validation failures and progressively enhanced submission without requiring JS."
            ],
            "tradeoffs": [
              "Do not infer a no-JavaScript submission path, automatic validation, accessible field errors or rollback merely from the ability to receive FormData."
            ]
          }
        },
        "middleware": {
          "status": "native",
          "note": "handle/handleFetch and universal/client hooks customize request behavior and shared context.",
          "url": "https://svelte.dev/docs/kit/hooks"
        },
        "cookies": {
          "status": "native",
          "note": "File-based page/layout and HTTP-method endpoint modules expose route params and request cookie helpers.",
          "url": "https://svelte.dev/docs/kit/routing"
        },
        "cssModules": {
          "status": "community",
          "note": "The Vite build can import CSS Modules; Svelte component-local styles use its own scoped-style compiler.",
          "url": "https://svelte.dev/docs/kit/integrations",
          "label": "Vite CSS Modules"
        },
        "scopedCss": {
          "status": "native",
          "note": "Svelte compiles component style selectors with a generated scope class and scopes keyframes.",
          "url": "https://svelte.dev/docs/svelte/scoped-styles"
        },
        "tailwind": {
          "status": "official",
          "note": "Official sv add integrations configure Tailwind, mdsvex, Vitest and Playwright respectively. The compilers/runners are external packages.",
          "url": "https://svelte.dev/docs/cli/sv-add",
          "label": "sv add integration"
        },
        "cssInJs": {
          "status": "undocumented",
          "note": "Not established in the reviewed SvelteKit styling guide. External integrations or application code may provide this behavior.",
          "url": "https://svelte.dev/docs/kit/integrations"
        },
        "images": {
          "status": "official",
          "note": "@sveltejs/enhanced-img adds build-time image transformations for local assets.",
          "url": "https://svelte.dev/docs/kit/images",
          "label": "Enhanced images"
        },
        "fonts": {
          "status": "undocumented",
          "note": "Not established in the reviewed SvelteKit assets guide. External integrations or application code may provide this behavior.",
          "url": "https://svelte.dev/docs/kit/images"
        },
        "scripts": {
          "status": "undocumented",
          "note": "Not established in the reviewed SvelteKit assets guide. External integrations or application code may provide this behavior.",
          "url": "https://svelte.dev/docs/kit/images"
        },
        "staticAssets": {
          "status": "undocumented",
          "note": "Not established in the reviewed SvelteKit assets guide. External integrations or application code may provide this behavior.",
          "url": "https://svelte.dev/docs/kit/images"
        },
        "metadata": {
          "status": "partial",
          "note": "svelte:head emits data-driven title/meta markup. Applications own deduplication/composition rather than a structured metadata object registry.",
          "url": "https://svelte.dev/docs/kit/seo",
          "label": "Head elements",
          "assessment": {
            "summary": "Reactive head elements with direct markup control, rather than a structured SEO-field registry.",
            "strengths": [
              "Head values can use the same loaded data as the page.",
              "The compiler integrates server head output and browser updates."
            ],
            "tradeoffs": [
              "Applications own layout metadata composition and duplicate-tag policy.",
              "Title templates and general metadata merge/reset behavior are not supplied by svelte:head itself."
            ]
          },
          "reviewedOn": "2026-11-10"
        },
        "dynamicMetadata": {
          "status": "partial",
          "note": "svelte:head emits data-driven title/meta markup. Applications own deduplication/composition rather than a structured metadata object registry.",
          "url": "https://svelte.dev/docs/kit/seo",
          "label": "Head elements",
          "reviewedOn": "2026-11-10"
        },
        "metadataInheritance": {
          "status": "undocumented",
          "note": "Not established in the reviewed SvelteKit metadata guide. External integrations or application code may provide this behavior.",
          "url": "https://svelte.dev/docs/kit/seo"
        },
        "metadataOverrides": {
          "status": "undocumented",
          "note": "Not established in the reviewed SvelteKit metadata guide. External integrations or application code may provide this behavior.",
          "url": "https://svelte.dev/docs/kit/seo"
        },
        "titleTemplates": {
          "status": "undocumented",
          "note": "Not established in the reviewed SvelteKit metadata guide. External integrations or application code may provide this behavior.",
          "url": "https://svelte.dev/docs/kit/seo"
        },
        "socialImages": {
          "status": "undocumented",
          "note": "Not established in the reviewed SvelteKit metadata guide. External integrations or application code may provide this behavior.",
          "url": "https://svelte.dev/docs/kit/seo"
        },
        "sitemaps": {
          "status": "partial",
          "note": "The SEO workflow uses an application-owned sitemap endpoint and static crawler files; URL enumeration and directive contents are authored by the app.",
          "url": "https://svelte.dev/docs/kit/seo",
          "label": "Endpoint / static file",
          "reviewedOn": "2026-11-10"
        },
        "robots": {
          "status": "native",
          "note": "The SEO workflow uses an application-owned sitemap endpoint and static crawler files; URL enumeration and directive contents are authored by the app.",
          "url": "https://svelte.dev/docs/kit/seo",
          "label": "Endpoint / static file"
        },
        "markdown": {
          "status": "official",
          "note": "Official sv add integrations configure Tailwind, mdsvex, Vitest and Playwright respectively. The compilers/runners are external packages.",
          "url": "https://svelte.dev/docs/cli/sv-add",
          "label": "sv add integration"
        },
        "collections": {
          "status": "undocumented",
          "note": "Not established in the reviewed SvelteKit content guide. External integrations or application code may provide this behavior.",
          "url": "https://svelte.dev/docs/kit/integrations"
        },
        "draftMode": {
          "status": "undocumented",
          "note": "Not established in the reviewed SvelteKit content guide. External integrations or application code may provide this behavior.",
          "url": "https://svelte.dev/docs/kit/integrations"
        },
        "translations": {
          "status": "undocumented",
          "note": "Not established in the reviewed SvelteKit i18n guide. External integrations or application code may provide this behavior.",
          "url": "https://svelte.dev/docs/kit/hooks"
        },
        "localeRouting": {
          "status": "undocumented",
          "note": "Not established in the reviewed SvelteKit i18n guide. External integrations or application code may provide this behavior.",
          "url": "https://svelte.dev/docs/kit/hooks"
        },
        "localeFormatting": {
          "status": "undocumented",
          "note": "Not established in the reviewed SvelteKit i18n guide. External integrations or application code may provide this behavior.",
          "url": "https://svelte.dev/docs/kit/hooks"
        },
        "auth": {
          "status": "community",
          "note": "The auth guide points to external libraries and explains session/token policy; authentication is not a bundled account system.",
          "url": "https://svelte.dev/docs/kit/auth",
          "label": "Auth integration"
        },
        "csp": {
          "status": "native",
          "note": "Configured CSP uses nonces for dynamic pages in auto mode and hashes for prerendered pages. Generated inline scripts/styles are coordinated, with %sveltekit.nonce% for authored app.html tags. Nonces on prerendered pages are forbidden.",
          "url": "https://svelte.dev/docs/kit/@sveltejs-kit-vite#csp",
          "reviewedOn": "2026-11-11",
          "label": "CSP configuration"
        },
        "cspNonce": {
          "status": "native",
          "note": "Configured CSP uses nonces for dynamic pages in auto mode and hashes for prerendered pages. Generated inline scripts/styles are coordinated, with %sveltekit.nonce% for authored app.html tags. Nonces on prerendered pages are forbidden.",
          "url": "https://svelte.dev/docs/kit/@sveltejs-kit-vite#csp",
          "reviewedOn": "2026-11-11",
          "label": "CSP nonce / auto mode"
        },
        "csrf": {
          "status": "undocumented",
          "note": "Not established in the reviewed SvelteKit security guide. External integrations or application code may provide this behavior.",
          "url": "https://svelte.dev/docs/kit/auth"
        },
        "environment": {
          "status": "native",
          "note": "Server-only files/private environment imports are rejected when they leak into browser import graphs. Serialized responses still require care.",
          "url": "https://svelte.dev/docs/kit/server-only-modules",
          "reviewedOn": "2026-11-11",
          "assessment": {
            "summary": "SvelteKit separates private environment/server modules from code imported into browser builds.",
            "strengths": [
              "Private environment modules and .server files are guarded against client imports."
            ],
            "tradeoffs": [
              "Values intentionally serialized by server load/functions can still be disclosed. Import guards do not replace authorization or output review."
            ]
          }
        },
        "types": {
          "status": "native",
          "note": "SvelteKit supplies typed route tooling and the sv/Vite development workflow.",
          "url": "https://svelte.dev/docs/kit/introduction"
        },
        "hmr": {
          "status": "native",
          "note": "SvelteKit supplies typed route tooling and the sv/Vite development workflow.",
          "url": "https://svelte.dev/docs/kit/introduction"
        },
        "cli": {
          "status": "native",
          "note": "SvelteKit supplies typed route tooling and the sv/Vite development workflow.",
          "url": "https://svelte.dev/docs/kit/introduction"
        },
        "bundleAnalysis": {
          "status": "undocumented",
          "note": "Not established in the reviewed SvelteKit tooling guide. External integrations or application code may provide this behavior.",
          "url": "https://svelte.dev/docs/kit/introduction"
        },
        "unitTests": {
          "status": "official",
          "note": "Official sv add integrations configure Tailwind, mdsvex, Vitest and Playwright respectively. The compilers/runners are external packages.",
          "url": "https://svelte.dev/docs/cli/sv-add",
          "label": "sv add integration"
        },
        "e2eTests": {
          "status": "official",
          "note": "Official sv add integrations configure Tailwind, mdsvex, Vitest and Playwright respectively. The compilers/runners are external packages.",
          "url": "https://svelte.dev/docs/cli/sv-add",
          "label": "sv add integration"
        },
        "observability": {
          "status": "native",
          "note": "Optional OpenTelemetry spans cover hooks, loads, endpoints, actions and remote functions; exporters must be configured separately.",
          "url": "https://svelte.dev/docs/kit/observability"
        },
        "errorHandling": {
          "status": "native",
          "note": "Page/layout error rendering and handleError hooks distinguish expected HTTP failures from unexpected application errors.",
          "url": "https://svelte.dev/docs/kit/errors"
        },
        "serverHosting": {
          "status": "official",
          "note": "The official Node adapter produces a standalone server; the guide documents deployment settings and container integration.",
          "url": "https://svelte.dev/docs/kit/adapter-node",
          "label": "Node adapter"
        },
        "staticHosting": {
          "status": "official",
          "note": "The static adapter exports prerendered routes; dynamic endpoints/server actions require another host.",
          "url": "https://svelte.dev/docs/kit/adapter-static",
          "label": "Static adapter"
        },
        "containers": {
          "status": "official",
          "note": "The official Node adapter produces a standalone server; the guide documents deployment settings and container integration.",
          "url": "https://svelte.dev/docs/kit/adapter-node",
          "label": "Node adapter"
        },
        "edgeHosting": {
          "status": "official",
          "note": "The Cloudflare adapter targets Workers/Pages with platform bindings and documented restrictions.",
          "url": "https://svelte.dev/docs/kit/adapter-cloudflare",
          "label": "Cloudflare adapter"
        },
        "orm": {
          "status": "undocumented",
          "note": "The reviewed SvelteKit server/data guides do not establish an owned orm / query builder API. An application can integrate a separate provider or library; this finding does not mean that integration is impossible.",
          "url": "https://svelte.dev/docs/kit/hooks"
        },
        "migrations": {
          "status": "undocumented",
          "note": "The reviewed SvelteKit server/data guides do not establish an owned schema migrations API. An application can integrate a separate provider or library; this finding does not mean that integration is impossible.",
          "url": "https://svelte.dev/docs/kit/hooks"
        },
        "transactions": {
          "status": "undocumented",
          "note": "The reviewed SvelteKit server/data guides do not establish an owned transactions API. An application can integrate a separate provider or library; this finding does not mean that integration is impossible.",
          "url": "https://svelte.dev/docs/kit/hooks"
        },
        "jobs": {
          "status": "undocumented",
          "note": "The reviewed SvelteKit server/data guides do not establish an owned background jobs API. An application can integrate a separate provider or library; this finding does not mean that integration is impossible.",
          "url": "https://svelte.dev/docs/kit/routing"
        },
        "mail": {
          "status": "undocumented",
          "note": "The reviewed SvelteKit server/data guides do not establish an owned email API. An application can integrate a separate provider or library; this finding does not mean that integration is impossible.",
          "url": "https://svelte.dev/docs/kit/routing"
        },
        "uploads": {
          "status": "undocumented",
          "note": "The reviewed SvelteKit server/data guides do not establish an owned file uploads & storage API. An application can integrate a separate provider or library; this finding does not mean that integration is impossible.",
          "url": "https://svelte.dev/docs/kit/routing"
        },
        "realtime": {
          "status": "undocumented",
          "note": "The reviewed SvelteKit server/data guides do not establish an owned real-time delivery API. An application can integrate a separate provider or library; this finding does not mean that integration is impossible.",
          "url": "https://svelte.dev/docs/kit/routing"
        },
        "xssEscaping": {
          "status": "native",
          "note": "Its integrated UI renderer supplies this policy. Ordinary interpolated text is escaped; @html explicitly inserts raw HTML. Svelte directs authors to escape or sanitize untrusted HTML before using that bypass.",
          "url": "https://svelte.dev/docs/svelte/@html",
          "reviewedOn": "2026-11-11"
        },
        "htmlSanitization": {
          "status": "undocumented",
          "note": "The linked security API review does not establish the specific html sanitization contract defined here. This is a bounded documentation finding, not proof of absence; generic hooks or application-authored code are not counted as an owned implementation.",
          "url": "https://svelte.dev/docs/kit/@sveltejs-kit-vite#csp",
          "reviewedOn": "2026-11-11"
        },
        "authorization": {
          "status": "undocumented",
          "note": "The linked security API review does not establish the specific authorization policies contract defined here. This is a bounded documentation finding, not proof of absence; generic hooks or application-authored code are not counted as an owned implementation.",
          "url": "https://svelte.dev/docs/kit/@sveltejs-kit-vite#csp",
          "reviewedOn": "2026-11-11"
        },
        "rateLimiting": {
          "status": "undocumented",
          "note": "The linked security API review does not establish the specific rate limiting contract defined here. This is a bounded documentation finding, not proof of absence; generic hooks or application-authored code are not counted as an owned implementation.",
          "url": "https://svelte.dev/docs/kit/@sveltejs-kit-vite#csp",
          "reviewedOn": "2026-11-11"
        },
        "progressiveEnhancement": {
          "status": "native",
          "note": "Form actions support native server POST plus use:enhance. The server submission/validation path works without JavaScript; enhancement supplies pending/reset/update behavior, not a separate endpoint.",
          "url": "https://svelte.dev/docs/kit/form-actions",
          "reviewedOn": "2026-11-11",
          "label": "Form actions / use:enhance"
        },
        "optimisticUi": {
          "status": "undocumented",
          "note": "The linked data API review does not establish the specific optimistic updates contract defined here. This is a bounded documentation finding, not proof of absence; generic hooks or application-authored code are not counted as an owned implementation.",
          "url": "https://svelte.dev/docs/kit/load",
          "reviewedOn": "2026-11-11"
        },
        "requestCancellation": {
          "status": "undocumented",
          "note": "The linked data API review does not establish the specific stale request handling contract defined here. This is a bounded documentation finding, not proof of absence; generic hooks or application-authored code are not counted as an owned implementation.",
          "url": "https://svelte.dev/docs/kit/load",
          "reviewedOn": "2026-11-11"
        },
        "typedLinks": {
          "status": "undocumented",
          "note": "The linked routing API review does not establish the specific typed links & parameters contract defined here. This is a bounded documentation finding, not proof of absence; generic hooks or application-authored code are not counted as an owned implementation.",
          "url": "https://svelte.dev/docs/kit/link-options",
          "reviewedOn": "2026-11-11"
        },
        "searchParams": {
          "status": "undocumented",
          "note": "The linked routing API review does not establish the specific validated url state contract defined here. This is a bounded documentation finding, not proof of absence; generic hooks or application-authored code are not counted as an owned implementation.",
          "url": "https://svelte.dev/docs/kit/link-options",
          "reviewedOn": "2026-11-11"
        },
        "stateRestoration": {
          "status": "native",
          "note": "Snapshots capture/restore configured local state across history traversal, with serialization and sessionStorage limitations. Persistent layouts and snapshot state are distinct; large values and sensitive data need care.",
          "url": "https://svelte.dev/docs/kit/snapshots",
          "reviewedOn": "2026-11-11",
          "label": "Snapshots"
        },
        "scrollRestoration": {
          "status": "native",
          "note": "The client router restores history scroll and controls navigation resets through goto/link options. disableScrollHandling transfers that responsibility to the app; arbitrary nested-scrollport restoration is not established here.",
          "url": "https://svelte.dev/docs/kit/$app-navigation",
          "reviewedOn": "2026-11-11",
          "label": "Kit router"
        },
        "navigationBlocking": {
          "status": "native",
          "note": "beforeNavigate can cancel client navigation and request browser confirmation for document exits. Browser unload prompts are restricted and do not provide arbitrary custom UI.",
          "url": "https://svelte.dev/docs/kit/$app-navigation#beforeNavigate",
          "reviewedOn": "2026-11-11",
          "label": "beforeNavigate"
        },
        "navigationAccessibility": {
          "status": "native",
          "note": "Kit announces route titles through a live region and resets focus after navigation/enhanced forms, with documented exceptions. Authors supply meaningful titles and remain responsible for app accessibility.",
          "url": "https://svelte.dev/docs/kit/accessibility",
          "reviewedOn": "2026-11-11",
          "label": "Focus / route announcer"
        },
        "a11yChecks": {
          "status": "native",
          "note": "The Svelte compiler emits accessibility warnings for detectable markup/ARIA/keyboard patterns. Warnings can be suppressed, and static checks do not establish complete keyboard or screen-reader correctness.",
          "url": "https://svelte.dev/docs/svelte/compiler-warnings",
          "reviewedOn": "2026-11-11",
          "label": "Compiler warnings"
        },
        "lazyActivation": {
          "status": "undocumented",
          "note": "The linked rendering API review does not establish the specific deferred activation contract defined here. This is a bounded documentation finding, not proof of absence; generic hooks or application-authored code are not counted as an owned implementation.",
          "url": "https://svelte.dev/docs/kit/page-options",
          "reviewedOn": "2026-11-11"
        },
        "codeSplitting": {
          "status": "native",
          "note": "Kit builds route-specific browser bundles and loads the code needed for navigation. Shared dependencies and component imports still affect what each page downloads.",
          "url": "https://svelte.dev/docs/kit/performance",
          "reviewedOn": "2026-11-11",
          "label": "Route bundles"
        },
        "offline": {
          "status": "native",
          "note": "Kit bundles/registers an authored service worker and exposes versioned build/static/prerender manifests for caching. The app owns fetch strategies, updates and offline data behavior; server actions still need a server.",
          "url": "https://svelte.dev/docs/kit/service-workers",
          "reviewedOn": "2026-11-11",
          "label": "Service-worker integration"
        },
        "scheduling": {
          "status": "undocumented",
          "note": "The linked backend API review does not establish the specific scheduled tasks contract defined here. This is a bounded documentation finding, not proof of absence; generic hooks or application-authored code are not counted as an owned implementation.",
          "url": "https://svelte.dev/docs/kit/routing",
          "reviewedOn": "2026-11-11"
        },
        "notifications": {
          "status": "undocumented",
          "note": "The linked backend API review does not establish the specific multi-channel notifications contract defined here. This is a bounded documentation finding, not proof of absence; generic hooks or application-authored code are not counted as an owned implementation.",
          "url": "https://svelte.dev/docs/kit/routing",
          "reviewedOn": "2026-11-11"
        },
        "searchIndex": {
          "status": "undocumented",
          "note": "The linked backend API review does not establish the specific search indexing contract defined here. This is a bounded documentation finding, not proof of absence; generic hooks or application-authored code are not counted as an owned implementation.",
          "url": "https://svelte.dev/docs/kit/routing",
          "reviewedOn": "2026-11-11"
        },
        "fieldEncryption": {
          "status": "undocumented",
          "note": "The linked database API review does not establish the specific encrypted model fields contract defined here. This is a bounded documentation finding, not proof of absence; generic hooks or application-authored code are not counted as an owned implementation.",
          "url": "https://svelte.dev/docs/kit/hooks",
          "reviewedOn": "2026-11-11"
        },
        "httpTests": {
          "status": "undocumented",
          "note": "The linked testing API review does not establish the specific http integration tests contract defined here. This is a bounded documentation finding, not proof of absence; generic hooks or application-authored code are not counted as an owned implementation.",
          "url": "https://svelte.dev/docs/cli/sv-add",
          "reviewedOn": "2026-11-11"
        }
      }
    },
    {
      "id": "tanstack-start",
      "label": "TanStack Start",
      "kind": "Application framework",
      "logo": "logos/tanstack-start.svg",
      "color": "var(--fw-fg)",
      "scope": "TanStack Start v1 React documentation, with TanStack Router. Experimental Server Components are qualified separately; this is not the Solid adapter review.",
      "reviewedOn": "2026-11-10",
      "updatedOn": "2026-11-11",
      "capabilities": {
        "ssr": {
          "status": "native",
          "note": "Start integrates React SSR, streaming, hydration and Suspense with its router. This does not imply experimental React Server Components are enabled.",
          "url": "https://tanstack.com/start/latest/docs/framework/react/overview"
        },
        "streaming": {
          "status": "native",
          "note": "Start integrates React SSR, streaming, hydration and Suspense with its router. This does not imply experimental React Server Components are enabled.",
          "url": "https://tanstack.com/start/latest/docs/framework/react/overview"
        },
        "suspense": {
          "status": "native",
          "note": "Start integrates React SSR, streaming, hydration and Suspense with its router. This does not imply experimental React Server Components are enabled.",
          "url": "https://tanstack.com/start/latest/docs/framework/react/overview"
        },
        "client": {
          "status": "native",
          "note": "Start integrates React SSR, streaming, hydration and Suspense with its router. This does not imply experimental React Server Components are enabled.",
          "url": "https://tanstack.com/start/latest/docs/framework/react/overview"
        },
        "ssg": {
          "status": "native",
          "note": "The build plugin can crawl/enumerate routes and generate static HTML. Dynamic server functions are unavailable on static-only hosting.",
          "url": "https://tanstack.com/start/latest/docs/framework/react/guide/static-prerendering"
        },
        "csr": {
          "status": "native",
          "note": "Route-level ssr:false disables server rendering; normal client navigation still loads and renders through the router.",
          "url": "https://tanstack.com/start/latest/docs/framework/react/guide/selective-ssr"
        },
        "serverOnly": {
          "status": "partial",
          "note": "Server Components require an explicit experimental RSC plugin setup. Ordinary server functions are supported without enabling RSC.",
          "url": "https://tanstack.com/start/latest/docs/framework/react/guide/server-components",
          "label": "Experimental RSC",
          "reviewedOn": "2026-11-10"
        },
        "partialRendering": {
          "status": "undocumented",
          "note": "Not established in the reviewed TanStack Start rendering guide. External integrations or application code may provide this behavior.",
          "url": "https://tanstack.com/start/latest/docs/framework/react/guide/selective-ssr"
        },
        "routing": {
          "status": "native",
          "note": "Start integrates TanStack Router's nested routes/layouts, parameters, navigation and loader prefetching.",
          "url": "https://tanstack.com/start/latest/docs/framework/react/guide/routing"
        },
        "layouts": {
          "status": "native",
          "note": "Start integrates TanStack Router's nested routes/layouts, parameters, navigation and loader prefetching.",
          "url": "https://tanstack.com/start/latest/docs/framework/react/guide/routing"
        },
        "dynamicRoutes": {
          "status": "native",
          "note": "Start integrates TanStack Router's nested routes/layouts, parameters, navigation and loader prefetching.",
          "url": "https://tanstack.com/start/latest/docs/framework/react/guide/routing"
        },
        "parallelRoutes": {
          "status": "undocumented",
          "note": "Not established in the reviewed TanStack Start routing guide. External integrations or application code may provide this behavior.",
          "url": "https://tanstack.com/start/latest/docs/framework/react/guide/routing"
        },
        "interceptedRoutes": {
          "status": "undocumented",
          "note": "Not established in the reviewed TanStack Start routing guide. External integrations or application code may provide this behavior.",
          "url": "https://tanstack.com/start/latest/docs/framework/react/guide/routing"
        },
        "prefetch": {
          "status": "native",
          "note": "Start integrates TanStack Router's nested routes/layouts, parameters, navigation and loader prefetching.",
          "url": "https://tanstack.com/start/latest/docs/framework/react/guide/routing"
        },
        "softNavigation": {
          "status": "native",
          "note": "The integrated TanStack Router updates route UI and browser history without a reload; reloadDocument explicitly requests document navigation. Pending state, loaders and preloading have separate controls.",
          "url": "https://tanstack.com/router/latest/docs/guide/navigation",
          "reviewedOn": "2026-11-11",
          "label": "TanStack Router"
        },
        "viewTransitions": {
          "status": "native",
          "note": "Router viewTransition/defaultViewTransition coordinate document.startViewTransition during navigation, including transition types. It is opt-in and depends on browser support; animation CSS and reduced-motion behavior remain app-owned.",
          "url": "https://tanstack.com/router/latest/docs/framework/react/examples/view-transitions",
          "reviewedOn": "2026-11-11",
          "label": "TanStack Router"
        },
        "redirects": {
          "status": "native",
          "note": "Start integrates TanStack Router's nested routes/layouts, parameters, navigation and loader prefetching.",
          "url": "https://tanstack.com/start/latest/docs/framework/react/guide/routing"
        },
        "serverData": {
          "status": "native",
          "note": "createServerFn provides typed server handlers callable from route loaders and clients, with middleware and input validation.",
          "url": "https://tanstack.com/start/latest/docs/framework/react/guide/server-functions"
        },
        "clientData": {
          "status": "native",
          "note": "Router loaders cache and deduplicate reads, preload destinations and invalidate route data. The route cache is coarser than TanStack Query and is not a durable server cache.",
          "url": "https://tanstack.com/router/latest/docs/framework/react/guide/data-loading"
        },
        "requestDedupe": {
          "status": "native",
          "note": "Router loaders cache and deduplicate reads, preload destinations and invalidate route data. The route cache is coarser than TanStack Query and is not a durable server cache.",
          "url": "https://tanstack.com/router/latest/docs/framework/react/guide/data-loading"
        },
        "persistentCache": {
          "status": "undocumented",
          "note": "Not established in the reviewed TanStack Start data guide. External integrations or application code may provide this behavior.",
          "url": "https://tanstack.com/start/latest/docs/framework/react/guide/server-functions"
        },
        "invalidation": {
          "status": "native",
          "note": "Router loaders cache and deduplicate reads, preload destinations and invalidate route data. The route cache is coarser than TanStack Query and is not a durable server cache.",
          "url": "https://tanstack.com/router/latest/docs/framework/react/guide/data-loading"
        },
        "isr": {
          "status": "undocumented",
          "note": "Not established in the reviewed TanStack Start data guide. External integrations or application code may provide this behavior.",
          "url": "https://tanstack.com/start/latest/docs/framework/react/guide/server-functions"
        },
        "apiRoutes": {
          "status": "native",
          "note": "Server routes handle HTTP methods and standard Request/Response bodies, including multipart data. Durable file storage is application/provider-owned.",
          "url": "https://tanstack.com/start/latest/docs/framework/react/guide/server-routes"
        },
        "actions": {
          "status": "native",
          "note": "createServerFn provides typed server handlers callable from route loaders and clients, with middleware and input validation.",
          "url": "https://tanstack.com/start/latest/docs/framework/react/guide/server-functions"
        },
        "forms": {
          "status": "native",
          "note": "Server functions accept form data and input validation, with ordinary form submission as a documented transport.",
          "url": "https://tanstack.com/start/latest/docs/framework/react/guide/server-functions",
          "reviewedOn": "2026-11-11",
          "assessment": {
            "summary": "Form transport, validation, pending feedback and optimistic state are separate behaviors; the progressive-forms and optimistic-updates rows review the latter contracts explicitly.",
            "strengths": [
              "Server functions accept form data and input validation, with ordinary form submission as a documented transport."
            ],
            "tradeoffs": [
              "Do not infer a no-JavaScript submission path, automatic validation, accessible field errors or rollback merely from the ability to receive FormData."
            ]
          }
        },
        "middleware": {
          "status": "native",
          "note": "Composable request and server-function middleware supports shared checks and typed context.",
          "url": "https://tanstack.com/start/latest/docs/framework/react/guide/middleware"
        },
        "cookies": {
          "status": "native",
          "note": "Request-scoped getCookie/setCookie/deleteCookie helpers support session-token cookies. Identity storage, lookup and revocation are application/auth-library responsibilities.",
          "url": "https://tanstack.com/start/latest/docs/framework/react/guide/authentication-server-primitives"
        },
        "cssModules": {
          "status": "native",
          "note": "Start discovers route CSS Modules in the build graph and links their scoped stylesheets during SSR and client navigation.",
          "url": "https://tanstack.com/start/latest/docs/framework/react/guide/css-styling"
        },
        "scopedCss": {
          "status": "native",
          "note": "Start discovers route CSS Modules in the build graph and links their scoped stylesheets during SSR and client navigation.",
          "url": "https://tanstack.com/start/latest/docs/framework/react/guide/css-styling"
        },
        "tailwind": {
          "status": "community",
          "note": "The guide integrates Tailwind's external build plugin and generated stylesheet.",
          "url": "https://tanstack.com/start/latest/docs/framework/react/guide/tailwind-integration",
          "label": "Tailwind"
        },
        "cssInJs": {
          "status": "undocumented",
          "note": "Not established in the reviewed TanStack Start styling guide. External integrations or application code may provide this behavior.",
          "url": "https://tanstack.com/start/latest/docs/framework/react/overview"
        },
        "images": {
          "status": "undocumented",
          "note": "Not established in the reviewed TanStack Start assets guide. External integrations or application code may provide this behavior.",
          "url": "https://tanstack.com/start/latest/docs/framework/react/guide/seo"
        },
        "fonts": {
          "status": "undocumented",
          "note": "Not established in the reviewed TanStack Start assets guide. External integrations or application code may provide this behavior.",
          "url": "https://tanstack.com/start/latest/docs/framework/react/guide/seo"
        },
        "scripts": {
          "status": "undocumented",
          "note": "Not established in the reviewed TanStack Start assets guide. External integrations or application code may provide this behavior.",
          "url": "https://tanstack.com/start/latest/docs/framework/react/guide/seo"
        },
        "staticAssets": {
          "status": "undocumented",
          "note": "Not established in the reviewed TanStack Start assets guide. External integrations or application code may provide this behavior.",
          "url": "https://tanstack.com/start/latest/docs/framework/react/guide/seo"
        },
        "metadata": {
          "status": "native",
          "note": "A route head function returns titles, metadata and links and can read loader data; HeadContent renders matched-route head output.",
          "url": "https://tanstack.com/start/latest/docs/framework/react/guide/seo",
          "assessment": {
            "summary": "Typed route head output with explicit nested-route deduplication and loader-data access.",
            "strengths": [
              "A child title or same-name/property meta tag replaces the inherited entry.",
              "Head output is loaded and unloaded with route visibility."
            ],
            "tradeoffs": [
              "Composition happens at tag level, rather than merging structured SEO objects.",
              "Title templates and more complex inherited arrays require application composition."
            ]
          }
        },
        "dynamicMetadata": {
          "status": "native",
          "note": "A route head function returns titles, metadata and links and can read loader data; HeadContent renders matched-route head output.",
          "url": "https://tanstack.com/start/latest/docs/framework/react/guide/seo"
        },
        "metadataInheritance": {
          "status": "native",
          "note": "Nested-route head entries deduplicate titles and meta tags by semantic name/property; the last/deepest matching tag wins. This is tag-level composition, not recursive SEO-object merging.",
          "url": "https://tanstack.com/router/latest/docs/framework/react/guide/document-head-management"
        },
        "metadataOverrides": {
          "status": "native",
          "note": "Nested-route head entries deduplicate titles and meta tags by semantic name/property; the last/deepest matching tag wins. This is tag-level composition, not recursive SEO-object merging.",
          "url": "https://tanstack.com/router/latest/docs/framework/react/guide/document-head-management"
        },
        "titleTemplates": {
          "status": "partial",
          "note": "Titles can be composed from matched route data. An inherited template/absolute-reset field API is not established; composition is application code.",
          "url": "https://tanstack.com/router/latest/docs/framework/react/guide/document-head-management",
          "label": "Route-data composition",
          "reviewedOn": "2026-11-10"
        },
        "socialImages": {
          "status": "undocumented",
          "note": "Not established in the reviewed TanStack Start metadata guide. External integrations or application code may provide this behavior.",
          "url": "https://tanstack.com/start/latest/docs/framework/react/guide/seo"
        },
        "sitemaps": {
          "status": "native",
          "note": "Build-plugin sitemap generation integrates with prerender crawling and an explicit canonical host.",
          "url": "https://tanstack.com/start/latest/docs/framework/react/guide/seo"
        },
        "robots": {
          "status": "partial",
          "note": "The SEO guide publishes an application-owned robots.txt. It does not establish a typed robots directive generator.",
          "url": "https://tanstack.com/start/latest/docs/framework/react/guide/seo",
          "label": "Authored robots.txt",
          "reviewedOn": "2026-11-10"
        },
        "markdown": {
          "status": "official",
          "note": "The documented TanStack Markdown React renderer works during SSR and browser navigation.",
          "url": "https://tanstack.com/start/latest/docs/framework/react/guide/rendering-markdown",
          "label": "TanStack Markdown"
        },
        "collections": {
          "status": "undocumented",
          "note": "Not established in the reviewed TanStack Start content guide. External integrations or application code may provide this behavior.",
          "url": "https://tanstack.com/start/latest/docs/framework/react/guide/seo"
        },
        "draftMode": {
          "status": "undocumented",
          "note": "Not established in the reviewed TanStack Start content guide. External integrations or application code may provide this behavior.",
          "url": "https://tanstack.com/start/latest/docs/framework/react/guide/seo"
        },
        "translations": {
          "status": "undocumented",
          "note": "Not established in the reviewed TanStack Start i18n guide. External integrations or application code may provide this behavior.",
          "url": "https://tanstack.com/start/latest/docs/framework/react/guide/routing"
        },
        "localeRouting": {
          "status": "undocumented",
          "note": "Not established in the reviewed TanStack Start i18n guide. External integrations or application code may provide this behavior.",
          "url": "https://tanstack.com/start/latest/docs/framework/react/guide/routing"
        },
        "localeFormatting": {
          "status": "undocumented",
          "note": "Not established in the reviewed TanStack Start i18n guide. External integrations or application code may provide this behavior.",
          "url": "https://tanstack.com/start/latest/docs/framework/react/guide/routing"
        },
        "auth": {
          "status": "community",
          "note": "The guide integrates named providers/libraries such as Better Auth, Clerk and WorkOS; applications choose and configure one.",
          "url": "https://tanstack.com/start/latest/docs/framework/react/guide/authentication",
          "label": "Auth integration"
        },
        "csp": {
          "status": "native",
          "note": "Router ssr.nonce lets generated SSR tags carry an application-supplied request nonce; HeadContent also applies it to inlined styles. The application must generate the nonce and matching CSP response header.",
          "url": "https://tanstack.com/start/latest/docs/framework/react/guide/css-styling",
          "reviewedOn": "2026-11-11",
          "label": "Application-configured CSP"
        },
        "cspNonce": {
          "status": "native",
          "note": "Router ssr.nonce lets generated SSR tags carry an application-supplied request nonce; HeadContent also applies it to inlined styles. The application must generate the nonce and matching CSP response header.",
          "url": "https://tanstack.com/start/latest/docs/framework/react/guide/css-styling",
          "reviewedOn": "2026-11-11",
          "label": "SSR nonce option"
        },
        "csrf": {
          "status": "native",
          "note": "createCsrfMiddleware enforces browser-origin checks for server functions. It is automatic without a custom src/start.ts; custom start configuration must register it explicitly.",
          "url": "https://tanstack.com/start/latest/docs/framework/react/guide/server-functions"
        },
        "environment": {
          "status": "native",
          "note": "Server/client environment boundaries and runtime-aware per-request secret reads are documented; returned values can still expose secrets.",
          "url": "https://tanstack.com/start/latest/docs/framework/react/guide/environment-variables"
        },
        "types": {
          "status": "native",
          "note": "TypeScript routes/server functions and the Vite/Rsbuild workflow support typed application development and hot updates.",
          "url": "https://tanstack.com/start/latest/docs/framework/react/overview"
        },
        "hmr": {
          "status": "native",
          "note": "TypeScript routes/server functions and the Vite/Rsbuild workflow support typed application development and hot updates.",
          "url": "https://tanstack.com/start/latest/docs/framework/react/overview"
        },
        "cli": {
          "status": "native",
          "note": "TypeScript routes/server functions and the Vite/Rsbuild workflow support typed application development and hot updates.",
          "url": "https://tanstack.com/start/latest/docs/framework/react/overview"
        },
        "bundleAnalysis": {
          "status": "undocumented",
          "note": "Not established in the reviewed TanStack Start tooling guide. External integrations or application code may provide this behavior.",
          "url": "https://tanstack.com/start/latest/docs/framework/react/overview"
        },
        "unitTests": {
          "status": "undocumented",
          "note": "Not established in the reviewed TanStack Start testing guide. External integrations or application code may provide this behavior.",
          "url": "https://tanstack.com/start/latest/docs/framework/react/guide/observability"
        },
        "e2eTests": {
          "status": "undocumented",
          "note": "Not established in the reviewed TanStack Start testing guide. External integrations or application code may provide this behavior.",
          "url": "https://tanstack.com/start/latest/docs/framework/react/guide/observability"
        },
        "observability": {
          "status": "community",
          "note": "The guide documents Sentry instrumentation; request middleware can also add app-owned logging.",
          "url": "https://tanstack.com/start/latest/docs/framework/react/guide/observability",
          "label": "Sentry"
        },
        "errorHandling": {
          "status": "native",
          "note": "Router error components and default/per-route boundaries render fallback UI for failed routes.",
          "url": "https://tanstack.com/start/latest/docs/framework/react/guide/error-boundaries"
        },
        "serverHosting": {
          "status": "native",
          "note": "The overview documents deployment to server and worker runtimes; runtime-specific dependencies must match the target.",
          "url": "https://tanstack.com/start/latest/docs/framework/react/overview"
        },
        "staticHosting": {
          "status": "native",
          "note": "The build plugin can crawl/enumerate routes and generate static HTML. Dynamic server functions are unavailable on static-only hosting.",
          "url": "https://tanstack.com/start/latest/docs/framework/react/guide/static-prerendering"
        },
        "containers": {
          "status": "undocumented",
          "note": "Not established in the reviewed TanStack Start deployment guide. External integrations or application code may provide this behavior.",
          "url": "https://tanstack.com/start/latest/docs/framework/react/overview"
        },
        "edgeHosting": {
          "status": "native",
          "note": "The overview documents deployment to server and worker runtimes; runtime-specific dependencies must match the target.",
          "url": "https://tanstack.com/start/latest/docs/framework/react/overview"
        },
        "orm": {
          "status": "community",
          "note": "The database guide points to external libraries such as Drizzle and Prisma. Their query, migration and transaction APIs belong to those libraries.",
          "url": "https://tanstack.com/start/latest/docs/framework/react/guide/databases",
          "label": "Drizzle / Prisma",
          "reviewedOn": "2026-11-11",
          "assessment": {
            "summary": "An ORM/query API establishes a data-access surface, not identical relationship loading, N+1 detection, migration or encryption behavior.",
            "strengths": [
              "The database guide points to external libraries such as Drizzle and Prisma. Their query, migration and transaction APIs belong to those libraries."
            ],
            "tradeoffs": [
              "Review eager loading, query counts and transaction semantics for the selected driver. Schema migrations, transactions and encrypted fields are compared separately."
            ]
          }
        },
        "migrations": {
          "status": "community",
          "note": "The database guide points to external libraries such as Drizzle and Prisma. Their query, migration and transaction APIs belong to those libraries.",
          "url": "https://tanstack.com/start/latest/docs/framework/react/guide/databases",
          "label": "Drizzle / Prisma"
        },
        "transactions": {
          "status": "community",
          "note": "The database guide points to external libraries such as Drizzle and Prisma. Their query, migration and transaction APIs belong to those libraries.",
          "url": "https://tanstack.com/start/latest/docs/framework/react/guide/databases",
          "label": "Drizzle / Prisma"
        },
        "jobs": {
          "status": "undocumented",
          "note": "The reviewed TanStack Start server/data guides do not establish an owned background jobs API. An application can integrate a separate provider or library; this finding does not mean that integration is impossible.",
          "url": "https://tanstack.com/start/latest/docs/framework/react/guide/server-functions"
        },
        "mail": {
          "status": "undocumented",
          "note": "The reviewed TanStack Start server/data guides do not establish an owned email API. An application can integrate a separate provider or library; this finding does not mean that integration is impossible.",
          "url": "https://tanstack.com/start/latest/docs/framework/react/guide/server-functions"
        },
        "uploads": {
          "status": "partial",
          "note": "Routes can read Request.formData and receive uploads. A framework storage lifecycle or upload service is not established.",
          "url": "https://tanstack.com/start/latest/docs/framework/react/guide/server-routes",
          "label": "Multipart endpoints",
          "reviewedOn": "2026-11-10"
        },
        "realtime": {
          "status": "undocumented",
          "note": "The reviewed TanStack Start server/data guides do not establish an owned real-time delivery API. An application can integrate a separate provider or library; this finding does not mean that integration is impossible.",
          "url": "https://tanstack.com/start/latest/docs/framework/react/guide/server-functions"
        },
        "xssEscaping": {
          "status": "native",
          "note": "Its integrated UI renderer supplies this policy. Normal text values are rendered as text; dangerouslySetInnerHTML bypasses this path and requires trusted/sanitized HTML. Do not infer arbitrary URL/CSS safety from text escaping.",
          "url": "https://react.dev/reference/react-dom/components/common#dangerously-setting-the-inner-html",
          "reviewedOn": "2026-11-11"
        },
        "htmlSanitization": {
          "status": "undocumented",
          "note": "The linked security API review does not establish the specific html sanitization contract defined here. This is a bounded documentation finding, not proof of absence; generic hooks or application-authored code are not counted as an owned implementation.",
          "url": "https://tanstack.com/start/latest/docs/framework/react/guide/css-styling",
          "reviewedOn": "2026-11-11"
        },
        "authorization": {
          "status": "undocumented",
          "note": "The linked security API review does not establish the specific authorization policies contract defined here. This is a bounded documentation finding, not proof of absence; generic hooks or application-authored code are not counted as an owned implementation.",
          "url": "https://tanstack.com/start/latest/docs/framework/react/guide/css-styling",
          "reviewedOn": "2026-11-11"
        },
        "rateLimiting": {
          "status": "undocumented",
          "note": "The linked security API review does not establish the specific rate limiting contract defined here. This is a bounded documentation finding, not proof of absence; generic hooks or application-authored code are not counted as an owned implementation.",
          "url": "https://tanstack.com/start/latest/docs/framework/react/guide/css-styling",
          "reviewedOn": "2026-11-11"
        },
        "progressiveEnhancement": {
          "status": "undocumented",
          "note": "The linked server API review does not establish the specific progressive forms contract defined here. This is a bounded documentation finding, not proof of absence; generic hooks or application-authored code are not counted as an owned implementation.",
          "url": "https://tanstack.com/start/latest/docs/framework/react/guide/server-functions",
          "reviewedOn": "2026-11-11"
        },
        "optimisticUi": {
          "status": "native",
          "note": "React useOptimistic overlays pending mutation UI and reconciles against the supplied confirmed state through Actions/transitions. Application code must define the update and failure feedback; this is not a durable offline write queue.",
          "url": "https://react.dev/reference/react/useOptimistic",
          "reviewedOn": "2026-11-11",
          "label": "React useOptimistic"
        },
        "requestCancellation": {
          "status": "native",
          "note": "Router loaders receive an AbortController that is canceled when a load is superseded. Loaders must pass its signal into cancelable I/O; server mutations are not rolled back by aborting the browser request.",
          "url": "https://tanstack.com/router/latest/docs/guide/data-loading",
          "reviewedOn": "2026-11-11",
          "label": "Loader abortController"
        },
        "typedLinks": {
          "status": "native",
          "note": "TanStack Router checks route paths, params and navigation destinations from the registered route tree. The registration/type pipeline is required; casting a string can bypass its checks.",
          "url": "https://tanstack.com/router/latest/docs/guide/type-safety",
          "reviewedOn": "2026-11-11",
          "label": "TanStack Router"
        },
        "searchParams": {
          "status": "native",
          "note": "validateSearch parses/validates URL state into typed search values, with schema adapters and explicit malformed-input fallbacks/errors. TypeScript annotations alone are not runtime validation.",
          "url": "https://tanstack.com/router/latest/docs/guide/search-params",
          "reviewedOn": "2026-11-11",
          "label": "validateSearch"
        },
        "stateRestoration": {
          "status": "native",
          "note": "Persistent nested route components retain parent state while child matches change. Unmounted page state is not a general snapshot service; application/URL state is needed where retention is required.",
          "url": "https://tanstack.com/router/latest/docs/routing/route-trees",
          "reviewedOn": "2026-11-11",
          "label": "Nested route retention"
        },
        "scrollRestoration": {
          "status": "native",
          "note": "Router scroll restoration tracks document and registered scrollable regions and restores before paint. scrollRestoration must be enabled; cache keys and virtualized scrollers may require configuration.",
          "url": "https://tanstack.com/router/latest/docs/guide/scroll-restoration",
          "reviewedOn": "2026-11-11",
          "label": "TanStack Router"
        },
        "navigationBlocking": {
          "status": "native",
          "note": "useBlocker/Blocker can pause navigation for custom confirmation and provide proceed/reset. beforeunload covers browser exits separately and inherits browser restrictions.",
          "url": "https://tanstack.com/router/latest/docs/guide/navigation-blocking",
          "reviewedOn": "2026-11-11",
          "label": "TanStack Router"
        },
        "navigationAccessibility": {
          "status": "undocumented",
          "note": "The linked client rendering API review does not establish the specific accessible navigation contract defined here. This is a bounded documentation finding, not proof of absence; generic hooks or application-authored code are not counted as an owned implementation.",
          "url": "https://tanstack.com/start/latest/docs/framework/react/overview",
          "reviewedOn": "2026-11-11"
        },
        "a11yChecks": {
          "status": "undocumented",
          "note": "The linked client rendering API review does not establish the specific accessibility checks contract defined here. This is a bounded documentation finding, not proof of absence; generic hooks or application-authored code are not counted as an owned implementation.",
          "url": "https://tanstack.com/start/latest/docs/framework/react/overview",
          "reviewedOn": "2026-11-11"
        },
        "lazyActivation": {
          "status": "undocumented",
          "note": "The linked rendering API review does not establish the specific deferred activation contract defined here. This is a bounded documentation finding, not proof of absence; generic hooks or application-authored code are not counted as an owned implementation.",
          "url": "https://tanstack.com/start/latest/docs/framework/react/overview",
          "reviewedOn": "2026-11-11"
        },
        "codeSplitting": {
          "status": "native",
          "note": "The Router build integration automatically splits route components and noncritical exports while leaving matching-critical work available. Correct bundler/plugin configuration and shared chunks affect the output.",
          "url": "https://tanstack.com/router/latest/docs/guide/automatic-code-splitting",
          "reviewedOn": "2026-11-11",
          "label": "Router build plugin"
        },
        "offline": {
          "status": "undocumented",
          "note": "The linked deployment API review does not establish the specific offline integration contract defined here. This is a bounded documentation finding, not proof of absence; generic hooks or application-authored code are not counted as an owned implementation.",
          "url": "https://tanstack.com/start/latest/docs/framework/react/overview",
          "reviewedOn": "2026-11-11"
        },
        "scheduling": {
          "status": "undocumented",
          "note": "The linked backend API review does not establish the specific scheduled tasks contract defined here. This is a bounded documentation finding, not proof of absence; generic hooks or application-authored code are not counted as an owned implementation.",
          "url": "https://tanstack.com/start/latest/docs/framework/react/guide/server-functions",
          "reviewedOn": "2026-11-11"
        },
        "notifications": {
          "status": "undocumented",
          "note": "The linked backend API review does not establish the specific multi-channel notifications contract defined here. This is a bounded documentation finding, not proof of absence; generic hooks or application-authored code are not counted as an owned implementation.",
          "url": "https://tanstack.com/start/latest/docs/framework/react/guide/server-functions",
          "reviewedOn": "2026-11-11"
        },
        "searchIndex": {
          "status": "undocumented",
          "note": "The linked backend API review does not establish the specific search indexing contract defined here. This is a bounded documentation finding, not proof of absence; generic hooks or application-authored code are not counted as an owned implementation.",
          "url": "https://tanstack.com/start/latest/docs/framework/react/guide/server-functions",
          "reviewedOn": "2026-11-11"
        },
        "fieldEncryption": {
          "status": "undocumented",
          "note": "The linked database API review does not establish the specific encrypted model fields contract defined here. This is a bounded documentation finding, not proof of absence; generic hooks or application-authored code are not counted as an owned implementation.",
          "url": "https://tanstack.com/start/latest/docs/framework/react/guide/databases",
          "reviewedOn": "2026-11-11"
        },
        "httpTests": {
          "status": "undocumented",
          "note": "The linked testing API review does not establish the specific http integration tests contract defined here. This is a bounded documentation finding, not proof of absence; generic hooks or application-authored code are not counted as an owned implementation.",
          "url": "https://tanstack.com/start/latest/docs/framework/react/guide/observability",
          "reviewedOn": "2026-11-11"
        }
      }
    },
    {
      "id": "topcoat",
      "label": "Topcoat",
      "kind": "UI framework",
      "logo": "logos/topcoat.svg",
      "color": "var(--fw-fg)",
      "scope": "Topcoat 0.3.1 crate README and roadmap; early-stage and experimental.",
      "reviewedOn": "2026-11-10",
      "updatedOn": "2026-11-11",
      "capabilities": {
        "ssr": {
          "status": "native",
          "note": "Async Rust view components render markup on the server.",
          "url": "https://docs.rs/crate/topcoat/0.3.1/source/README.md"
        },
        "streaming": {
          "status": "planned",
          "note": "Streaming SSR / Suspense is an unchecked roadmap item in the reviewed version.",
          "url": "https://docs.rs/crate/topcoat/0.3.1/source/README.md"
        },
        "suspense": {
          "status": "planned",
          "note": "Streaming SSR / Suspense is an unchecked roadmap item in the reviewed version.",
          "url": "https://docs.rs/crate/topcoat/0.3.1/source/README.md"
        },
        "client": {
          "status": "native",
          "note": "Reactive Rust expressions compile to JavaScript that activates server-rendered UI; shards can replace server-rendered fragments.",
          "url": "https://docs.rs/crate/topcoat/0.3.1/source/README.md",
          "label": "Compiled JS"
        },
        "ssg": {
          "status": "planned",
          "note": "Static export and prerendering are unchecked roadmap items in the reviewed version.",
          "url": "https://docs.rs/crate/topcoat/0.3.1/source/README.md"
        },
        "csr": {
          "status": "partial",
          "note": "Compiled reactive expressions update server-authored UI. A standalone CSR application root is not established.",
          "url": "https://docs.rs/topcoat/0.3.1/topcoat/runtime/",
          "label": "Server-authored runtime",
          "reviewedOn": "2026-11-10"
        },
        "serverOnly": {
          "status": "native",
          "note": "Rust view/component code renders on the server; explicitly reactive expressions compile to JavaScript.",
          "url": "https://docs.rs/topcoat/0.3.1/topcoat/view/"
        },
        "partialRendering": {
          "status": "undocumented",
          "note": "The reviewed roadmap still plans prerendering and streaming; a static-shell/dynamic-hole pipeline is not established.",
          "url": "https://docs.rs/crate/topcoat/0.3.1/source/README.md"
        },
        "routing": {
          "status": "native",
          "note": "Pages, layouts, and API routes support manual or auto-discovered routers.",
          "url": "https://docs.rs/crate/topcoat/0.3.1/source/README.md"
        },
        "layouts": {
          "status": "native",
          "note": "Module layouts wrap routed pages and compose app-level structure.",
          "url": "https://docs.rs/topcoat/0.3.1/topcoat/router/"
        },
        "dynamicRoutes": {
          "status": "native",
          "note": "Page/API route macros support typed path and query parameters.",
          "url": "https://docs.rs/topcoat/0.3.1/topcoat/router/"
        },
        "parallelRoutes": {
          "status": "undocumented",
          "note": "The reviewed module router does not establish independently navigable named slots.",
          "url": "https://docs.rs/topcoat/0.3.1/topcoat/router/"
        },
        "interceptedRoutes": {
          "status": "undocumented",
          "note": "The reviewed router does not define intercepted-modal and direct-entry rendering semantics.",
          "url": "https://docs.rs/topcoat/0.3.1/topcoat/router/"
        },
        "prefetch": {
          "status": "planned",
          "note": "Client-side navigation and prefetching are explicit unchecked roadmap items.",
          "url": "https://docs.rs/crate/topcoat/0.3.1/source/README.md"
        },
        "softNavigation": {
          "status": "planned",
          "note": "Client-side navigation is an unchecked roadmap item in the reviewed 0.3.1 README, rather than a shipped navigation integration.",
          "url": "https://docs.rs/crate/topcoat/0.3.1/source/README.md",
          "reviewedOn": "2026-11-11"
        },
        "viewTransitions": {
          "status": "undocumented",
          "note": "The reviewed routing API does not establish this navigation capability. Application code or another package may provide it; this finding is not proof of absence.",
          "url": "https://docs.rs/crate/topcoat/0.3.1/source/README.md",
          "reviewedOn": "2026-11-11"
        },
        "redirects": {
          "status": "partial",
          "note": "HTTP routes can return application-authored responses; automatic rewrite/proxy configuration is not established.",
          "url": "https://docs.rs/topcoat/0.3.1/topcoat/router/",
          "label": "HTTP responses",
          "reviewedOn": "2026-11-10"
        },
        "serverData": {
          "status": "native",
          "note": "Async view functions load data directly and share request/app context.",
          "url": "https://docs.rs/topcoat/0.3.1/topcoat/context/"
        },
        "clientData": {
          "status": "partial",
          "note": "Procedures/shards can request server results and replace UI. A browser query cache with retry/stale-data policy is not established.",
          "url": "https://docs.rs/topcoat/0.3.1/topcoat/runtime/",
          "label": "Procedures / shards",
          "reviewedOn": "2026-11-10"
        },
        "requestDedupe": {
          "status": "native",
          "note": "#[memoize] shares a request-context function result by arguments within one request.",
          "url": "https://docs.rs/topcoat/0.3.1/topcoat/context/"
        },
        "persistentCache": {
          "status": "undocumented",
          "note": "Request memoization is documented; an across-request data/page cache is not established.",
          "url": "https://docs.rs/topcoat/0.3.1/topcoat/context/"
        },
        "invalidation": {
          "status": "undocumented",
          "note": "The reviewed memoization lifecycle ends with the request; cross-request dependency/tag invalidation is not established.",
          "url": "https://docs.rs/topcoat/0.3.1/topcoat/context/"
        },
        "isr": {
          "status": "undocumented",
          "note": "The reviewed route API does not establish retained static-page regeneration.",
          "url": "https://docs.rs/topcoat/0.3.1/topcoat/router/"
        },
        "apiRoutes": {
          "status": "native",
          "note": "Route macros register HTTP API handlers alongside pages.",
          "url": "https://docs.rs/topcoat/0.3.1/topcoat/router/"
        },
        "actions": {
          "status": "native",
          "note": "Procedures are documented as async server functions callable from the browser.",
          "url": "https://docs.rs/crate/topcoat/0.3.1/source/README.md",
          "label": "Procedures"
        },
        "forms": {
          "status": "partial",
          "note": "Views emit form controls and procedures handle server work; typed form validation is not established in this version.",
          "url": "https://docs.rs/topcoat/0.3.1/topcoat/view/",
          "label": "App forms / procedures",
          "reviewedOn": "2026-11-11",
          "assessment": {
            "summary": "Form transport, validation, pending feedback and optimistic state are separate behaviors; the progressive-forms and optimistic-updates rows review the latter contracts explicitly.",
            "strengths": [
              "Views emit form controls and procedures handle server work; typed form validation is not established in this version."
            ],
            "tradeoffs": [
              "Do not infer a no-JavaScript submission path, automatic validation, accessible field errors or rollback merely from the ability to receive FormData."
            ]
          }
        },
        "middleware": {
          "status": "partial",
          "note": "Request-context functions compose shared checks; the guide recommends functions rather than a general middleware chain.",
          "url": "https://docs.rs/topcoat/0.3.1/topcoat/context/",
          "label": "Context functions",
          "reviewedOn": "2026-11-10"
        },
        "cookies": {
          "status": "native",
          "note": "Cookie helpers support signed/encrypted and prefixed cookies; sessions accept app-supplied storage.",
          "url": "https://docs.rs/topcoat/0.3.1/topcoat/cookie/"
        },
        "cssModules": {
          "status": "undocumented",
          "note": "The reviewed view/style APIs do not document CSS Modules class-map compilation.",
          "url": "https://docs.rs/topcoat/0.3.1/topcoat/view/"
        },
        "scopedCss": {
          "status": "undocumented",
          "note": "Views accept authored classes/styles; component-local selector rewriting is not established.",
          "url": "https://docs.rs/topcoat/0.3.1/topcoat/view/"
        },
        "tailwind": {
          "status": "native",
          "note": "The optional Tailwind integration runs the external compiler and bundles generated CSS.",
          "url": "https://docs.rs/topcoat/0.3.1/topcoat/tailwind/"
        },
        "cssInJs": {
          "status": "undocumented",
          "note": "Compiled reactive style expressions do not establish a CSS-in-JS compiler/SSR registry.",
          "url": "https://docs.rs/topcoat/0.3.1/topcoat/runtime/"
        },
        "images": {
          "status": "planned",
          "note": "Image optimization/resizing is an explicit unchecked roadmap item.",
          "url": "https://docs.rs/crate/topcoat/0.3.1/source/README.md"
        },
        "fonts": {
          "status": "native",
          "note": "Font utilities download/bundle Fontsource fonts as application assets; this does not imply every font has automatic subsetting.",
          "url": "https://docs.rs/topcoat/0.3.1/topcoat/font/"
        },
        "scripts": {
          "status": "undocumented",
          "note": "Topcoat manages generated client expressions; arbitrary third-party script scheduling is application-owned.",
          "url": "https://docs.rs/topcoat/0.3.1/topcoat/runtime/",
          "label": "Compiled client runtime"
        },
        "staticAssets": {
          "status": "native",
          "note": "asset! discovers, copies/downloads, and fingerprints application assets.",
          "url": "https://docs.rs/topcoat/0.3.1/topcoat/asset/"
        },
        "metadata": {
          "status": "undocumented",
          "note": "Layout composition is documented; a typed document metadata registry is not established.",
          "url": "https://docs.rs/topcoat/0.3.1/topcoat/router/"
        },
        "dynamicMetadata": {
          "status": "partial",
          "note": "Async server views can load values for authored head tags; there is no established dedicated metadata hook.",
          "url": "https://docs.rs/topcoat/0.3.1/topcoat/view/",
          "label": "Authored head markup",
          "reviewedOn": "2026-11-10"
        },
        "metadataInheritance": {
          "status": "undocumented",
          "note": "Module layout nesting does not establish metadata-field inheritance.",
          "url": "https://docs.rs/topcoat/0.3.1/topcoat/router/"
        },
        "metadataOverrides": {
          "status": "undocumented",
          "note": "A standard child metadata-field merge/clear contract is not established.",
          "url": "https://docs.rs/topcoat/0.3.1/topcoat/router/"
        },
        "titleTemplates": {
          "status": "undocumented",
          "note": "Title text can be rendered by application views; an ancestor title-template API is not established.",
          "url": "https://docs.rs/topcoat/0.3.1/topcoat/view/"
        },
        "socialImages": {
          "status": "undocumented",
          "note": "Asset downloads/fingerprints do not establish dynamic social-card image generation.",
          "url": "https://docs.rs/topcoat/0.3.1/topcoat/asset/"
        },
        "sitemaps": {
          "status": "undocumented",
          "note": "Routes can serve XML, but an automatic URL enumeration/XML sitemap generator is not established.",
          "url": "https://docs.rs/topcoat/0.3.1/topcoat/router/"
        },
        "robots": {
          "status": "native",
          "note": "Application-authored robots.txt can be bundled as an asset; a typed directive generator is not established.",
          "url": "https://docs.rs/topcoat/0.3.1/topcoat/asset/",
          "label": "Authored file"
        },
        "markdown": {
          "status": "undocumented",
          "note": "The reviewed view API does not establish Markdown page parsing/routing.",
          "url": "https://docs.rs/topcoat/0.3.1/topcoat/view/"
        },
        "collections": {
          "status": "undocumented",
          "note": "Assets are bundled; typed content collection schemas/loaders/query APIs are not established.",
          "url": "https://docs.rs/topcoat/0.3.1/topcoat/asset/"
        },
        "draftMode": {
          "status": "undocumented",
          "note": "Request functions can authorize a preview; a dedicated draft/cache-bypass mode is not established.",
          "url": "https://docs.rs/topcoat/0.3.1/topcoat/context/"
        },
        "translations": {
          "status": "undocumented",
          "note": "The reviewed view/runtime API does not establish compile-checked message catalogs or pluralization.",
          "url": "https://docs.rs/topcoat/0.3.1/topcoat/view/"
        },
        "localeRouting": {
          "status": "partial",
          "note": "The request-context guide demonstrates reading Accept-Language; locale URL negotiation and redirects are application policy.",
          "url": "https://docs.rs/topcoat/0.3.1/topcoat/context/",
          "label": "Request helper recipe",
          "reviewedOn": "2026-11-10"
        },
        "localeFormatting": {
          "status": "undocumented",
          "note": "The reviewed rendering API does not establish locale-sensitive number/date formatters.",
          "url": "https://docs.rs/topcoat/0.3.1/topcoat/view/"
        },
        "auth": {
          "status": "planned",
          "note": "Full authentication is planned. Existing cookies/sessions provide primitives, not an identity system.",
          "url": "https://docs.rs/crate/topcoat/0.3.1/source/README.md"
        },
        "csp": {
          "status": "undocumented",
          "note": "The reviewed generated-JavaScript runtime does not document coordinated CSP nonce/hash policy.",
          "url": "https://docs.rs/topcoat/0.3.1/topcoat/runtime/"
        },
        "cspNonce": {
          "status": "undocumented",
          "note": "The reviewed security/rendering API does not establish coordinated per-response CSP nonces for generated scripts and styles. Hash-based CSP and application-authored headers are different mechanisms.",
          "url": "https://docs.rs/topcoat/0.3.1/topcoat/runtime/",
          "reviewedOn": "2026-11-11"
        },
        "csrf": {
          "status": "undocumented",
          "note": "Procedures expose browser-to-server calls, but a CSRF token/origin enforcement contract is not established by the reviewed runtime docs.",
          "url": "https://docs.rs/topcoat/0.3.1/topcoat/runtime/"
        },
        "environment": {
          "status": "partial",
          "note": "Server context can hold configuration; explicitly compiled client expressions must not expose secrets. A public/private environment namespace is not established.",
          "url": "https://docs.rs/topcoat/0.3.1/topcoat/context/",
          "label": "Request / app context",
          "reviewedOn": "2026-11-10"
        },
        "types": {
          "status": "native",
          "note": "Rust checks server components and the typed expressions accepted by the reactive compiler.",
          "url": "https://docs.rs/topcoat/0.3.1/topcoat/view/"
        },
        "hmr": {
          "status": "partial",
          "note": "Development hooks notify the dev server about rebuild/readiness and display status; this does not establish state-preserving hot replacement.",
          "url": "https://docs.rs/topcoat/0.3.1/topcoat/dev/",
          "label": "Dev rebuild integration",
          "reviewedOn": "2026-11-10"
        },
        "cli": {
          "status": "partial",
          "note": "Existing tooling bundles assets; project scaffolding via topcoat new is still on the roadmap.",
          "url": "https://docs.rs/topcoat/0.3.1/topcoat/asset/",
          "label": "Asset tooling",
          "reviewedOn": "2026-11-10"
        },
        "bundleAnalysis": {
          "status": "undocumented",
          "note": "Asset discovery/bundling is documented; a production module-size analysis view is not established.",
          "url": "https://docs.rs/topcoat/0.3.1/topcoat/asset/"
        },
        "unitTests": {
          "status": "undocumented",
          "note": "Rust code can use cargo test, but a documented component test harness is not established in this crate review.",
          "url": "https://docs.rs/topcoat/0.3.1/topcoat/view/"
        },
        "e2eTests": {
          "status": "undocumented",
          "note": "The reviewed runtime docs do not provide a browser end-to-end test integration.",
          "url": "https://docs.rs/topcoat/0.3.1/topcoat/runtime/"
        },
        "observability": {
          "status": "undocumented",
          "note": "Request context exposes headers/extensions; a maintained tracing/metrics integration is not established.",
          "url": "https://docs.rs/topcoat/0.3.1/topcoat/context/"
        },
        "errorHandling": {
          "status": "partial",
          "note": "Views/routes return typed errors; automatic component fallback/recovery boundaries are not established.",
          "url": "https://docs.rs/topcoat/0.3.1/topcoat/view/",
          "label": "Typed error propagation",
          "reviewedOn": "2026-11-10"
        },
        "serverHosting": {
          "status": "native",
          "note": "serve/serve_until run a router from a TCP listener with graceful shutdown.",
          "url": "https://docs.rs/topcoat/0.3.1/topcoat/fn.serve.html"
        },
        "staticHosting": {
          "status": "planned",
          "note": "Static export/prerendering are planned; a static-only production export is not established.",
          "url": "https://docs.rs/crate/topcoat/0.3.1/source/README.md"
        },
        "containers": {
          "status": "undocumented",
          "note": "Deployment documentation is an unchecked roadmap item; a maintained container recipe is not established.",
          "url": "https://docs.rs/crate/topcoat/0.3.1/source/README.md"
        },
        "edgeHosting": {
          "status": "undocumented",
          "note": "Deployment documentation is planned; an edge/worker adapter is not established.",
          "url": "https://docs.rs/crate/topcoat/0.3.1/source/README.md"
        },
        "orm": {
          "status": "undocumented",
          "note": "The reviewed framework documentation does not establish an owned orm / query builder API. Host libraries and application integrations may provide it.",
          "url": "https://github.com/tokio-rs/topcoat"
        },
        "migrations": {
          "status": "undocumented",
          "note": "The reviewed framework documentation does not establish an owned schema migrations API. Host libraries and application integrations may provide it.",
          "url": "https://github.com/tokio-rs/topcoat"
        },
        "transactions": {
          "status": "undocumented",
          "note": "The reviewed framework documentation does not establish an owned transactions API. Host libraries and application integrations may provide it.",
          "url": "https://github.com/tokio-rs/topcoat"
        },
        "jobs": {
          "status": "undocumented",
          "note": "The reviewed framework documentation does not establish an owned background jobs API. Host libraries and application integrations may provide it.",
          "url": "https://github.com/tokio-rs/topcoat"
        },
        "mail": {
          "status": "undocumented",
          "note": "The reviewed framework documentation does not establish an owned email API. Host libraries and application integrations may provide it.",
          "url": "https://github.com/tokio-rs/topcoat"
        },
        "uploads": {
          "status": "undocumented",
          "note": "The reviewed framework documentation does not establish an owned file uploads & storage API. Host libraries and application integrations may provide it.",
          "url": "https://github.com/tokio-rs/topcoat"
        },
        "realtime": {
          "status": "undocumented",
          "note": "The reviewed framework documentation does not establish an owned real-time delivery API. Host libraries and application integrations may provide it.",
          "url": "https://github.com/tokio-rs/topcoat"
        },
        "xssEscaping": {
          "status": "undocumented",
          "note": "The linked security API review does not establish the specific output escaping contract defined here. This is a bounded documentation finding, not proof of absence; generic hooks or application-authored code are not counted as an owned implementation.",
          "url": "https://docs.rs/topcoat/0.3.1/topcoat/runtime/",
          "reviewedOn": "2026-11-11"
        },
        "htmlSanitization": {
          "status": "undocumented",
          "note": "The linked security API review does not establish the specific html sanitization contract defined here. This is a bounded documentation finding, not proof of absence; generic hooks or application-authored code are not counted as an owned implementation.",
          "url": "https://docs.rs/topcoat/0.3.1/topcoat/runtime/",
          "reviewedOn": "2026-11-11"
        },
        "authorization": {
          "status": "undocumented",
          "note": "The linked security API review does not establish the specific authorization policies contract defined here. This is a bounded documentation finding, not proof of absence; generic hooks or application-authored code are not counted as an owned implementation.",
          "url": "https://docs.rs/topcoat/0.3.1/topcoat/runtime/",
          "reviewedOn": "2026-11-11"
        },
        "rateLimiting": {
          "status": "undocumented",
          "note": "The linked security API review does not establish the specific rate limiting contract defined here. This is a bounded documentation finding, not proof of absence; generic hooks or application-authored code are not counted as an owned implementation.",
          "url": "https://docs.rs/topcoat/0.3.1/topcoat/runtime/",
          "reviewedOn": "2026-11-11"
        },
        "progressiveEnhancement": {
          "status": "undocumented",
          "note": "The linked server API review does not establish the specific progressive forms contract defined here. This is a bounded documentation finding, not proof of absence; generic hooks or application-authored code are not counted as an owned implementation.",
          "url": "https://docs.rs/topcoat/0.3.1/topcoat/view/",
          "reviewedOn": "2026-11-11"
        },
        "optimisticUi": {
          "status": "undocumented",
          "note": "The linked data API review does not establish the specific optimistic updates contract defined here. This is a bounded documentation finding, not proof of absence; generic hooks or application-authored code are not counted as an owned implementation.",
          "url": "https://docs.rs/topcoat/0.3.1/topcoat/runtime/",
          "reviewedOn": "2026-11-11"
        },
        "requestCancellation": {
          "status": "undocumented",
          "note": "The linked data API review does not establish the specific stale request handling contract defined here. This is a bounded documentation finding, not proof of absence; generic hooks or application-authored code are not counted as an owned implementation.",
          "url": "https://docs.rs/topcoat/0.3.1/topcoat/runtime/",
          "reviewedOn": "2026-11-11"
        },
        "typedLinks": {
          "status": "undocumented",
          "note": "The linked routing API review does not establish the specific typed links & parameters contract defined here. This is a bounded documentation finding, not proof of absence; generic hooks or application-authored code are not counted as an owned implementation.",
          "url": "https://docs.rs/crate/topcoat/0.3.1/source/README.md",
          "reviewedOn": "2026-11-11"
        },
        "searchParams": {
          "status": "undocumented",
          "note": "The linked routing API review does not establish the specific validated url state contract defined here. This is a bounded documentation finding, not proof of absence; generic hooks or application-authored code are not counted as an owned implementation.",
          "url": "https://docs.rs/crate/topcoat/0.3.1/source/README.md",
          "reviewedOn": "2026-11-11"
        },
        "stateRestoration": {
          "status": "undocumented",
          "note": "The linked routing API review does not establish the specific navigation state retention contract defined here. This is a bounded documentation finding, not proof of absence; generic hooks or application-authored code are not counted as an owned implementation.",
          "url": "https://docs.rs/crate/topcoat/0.3.1/source/README.md",
          "reviewedOn": "2026-11-11"
        },
        "scrollRestoration": {
          "status": "undocumented",
          "note": "The linked routing API review does not establish the specific scroll restoration contract defined here. This is a bounded documentation finding, not proof of absence; generic hooks or application-authored code are not counted as an owned implementation.",
          "url": "https://docs.rs/crate/topcoat/0.3.1/source/README.md",
          "reviewedOn": "2026-11-11"
        },
        "navigationBlocking": {
          "status": "undocumented",
          "note": "The linked routing API review does not establish the specific unsaved-change guards contract defined here. This is a bounded documentation finding, not proof of absence; generic hooks or application-authored code are not counted as an owned implementation.",
          "url": "https://docs.rs/crate/topcoat/0.3.1/source/README.md",
          "reviewedOn": "2026-11-11"
        },
        "navigationAccessibility": {
          "status": "undocumented",
          "note": "The linked client rendering API review does not establish the specific accessible navigation contract defined here. This is a bounded documentation finding, not proof of absence; generic hooks or application-authored code are not counted as an owned implementation.",
          "url": "https://docs.rs/crate/topcoat/0.3.1/source/README.md",
          "reviewedOn": "2026-11-11"
        },
        "a11yChecks": {
          "status": "undocumented",
          "note": "The linked client rendering API review does not establish the specific accessibility checks contract defined here. This is a bounded documentation finding, not proof of absence; generic hooks or application-authored code are not counted as an owned implementation.",
          "url": "https://docs.rs/crate/topcoat/0.3.1/source/README.md",
          "reviewedOn": "2026-11-11"
        },
        "lazyActivation": {
          "status": "undocumented",
          "note": "The linked rendering API review does not establish the specific deferred activation contract defined here. This is a bounded documentation finding, not proof of absence; generic hooks or application-authored code are not counted as an owned implementation.",
          "url": "https://docs.rs/crate/topcoat/0.3.1/source/README.md",
          "reviewedOn": "2026-11-11"
        },
        "codeSplitting": {
          "status": "undocumented",
          "note": "The linked rendering API review does not establish the specific route / island splitting contract defined here. This is a bounded documentation finding, not proof of absence; generic hooks or application-authored code are not counted as an owned implementation.",
          "url": "https://docs.rs/crate/topcoat/0.3.1/source/README.md",
          "reviewedOn": "2026-11-11"
        },
        "offline": {
          "status": "undocumented",
          "note": "The linked deployment API review does not establish the specific offline integration contract defined here. This is a bounded documentation finding, not proof of absence; generic hooks or application-authored code are not counted as an owned implementation.",
          "url": "https://docs.rs/topcoat/0.3.1/topcoat/fn.serve.html",
          "reviewedOn": "2026-11-11"
        },
        "scheduling": {
          "status": "undocumented",
          "note": "The linked backend API review does not establish the specific scheduled tasks contract defined here. This is a bounded documentation finding, not proof of absence; generic hooks or application-authored code are not counted as an owned implementation.",
          "url": "https://github.com/tokio-rs/topcoat",
          "reviewedOn": "2026-11-11"
        },
        "notifications": {
          "status": "undocumented",
          "note": "The linked backend API review does not establish the specific multi-channel notifications contract defined here. This is a bounded documentation finding, not proof of absence; generic hooks or application-authored code are not counted as an owned implementation.",
          "url": "https://github.com/tokio-rs/topcoat",
          "reviewedOn": "2026-11-11"
        },
        "searchIndex": {
          "status": "undocumented",
          "note": "The linked backend API review does not establish the specific search indexing contract defined here. This is a bounded documentation finding, not proof of absence; generic hooks or application-authored code are not counted as an owned implementation.",
          "url": "https://github.com/tokio-rs/topcoat",
          "reviewedOn": "2026-11-11"
        },
        "fieldEncryption": {
          "status": "undocumented",
          "note": "The linked database API review does not establish the specific encrypted model fields contract defined here. This is a bounded documentation finding, not proof of absence; generic hooks or application-authored code are not counted as an owned implementation.",
          "url": "https://github.com/tokio-rs/topcoat",
          "reviewedOn": "2026-11-11"
        },
        "httpTests": {
          "status": "undocumented",
          "note": "The linked testing API review does not establish the specific http integration tests contract defined here. This is a bounded documentation finding, not proof of absence; generic hooks or application-authored code are not counted as an owned implementation.",
          "url": "https://docs.rs/topcoat/0.3.1/topcoat/view/",
          "reviewedOn": "2026-11-11"
        }
      }
    },
    {
      "id": "vue",
      "label": "Vue",
      "kind": "UI framework",
      "logo": "logos/vue.svg",
      "color": "#41b883",
      "scope": "Vue 3 documentation. Vue Router and external application/i18n packages are identified separately.",
      "reviewedOn": "2026-11-10",
      "updatedOn": "2026-11-11",
      "capabilities": {
        "ssr": {
          "status": "native",
          "note": "vue/server-renderer renders a Vue application to HTML.",
          "url": "https://vuejs.org/api/ssr.html"
        },
        "streaming": {
          "status": "native",
          "note": "Server renderer APIs produce Node or Web streams and can pipe to writable streams. This does not establish out-of-order fallback replacement.",
          "url": "https://vuejs.org/api/ssr.html"
        },
        "suspense": {
          "status": "partial",
          "note": "Vue's built-in Suspense coordinates async setup and async components, but remains explicitly experimental. The component documentation does not establish React-equivalent SSR fallback streaming.",
          "url": "https://vuejs.org/guide/built-ins/suspense.html",
          "label": "Experimental",
          "reviewedOn": "2026-11-10"
        },
        "client": {
          "status": "native",
          "note": "createSSRApp hydrates the server-rendered application on the client.",
          "url": "https://vuejs.org/guide/scaling-up/ssr.html",
          "label": "Hydration"
        },
        "ssg": {
          "status": "community",
          "note": "The Vue SSR guide points to application tools such as Nuxt and VitePress for static-site generation.",
          "url": "https://vuejs.org/guide/scaling-up/ssr.html",
          "label": "Nuxt / VitePress"
        },
        "csr": {
          "status": "native",
          "note": "createApp mounts a reactive Vue application in the browser.",
          "url": "https://vuejs.org/guide/essentials/application.html"
        },
        "serverOnly": {
          "status": "scope",
          "note": "A server-only component pipeline requires a host framework; ordinary Vue components run on both server and client.",
          "url": "https://vuejs.org/guide/scaling-up/ssr.html"
        },
        "partialRendering": {
          "status": "scope",
          "note": "A prebuilt shell with request-time UI needs an application rendering pipeline.",
          "url": "https://vuejs.org/guide/scaling-up/ssr.html"
        },
        "routing": {
          "status": "official",
          "note": "Vue Router is the official routing library; a production SSR application must also integrate server handling.",
          "url": "https://vuejs.org/guide/scaling-up/routing.html",
          "label": "Vue Router"
        },
        "layouts": {
          "status": "official",
          "note": "Nested routes and RouterView compose parent/child layout UI.",
          "url": "https://router.vuejs.org/guide/essentials/nested-routes.html",
          "label": "Vue Router"
        },
        "dynamicRoutes": {
          "status": "official",
          "note": "Dynamic segments expose route params, with matching constraints and catch-all patterns.",
          "url": "https://router.vuejs.org/guide/essentials/dynamic-matching.html",
          "label": "Vue Router"
        },
        "parallelRoutes": {
          "status": "partial",
          "note": "Named views render multiple components for one matched route. Independent URL navigation for each slot is not established.",
          "url": "https://router.vuejs.org/guide/essentials/named-views.html",
          "label": "Vue Router named views",
          "reviewedOn": "2026-11-10"
        },
        "interceptedRoutes": {
          "status": "undocumented",
          "note": "Nested routes do not establish a standardized intercepted-modal/direct-entry route contract.",
          "url": "https://router.vuejs.org/guide/essentials/nested-routes.html"
        },
        "prefetch": {
          "status": "undocumented",
          "note": "Lazy route imports are documented; automatic hover/viewport route-data prefetch is not established.",
          "url": "https://router.vuejs.org/guide/advanced/lazy-loading.html"
        },
        "softNavigation": {
          "status": "official",
          "note": "Vue Router intercepts RouterLink navigation and updates the matched view and browser history without a document reload. Server deployment must still support direct URLs.",
          "url": "https://router.vuejs.org/guide/",
          "reviewedOn": "2026-11-11",
          "label": "Vue Router"
        },
        "viewTransitions": {
          "status": "official",
          "note": "The official RouterView slot composes with Vue Transition for route enter/leave animations, route metadata and transition modes. Authors provide CSS and reduced-motion behavior.",
          "url": "https://router.vuejs.org/guide/advanced/transitions.html",
          "reviewedOn": "2026-11-11",
          "label": "Vue Router + Transition"
        },
        "redirects": {
          "status": "official",
          "note": "Routes can redirect or alias URLs; HTTP status redirects still belong to the server.",
          "url": "https://router.vuejs.org/guide/essentials/redirect-and-alias.html",
          "label": "Vue Router"
        },
        "serverData": {
          "status": "native",
          "note": "onServerPrefetch waits for component data during SSR. Universal state isolation and serialization remain application concerns.",
          "url": "https://vuejs.org/api/composition-api-lifecycle.html#onserverprefetch"
        },
        "clientData": {
          "status": "partial",
          "note": "Reactive composables can encapsulate fetch/loading/error state. A shared stale-data query cache is not supplied by this recipe.",
          "url": "https://vuejs.org/guide/reusability/composables.html",
          "label": "Fetch composable recipe",
          "reviewedOn": "2026-11-10"
        },
        "requestDedupe": {
          "status": "undocumented",
          "note": "The reviewed SSR/state-isolation guide does not establish automatic request-wide keyed data deduplication.",
          "url": "https://vuejs.org/guide/scaling-up/ssr.html"
        },
        "persistentCache": {
          "status": "scope",
          "note": "Retaining application data or rendered pages across requests belongs to the host cache.",
          "url": "https://vuejs.org/guide/scaling-up/ssr.html"
        },
        "invalidation": {
          "status": "scope",
          "note": "Application data/page invalidation belongs to the host; recompiling a template is a different cache boundary.",
          "url": "https://vuejs.org/guide/scaling-up/ssr.html"
        },
        "isr": {
          "status": "scope",
          "note": "Regenerating deployed pages requires a host page cache/export pipeline.",
          "url": "https://vuejs.org/guide/scaling-up/ssr.html"
        },
        "apiRoutes": {
          "status": "scope",
          "note": "The host server exposes HTTP endpoints and invokes the template renderer.",
          "url": "https://vuejs.org/guide/scaling-up/ssr.html"
        },
        "actions": {
          "status": "scope",
          "note": "Generated browser-to-server function transports are outside the template API.",
          "url": "https://vuejs.org/guide/scaling-up/ssr.html"
        },
        "forms": {
          "status": "partial",
          "note": "v-model binds form controls; validation rules and server submission/feedback require application code or a form library.",
          "url": "https://vuejs.org/guide/essentials/forms.html",
          "label": "Form bindings",
          "reviewedOn": "2026-11-11",
          "assessment": {
            "summary": "Form transport, validation, pending feedback and optimistic state are separate behaviors; the progressive-forms and optimistic-updates rows review the latter contracts explicitly.",
            "strengths": [
              "v-model binds form controls; validation rules and server submission/feedback require application code or a form library."
            ],
            "tradeoffs": [
              "Do not infer a no-JavaScript submission path, automatic validation, accessible field errors or rollback merely from the ability to receive FormData."
            ]
          }
        },
        "middleware": {
          "status": "scope",
          "note": "Request middleware belongs to the host server.",
          "url": "https://vuejs.org/guide/scaling-up/ssr.html"
        },
        "cookies": {
          "status": "scope",
          "note": "HTTP cookies and sessions belong to the host request/response layer.",
          "url": "https://vuejs.org/guide/scaling-up/ssr.html"
        },
        "cssModules": {
          "status": "native",
          "note": "SFC module styles expose generated class mappings to the component.",
          "url": "https://vuejs.org/api/sfc-css-features.html"
        },
        "scopedCss": {
          "status": "native",
          "note": "Scoped SFC style tags rewrite selectors; deep and global escapes are documented.",
          "url": "https://vuejs.org/api/sfc-css-features.html"
        },
        "tailwind": {
          "status": "scope",
          "note": "The selected build tool can process external Tailwind styles; Vue’s SFC compiler does not supply Tailwind.",
          "url": "https://vuejs.org/guide/scaling-up/tooling.html"
        },
        "cssInJs": {
          "status": "scope",
          "note": "SFC scoped styles and v-bind CSS are compiled CSS features; a JavaScript CSS-in-JS runtime/registry is separate tooling.",
          "url": "https://vuejs.org/api/sfc-css-features.html"
        },
        "images": {
          "status": "scope",
          "note": "Templates emit image markup; image resizing/conversion requires a separate asset pipeline.",
          "url": "https://vuejs.org/guide/scaling-up/ssr.html"
        },
        "fonts": {
          "status": "scope",
          "note": "Font downloading, subsetting, and fallback optimization require a separate asset pipeline.",
          "url": "https://vuejs.org/guide/scaling-up/ssr.html"
        },
        "scripts": {
          "status": "partial",
          "note": "SSR template/app entry code integrates scripts manually; a dedicated third-party script scheduler is not established.",
          "url": "https://vuejs.org/guide/scaling-up/ssr.html",
          "label": "Host script integration",
          "reviewedOn": "2026-11-10"
        },
        "staticAssets": {
          "status": "community",
          "note": "The recommended Vite-based toolchain imports, fingerprints, and builds assets.",
          "url": "https://vuejs.org/guide/scaling-up/tooling.html",
          "label": "Vite"
        },
        "metadata": {
          "status": "community",
          "note": "Unhead’s Vue adapter manages typed/reactive head entries and SSR output.",
          "url": "https://unhead.unjs.io/docs/vue/head/guides/core-concepts/titles",
          "label": "Unhead"
        },
        "dynamicMetadata": {
          "status": "community",
          "note": "useHead accepts reactive values and keeps server/client head output synchronized.",
          "url": "https://unhead.unjs.io/docs/vue/head/guides/core-concepts/titles",
          "label": "Unhead"
        },
        "metadataInheritance": {
          "status": "community",
          "note": "Head entries from layouts/pages compose through semantic tag identity; this is entry composition rather than a route-specific metadata object.",
          "url": "https://unhead.unjs.io/docs/vue/head/guides/core-concepts/handling-duplicates",
          "label": "Unhead"
        },
        "metadataOverrides": {
          "status": "community",
          "note": "Later entries replace semantic duplicates by default; explicit keys and duplicate strategies control replacement/merging.",
          "url": "https://unhead.unjs.io/docs/vue/head/guides/core-concepts/handling-duplicates",
          "label": "Unhead"
        },
        "titleTemplates": {
          "status": "community",
          "note": "titleTemplate composes a shared title format with page title values.",
          "url": "https://unhead.unjs.io/docs/vue/head/guides/core-concepts/titles",
          "label": "Unhead"
        },
        "socialImages": {
          "status": "scope",
          "note": "Generating social-preview image bytes needs a separate image renderer/service.",
          "url": "https://vuejs.org/guide/scaling-up/ssr.html"
        },
        "sitemaps": {
          "status": "scope",
          "note": "XML can be templated, but route enumeration and a sitemap generator belong to the host.",
          "url": "https://vuejs.org/guide/scaling-up/ssr.html"
        },
        "robots": {
          "status": "scope",
          "note": "Text can be templated, but crawler-document publishing/configuration belongs to the host.",
          "url": "https://vuejs.org/guide/scaling-up/ssr.html"
        },
        "markdown": {
          "status": "scope",
          "note": "This is text/HTML templating; Markdown parsing and content-page integration require another tool.",
          "url": "https://vuejs.org/guide/scaling-up/ssr.html"
        },
        "collections": {
          "status": "scope",
          "note": "The host loads and validates structured content; the template API renders supplied values.",
          "url": "https://vuejs.org/guide/scaling-up/ssr.html"
        },
        "draftMode": {
          "status": "scope",
          "note": "Editorial preview authorization and published-cache bypass belong to the host application.",
          "url": "https://vuejs.org/guide/scaling-up/ssr.html"
        },
        "translations": {
          "status": "community",
          "note": "Vue I18n adds message catalogs, pluralization, fallback locales, and lazy-loading support.",
          "url": "https://vue-i18n.intlify.dev/guide/introduction",
          "label": "Vue I18n"
        },
        "localeRouting": {
          "status": "partial",
          "note": "A locale can be represented by a route segment; negotiation and locale redirects require application logic.",
          "url": "https://router.vuejs.org/guide/essentials/dynamic-matching.html",
          "label": "Router segment recipe",
          "reviewedOn": "2026-11-10"
        },
        "localeFormatting": {
          "status": "community",
          "note": "Vue I18n documents date/time and number formatting helpers.",
          "url": "https://vue-i18n.intlify.dev/guide/introduction",
          "label": "Vue I18n"
        },
        "auth": {
          "status": "scope",
          "note": "Identity, login, and authorization are responsibilities of the host application.",
          "url": "https://vuejs.org/guide/best-practices/security.html"
        },
        "csp": {
          "status": "scope",
          "note": "The HTTP host owns CSP headers/nonces. Vue’s runtime-only/precompiled build avoids the runtime template compiler’s dynamic evaluation requirement.",
          "url": "https://vuejs.org/guide/best-practices/security.html"
        },
        "cspNonce": {
          "status": "scope",
          "note": "The HTTP application must generate a fresh nonce, set its policy and pass the value to authored tags. A template accepting attributes does not coordinate nonces for an application.",
          "url": "https://vuejs.org/guide/best-practices/security.html",
          "reviewedOn": "2026-11-11"
        },
        "csrf": {
          "status": "scope",
          "note": "Vue’s security guide assigns CSRF protection to the backend; Vue rendering/escaping is not a CSRF policy.",
          "url": "https://vuejs.org/guide/best-practices/security.html"
        },
        "environment": {
          "status": "scope",
          "note": "Server/client secret configuration belongs to the host application, not template evaluation.",
          "url": "https://vuejs.org/guide/best-practices/security.html"
        },
        "types": {
          "status": "native",
          "note": "Vue supports TypeScript and SFC type checking through Vue tooling; editor/build setup matters.",
          "url": "https://vuejs.org/guide/typescript/overview.html"
        },
        "hmr": {
          "status": "official",
          "note": "Official create-vue projects use the Vue Vite plugin for SFC hot updates.",
          "url": "https://vuejs.org/guide/scaling-up/tooling.html",
          "label": "create-vue / Vite plugin"
        },
        "cli": {
          "status": "official",
          "note": "create-vue scaffolds official Vite-based projects with optional router/testing/type tooling.",
          "url": "https://vuejs.org/guide/scaling-up/tooling.html",
          "label": "create-vue"
        },
        "bundleAnalysis": {
          "status": "undocumented",
          "note": "The reviewed official tooling guide does not establish a bundled production module-size visualization.",
          "url": "https://vuejs.org/guide/scaling-up/tooling.html"
        },
        "unitTests": {
          "status": "official",
          "note": "Vue Test Utils supplies official component test helpers; Vitest is the recommended external runner.",
          "url": "https://vuejs.org/guide/scaling-up/testing.html",
          "label": "Vue Test Utils"
        },
        "e2eTests": {
          "status": "community",
          "note": "The official testing guide documents Cypress and other browser end-to-end runners.",
          "url": "https://vuejs.org/guide/scaling-up/testing.html",
          "label": "Cypress"
        },
        "observability": {
          "status": "native",
          "note": "app.config.errorHandler and performance hooks expose errors/timings; reporting backends require application integration.",
          "url": "https://vuejs.org/api/application.html#app-config-errorhandler",
          "label": "Application hooks"
        },
        "errorHandling": {
          "status": "native",
          "note": "onErrorCaptured catches descendant failures and can switch UI into an application-authored fallback state.",
          "url": "https://vuejs.org/api/composition-api-lifecycle.html#onerrorcaptured"
        },
        "serverHosting": {
          "status": "partial",
          "note": "The SSR guide wires Vue’s renderer into a Node HTTP server; production routing/middleware are host responsibilities.",
          "url": "https://vuejs.org/guide/scaling-up/ssr.html",
          "label": "Custom SSR server",
          "reviewedOn": "2026-11-10"
        },
        "staticHosting": {
          "status": "partial",
          "note": "Client builds emit deployable static assets through the selected build tool. This is distinct from prerendered HTML site export.",
          "url": "https://vuejs.org/guide/best-practices/production-deployment.html",
          "label": "CSR static build",
          "reviewedOn": "2026-11-10"
        },
        "containers": {
          "status": "scope",
          "note": "A container packages the host application and renderer together; the template API has no container workflow.",
          "url": "https://vuejs.org/guide/scaling-up/ssr.html"
        },
        "edgeHosting": {
          "status": "scope",
          "note": "Edge deployment depends on the host runtime and its adapter, not template syntax.",
          "url": "https://vuejs.org/guide/scaling-up/ssr.html"
        },
        "orm": {
          "status": "scope",
          "note": "ORM / query builder belongs to a server framework or external service, outside this standalone rendering API. This is not a missing template-rendering capability.",
          "url": "https://vuejs.org"
        },
        "migrations": {
          "status": "scope",
          "note": "Schema migrations belongs to a server framework or external service, outside this standalone rendering API. This is not a missing template-rendering capability.",
          "url": "https://vuejs.org"
        },
        "transactions": {
          "status": "scope",
          "note": "Transactions belongs to a server framework or external service, outside this standalone rendering API. This is not a missing template-rendering capability.",
          "url": "https://vuejs.org"
        },
        "jobs": {
          "status": "scope",
          "note": "Background jobs belongs to a server framework or external service, outside this standalone rendering API. This is not a missing template-rendering capability.",
          "url": "https://vuejs.org"
        },
        "mail": {
          "status": "scope",
          "note": "Email belongs to a server framework or external service, outside this standalone rendering API. This is not a missing template-rendering capability.",
          "url": "https://vuejs.org"
        },
        "uploads": {
          "status": "scope",
          "note": "File uploads & storage belongs to a server framework or external service, outside this standalone rendering API. This is not a missing template-rendering capability.",
          "url": "https://vuejs.org"
        },
        "realtime": {
          "status": "scope",
          "note": "Real-time delivery belongs to a server framework or external service, outside this standalone rendering API. This is not a missing template-rendering capability.",
          "url": "https://vuejs.org"
        },
        "xssEscaping": {
          "status": "native",
          "note": "Vue escapes ordinary text and attribute bindings using browser APIs/server encoding. v-html and untrusted URLs/styles need separate controls; templates themselves must be trusted.",
          "url": "https://vuejs.org/guide/best-practices/security.html",
          "reviewedOn": "2026-11-11"
        },
        "htmlSanitization": {
          "status": "undocumented",
          "note": "The linked security API review does not establish the specific html sanitization contract defined here. This is a bounded documentation finding, not proof of absence; generic hooks or application-authored code are not counted as an owned implementation.",
          "url": "https://vuejs.org/guide/best-practices/security.html",
          "reviewedOn": "2026-11-11"
        },
        "authorization": {
          "status": "undocumented",
          "note": "The linked security API review does not establish the specific authorization policies contract defined here. This is a bounded documentation finding, not proof of absence; generic hooks or application-authored code are not counted as an owned implementation.",
          "url": "https://vuejs.org/guide/best-practices/security.html",
          "reviewedOn": "2026-11-11"
        },
        "rateLimiting": {
          "status": "undocumented",
          "note": "The linked security API review does not establish the specific rate limiting contract defined here. This is a bounded documentation finding, not proof of absence; generic hooks or application-authored code are not counted as an owned implementation.",
          "url": "https://vuejs.org/guide/best-practices/security.html",
          "reviewedOn": "2026-11-11"
        },
        "progressiveEnhancement": {
          "status": "scope",
          "note": "Progressive forms requires a host application or specialized integration beyond the reviewed UI API. Emitting markup or using arbitrary host-language libraries does not establish this application-level contract.",
          "url": "https://vuejs.org/guide/essentials/forms.html",
          "reviewedOn": "2026-11-11"
        },
        "optimisticUi": {
          "status": "undocumented",
          "note": "The linked data API review does not establish the specific optimistic updates contract defined here. This is a bounded documentation finding, not proof of absence; generic hooks or application-authored code are not counted as an owned implementation.",
          "url": "https://vuejs.org/guide/reusability/composables.html",
          "reviewedOn": "2026-11-11"
        },
        "requestCancellation": {
          "status": "partial",
          "note": "onWatcherCleanup lets an authored watcher abort its prior fetch when its source changes. The application must create/pass AbortController and register cleanup; Vue does not automatically cancel arbitrary requests.",
          "url": "https://vuejs.org/guide/essentials/watchers.html#side-effect-cleanup",
          "reviewedOn": "2026-11-11",
          "label": "Watcher cleanup recipe"
        },
        "typedLinks": {
          "status": "undocumented",
          "note": "The linked routing API review does not establish the specific typed links & parameters contract defined here. This is a bounded documentation finding, not proof of absence; generic hooks or application-authored code are not counted as an owned implementation.",
          "url": "https://router.vuejs.org/guide/",
          "reviewedOn": "2026-11-11"
        },
        "searchParams": {
          "status": "undocumented",
          "note": "The linked routing API review does not establish the specific validated url state contract defined here. This is a bounded documentation finding, not proof of absence; generic hooks or application-authored code are not counted as an owned implementation.",
          "url": "https://router.vuejs.org/guide/",
          "reviewedOn": "2026-11-11"
        },
        "stateRestoration": {
          "status": "official",
          "note": "Vue KeepAlive can retain selected component instances/state across route switches when composed with RouterView; Nuxt also exposes page keepalive configuration. It is opt-in and limited by include/exclude/cache eviction.",
          "url": "https://router.vuejs.org/guide/advanced/router-view-slot.html",
          "reviewedOn": "2026-11-11",
          "label": "KeepAlive"
        },
        "scrollRestoration": {
          "status": "official",
          "note": "Vue Router scrollBehavior receives saved positions for history traversal and lets the app return scrolling behavior. Nuxt configures it through its router integration; the app can customize it.",
          "url": "https://router.vuejs.org/guide/advanced/scroll-behavior.html",
          "reviewedOn": "2026-11-11",
          "label": "Vue Router"
        },
        "navigationBlocking": {
          "status": "official",
          "note": "Navigation guards can return false or prompt before leaving a route, including in-component beforeRouteLeave. Full-document unload is a separate browser mechanism.",
          "url": "https://router.vuejs.org/guide/advanced/navigation-guards.html",
          "reviewedOn": "2026-11-11",
          "label": "Vue Router guards"
        },
        "navigationAccessibility": {
          "status": "undocumented",
          "note": "The linked client rendering API review does not establish the specific accessible navigation contract defined here. This is a bounded documentation finding, not proof of absence; generic hooks or application-authored code are not counted as an owned implementation.",
          "url": "https://vuejs.org/guide/scaling-up/ssr.html",
          "reviewedOn": "2026-11-11"
        },
        "a11yChecks": {
          "status": "undocumented",
          "note": "The linked client rendering API review does not establish the specific accessibility checks contract defined here. This is a bounded documentation finding, not proof of absence; generic hooks or application-authored code are not counted as an owned implementation.",
          "url": "https://vuejs.org/guide/scaling-up/ssr.html",
          "reviewedOn": "2026-11-11"
        },
        "lazyActivation": {
          "status": "native",
          "note": "Vue 3.5 async components accept hydration strategies such as visibility, idle, media query and interaction; interaction hydration can replay the triggering event. Async component loading and SSR hydration timing are separate controls.",
          "url": "https://vuejs.org/guide/components/async.html#lazy-hydration",
          "reviewedOn": "2026-11-11",
          "label": "Async hydration strategies"
        },
        "codeSplitting": {
          "status": "undocumented",
          "note": "The linked rendering API review does not establish the specific route / island splitting contract defined here. This is a bounded documentation finding, not proof of absence; generic hooks or application-authored code are not counted as an owned implementation.",
          "url": "https://vuejs.org/guide/scaling-up/ssr.html",
          "reviewedOn": "2026-11-11"
        },
        "offline": {
          "status": "undocumented",
          "note": "The linked deployment API review does not establish the specific offline integration contract defined here. This is a bounded documentation finding, not proof of absence; generic hooks or application-authored code are not counted as an owned implementation.",
          "url": "https://vuejs.org/guide/scaling-up/ssr.html",
          "reviewedOn": "2026-11-11"
        },
        "scheduling": {
          "status": "scope",
          "note": "Scheduled tasks requires a host application or specialized integration beyond the reviewed UI API. Emitting markup or using arbitrary host-language libraries does not establish this application-level contract.",
          "url": "https://vuejs.org",
          "reviewedOn": "2026-11-11"
        },
        "notifications": {
          "status": "scope",
          "note": "Multi-channel notifications requires a host application or specialized integration beyond the reviewed UI API. Emitting markup or using arbitrary host-language libraries does not establish this application-level contract.",
          "url": "https://vuejs.org",
          "reviewedOn": "2026-11-11"
        },
        "searchIndex": {
          "status": "scope",
          "note": "Search indexing requires a host application or specialized integration beyond the reviewed UI API. Emitting markup or using arbitrary host-language libraries does not establish this application-level contract.",
          "url": "https://vuejs.org",
          "reviewedOn": "2026-11-11"
        },
        "fieldEncryption": {
          "status": "scope",
          "note": "Encrypted model fields requires a host application or specialized integration beyond the reviewed UI API. Emitting markup or using arbitrary host-language libraries does not establish this application-level contract.",
          "url": "https://vuejs.org",
          "reviewedOn": "2026-11-11"
        },
        "httpTests": {
          "status": "undocumented",
          "note": "The linked testing API review does not establish the specific http integration tests contract defined here. This is a bounded documentation finding, not proof of absence; generic hooks or application-authored code are not counted as an owned implementation.",
          "url": "https://vuejs.org/guide/scaling-up/testing.html",
          "reviewedOn": "2026-11-11"
        }
      }
    }
  ]
}
