# Theme editor blocks

> App blocks in store themes: what ships today, how a block is framed in a Sneferu theme, and why an outside app cannot register its own block yet.

Source: https://hekana.dev/apps/app-blocks

An app block puts an app's widget inside a store's theme: a subscribe button on a product page, for example. This page says what exists today. In short: only Hekana's own apps have blocks, and an outside app cannot add one yet.

> **Status, 2026-10-25.** Blocks are built on the storefront side for two first-party apps. The `hk-app-block` tag that places them in a Sneferu theme is not in the published [tag reference](https://hekana.dev/reference/tags) yet. Do not build a theme that depends on it until it is.

## What ships

| App | Block | What it shows |
| - | - | - |
| Subscriptions | `subscribe` | The plan picker and subscribe form on a product page. |
| Subscriptions | `portal` | The shopper's own subscription page, opened from a link. |
| AI shopper | `icon` | The AI shopper icon, in the page flow instead of floating. Its route exists; adding it to the theme editor's insert list is still pending. |

The Subscriptions app itself is open to stores. The blocks are the part that waits on the theme tag.

## How a block works

A theme only says where a block goes and passes read-only context such as the product id. The platform renders the block in a frame that belongs to the store's own origin:

- The frame lives at a fixed path under `/hk2/app-block/<app>/<block>`. The list of paths is closed: a theme cannot invent one.
- The block appears only if the app is installed on the store. If it is not, the frame tells the page and the page removes it.
- The block reports its own height to the page, and it can be framed by the store's own pages only.
- A theme still has no script and no form controls, so the rules in the [theme docs](https://hekana.dev/guide/theme-structure) are not weakened. The block takes its colours, fonts and radius from the theme's tokens.

## What an outside app cannot do

- **Register a block.** There is no API or manifest field for it. The list of apps and blocks is defined by Hekana.
- **Run code in a theme or in checkout.** Checkout stays Hekana's page; see [checkout extensions](https://hekana.dev/apps/api-reference#checkout-extensions) for the one thing an app can add there.
- **Choose the frame address of an embedded dashboard app** (see [Authentication](https://hekana.dev/apps/authentication)).

If your app needs a storefront surface, the supported options today are a checkout extension, discount codes and messages to the customer, all through the Apps API.

## For theme developers

You do not need an app to build a theme. For the theme tags and sections, start at [Build your first theme](https://hekana.dev/guide/getting-started).
