Skip to main content

App Permissions

Who Can Run Your App

Control access to your app through different sharing methods and permission levels. When you share your app via magic link, you have control over who can access it:
https://nativebridge.io/app/{appId}
By default, anyone with the magic link can run your app. This makes it easy to share with stakeholders, clients, and testers without requiring them to create accounts.

Authenticated Access

For apps containing sensitive data, you can require users to be authenticated and linked to your organization before they can access the App Page.

Permission Levels

NativeBridge offers flexible permission management at two levels:
Advanced permissions are only available for Starter, Growth and Custom plans

Organization-Level Permissions

Set default permissions that apply to all apps in your organization:
1

Navigate to Organization Settings

2

Configure Default Permissions

Set your preferred default permissions for all apps
3

Save Changes

These settings will apply to all new apps and existing apps without custom permissions

App-Level Permissions

Override organization defaults with app-specific permissions:
App-level permissions will override organization defaults. We recommend using organization-level permissions for consistency unless you need specific exceptions.
1

Select Your App

Navigate to your Dashboard and select your app
2

Choose Build

Select the specific build you want to configure permissions for
3

Configure Permissions

Go to Settings → App Permissions and adjust as needed
App permissions can also be configured when uploading via our API. See the API Reference for details.

Available Permissions

Configure these permissions to control what features are available when someone accesses your app:
PermissionDescriptionDefault
runAllow running your application✅ Enabled
networkProxySpecify a custom network proxy when running the app❌ Auth Required
networkInterceptUse NativeBridge’s intercepting proxy for network debugging❌ Auth Required
debugLogView app’s console output (NSLog/Logger or Logcat)❌ Auth Required
adbConnectConnect ADB for Android debugging❌ Auth Required
androidPackageManagerInstall additional APKs during app session❌ Auth Required
deviceControlAccess device controls (rotation, location, etc.)✅ Enabled
mediaUploadUpload images/videos to the device✅ Enabled
screenshotTake screenshots of the app✅ Enabled

Permission Scenarios

Public Demo

For public demos and marketing:
  • run: Public
  • screenshot: Public
  • deviceControl: Public
  • All debugging features: Authenticated

Internal Testing

For QA and development teams:
  • All permissions: Authenticated
  • Requires team members to sign in

Client Review

For sharing with clients:
  • run: Public
  • screenshot: Public
  • deviceControl: Public
  • Technical features: Authenticated

Beta Testing

For beta testers:
  • run: Public with expiring links
  • screenshot: Public
  • debugLog: Public (for bug reports)
  • Admin features: Authenticated

Security Best Practices

Managing Access

Revoking Access

To revoke access to a shared app:
  1. Delete the magic link - Removes public access immediately
  2. Update permissions - Change to authenticated-only access
  3. Upload new build - Previous build links become invalid

Tracking Usage

Monitor app access through:
  • Usage analytics dashboard
  • Access logs
  • Session recordings (with permission)

API Configuration

Configure permissions programmatically when uploading apps:
// Upload with custom permissions
const response = await fetch('https://api.nativebridge.dev/v1/apps', {
  method: 'POST',
  headers: {
    'Authorization': 'Bearer YOUR_API_KEY',
    'Content-Type': 'application/json'
  },
  body: JSON.stringify({
    file: appFile,
    permissions: {
      run: 'public',
      debugLog: 'authenticated',
      networkIntercept: 'authenticated',
      adbConnect: 'authenticated'
    }
  })
});

Next Steps