MagicDeployOne button between your project and TestFlight or Google Play. Open a project, press Deploy. MagicDeploy works out what kind of project it is, finds the
build it should ship, and uploads it. No Fastfile, no CI config, no browsing for an Getting started
The first deploy asks for one credential per store. After that it never asks again. What it recognisesDetection scores your folder and picks the best match — you don't tell it anything.
For iOS it resolves the workspace, the real app scheme, and the bundle identifier — reading
schemes from your own project rather than the workspace, so CocoaPods dependencies don't
flood the list. For Android it reads the Finding your buildiOS looks in your framework's output directory and in Xcode's Organizer archive library, matched on bundle id. An archive you made in Xcode's UI is picked up with no setup at all. Version, build number, team, and whether Apple already accepted that archive are read from the archive itself. Android scans the Gradle output tree and skips two things that would otherwise cause
confusing failures: work-in-progress bundles under If nothing recent exists, it builds — Before every build, it checks the versionA build bakes the version in, and both stores reject a build number they have already seen — telling you only after the upload finishes. So MagicDeploy pauses first and shows what it is about to stamp in. Confirm it, bump it, or type your own. Your project files are never modified. The version is passed to the build tool as arguments, so a deploy leaves no diff behind. Flutter projects also get an Obfuscate toggle, which adds Release notes, written for youBoth stores take release notes, and the ✨ button drafts them from your recent commits using
whichever AI CLI you already have — Claude Code, Gemini CLI, Everything runs locally. MagicDeploy sends nothing anywhere. Every deploy is recordedRuns are archived with their steps, timings, and full command log. Click any past deployment to read back exactly what happened, including runs from previous sessions. A deploy still in progress reattaches when you reopen the project, so switching tabs never loses the log. RequirementsMagicDeploy drives the tools you already have; it does not bundle them.
CredentialsOne per store, asked once and remembered. Apple. Either an App Store Connect API key (recommended — MagicDeploy installs it
where Xcode and
Google. The Play Developer API accepts only a service account. Create a JSON key in Google Cloud Console, then invite that service account address in Play Console → Users and permissions with Release to testing tracks. Your data stays on your machineMagicDeploy runs entirely locally. Projects, deployment history, and credentials live in your home directory, never in the extension and never on a server. Nothing is uploaded anywhere except the build you asked to ship, sent directly to Apple or Google. Good to know
Commands
Full documentation is built in — click Help in the app's top bar. Licensed MIT. |