How to Download Xcode .xip Installer Files from Apple

How to Download Xcode .xip Installer Files from Apple

Written by

in

Quick answer: The Mac App Store never gives you a standalone installer file — it streams Xcode into a temporary cache and deletes it after install. To get a real installer, sign in at developer.apple.com/download/all, download the .xip for the version you want, expand it with xip --expand, and move the resulting Xcode.app into /Applications.

Why this happens

The Mac App Store installs Xcode straight into /Applications and never hands you a file you can keep. The download is streamed into a temporary cache under /private/var/folders/ and cleaned up once installation finishes. Even if you catch a partial file in there, it is not a mountable installer — it is App Store working state.

That is fine until you need the installer itself: to repair a broken Xcode, to install a specific version on a build machine, to keep two versions side by side, or to reinstall without waiting on the App Store’s opaque progress bar.

Apple’s supported route for that is the developer downloads page, which serves Xcode as a signed .xip archive (older releases used .dmg). Same bits, different delivery.

How to fix it

1. Download the .xip from Apple’s developer downloads page

  1. Go to developer.apple.com/download/all/ and sign in with your Apple Account. A free developer account is enough for Xcode releases.
  2. Filter or scroll to Xcode. Every release is listed with its version number and, where relevant, a minimum macOS requirement.
  3. Pick the exact build you need. Recent releases list separate Apple silicon and Universal variants — read the label before clicking, because the Apple silicon build will not run on an Intel Mac.
  4. Download the .xip. It is several gigabytes, so use a browser that can resume a broken transfer and make sure you have room for both the archive and the expanded app.

If the version you want is not listed, it has been retired. Apple removed the very old releases from the site in September 2024, so anything that ancient has to come from an archive you already keep.

2. Expand the .xip and move it into /Applications

You can double-click the .xip in Finder, but the command line gives you a clearer error if the archive is truncated or the signature check fails.

cd ~/Downloads
xip --expand Xcode_27.xip

xip verifies the archive’s signature while it expands, so a corrupted download stops here instead of producing a broken app. Expansion needs roughly the size of the finished app in free space on top of the archive itself.

When it finishes you get a plain Xcode.app. Rename it before moving it, so a second copy does not overwrite the first:

mv Xcode.app /Applications/Xcode_27.app

Launch it once from /Applications so macOS finishes first-run setup, then accept the license if prompted.

3. Keep several versions side by side

Xcode does not care what the app is called, only which one xcode-select points at. After installing a second copy:

sudo xcode-select --switch /Applications/Xcode_27.app
xcode-select -p
xcodebuild -version

xcode-select -p prints the active developer directory and xcodebuild -version confirms which Xcode the toolchain is actually using. Switch back the same way when you need the older one.

This is the setup most people want when a project is pinned to an older SDK but the machine also needs the current release for App Store uploads.

4. What about the file the Mac App Store downloads?

It is not a usable installer. The App Store writes its download into a per-user cache directory under /private/var/folders/ and removes it after installation. Digging it out is unreliable, it changes between macOS releases, and the result is not something you can hand to another Mac.

If your goal is simply to repair a damaged Xcode, do this instead:

  • Quit Xcode and the Simulator.
  • Delete /Applications/Xcode.app and reinstall from the App Store, or install the .xip from step 1.
  • Reset the toolchain pointer with sudo xcode-select --reset if command line tools start complaining about a missing developer directory.

5. If you only need the command line tools

You do not need the full 10-plus GB Xcode for clang, git, or swiftc on a build agent. Either run:

xcode-select --install

or download the standalone Command Line Tools disk image from the same developer downloads page. To see whether an update is already offered through the system:

softwareupdate --list

Command Line Tools for Xcode shows up there as a normal software update on most machines.

How to prevent it

  • Keep the .xip you downloaded in an archive drive. Apple retires old versions and you cannot re-download what is gone.
  • Check the minimum macOS requirement in the release notes before starting a multi-gigabyte download — installing an Xcode your macOS cannot run wastes an hour.
  • Pin the Xcode version in CI with xcode-select --switch rather than relying on whatever the image ships with.
  • Keep at least twice the installer size free on the target volume before expanding.
  • Do not script anything against the App Store cache path; it is not a stable interface.

FAQ

Is the Xcode download a DMG or a XIP?

Current releases are distributed as signed .xip archives. Older versions used .dmg, and the standalone Command Line Tools still ship as a disk image. Both end up as an app or a package you install the same way.

Do I need a paid Apple Developer Program membership to download Xcode?

No. A free Apple Account signed in at the developer downloads page can download Xcode and the Command Line Tools. A paid membership is only needed for distribution-related services like certificates, provisioning profiles and App Store Connect uploads.

Can I install an older Xcode on the latest macOS?

Only down to a point. Since macOS 15, Xcode versions before Xcode 16 will not run at all, and each release lists its own minimum macOS. Check the requirement next to the download before you commit to it.

Why does xip --expand fail with a signature error?

The archive is incomplete or was modified in transit. Delete it and download again — xip refuses to expand a .xip whose signature does not verify, which is exactly the behaviour you want.

Sources & credits

Parts of this guide are adapted from content licensed under CC BY-SA 3.0; this article is shared under the same license.