<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[Son Le's Blog]]></title><description><![CDATA[engineer / reader / runner]]></description><link>https://thaison.dev</link><generator>RSS for Node</generator><lastBuildDate>Thu, 20 Aug 2026 19:09:48 GMT</lastBuildDate><atom:link href="https://thaison.dev/rss.xml" rel="self" type="application/rss+xml"/><language><![CDATA[en]]></language><ttl>60</ttl><item><title><![CDATA[How to manage Xcode versions the easy way]]></title><description><![CDATA[Apple's Xcode helps build a lot of great iOS apps. However, working with Xcode is a real pain in the rear, due to the breaking changes; the code signing process; the upgrade/downgrade to specific vers]]></description><link>https://thaison.dev/how-to-manage-xcode-versions-the-easy-way</link><guid isPermaLink="true">https://thaison.dev/how-to-manage-xcode-versions-the-easy-way</guid><category><![CDATA[Xcode]]></category><category><![CDATA[iOS]]></category><category><![CDATA[tips]]></category><dc:creator><![CDATA[Son Le]]></dc:creator><pubDate>Sun, 10 Oct 2021 17:46:32 GMT</pubDate><enclosure url="https://cdn.hashnode.com/res/hashnode/image/upload/v1633887842520/cmk1AzH-G.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Apple's Xcode helps build a lot of great iOS apps. However, working with Xcode is a real pain in the rear, due to the <a href="https://blog.embrace.io/xcode-12-and-xcframework/">breaking</a> <a href="https://fluffy.es/4-ios13-breaking-changes/">changes</a>; the <a href="https://developer.apple.com/support/code-signing/">code signing process</a>; the upgrade/downgrade to specific versions, etc.</p>
<p>Having multiple versions of Xcode on a single machine provides more flexibility. It’s a good practice to try to stay up-to-date, but sometimes you need the ability to release an app built with an older version. Previously, my best approach was to download specific versions of Xcode manually (using either <a href="https://xcodereleases.com">https://xcodereleases.com</a> or this <a href="https://stackoverflow.com/a/10335943/2587129">great SO answer</a>) rather than using the Mac App Store version. This approach has some downsides:</p>
<ul>
<li><p>Too many manual steps involved (download, extract, install, verify, rename, select the version for CLI, etc.)</p>
</li>
<li><p>Sometimes the downloads just get interrupted for no reason</p>
</li>
</ul>
<p>Recently, I found this great tool called <a href="https://github.com/RobotsAndPencils/XcodesApp">Xcodes</a> that provides us with a much better way to install and switch between multiple versions of Xcode.</p>
<img src="https://github.com/RobotsAndPencils/XcodesApp/raw/main/screenshot.png" alt="" style="display:block;margin:0 auto" />

<p>Xcodes offers these great features:</p>
<ul>
<li><p>List all available Xcode versions from xcodereleases.com's data or the <a href="https://developer.apple.com/download/all/">Apple Developer website</a></p>
</li>
<li><p>Install any Xcode version, fully automated from start to finish. Xcodes uses <a href="https://aria2.github.io">aria2</a>, which uses up to 16 connections to download 3-5x faster than URLSession</p>
</li>
<li><p>Just click a button to make a version active with <code>xcode-select</code></p>
</li>
<li><p>View release notes, OS compatibility, included SDKs and compilers from xcodereleases.com</p>
</li>
</ul>
<p>To install Xcodes using <code>Homebrew</code>:</p>
<pre><code class="language-plaintext">brew install --cask xcodes
</code></pre>
<p>In your first time opening Xcodes, it will prompt you to sign in with your Apple Developer account.</p>
<img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1633886472637/6hnqCJVFe.png" alt="Screen Shot 2021-10-11 at 12.20.21 AM.png" style="display:block;margin:0 auto" />

<p>After that, click <code>Install</code> on the Xcode versions you want to download. Xcodes will do all these jobs automatically:</p>
<ul>
<li><p>Downloading</p>
</li>
<li><p>Unarchiving</p>
</li>
<li><p>Moving the Xcode version to the specified directory (if you manually set it)</p>
</li>
<li><p>Trashing the archive</p>
</li>
<li><p>Checking security assessment and code signing</p>
</li>
</ul>
<img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1633886663360/OTQJ0bmhm.png" alt="Screen Shot 2021-10-11 at 12.23.40 AM.png" style="display:block;margin:0 auto" />

<p>After the installation is done, to active a specific version, just select that version and click the <code>Active</code> button. That's it!</p>
<p>Hopefully this tool will make your life as an iOS developer much easier. If you're looking for a command-line version of Xcodes, check out <a href="https://github.com/RobotsAndPencils/xcodes">xcodes</a>.</p>
]]></content:encoded></item></channel></rss>