tappify.extension.json, declares three things:
The bundle is the code behind those declarations: a Module Federation remote that Tappify
serves from its own CDN and mounts in a shadow root on the owner’s page.
What Tappify owns and what you own
Tappify owns the chrome, the session, the tokens, the approval cards and the provenance mark. You own the pixels inside your mount and the endpoints behind your own server.Tappify draws
Loading, failure and missing-scope states, the vendor tile on every surface you render,
the consent screen, every approval card, and the expand panel’s chrome.
You draw
Your component’s content, its own empty and error states inside the card, and the
responses from your server.
tap, which the host provides. Your code never touches the
host’s DOM, router, cookies or storage, never sees a Tappify session credential or another
extension’s data, and never writes to the owner’s store without an approval card. The full
list is on What extensions can never do.
When your extension fails to load, the host draws a card saying so and the rest of Tappify
carries on. That contract is why the mount is a shadow root and why the loader has an
8-second timeout.
The pieces you install
Create a vendor account
One command creates the vendor, the workspace and the sandbox project.
Your first extension
Scaffold, run, see it on a project, publish.