A minimal demo app for the Frontier App Store showing how to interact with the Frontier Wallet.
If you are using this, you are in the ultra-early developer group. There will be dragons, things will break.
- Request a test user via the tech team (no automation for this yet)
- This app is preconfigured to be tested on
sandbox.wallet.frontiertower.io
Find the agent instructions and deployment guide to feed to your agent here:
./docs/AGENT_INSTRUCTIONS.md
./docs/DEPLOYMENT.md
./docs/PRD.md
npm install
npm run devIf you are developing we recommend using Chrome and move to test the local apps before release.
The Frontier Wallet is a Progressive Web App (PWA) that can be installed on your device:
iOS:
- Open Safari and navigate to sandbox.wallet.frontiertower.io
- Tap the Share button (square with arrow pointing up)
- Scroll down and tap "Add to Home Screen"
- Tap "Add" to confirm
Android:
- Open Chrome and navigate to sandbox.wallet.frontiertower.io
- Tap the three-dot menu in the top right
- Tap "Add to Home Screen" or "Install App"
- Tap "Add" or "Install" to confirm
- Click on Apps → App Store
- Install the Kickstarter App
- Click the app to load your dev environment with all permissions
- The kickstarter app demonstrates basic functionality for interacting with the Frontier Wallet
This application demonstrates the core capabilities of the Frontier App Store SDK:
- Get raw and formatted balances
- Retrieve wallet address and smart account details (ERC-4337)
- Transfers: ERC20 tokens, native currency (ETH), Frontier Dollar
- Execute arbitrary contract calls and approve ERC20 allowances
- Per-app isolated storage (automatic scoping)
- Get, set, remove, and clear keys
- Get current network and list available networks
- Switch networks programmatically
- Fetch full chain configuration (RPC, explorer, stablecoins)
- Basic details (ID, email, names)
- Extended profile data
- Referral overview and paginated referral details
- Add user contact info
- Detect Frontier Wallet context and show graceful standalone message when outside
- Sandboxed iframe isolation and strict origin verification
- Per-app permission declarations validated on every request
- Scoped storage, no cross-app/host DOM access
- Greeting with wallet address and balance
- Persistent counter using storage
- "Send $1 Frontier Dollar" action with real-time balance refresh
- Loading and error handling states
This app uses the @frontiertower/frontier-sdk package to communicate with the host PWA via postMessage.
Key characteristics:
- Promise-based API with request/response matching via UUID
- 30-second request timeout and consistent error handling
- Permission-checked methods grouped by modules: wallet, storage, chain, user
Quick start example:
import { FrontierSDK } from '@frontiertower/frontier-sdk';
const sdk = new FrontierSDK();
const wallet = sdk.getWallet();
const storage = sdk.getStorage();
const chain = sdk.getChain();
const user = sdk.getUser();
const balance = await wallet.getBalanceFormatted();
const details = await user.getDetails();
await storage.set('counter', 1);
const network = await chain.getCurrentNetwork();Permission system:
- Format:
category:method(e.g.,wallet:getBalance) - Wildcard:
category:*(e.g.,wallet:*) - Declared in registry and enforced at runtime
See docs/AGENT_INSTRUCTIONS.md for the full SDK surface and message formats.
When you're ready to deploy, contact the dev team (we will automate this process later).
Provide the following metadata:
{
developer: {
name: 'Frontier Tower',
url: 'https://frontiertower.io',
description: 'Building the future of decentralized applications',
},
permissionDisclaimer: 'Here we tell what permissions the app is requesting and why'
permissions: ["wallet:getAddress", "storage:*"]
}- Specify the list of permissions your app needs (see SDK documentation)
- Use as few permissions as possible
- Explain why you need each permission in the
permissionDisclaimer
- You host your app yourself
- We will publish it under
your-app.appstore.frontiertower.io - Your app will be published in the next alpha version and make its way to public release
Apps use standard HTML meta tags for metadata (fetched by the host PWA):
<head>
<title>Your App Name</title>
<meta name="description" content="What your app does" />
<link rel="icon" href="/favicon.ico" />
</head>The host PWA parses your HTML to display the app in the store.
We welcome contributions! Please check out the Product Requirements Document to understand the goals and requirements of this project. If you find a bug or have a feature request, feel free to open an issue or submit a pull request.