Around 32 Capwrapper native bridges activate by adding a JavaScript snippet to your web app — no native code, no SDK configuration, no rebuild required.
Around 32 native bridges are dormant until your JavaScript calls them. You add the snippet directly to your web app — in a click handler, a lifecycle hook, or wherever makes sense for your product. No native code, no Xcode, no rebuild is required. Capwrapper’s runtime receives the call and executes the native behavior on the device.Always wrap bridge calls in an isNativeApp check so your web app continues to work in browsers:
if (window.isNativeApp) { // safe to call any NativeClass here}
Opens the native print dialog. You can print the current page, a remote PDF by URL, or any custom HTML string.
// Print the current pageNativePrint.printPage();// Print a PDF from URLNativePrint.printPDF({ url: 'https://example.com/invoice.pdf' });// Print custom HTMLNativePrint.printHTML({ html: '<h1>Invoice #1024</h1><p>Amount due: $49.00</p>' });
NativeUI — share sheet and native dialogs
Opens the native share menu (WhatsApp, Messages, Email, AirDrop, and any app the user has installed), or shows a native alert or confirm dialog instead of a browser popup.
// Open the native share sheetNativeUI.share({ title: 'Check this out', text: 'I found this on the app.', url: 'https://example.com/product/42',});// Show a native alertNativeUI.alert({ title: 'Saved', message: 'Your changes have been saved.' });// Show a native confirm dialogNativeUI.confirm({ title: 'Delete item?', message: 'This action cannot be undone.', confirmText: 'Delete', cancelText: 'Cancel', onConfirm: () => deleteItem(),});
Opens the device camera in a native scanner view. Supports QR codes, EAN-8, EAN-13, Code 128, and Code 39. Calls your callback the moment a code is detected.
NativeDocScanner — document camera with edge detection
Opens a document scanning view with automatic edge detection, perspective correction, and image enhancement. Returns a cropped, enhanced image you can upload or display.
NativeDocScanner.scan({ onSuccess: (result) => { // result.imageBase64 is a base64-encoded JPEG uploadDocument(result.imageBase64); },});
Starts the device’s native speech recognition engine. Useful for search fields, note-taking, and accessibility. The transcript is delivered to your callback as the user speaks.
Opens the address or coordinates in Apple Maps (iOS) or Google Maps (Android), optionally starting turn-by-turn navigation.
// Open an addressNativeMaps.open({ address: '1 Infinite Loop, Cupertino, CA' });// Open coordinates with navigationNativeMaps.open({ latitude: 37.3318, longitude: -122.0312, navigate: true,});
NativeMediaPlayer — native audio and video playback
Plays audio or video using the native media player. Audio continues playing when the app is moved to the background, and the lock screen controls appear automatically.
NativeMediaPlayer.play({ url: 'https://example.com/podcast-episode-12.mp3', title: 'Episode 12 — Building Mobile Apps', artist: 'Dev Podcast', coverImage: 'https://example.com/cover.jpg',});NativeMediaPlayer.pause();NativeMediaPlayer.stop();
NativeScreenshot — capture the current screen
Captures the current screen contents and returns the image as a base64 string. Useful for sharing, bug reports, or in-app feedback flows.
NativeNotifications — schedule local notifications
Schedules a notification that appears in the device notification tray even when the app is closed. No server required for local notifications.
NativeNotifications.schedule({ title: 'Your order has shipped', body: 'Order #5821 is on its way. Tap to track.', delaySeconds: 3600, // fire in 1 hour data: { orderId: '5821' },});
Sending push notifications from your server requires a Firebase project. See Push notifications in the external setup guide.
NativeRating — prompt for an App Store review
Shows the native “Rate this app” dialog built into iOS and Android. Apple enforces a maximum of three prompts per year per user, so call this only at a natural high-engagement moment.
// A good moment: after a user completes their 5th taskif (user.completedTasks === 5) { NativeRating.requestReview();}
NativeMessaging — in-app native popup
Shows a native modal with a title, a message body, and a call-to-action button. Useful for feature announcements, upgrade prompts, or contextual help.
NativeMessaging.show({ title: 'New feature available', message: 'You can now export reports as PDF directly from the dashboard.', ctaText: 'Try it now', onCta: () => router.push('/reports'),});
Stores arbitrary string values in encrypted native storage. Data survives app restarts and OS-level background termination. Ideal for user preferences, cached tokens, or local state.
// Write a valueawait NativeDatastore.set({ key: 'theme', value: 'dark' });// Read a valueconst theme = await NativeDatastore.get({ key: 'theme' });console.log(theme.value); // 'dark'// Remove a valueawait NativeDatastore.remove({ key: 'theme' });
NativeSecurity — encrypted Keychain storage and jailbreak detection
Stores sensitive values (tokens, PINs, secrets) in the iOS Keychain or Android EncryptedSharedPreferences. Also detects rooted or jailbroken devices so you can block access to security-sensitive features.
// Store a secretawait NativeSecurity.setSecret({ key: 'api_token', value: userToken });// Retrieve a secretconst { value } = await NativeSecurity.getSecret({ key: 'api_token' });// Check for root / jailbreakconst { compromised } = await NativeSecurity.isDeviceCompromised();if (compromised) { showSecurityWarning();}
NativeAnalytics — log events to Firebase Analytics
Sends named events with optional parameters to Firebase Analytics. Requires a Firebase project — see Firebase Analytics in the external setup guide.
Places a native search input at the top of the screen. Results filtering happens in your web app; the bridge just provides the native input and keyboard behavior.
NativeOnboarding — welcome tutorial with completion tracking
Shows a multi-step onboarding flow the first time the user opens the app. Completion is stored in native storage so the flow never repeats unless you reset it.
NativeOnboarding.show({ steps: [ { title: 'Welcome', body: 'Track your orders in one place.', image: 'onboarding-1' }, { title: 'Get notified', body: 'Enable push notifications to stay updated.', image: 'onboarding-2' }, { title: "You're set", body: 'Tap Get started to open the app.', image: 'onboarding-3' }, ], onComplete: () => router.push('/dashboard'),});
Fires a callback whenever the device goes online or offline, giving you real-time control over your UI state.
NativeOffline.onStatusChange((status) => { if (status === 'offline') { showBanner('You are offline. Some features may be unavailable.'); } else { hideBanner(); }});
NativeOTA — over-the-air updates without app store re-submission
Pushes a new version of your web app to users immediately, bypassing the app store review cycle. Ideal for content updates and bug fixes that do not require a native change.
await NativeOTA.checkForUpdate();// Returns { available: boolean, version: string }await NativeOTA.applyUpdate();// Downloads and applies the update, then restarts the web layer
NativePerformance — preload URLs and cache management
Preloads one or more URLs in the background so navigation to those pages feels instant. Also exposes a cache-clearing utility.
// Preload likely next pagesNativePerformance.preload(['https://yourapp.com/checkout', 'https://yourapp.com/profile']);// Clear the cache (useful after a user logs out)NativePerformance.clearCache();
NativeAppLinks — URLs open directly in your app
Intercepts links to your domain that are tapped from other apps (email, browser, SMS) and opens them inside your app instead. Requires an external domain verification step — see Universal Links / App Links.
NativeAppLinks.onDeepLink((url) => { // url: the full URL that was opened, e.g. 'https://yourapp.com/orders/5821' const path = new URL(url).pathname; router.push(path);});
NativeBeacon — BLE beacon scanning
Scans for nearby iBeacon or Eddystone BLE beacons. Useful for proximity-based features like indoor navigation, store check-ins, or attendance tracking.
NativeShareInto — receive content shared from other apps
Registers your app as a share target so users can share URLs, text, images, and files into your app from Safari, Photos, and other apps. Requires external setup — see Share into app.
If you use an AI builder such as Base44, Bolt, Lovable, Cursor, or Replit, paste the snippet above into your project and describe the feature. The AI can wire up the full integration for you.