Developer API — window.TTA
Your website controls real native features directly — the same code works on iOS and Android. No SDK, no rebuild: just call these from your site.
Detect the app
Your site runs both in a normal browser and inside the app. Check for window.TTA before calling native features so the web keeps working everywhere.
if (window.TTA) {
// inside the native app
} else {
// normal browser — your web fallback
}Methods
Methods marked “opt-in” only exist when you enable that feature in the builder — always feature-detect.
window.TTA.platform'ios' or 'android' — tells your site it runs inside the native app.
if (window.TTA) {
console.log('Running natively on', window.TTA.platform);
}window.TTA.haptic()Native haptic / vibration feedback on a tap or action.
button.addEventListener('click', () => window.TTA?.haptic());window.TTA.share(url?)Open the native share sheet. Defaults to the current page URL.
window.TTA?.share('https://example.com/product/42');window.TTA.rate()Show the native App Store / Google Play review prompt.
window.TTA?.rate();window.TTA.openExternal(url)Open a link in the in-app browser instead of leaving your app.
window.TTA?.openExternal('https://help.example.com');await window.TTA.scan()opt-in · ScannerOpen the full-screen native QR / barcode scanner. Resolves to {text, format} or null if cancelled.
const result = await window.TTA.scan();
if (result) alert('Scanned: ' + result.text);window.TTA.logEvent(name, params?)opt-in · AnalyticsSend a custom analytics event (Insights). 'app_open' is tracked automatically.
window.TTA?.logEvent?.('add_to_cart', { id: 'sku_42', value: 9.99 });await window.TTA.getProducts()opt-in · In-app purchasesFetch your in-app products: [{ id, title, price, priceValue, currency }].
const products = await window.TTA.getProducts();
products.forEach(p => renderPrice(p.id, p.price));await window.TTA.purchase(productId)opt-in · In-app purchasesLaunch the native purchase flow. Resolves to { success, productId, transactionId } or { success:false, cancelled }.
const r = await window.TTA.purchase('com.app.pro.monthly');
if (r.success) unlockPro();await window.TTA.restorePurchases()opt-in · In-app purchasesReturn the product IDs the user already owns (restore entitlements).
const owned = await window.TTA.restorePurchases();
if (owned.includes('com.app.pro.monthly')) unlockPro();Works automatically
With the matching feature enabled, standard web APIs just work inside the app: navigator.geolocation (Location), getUserMedia camera for web QR libraries (Camera), <input type=file> and file downloads.