Skip to main content

Configuration

Mobile app configuration includes application identity, platform settings, permissions, plugins, and security. Configure in WaveMaker Studio before exporting React Native zip.


Application Information

Application Name

User-visible name displayed on device home screen and app stores.

Recommendations:

  • 10-30 characters
  • Title Case
  • Match branding

Application ID (Bundle Identifier)

Unique identifier in reverse domain format: com.company.appname

Critical:

  • Must be globally unique
  • Cannot change after app store publication
  • Used for certificates and signing
  • Lowercase, numbers, underscores only

Examples:

  • com.wavemaker.salesapp
  • org.company.inventory

Version Information

Version Number: User-visible (e.g., 1.0.0)

  • Format: MAJOR.MINOR.PATCH
  • Semantic versioning

Version Code/Build Number: Internal integer

  • Android: Version Code (e.g., 1, 2, 3)
  • iOS: Build Number (e.g., "1", "2")
  • Must increment with every release

Android Settings

SDK Versions

Target SDK: API 34+ (Android 14) recommended

  • Google Play requirement
  • Determines available features

Minimum SDK: API 21+ (covers 99% of devices)

  • Lower = wider compatibility
  • Higher = newer features

Check distribution: Android Studio Dashboard

Permissions

Common permissions:

<!-- Network -->
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />

<!-- Camera and media -->
<uses-permission android:name="android.permission.CAMERA" />
<uses-permission android:name="android.permission.RECORD_AUDIO" />

<!-- Location -->
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />

<!-- Notifications (Android 13+) -->
<uses-permission android:name="android.permission.POST_NOTIFICATIONS" />

Permission types:

  • Normal: Auto-granted (internet, network state)
  • Dangerous: Require runtime approval (camera, location)

Configure in Studio → Project Settings → Mobile Settings → Android

App Signing

Debug keystore: Auto-generated for development

Production keystore: Required for Play Store

Generate:

keytool -genkey -v -keystore release.keystore \
-alias release-key -keyalg RSA -keysize 2048 -validity 10000

Critical: Backup keystore securely. Cannot update published apps if lost.

Build Output

  • APK: Direct installation, testing
  • AAB: Play Store required (new apps since August 2021)

iOS Settings

Deployment Target

Minimum iOS version: iOS 13.0+ recommended (95% coverage)

Check distribution: Apple iOS Statistics

Device Support

  • iPhone only: Phone-specific apps
  • iPad only: Tablet-optimized apps
  • Universal: Both (recommended for maximum reach)

Capabilities (Entitlements)

Enable in Apple Developer Portal → App ID:

  • Push Notifications
  • In-App Purchase
  • iCloud
  • Apple Pay
  • HealthKit
  • Sign in with Apple

Regenerate provisioning profiles after enabling capabilities.

Privacy Permissions

Required usage descriptions in Info.plist:

<!-- Camera -->
<key>NSCameraUsageDescription</key>
<string>This app requires camera access to take photos.</string>

<!-- Location -->
<key>NSLocationWhenInUseUsageDescription</key>
<string>This app uses your location to show nearby places.</string>

<!-- Photos -->
<key>NSPhotoLibraryUsageDescription</key>
<string>This app needs access to your photos.</string>

<!-- Microphone -->
<key>NSMicrophoneUsageDescription</key>
<string>This app requires microphone access for recording.</string>

App Store requirement: Clear, specific explanations. Generic descriptions cause rejection.

URL Schemes

Custom URL schemes: myapp://path

<key>CFBundleURLTypes</key>
<array>
<dict>
<key>CFBundleURLSchemes</key>
<array>
<string>myapp</string>
</array>
</dict>
</array>

Universal Links: https://example.com/path (preferred, more secure)

Requires apple-app-site-association file on web server.


Cordova Plugins

Plugins provide native device functionality to React Native apps.

Pre-Configured Plugins

WaveMaker includes:

  • cordova-plugin-camera – Camera and photo library access
  • cordova-plugin-geolocation – GPS location
  • cordova-plugin-file – File system access
  • cordova-plugin-network-information – Network status
  • cordova-plugin-device – Device information
  • cordova-plugin-statusbar – Status bar control

Adding Custom Plugins

In WaveMaker Studio:

  1. Project Settings → Mobile Settings → Plugins
  2. Add plugin by npm package name or Git URL
  3. Configure plugin variables if required
  4. Export React Native zip

Popular third-party plugins:

  • phonegap-plugin-push – Push notifications
  • phonegap-plugin-barcodescanner – QR/barcode scanning
  • cordova-sqlite-storage – Local database
  • cordova-plugin-inappbrowser – In-app browser

Plugin search: Cordova Plugins

Plugin Compatibility

  • Not all Cordova plugins work with React Native architecture
  • Test plugins after integration
  • Check plugin documentation for React Native support

Domain Whitelisting

Controls external domain access for security.

Whitelist Types

Network requests (API calls):

<access origin="https://api.company.com" />
<access origin="https://*.example.com" />

Navigation (OAuth, redirects):

<allow-navigation href="https://accounts.google.com/*" />

Intents (Android - external apps):

<allow-intent href="https://*/*" />
<allow-intent href="tel:*" />
<allow-intent href="mailto:*" />

Common Scenarios

Backend API:

<access origin="https://api.company.com" />
<allow-navigation href="https://api.company.com/*" />

OAuth providers:

<access origin="https://accounts.google.com" />
<allow-navigation href="https://accounts.google.com/*" />

CDN resources:

<access origin="https://cdn.company.com" />

Platform-Specific Security

iOS App Transport Security (ATS):

HTTPS enforced by default. Allow HTTP only for specific domains:

<key>NSAppTransportSecurity</key>
<dict>
<key>NSExceptionDomains</key>
<dict>
<key>example.com</key>
<dict>
<key>NSExceptionAllowsInsecureHTTPLoads</key>
<true/>
</dict>
</dict>
</dict>

Android Network Security:

Android 9+ blocks HTTP by default. Configure network_security_config.xml:

<network-security-config>
<domain-config cleartextTrafficPermitted="true">
<domain includeSubdomains="true">example.com</domain>
</domain-config>
</network-security-config>

Best practice: Always use HTTPS for production APIs.


Summary

Application Info:

  • Application ID permanent after publication
  • Version number and code must increment

Android:

  • Target SDK 34+, Minimum SDK 21+
  • Permissions: Normal (auto) vs Dangerous (runtime)
  • Backup production keystore securely

iOS:

  • Deployment target iOS 13.0+
  • Enable capabilities in Apple Developer Portal
  • Privacy descriptions required

Plugins:

  • Pre-configured plugins included
  • Add custom plugins via npm or Git
  • Test compatibility with React Native

Whitelisting:

  • Network requests, navigation, intents
  • Platform-specific security (ATS, Network Security Config)
  • Always use HTTPS for production

Build Documentation:

  • Overview – Build methods comparison
  • AppChef – Upload certificates to cloud builds
  • CLI – Provide certificates to local builds
  • Expo Builds – Configure certificates in EAS

Publishing Documentation:

External Resources: