ionic-team/trapeze
Project Overview
Trapeze
CLI and API for automating native iOS and Android mobile project configuration via YAML.
True Intent (AI Assessment)
Provide a declarative YAML-driven tool and TypeScript API for automating configuration changes to native iOS and Android mobile project files.
README Accuracy
Notes
Behavior matches README. Minor note: package license fields say 'SEE LICENSE' and GitHub reports NOASSERTION — consumers should verify licensing terms in the LICENSE file.
Trapeze is a mobile project configuration toolbox from the Ionic team. It provides a CLI (@trapezedev/configure) and a programmatic API (@trapezedev/project) that read a YAML configuration and apply modifications to the native files inside iOS and Android app projects — things like pbxproj, Info.plist, AndroidManifest.xml, build.gradle, string resources, entitlements, and JSON/properties files.
The problem it solves is the tedious and error-prone task of editing native mobile project files by hand. Teams building with Capacitor, Ionic, React Native, Flutter, or plain native iOS/Android often need to tweak bundle IDs, versions, signing configs, permissions, icons, and Gradle dependencies across environments (dev, staging, prod). Trapeze makes these changes declarative, repeatable, and CI-friendly, moving the ecosystem toward the stated long-term goal of fully immutable native mobile projects.
The primary users are mobile developers and DevOps engineers working on hybrid or native mobile apps. They author a YAML file (e.g. config.prod.yml) describing the desired state of the iOS and Android targets, then invoke the `trapeze` CLI to apply it — interactively or with environment variables supplying values like $BUNDLE_ID or $VERSION_CODE. Advanced users can drop to the TypeScript Project API for scripted, custom modifications.
Internally, the repo is a Turborepo monorepo with npm workspaces. Key packages: `project` (the core file-manipulation engine, using xcode, plist, @xmldom/xmldom, gradle-to-js, xml-js, xpath, prettier, diff), `gradle-parse` (a Java-backed JAR for accurate Gradle parsing), `configure` (the CLI wrapping the API with commander, prompts, kleur, yaml), and `website` (Docusaurus docs at trapeze.dev). Examples include a full Capacitor React app demonstrating dev/prod YAML configs.
No red flags observed. Code is a straightforward, well-scoped tooling monorepo maintained by a known vendor (Ionic). License field says SEE LICENSE in packages but a top-level LICENSE file exists; GitHub reports NOASSERTION which is worth a quick check by users.
| Languages | TypeScript, JavaScript, Java, SCSS, Shell |
| Runtime | Node.js |
| Framework | Turborepo monorepo; Docusaurus (docs site) |
| Database | None |
| Package Manager | npm (workspaces) |
| Key Dependencies | xcode, plist, @xmldom/xmldom, gradle-to-js, xml-js, commander, prompts, yaml, lodash, prettier |
| Build Tool | Turbo + TypeScript compiler (tsc) |
| Test Framework | Vitest |