Prox OS Internal Docs
ProductClientsDevice Studio

Studio View JSON

Studio View JSON is a draft contract direction for mobile dynamic UI. The

Purpose

Studio View JSON is a draft contract direction for mobile dynamic UI. The mobile app should render trusted Prox-defined blocks from data. It should not execute arbitrary user-uploaded JavaScript, React bundles, or native plugins.

This document is a schema-level product and architecture draft. It is not a TypeScript implementation and it does not create a runtime.

Core Boundary

BoundaryRule
View schema vs app codeA view schema describes layout and blocks. App code remains in approved web or package runtimes.
Data vs executionUser-generated dynamic UI is represented as data, not executable code.
Template vs runtimeGallery templates can suggest schemas; runtime execution remains host-mediated.
Mobile vs desktop webDesktop web can become more flexible later; native mobile must stay stricter.
Actions vs native APIsBlocks request host-mediated actions and permissions. They do not call native APIs directly.

Concept Types

ConceptMeaning
StudioViewDocumentTop-level document for a mobile-renderable Studio view.
StudioBlockA trusted block declaration rendered by the host.
ActionBlockA block that requests a host-mediated action.
PermissionRequestA declared scope required before an action can run.
MobileRendererContractThe renderer capability profile supported by Mobile Launchpad, PWA, or native companion.

Candidate Block Types

Block typeUse case
metric-cardCompact KPI, subscription, cost, queue, or progress signal.
listRecent items, tasks, files, links, alerts, or connector events.
table-previewSmall table slice with safe row count and column metadata.
chart-previewStatic or lightweight chart summary, not a heavy analytics runtime.
formSmall structured input with validation metadata.
actionHost-mediated button with explicit permission requirements.
ai-summaryAI-generated or AI-ready summary with prompt reference and provenance.
connector-statusProvider connection health, sync state, and scope summary.
media-previewImage, file, link, or video preview with source metadata.
approval-cardApprove, reject, or request changes for AI-generated suggestions.

Example Draft

{
  "type": "studio.view",
  "version": "0.1",
  "layout": "mobile-card-feed",
  "source": {
    "studioId": "founder-suite",
    "viewId": "daily-founder-brief"
  },
  "blocks": [
    {
      "type": "metric-card",
      "title": "Monthly subscriptions",
      "value": "EUR 42.99",
      "tone": "neutral"
    },
    {
      "type": "ai-summary",
      "title": "Today's founder brief",
      "promptRef": "founder.daily_brief"
    },
    {
      "type": "action",
      "label": "Ask AI to summarize",
      "actionId": "ask-ai-summary",
      "requiresPermission": "ai.write_suggestion"
    }
  ]
}

Renderer Requirements

The mobile renderer should:

  • validate document type and version;
  • reject unknown unsafe blocks by default;
  • render missing optional fields gracefully;
  • show provenance for AI, connector, and imported data blocks;
  • describe required permissions before actions run;
  • treat external writes, publish, deploy, payments, sharing, destructive edits, and native API access as high-impact actions;
  • record audit metadata once the backend exists;
  • provide continue-on-desktop links for complex editing.

Security Rules

  • Do not allow arbitrary remote JavaScript execution in mobile.
  • Do not allow user-uploaded React components in mobile native surfaces.
  • Do not expose native camera, files, contacts, share, push, or background APIs directly to blocks.
  • Do not allow block schemas to smuggle HTML script execution.
  • Do not treat Gallery templates as runtime trust.
  • Do not assume a desktop app permission is safe on mobile native.

Open Questions

  • Which package should eventually own shared schema types?
  • Which blocks are core, official, experimental, or gallery-only?
  • How should Studio View JSON reference Sources and Connectors without leaking sensitive data into mobile previews?
  • How should offline capture drafts merge into a server-backed Studio later?
  • How should AI-generated view schemas be reviewed before becoming active?

On this page