Configure your mobile
 apps with confidence.
A powerful native and cross-platform mobile project configuration toolbox
- Easy to Use- Trapeze modifies native iOS and Android projects with a simple configuration-driven experience or Node.js-based API. 
- Great Mobile Support- Trapeze works with most popular mobile frameworks—traditional iOS and Android, Capacitor, React Native, and Flutter. 
- CI/CD Ready- Trapeze integrates well into Mobile CI/CD and DevOps services like Appflow for powerful project automation at scale. 
Automate your tasks.
Automate many common iOS and Android configuration tasks with a single YAML-based configuration.
platforms:
  ios:
    targets:
      App:
        incrementBuild: true
        version: 16.4
        productName: Awesome App
        displayName: My Awesome App
        buildSettings:
          ENABLE_BITCODE: false
          STRIP_SWIFT_SYMBOLS: false
        plist:
          replace: false
          entries:
            - NSFaceIDUsageDescription: Use Face ID to authenticate yourself and login
        entitlements:
          - keychain-access-groups:
              [
                'com.keychain.access.group'
              ]
        frameworks:
          - CoreServices.framework
          - ImageIO.framework
          - LocalAuthentication.framework
          - WebKit.framework
platforms:
  android:
    incrementVersionCode: true
    manifest:
      - file: AndroidManifest.xml
        target: manifest/application
        attrs:
          android:name: com.example.App
      - file: AndroidManifest.xml
        target: manifest
        inject: |
          <queries>
              <intent>
                  <action android:name="android.intent.action.MAIN" />
                  <category android:name="android.intent.category.LAUNCHER" />
              </intent>
          </queries>
    gradle:
      - file: app/build.gradle
        target:
          dependencies:
        insert: |
          implementation "com.stripe:stripe-java:20.133.0"
    res:
      - path: raw
        file: config.json
        text: |
          {
            "value": true
          }
      - path: drawable
        file: icon.png
        source: ./public/assets/icon/icon.png
Custom config scripts.
Write custom iOS and Android configuration scripts using the powerful Trapeze API
import { MobileProject, MobileProjectConfig } from '@trapezedev/project';
const project = new MobileProject(projectDir, {
  path: 'ios',
},
android: {
  path: 'android',
});
await project.load();
// Updating plist files for targets and builds
await project.ios?.updateInfoPlist('App', 'Debug', {
  NSFaceIDUsageDescription: 'The better to see you with',
});
// Adding frameworks
project.ios?.addFramework(targetName, 'Custom.framework', {
  embed: true,
});
await project.commit();
Environment variables
Pull values from environment variables for easy templating and customization. Supports JSON values that can even reference existing variables.
vars:
  BUNDLE_ID:
    default: dev.trapeze.defaultBundleId
  PACKAGE_NAME:
    default: dev.trapeze.defaultPackageName
  KEYCHAIN_GROUPS:
    default:
        [
          '$BUNDLE_ID',
        ]
  
platforms:
  ios:
    targets:
      App:
        bundleId: $BUNDLE_ID
        entitlements:
          - keychain-access-groups: $KEYCHAIN_GROUPS
        
  android:
    packageName: $PACKAGE_NAME
  
Automate with ease.
Automate configuration in a CI/CD workflow, such as Appflow Code.
vars:
  CI_BUILD_NUMBER:
    default: 1
platforms:
  ios:
    buildNumber: $CI_BUILD_NUMBER
  android:
    versionCode: $CI_BUILD_NUMBER
"scripts": {
        "appflow:build": "if [ "$CI_PLATFORM" != "web" ]; then npx trapeze run ci.yaml -y --$CI_PLATFORM; fi && npm run build",
},
Community
Trapeze is an open source project by Ionic. Join our growing community—everyone is welcome.