What is Infa
Infa Chrome Extension
How to use and install our Chrome Extension
Community
Browse community design systems
Release Notes
Featuring the latest changes to keep you up-to-date
Research Program
Participate in shaping the future of Infa
SOC 2 Type II Compliance Badge
Enterprise Ready
SOC 2 Type II certified for enterprise-level security and compliance
EventsLearnPricing
Sign up for free

Feedback

Share your feedback

Close
Anonymous submissions are auto-posted to #feedback channel. You can also share directly in Slack.

Need help?

Reach out to contact@infa.ai or see docs

Navigation
Search...
⌘ K
Focus sentinel
Close

Search Documentation

PressESCto close
Focus sentinel
Infa Documentation
  • General Information
    • Boards
    • Components
      • Main Components Vs Component Views
      • Component Tagging
      • Component Anatomy
    • Labels
    • Teams
    • Authentication
    • Permissions
      • Inviting People to Teams
      • Inviting People to Boards
    • Billing & Subscription
      • Managing Subscription
      • Promo Code Activation
    • Data Import, Export & Sync
      • Local vs. Cloud Boards
  • App Blocks
    • Building App Blocks
  • Chrome Extension
    • Deep Links
    • Using Labels
    • Updating the Extension
  • Integrations
    • MCP Server
    • Claude Code Plugin
    • External API
    • Progressive Web App
    • Figma Plugin
    • Coda Pack
    • Overview
    • Managing Runs
    • Board Agents
    • Overview
    • Infa Capture
    • Installation
    • Authentication
    • Connect a Board
    • Run Modes
    • Hooks & Agents
    • File Sync
    • CLI Reference
Switch to Light theme
Switch to Dark theme
TermsPrivacyChat with Us
  1. Docs

App Blocks

Sandboxed HTML mini-apps that render live on Infa documents and canvases — install them from the community, configure them with props, and connect them to your board's integrations.

App Blocks are small, self-contained HTML mini-apps that render live inside your papers — both documents and canvases. A block can be as simple as a metric counter or as rich as a pull-request board fed by your GitHub connection. You can use the system blocks that ship with Infa, install blocks published by the community, or build your own with an AI agent.

Copy link
What an App Block Is

Each App Block is a single HTML document (inline CSS and JavaScript, no external scripts or stylesheets) rendered in a sandboxed iframe. The sandbox allows scripts only — a block runs with an opaque origin and no direct network access, so it cannot read your session or call external services on its own. Everything a block knows arrives through a small postMessage protocol from the host page, and any live integration data flows through Infa's server-side proxy.

Blocks come from three places:

  • System blocks — built into every board (for example, Connected Data and Paper Embed).
  • Community blocks — published by other Infa users, discoverable and installable from the picker.
  • Your own blocks — registered on a board by an AI agent over MCP. See Building App Blocks.

Copy link
Adding a Block to a Paper

Open the insert menu in a document (type / and choose App Block) or use the canvas insert menu. The picker has two tabs:

  • On this board — system blocks plus everything installed on the board. Blocks you authored carry a Draft or Published status tag and an overflow menu for publishing or removing them.
  • Community — published blocks from all Infa users, searchable and ordered by install count. Blocks already on your board insert on click; others show an Install button that installs and inserts in one step.

Rows with a Uses connections badge pull live data through one of your board's integration connections — after inserting one, bind a connection in its props (see below).

Copy link
Configuring a Block

Select a block and choose Edit props (in the block's toolbar on documents, or the canvas toolbar). Infa renders a form from the prop schema the block declares — text fields, numbers, toggles, dropdowns.

If a block needs live integration data, one of its props is a connection picker: a dropdown listing the board's connections for the provider the block uses. Pick one and the block starts receiving data through Infa's server proxy — the block itself never sees your token.

Copy link
Publishing and Managing Your Blocks

A block you author starts out visible only on the board it was registered on. When it is ready to share, publish it to the community — from the block's overflow menu in the picker, from your profile, or by asking your agent to call infa_publishAppBlock.

Manage everything you have authored at infa.ai/profile?tab=blocks. Each block shows one of three statuses:

  • Draft — only you can see and insert it.
  • On board — members of the board it was registered on can insert it (the default after registering).
  • Published — every Infa user can discover it in the Community tab and install it on their own boards.
warning icon
No version pinning
Updating a block's source updates every existing install immediately — including installs on other users' boards if the block is published. Preview changes before updating a widely-installed block.

Never publish a block containing hardcoded credentials, connector IDs, or board-specific data. Published source is visible to everyone; installers bind their own connections through props.

Copy link
How Blocks Reach Integration Data

Blocks cannot fetch from the network directly. A block that needs provider data asks the host page, and Infa's server proxies the request to the provider's official API using the viewing user's session and the board connection bound in the block's props. Tokens never reach the block.

Supported provider APIs:

ProviderAllowed requests
GitHubGET
FigmaGET
SlackGET
NotionGET and POST
LinearPOST /graphql (GraphQL)

Requests outside a provider's official API are rejected. Connections themselves are managed per board — see the Integrations overview and the External API for programmatic access to your design system data.

Copy link
Next Steps

Building App Blocks
Build a block with an AI agent — the postMessage protocol, connector bridge, lifecycle, and quality bar
MCP Server
Connect Claude Code, Cursor, or Claude Desktop to Infa

Content Feedback

Feedback on selected content

Close
Anonymous submissions are auto-posted to #feedback channel. You can also share directly in Slack.

Need help?

Reach out to contact@infa.ai or see docs