On this page
Overview
XcodeGen is a Swift CLI that generates .xcodeproj files from a YAML/JSON project spec and directory structure. Targets, configurations, schemes, build settings, and package dependencies live in text so the same Xcode project can be regenerated locally and in CI without hand-edited project-file merge conflicts.
Features and best fit
Based on official documentation; not hands-on tested · Content checked:
Key features
Declare targets, schemes, settings, and dependencies in project.yml
The project spec defines applications and frameworks, platforms, source directories, configurations, schemes, Swift packages, and other settings, and xcodegen generate builds the .xcodeproj. Specs can be split across files and combined through includes and overrides.
Sources: [2]
Treat the directory structure and spec as the source of truth instead of the generated project
XcodeGen automatically maps source directories into project groups and files, reducing merge conflicts in hand-edited project files. The same generation step can run on CI.
Sources: [2]
Best fit
Fits iOS projects with multiple targets and environments that want project configuration in code review
It is useful when complex build settings and target dependencies should be diffable as YAML or JSON and reproducible from a clean checkout or CI runner.
Sources: [2]
Before adoption
Version 2.46.0 changes target ordering and Swift package trait generation
Version 2.46.0 preserves Swift package traits for remote and local package references and changes generated target order to follow the source spec declaration order. It also changes default embedding behavior for static frameworks. Package.swift uses Swift tools 5.9 and requires macOS 11+, so review generated-project diffs when upgrading existing specs.
Official sources
- [1]yonaskolb/XcodeGen — GitHub repository(2026-10-06)
- [2]XcodeGen 2.46.0 — README(2026-10-06)
- [3]XcodeGen 2.46.0 — Package.swift(2026-10-06)
- [4]XcodeGen 2.46.0 release(2026-10-06)
- [5]XcodeGen MIT license(2026-10-06)
Supplemental curator note
XcodeGen fits iOS teams that want fewer .xcodeproj merge conflicts and text-reviewed target, scheme, and build settings. Version 2.46.0 changes target order and static-framework embedding behavior, so inspect generated-project diffs when upgrading.
Try it in 3 steps
- 1
Pin XcodeGen 2.46.0 through Mint
Pin the reviewed release so developers and CI can use the same XcodeGen version.
mint run yonaskolb/XcodeGen@2.46.0 xcodegen --version - 2
Create a minimal project.yml
Declare one application target and its source directory in a YAML project spec.
cat > project.yml <<'YAML' name: MyApp targets: MyApp: type: application platform: iOS sources: [MyApp] YAML - 3
Generate the Xcode project
Generate MyApp.xcodeproj from project.yml and verify the project is reproducible from a clean checkout.
mint run yonaskolb/XcodeGen@2.46.0 xcodegen generate
Growth
Growth trends · Last 30 days
8,830 Stars
Trend data is still being collected.
Development activity
Last 90 days · weekly
- Commits (last 30 days)
- 7
- Open PRs
- 51
Development activity is still being collected.
Built with
Categories and tags
Categories
GitHub data
GitHub dataView detailed GitHub data
GitHub Topics
- swift
- xcode
- generator
- xcodeproject
- specification
- yaml
- xcodeproj
- cli
- ci
Related information
Write a related articleShare a guide or use case for this OSS in Markdown. Articles are published after administrator approval.
Explore next
- GitHub Actions Runner6,311 Stars
2 shared tag(s) · 3 shared category(s)
run GitHub Actions jobs on self-hosted machines with control over operating system, hardware, and network access
C# - Apache Maven5,369 Stars
2 shared tag(s) · 3 shared category(s)
Standardize Java/JVM builds by sharing dependencies, plugins, and lifecycle rules in a POM
Java - Appium22,046 Stars
2 shared tag(s) · 2 shared category(s)
automate end-to-end tests for Android, iOS, and desktop apps through WebDriver-compatible APIs
TypeScript - Allure Report5,549 Stars
2 shared tag(s) · 2 shared category(s)
turn results from multiple languages and test frameworks into unified reports with history, steps, and attachments
HTML - Renovate22,688 Stars
1 shared tag(s) · 3 shared category(s)
automate dependency discovery and update pull requests across 90+ package managers
TypeScript - Turborepo31,176 Stars
1 shared tag(s) · 2 shared category(s)
use task graphs and caching to run only the monorepo build, test, and lint work that matters
Rust
Report incorrect information
Tell us if any listing information is incorrect or outdated.