tappify installed
and a vendor account — start there if
tappify extension whoami reports neither.
1
Scaffold
--id, --name, --description and --category to skip
the questions, or --no-install to skip the install.The starter copies more than this — a build config, a worker, a test setup. These are
the files you edit:2
Run your server locally
dev:worker runs server/worker.ts on port 8787, and the tunnel gives it a public
url — Tappify relays procedures from its own servers, so it needs an address it can
reach. The server, the tunnel and the dev session each keep running, so each needs its
own terminal. Any tunnel works,
and so does a server you have already deployed. See
Local server during live preview.3
Run it on your sandbox project
src/widgets/summary.tsx and it reloads.--server points the relay at your tunnel for the length of the session. Drop it and the
card reads “The summary did not load”, because the manifest still holds the starter’s
placeholder url.Without --live you get a portal preview URL instead, which needs no install. See
The dev server.4
Watch it follow the page
Change the date picker at the top of Analytics. The number changes, because the widget
reads
useTapFilters() and passes the range to its procedure — see
Follow the page’s filters.5
Run the checks
6
Deploy your server
<server.baseUrl>/tappify/health for a
200 within three seconds: leave the placeholder and the publish stops there. The starter
deploys server/worker.ts with wrangler; anywhere that answers the health route works.
See Deploy your server.7
Publish
8
Check the release
What just happened
The starter’s manifest declares one widget, one settings panel, one hosted-storage collection and one server procedure.dev --live registered a dev install on your sandbox
project pointing at your local remote entry, which the host allowlists for that install
only, and --server pointed the procedure relay at your tunnel for as long as the session
ran. publish built, zipped, ran the checks and uploaded the bundle, then took the route
the manifest’s visibility chose for it.
Once a release is live, the next one skips review whenever it asks for no new scope, no new
contribution kind and no wider visibility — it overwrites the live release where it stands.
Ask for any of the three and it goes through review while the live release keeps serving.
When it is ready for the Tap Store, complete the listing — the long description, one to six
screenshots, and your website, support and privacy urls — and set visibility to public. A
public manifest is not valid without all of them, and that publish comes back in review,
because an admin reads every extension before owners outside your workspace can install it.
See Your listing and
Visibility.
Add a widget
The next contribution to add, and where it can render.
Publishing
What publish checks, and when a release goes live without review.