<?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" xmlns:itunes="http://www.itunes.com/dtds/podcast-1.0.dtd" xmlns:googleplay="http://www.google.com/schemas/play-podcasts/1.0"><channel><title><![CDATA[YV Insights 🐰💻 by yuryv.info]]></title><description><![CDATA[🐰🕳️ A deep dive into how apps, games, people, and money actually interact, backed by a FAANG-grade engineer.]]></description><link>https://yvinsights.com</link><image><url>https://substackcdn.com/image/fetch/$s_!SCT7!,w_256,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5b656ba9-ef04-471f-9525-7c48ed24a9fd_1024x1024.png</url><title>YV Insights 🐰💻 by yuryv.info</title><link>https://yvinsights.com</link></image><generator>Substack</generator><lastBuildDate>Tue, 16 Jun 2026 04:55:18 GMT</lastBuildDate><atom:link href="https://yvinsights.com/feed" rel="self" type="application/rss+xml"/><copyright><![CDATA[Yury Vashchylau]]></copyright><language><![CDATA[en]]></language><webMaster><![CDATA[yvinsights@substack.com]]></webMaster><itunes:owner><itunes:email><![CDATA[yvinsights@substack.com]]></itunes:email><itunes:name><![CDATA[Yury Vashchylau | yuryv.info]]></itunes:name></itunes:owner><itunes:author><![CDATA[Yury Vashchylau | yuryv.info]]></itunes:author><googleplay:owner><![CDATA[yvinsights@substack.com]]></googleplay:owner><googleplay:email><![CDATA[yvinsights@substack.com]]></googleplay:email><googleplay:author><![CDATA[Yury Vashchylau | yuryv.info]]></googleplay:author><itunes:block><![CDATA[Yes]]></itunes:block><item><title><![CDATA[10 Things I Do on Every New Xcode Installation]]></title><description><![CDATA[&#8230;and a welcome to the first edition of YV Insights.]]></description><link>https://yvinsights.com/p/10-things-i-do-on-every-new-xcode</link><guid isPermaLink="false">https://yvinsights.com/p/10-things-i-do-on-every-new-xcode</guid><dc:creator><![CDATA[Yury Vashchylau | yuryv.info]]></dc:creator><pubDate>Mon, 08 Jun 2026 22:03:56 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!dlAq!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9ab46cf3-aa9a-40ca-928c-8f8b4a0c888b_1800x1012.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!dlAq!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9ab46cf3-aa9a-40ca-928c-8f8b4a0c888b_1800x1012.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!dlAq!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9ab46cf3-aa9a-40ca-928c-8f8b4a0c888b_1800x1012.jpeg 424w, https://substackcdn.com/image/fetch/$s_!dlAq!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9ab46cf3-aa9a-40ca-928c-8f8b4a0c888b_1800x1012.jpeg 848w, https://substackcdn.com/image/fetch/$s_!dlAq!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9ab46cf3-aa9a-40ca-928c-8f8b4a0c888b_1800x1012.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!dlAq!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9ab46cf3-aa9a-40ca-928c-8f8b4a0c888b_1800x1012.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!dlAq!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9ab46cf3-aa9a-40ca-928c-8f8b4a0c888b_1800x1012.jpeg" width="588" height="330.75" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/9ab46cf3-aa9a-40ca-928c-8f8b4a0c888b_1800x1012.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:819,&quot;width&quot;:1456,&quot;resizeWidth&quot;:588,&quot;bytes&quot;:319851,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/jpeg&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://yvinsights.substack.com/i/201161893?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9ab46cf3-aa9a-40ca-928c-8f8b4a0c888b_1800x1012.jpeg&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!dlAq!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9ab46cf3-aa9a-40ca-928c-8f8b4a0c888b_1800x1012.jpeg 424w, https://substackcdn.com/image/fetch/$s_!dlAq!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9ab46cf3-aa9a-40ca-928c-8f8b4a0c888b_1800x1012.jpeg 848w, https://substackcdn.com/image/fetch/$s_!dlAq!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9ab46cf3-aa9a-40ca-928c-8f8b4a0c888b_1800x1012.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!dlAq!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9ab46cf3-aa9a-40ca-928c-8f8b4a0c888b_1800x1012.jpeg 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>A fresh Xcode install looks harmless.</p><p>But if you&#8217;ve been in the iOS game for a while, you know better&#8212;because nothing ages a developer faster than &#8220;<em>No signing certificate &#8216;iOS Distribution&#8217; found</em>&#8221; on a release day combined with &#8220;<em>where did all my hotkeys go??&#8221;</em>.</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://yvinsights.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">YV Insights &#129489;&#8205;&#128187;&#128296; by yuryv.info is a reader-supported publication. To receive new posts and support my work, consider becoming a free or paid subscriber.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><p>I&#8217;ll spare you the history of <a href="https://en.wikipedia.org/wiki/Project_Builder">Project Builder</a>, and the fact that Xcode is a <a href="https://forums.macrumors.com/threads/why-is-xcode-still-so-rubbish.2478824/">creaky, decades-deep codebase</a>. The numbers back it up: you <em>have to</em> have a Mac and an Xcode toolchain as your primary IDE. Even though <a href="https://rentamac.io/ios-app-development-statistics/">95% of us are using Xcode as our main toolchain</a>, the day you augment it with <a href="https://code.visualstudio.com/download">VS Code</a> or <a href="https://cursor.com">Cursor</a> is the day you realize you merely tolerated the default IDE Apple ships the mandatory stuff with.</p><p>The bottom line is: Xcode is just not pleasant to work with, and it never quite has been.</p><p>So this is the part where every micro-adjustment will make your life slightly better every time&#8212;and it compounds <em>fast</em> if you&#8217;re working on a moderately serious app or using a modern agent-assisted flow.</p><h4>The Tough Part</h4><p>If the Agentic AI hype wave taught you one thing, it&#8217;s that nobody can reliably predict what ships next month, let alone next decade.</p><p>This goes double for Xcode and Mobile development in general. There&#8217;s a real chance that tomorrow will bring web-based applets &#224; la <a href="https://developer.apple.com/documentation/appclip">App Clips</a> or <a href="https://www.macrumors.com/2026/05/31/apple-glasses-late-2027-report/">Apple Glasses</a> that compete with <a href="https://www.meta.com/ai-glasses/ray-ban-meta/">Meta&#8217;s Ray-Bans</a>. Apple keeps quietly prototyping.</p><p>So I&#8217;ve written this list to be evergreen to the highest extent possible. If you&#8217;re reading this 10 years from now, unless Apple retires Xcode and does a full bottom-up rewrite, very few things here will be outdated. And judging by how the industry treats rewrites, where the canonical advice is literally <a href="https://www.joelonsoftware.com/2000/04/06/things-you-should-never-do-part-i/">&#8220;never rewrite from scratch&#8221;</a>, plus Xcode&#8217;s own NeXT-era lineage, I would not hold my breath.</p><p>Light spoiler: Number 4 has been a game changer for me since 2019, and #5 has existed for over a decade now. Never went stale, never got retired by Claude Code, never went the way of <a href="https://medium.com/rocknnull/xcode-8-plugins-alcatraz-the-end-of-an-era-ea6e63617d14">Xcode Plugins</a>.</p><p>Let&#8217;s dive in.</p><h4>1. Install Xcodes to manage Xcode versions</h4><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!Agtn!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F240c4c50-0a10-47dc-94f7-d99297c37fe3_2262x1520.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!Agtn!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F240c4c50-0a10-47dc-94f7-d99297c37fe3_2262x1520.png 424w, https://substackcdn.com/image/fetch/$s_!Agtn!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F240c4c50-0a10-47dc-94f7-d99297c37fe3_2262x1520.png 848w, https://substackcdn.com/image/fetch/$s_!Agtn!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F240c4c50-0a10-47dc-94f7-d99297c37fe3_2262x1520.png 1272w, https://substackcdn.com/image/fetch/$s_!Agtn!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F240c4c50-0a10-47dc-94f7-d99297c37fe3_2262x1520.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!Agtn!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F240c4c50-0a10-47dc-94f7-d99297c37fe3_2262x1520.png" width="525" height="352.6442307692308" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/240c4c50-0a10-47dc-94f7-d99297c37fe3_2262x1520.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:978,&quot;width&quot;:1456,&quot;resizeWidth&quot;:525,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;screenshot_light.png&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="screenshot_light.png" title="screenshot_light.png" srcset="https://substackcdn.com/image/fetch/$s_!Agtn!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F240c4c50-0a10-47dc-94f7-d99297c37fe3_2262x1520.png 424w, https://substackcdn.com/image/fetch/$s_!Agtn!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F240c4c50-0a10-47dc-94f7-d99297c37fe3_2262x1520.png 848w, https://substackcdn.com/image/fetch/$s_!Agtn!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F240c4c50-0a10-47dc-94f7-d99297c37fe3_2262x1520.png 1272w, https://substackcdn.com/image/fetch/$s_!Agtn!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F240c4c50-0a10-47dc-94f7-d99297c37fe3_2262x1520.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p style="text-align: center;"><em><sub>A screenshot of Xcodes (source: GitHub)</sub></em></p><p>If you miss using <a href="https://www.jetbrains.com/toolbox-app/">JetBrains Toolbox</a>&#8212;this one is for you.</p><p><a href="https://github.com/XcodesOrg/XcodesApp">Xcodes</a> exists for one specific pain point: installing and switching between multiple Xcode versions without manually juggling giant app bundles. The official <a href="https://formulae.brew.sh/formula/xcodes">Homebrew formula</a> gives you&#8212;and your favorite AI Agent&#8212;a command-line tool to install and switch between multiple versions of Xcode, while harnessing Apple&#8217;s own <code>xcode-select</code> tool&#8212;the latter only controls which already-installed developer directory is active for tools like <code>xcodebuild</code>, <code>xcrun</code>, and <code>cc</code>. It tells your system &#8220;<em>hey, </em>switch<em> between different Xcode installations that I have on my machine</em>&#8221;.</p><p>In a Beta season, if your next task is &#8220;ensure iOS Beta builds don&#8217;t break while you still need the latest stable version of iOS for maintenance work&#8221;, Apple&#8217;s answer is &#8220;use <a href="https://developer.apple.com/download/">https://developer.apple.com/download/</a>&#8221;.</p><p>When a &#8220;minor&#8221; <a href="https://github.com/actions/runner-images/issues/10104">Xcode upgrade breaks your CI pipeline</a>, Apple&#8217;s answer is &#8220;well, have you tried Xcode Cloud?&#8221;.</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://yvinsights.com/p/10-things-i-do-on-every-new-xcode/comments&quot;,&quot;text&quot;:&quot;Leave a comment&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://yvinsights.com/p/10-things-i-do-on-every-new-xcode/comments"><span>Leave a comment</span></a></p><p>Xcodes <em>is</em> that switch + downloader + version browser&#8212;all the way down to Xcode 1.0. (<em>Which you can&#8217;t run on a modern Apple Silicon machine. Sorry, no nostalgia Rabbit Hole this time.)</em></p><h4>2. Enable &#8220;Show whitespaces and newlines&#8221;</h4><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!9Rnz!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F70fa02cb-9096-44c9-ad70-7c878c25b9c9_850x386.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!9Rnz!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F70fa02cb-9096-44c9-ad70-7c878c25b9c9_850x386.png 424w, https://substackcdn.com/image/fetch/$s_!9Rnz!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F70fa02cb-9096-44c9-ad70-7c878c25b9c9_850x386.png 848w, https://substackcdn.com/image/fetch/$s_!9Rnz!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F70fa02cb-9096-44c9-ad70-7c878c25b9c9_850x386.png 1272w, https://substackcdn.com/image/fetch/$s_!9Rnz!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F70fa02cb-9096-44c9-ad70-7c878c25b9c9_850x386.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!9Rnz!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F70fa02cb-9096-44c9-ad70-7c878c25b9c9_850x386.png" width="560" height="254.30588235294118" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/70fa02cb-9096-44c9-ad70-7c878c25b9c9_850x386.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:386,&quot;width&quot;:850,&quot;resizeWidth&quot;:560,&quot;bytes&quot;:75810,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://yvinsights.substack.com/i/201161893?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F70fa02cb-9096-44c9-ad70-7c878c25b9c9_850x386.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!9Rnz!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F70fa02cb-9096-44c9-ad70-7c878c25b9c9_850x386.png 424w, https://substackcdn.com/image/fetch/$s_!9Rnz!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F70fa02cb-9096-44c9-ad70-7c878c25b9c9_850x386.png 848w, https://substackcdn.com/image/fetch/$s_!9Rnz!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F70fa02cb-9096-44c9-ad70-7c878c25b9c9_850x386.png 1272w, https://substackcdn.com/image/fetch/$s_!9Rnz!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F70fa02cb-9096-44c9-ad70-7c878c25b9c9_850x386.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p style="text-align: center;"><em>The Xcode editor with invisible characters enabled</em></p><p>You can&#8217;t fix what you can&#8217;t see. By default Xcode hides every space, tab, and newline&#8212;which is how you end up with a diff that&#8217;s 40 &#8220;changed&#8221; lines and 39 of them are nothingness that you didn&#8217;t even touch.</p><p>Turn it on under <em>Editor &gt; Invisibles</em> (recent Xcode also exposes it in <em>Settings &gt; Text Editing &gt; Display</em>). Spaces, tabs, and line endings become visible, so you catch a stray tab in a spaces file&#8212;or trailing junk&#8212;before it reaches the PR.</p><p>It looks noisy for a day. Then your brain filters the dots out and you never go back after noticing how tidy it makes your code look.</p><p>Pairs directly with the next one&#8230;</p><h4>3. Disable &#8220;Leave whitespaces-only lines intact&#8221;</h4><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!C1YE!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdfe792ba-9dd4-40ac-9079-2cc11b8b114e_976x514.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!C1YE!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdfe792ba-9dd4-40ac-9079-2cc11b8b114e_976x514.png 424w, https://substackcdn.com/image/fetch/$s_!C1YE!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdfe792ba-9dd4-40ac-9079-2cc11b8b114e_976x514.png 848w, https://substackcdn.com/image/fetch/$s_!C1YE!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdfe792ba-9dd4-40ac-9079-2cc11b8b114e_976x514.png 1272w, https://substackcdn.com/image/fetch/$s_!C1YE!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdfe792ba-9dd4-40ac-9079-2cc11b8b114e_976x514.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!C1YE!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdfe792ba-9dd4-40ac-9079-2cc11b8b114e_976x514.png" width="976" height="514" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/dfe792ba-9dd4-40ac-9079-2cc11b8b114e_976x514.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:514,&quot;width&quot;:976,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:58616,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://yvinsights.substack.com/i/201161893?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdfe792ba-9dd4-40ac-9079-2cc11b8b114e_976x514.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!C1YE!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdfe792ba-9dd4-40ac-9079-2cc11b8b114e_976x514.png 424w, https://substackcdn.com/image/fetch/$s_!C1YE!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdfe792ba-9dd4-40ac-9079-2cc11b8b114e_976x514.png 848w, https://substackcdn.com/image/fetch/$s_!C1YE!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdfe792ba-9dd4-40ac-9079-2cc11b8b114e_976x514.png 1272w, https://substackcdn.com/image/fetch/$s_!C1YE!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdfe792ba-9dd4-40ac-9079-2cc11b8b114e_976x514.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p style="text-align: center;"><em>A stray whitespace-only line has entered your git diff.</em></p><p>Your &#8220;empty&#8221; lines still carry four spaces of invisible cruft that light up every diff.</p><p>It looks untidy, chaotic, and outright sloppy.</p><p>Now that you can <em>see</em> the whitespace, stop shipping it.</p><p>In <em>Settings &gt; Text Editing &gt; Editing</em>, turn on <em>&#8220;Automatically trim trailing whitespace&#8221;</em> and&#8212;crucially&#8212;its sub-option <em>&#8220;Including whitespace-only lines&#8221;</em>.</p><p>Prefer to script your machine setup? Execute these in your Terminal: <code>defaults write com.apple.dt.Xcode DVTTextEditorTrimTrailingWhitespace -bool true</code> and <code>defaults write com.apple.dt.Xcode DVTTextEditorTrimWhitespaceOnlyLines -bool true</code>. One shell script to solve both.</p><p>One known gap: blank lines inside multiline comments still don&#8217;t get trimmed. </p><p>&#8230;but the next tool catches the rest.</p><h4>4. Install SwiftLint</h4><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!jPwG!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6db4093a-2321-429e-b397-51eaa10fa950_1100x450.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!jPwG!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6db4093a-2321-429e-b397-51eaa10fa950_1100x450.png 424w, https://substackcdn.com/image/fetch/$s_!jPwG!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6db4093a-2321-429e-b397-51eaa10fa950_1100x450.png 848w, https://substackcdn.com/image/fetch/$s_!jPwG!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6db4093a-2321-429e-b397-51eaa10fa950_1100x450.png 1272w, https://substackcdn.com/image/fetch/$s_!jPwG!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6db4093a-2321-429e-b397-51eaa10fa950_1100x450.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!jPwG!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6db4093a-2321-429e-b397-51eaa10fa950_1100x450.png" width="547" height="223.77272727272728" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/6db4093a-2321-429e-b397-51eaa10fa950_1100x450.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:450,&quot;width&quot;:1100,&quot;resizeWidth&quot;:547,&quot;bytes&quot;:264886,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://yvinsights.substack.com/i/201161893?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6db4093a-2321-429e-b397-51eaa10fa950_1100x450.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!jPwG!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6db4093a-2321-429e-b397-51eaa10fa950_1100x450.png 424w, https://substackcdn.com/image/fetch/$s_!jPwG!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6db4093a-2321-429e-b397-51eaa10fa950_1100x450.png 848w, https://substackcdn.com/image/fetch/$s_!jPwG!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6db4093a-2321-429e-b397-51eaa10fa950_1100x450.png 1272w, https://substackcdn.com/image/fetch/$s_!jPwG!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6db4093a-2321-429e-b397-51eaa10fa950_1100x450.png 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a></figure></div><p style="text-align: center;"><em>Watch your language!</em></p><p>The one tool on this list I&#8217;ve run on every project since 2019.</p><p><a href="https://github.com/realm/SwiftLint">SwiftLint</a> enforces Swift style and conventions so code review stops being an argument about brace placement and goes back to being about logic.</p><p><code>brew install swiftlint</code>, then add a <em>Run Script</em> build phase after <em>Compile Sources</em>. </p><p>That said, if you are using Homebrew, make sure you set <code>ENABLE_USER_SCRIPT_SANDBOXING</code> to <code>NO</code>, as its default <code>YES</code> value <a href="https://stackoverflow.com/questions/76412148/what-is-the-new-option-enable-user-script-sandboxing-in-xcode-15">will block custom script execution</a> since Xcode 15 (2023); <a href="https://askubuntu.com/questions/720678/what-does-export-path-somethingpath-mean">add</a> <code>/opt/homebrew/bin</code> to your <code>PATH</code> as well. </p><p>Drop a <code>.swiftlint.yml</code> at the repo root to pick your rules, and run <code>swiftlint --fix &amp;&amp; swiftlint</code> if you want auto-correct plus warnings on the rest.</p><p>It&#8217;s scriptable and works great with Codex and Claude&#8212;ask your agent to do the setup for you, then watch the runtime do style policing for both manually- and automatically-generated code. <em>(Hint: couple it with GitHub Actions, Xcode Cloud, or other CI of your choice&#8212;setup takes 2 minutes, zero API keys, and negligible compute time.)</em></p><div class="community-chat" data-attrs="{&quot;url&quot;:&quot;https://open.substack.com/pub/yvinsights/chat?utm_source=chat_embed&quot;,&quot;subdomain&quot;:&quot;yvinsights&quot;,&quot;pub&quot;:{&quot;id&quot;:8671474,&quot;name&quot;:&quot;YV Insights &#129489;&#8205;&#128187;&#128296; by yuryv.info&quot;,&quot;author_name&quot;:&quot;Yury Vashchylau | yuryv.info&quot;,&quot;author_photo_url&quot;:&quot;https://substackcdn.com/image/fetch/$s_!xFhc!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F15e735ef-67d4-490d-8895-ef7e89302fef_800x800.png&quot;}}" data-component-name="CommunityChatRenderPlaceholder"></div><p>Apple finally <a href="https://www.reddit.com/r/iOSProgramming/comments/1g1z9x4/i_just_saw_that_xcode_16_has_integrated_the_code/">bundled</a> <code>swift-format</code> into Xcode 16 (2024), which is nice&#8212;but SwiftLint had a six-year head start and a far deeper rule set.</p><h4>5. Use Xcode templates aggressively</h4><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!edok!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa920225b-b406-48cf-b45a-7f74574f76a2_664x570.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!edok!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa920225b-b406-48cf-b45a-7f74574f76a2_664x570.png 424w, https://substackcdn.com/image/fetch/$s_!edok!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa920225b-b406-48cf-b45a-7f74574f76a2_664x570.png 848w, https://substackcdn.com/image/fetch/$s_!edok!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa920225b-b406-48cf-b45a-7f74574f76a2_664x570.png 1272w, https://substackcdn.com/image/fetch/$s_!edok!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa920225b-b406-48cf-b45a-7f74574f76a2_664x570.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!edok!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa920225b-b406-48cf-b45a-7f74574f76a2_664x570.png" width="308" height="264.3975903614458" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/a920225b-b406-48cf-b45a-7f74574f76a2_664x570.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:570,&quot;width&quot;:664,&quot;resizeWidth&quot;:308,&quot;bytes&quot;:115304,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://yvinsights.substack.com/i/201161893?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa920225b-b406-48cf-b45a-7f74574f76a2_664x570.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!edok!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa920225b-b406-48cf-b45a-7f74574f76a2_664x570.png 424w, https://substackcdn.com/image/fetch/$s_!edok!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa920225b-b406-48cf-b45a-7f74574f76a2_664x570.png 848w, https://substackcdn.com/image/fetch/$s_!edok!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa920225b-b406-48cf-b45a-7f74574f76a2_664x570.png 1272w, https://substackcdn.com/image/fetch/$s_!edok!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa920225b-b406-48cf-b45a-7f74574f76a2_664x570.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p style="text-align: center;"><em>&#8220;This is the 200th time I&#8217;m creating an app with my preferred architecture. claude please fix&#8221;</em></p><p>The feature that&#8217;s been in Xcode for over a decade and almost nobody seemed to customize.</p><p>Every team has a &#8220;new screen&#8221; shape: a view, a view model, a TCA stack, a coordinator, a set of tests&#8212;all wired together. Rebuilding that by hand every time is how you introduce typos, half-missing boilerplate, and AI hallucinations.</p><p><a href="https://www.hackingwithswift.com/articles/158/how-to-create-a-custom-xcode-template-for-coordinators">It&#8217;s abstracted away from Xcode&#8217;s UI and has a hidden&#8212;almost undocumented&#8212;scripting language</a>. In fact, the only properly documented articles I found online are reverse engineered over years of trial-and-error&#8212;either from GitHub OSS projects, or published on <a href="https://itcraftapps.com/blog/xcode-templates-tutorial/">software agency blogs</a>. But in this day and age, if you can now harness it by asking Claude or Codex to save yourself hours of unpaid labor, what&#8217;s stopping you?</p><p>Custom file templates live in <code>~/Library/Developer/Xcode/Templates/File Templates/</code> (create it&#8212;it does not exist by default). Each one is a <code>.xctemplate</code> folder with a <code>TemplateInfo.plist</code> and a base file. Name the base file <code>___FILEBASENAME___.swift</code> and Xcode substitutes whatever name the developer types in the New File dialog. </p><p>Once your module template exists, &#8220;new feature&#8221; is a ten-second <em>File &gt; New</em>&#8212;instead of a ten-minute ritual you will inevitably get wrong. <a href="https://www.hanselman.com/blog/yak-shaving-defined-ill-get-that-done-as-soon-as-i-shave-this-yak">Focus that energy on building business logic instead</a>.</p><h4>6. Enable the build performance benchmarks</h4><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!v_9a!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3580063e-6b55-4ae3-a08b-00b7664aa443_762x528.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!v_9a!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3580063e-6b55-4ae3-a08b-00b7664aa443_762x528.png 424w, https://substackcdn.com/image/fetch/$s_!v_9a!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3580063e-6b55-4ae3-a08b-00b7664aa443_762x528.png 848w, https://substackcdn.com/image/fetch/$s_!v_9a!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3580063e-6b55-4ae3-a08b-00b7664aa443_762x528.png 1272w, https://substackcdn.com/image/fetch/$s_!v_9a!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3580063e-6b55-4ae3-a08b-00b7664aa443_762x528.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!v_9a!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3580063e-6b55-4ae3-a08b-00b7664aa443_762x528.png" width="316" height="218.96062992125985" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/3580063e-6b55-4ae3-a08b-00b7664aa443_762x528.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:528,&quot;width&quot;:762,&quot;resizeWidth&quot;:316,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;Understanding Xcode build time summary - Stack Overflow&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="Understanding Xcode build time summary - Stack Overflow" title="Understanding Xcode build time summary - Stack Overflow" srcset="https://substackcdn.com/image/fetch/$s_!v_9a!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3580063e-6b55-4ae3-a08b-00b7664aa443_762x528.png 424w, https://substackcdn.com/image/fetch/$s_!v_9a!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3580063e-6b55-4ae3-a08b-00b7664aa443_762x528.png 848w, https://substackcdn.com/image/fetch/$s_!v_9a!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3580063e-6b55-4ae3-a08b-00b7664aa443_762x528.png 1272w, https://substackcdn.com/image/fetch/$s_!v_9a!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3580063e-6b55-4ae3-a08b-00b7664aa443_762x528.png 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a></figure></div><p style="text-align: center;"><em>Here&#8217;s a retro throwback screenshot for you. iOS programming has changed a lot since &#8220;CompileXIB&#8221; was a common build step, but the point still stands.</em></p><p>You can&#8217;t optimize a build time you never measure. </p><p>Apple&#8217;s answer to slow builds is &#8220;buy another MacBook&#8221;. </p><p>That works&#8230; up to a point where you&#8217;re optimizing CI time, or just trying to build more and live life instead of waiting for <em>&#8220;Build Failed&#8221;</em>.</p><p>When you realize <a href="https://github.blog/engineering/infrastructure/experiment-the-hidden-costs-of-waiting-on-slow-build-times/">how much of a sinkhole some Xcode builds become</a>, you&#8217;ll be shocked. Talk about screen time!</p><p>First, surface the number of seconds it took you to build your Xcode project: <code>defaults write com.apple.dt.Xcode ShowBuildOperationDuration -bool YES</code>, then restart Xcode. The <a href="https://macos-defaults.com/xcode/showbuildoperationduration.html">actual build duration</a> now sits next to &#8220;Build Succeeded&#8221; in the toolbar, so every build tells you what it cost.</p><p>Second, find the <em>&#8220;The compiler is unable to type-check this expression&#8221;</em> culprits. </p><p>In <em>Build Settings &gt; Other Swift Flags</em>, add <code>-Xfrontend -warn-long-function-bodies=100 -Xfrontend -warn-long-expression-type-checking=100</code>. Xcode then <a href="https://www.onswiftwings.com/posts/build-time-optimization-part1/">warns on any function or expression</a> that takes over 100ms to type-check. </p><p>Which is almost always a sign of a SwiftUI body doing far too much, or a cursed line of chained operators, <a href="https://github.com/reactivex/rxswift">RxSwift</a>-style.</p><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!-Rfs!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7c1fd016-fe1d-47bb-a469-293981c39c0e_468x112.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!-Rfs!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7c1fd016-fe1d-47bb-a469-293981c39c0e_468x112.png 424w, https://substackcdn.com/image/fetch/$s_!-Rfs!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7c1fd016-fe1d-47bb-a469-293981c39c0e_468x112.png 848w, https://substackcdn.com/image/fetch/$s_!-Rfs!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7c1fd016-fe1d-47bb-a469-293981c39c0e_468x112.png 1272w, https://substackcdn.com/image/fetch/$s_!-Rfs!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7c1fd016-fe1d-47bb-a469-293981c39c0e_468x112.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!-Rfs!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7c1fd016-fe1d-47bb-a469-293981c39c0e_468x112.png" width="468" height="112" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/7c1fd016-fe1d-47bb-a469-293981c39c0e_468x112.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:112,&quot;width&quot;:468,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:48275,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://yvinsights.substack.com/i/201161893?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7c1fd016-fe1d-47bb-a469-293981c39c0e_468x112.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!-Rfs!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7c1fd016-fe1d-47bb-a469-293981c39c0e_468x112.png 424w, https://substackcdn.com/image/fetch/$s_!-Rfs!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7c1fd016-fe1d-47bb-a469-293981c39c0e_468x112.png 848w, https://substackcdn.com/image/fetch/$s_!-Rfs!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7c1fd016-fe1d-47bb-a469-293981c39c0e_468x112.png 1272w, https://substackcdn.com/image/fetch/$s_!-Rfs!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7c1fd016-fe1d-47bb-a469-293981c39c0e_468x112.png 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a></figure></div><p style="text-align: center;"><em>&#8220;how to scare an ios developer&#8221;</em></p><h4>7. Disable the crash reporter modals</h4><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!hs2y!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F32a109ec-0ec6-4673-9b3d-0df93bcace2b_800x610.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!hs2y!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F32a109ec-0ec6-4673-9b3d-0df93bcace2b_800x610.jpeg 424w, https://substackcdn.com/image/fetch/$s_!hs2y!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F32a109ec-0ec6-4673-9b3d-0df93bcace2b_800x610.jpeg 848w, https://substackcdn.com/image/fetch/$s_!hs2y!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F32a109ec-0ec6-4673-9b3d-0df93bcace2b_800x610.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!hs2y!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F32a109ec-0ec6-4673-9b3d-0df93bcace2b_800x610.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!hs2y!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F32a109ec-0ec6-4673-9b3d-0df93bcace2b_800x610.jpeg" width="492" height="375.15" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/32a109ec-0ec6-4673-9b3d-0df93bcace2b_800x610.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:610,&quot;width&quot;:800,&quot;resizeWidth&quot;:492,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;https://media.licdn.com/dms/image/v2/D4D22AQHOXT1ioIFCaA/feedshare-shrink_800/B4DZ5zRF3dJ8Ac-/0/1780050321102?e=1782345600&amp;v=beta&amp;t=yopMXpRdg40sOsdKrlWkS4ibzbSxDZRjQcJ9wTGGvz0&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="https://media.licdn.com/dms/image/v2/D4D22AQHOXT1ioIFCaA/feedshare-shrink_800/B4DZ5zRF3dJ8Ac-/0/1780050321102?e=1782345600&amp;v=beta&amp;t=yopMXpRdg40sOsdKrlWkS4ibzbSxDZRjQcJ9wTGGvz0" title="https://media.licdn.com/dms/image/v2/D4D22AQHOXT1ioIFCaA/feedshare-shrink_800/B4DZ5zRF3dJ8Ac-/0/1780050321102?e=1782345600&amp;v=beta&amp;t=yopMXpRdg40sOsdKrlWkS4ibzbSxDZRjQcJ9wTGGvz0" srcset="https://substackcdn.com/image/fetch/$s_!hs2y!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F32a109ec-0ec6-4673-9b3d-0df93bcace2b_800x610.jpeg 424w, https://substackcdn.com/image/fetch/$s_!hs2y!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F32a109ec-0ec6-4673-9b3d-0df93bcace2b_800x610.jpeg 848w, https://substackcdn.com/image/fetch/$s_!hs2y!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F32a109ec-0ec6-4673-9b3d-0df93bcace2b_800x610.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!hs2y!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F32a109ec-0ec6-4673-9b3d-0df93bcace2b_800x610.jpeg 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p style="text-align: center;"><em>&#8220;Xcode quit unexpectedly&#8221;</em></p><p>Nothing breaks flow like a modal you have to dismiss. </p><p>When you&#8217;re chasing a crash loop, macOS throws its &#8220;application quit unexpectedly&#8221; dialog every single time&#8212;stealing focus, stacking up, demanding a click before you can get back to work.</p><p>We will likely never achieve crash-free Xcode&#8230; or crash-free Apple apps, in general. But you can still cope with &#8220;quit unexpectedly&#8221; modals without having to retire from your work. <em>(Yep, no need to retrain as a plumber.)</em></p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://yvinsights.com/p/10-things-i-do-on-every-new-xcode?utm_source=substack&utm_medium=email&utm_content=share&action=share&quot;,&quot;text&quot;:&quot;Share&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://yvinsights.com/p/10-things-i-do-on-every-new-xcode?utm_source=substack&utm_medium=email&utm_content=share&action=share"><span>Share</span></a></p><p><code>defaults write com.apple.CrashReporter DialogType none</code> makes it <a href="https://osxdaily.com/2010/02/15/disable-the-crash-reporter-dialog-in-mac-os-x/">stop and write the report to a log instead</a>.</p><p>Put it back with <code>defaults write com.apple.CrashReporter DialogType crashreport</code> when you want the dialog again.</p><p>Or, swap the modal with a nonintrusive Notification Center message instead: <code>defaults write com.apple.CrashReporter UseUNC -bool YES</code></p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!nm_I!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F69b91a7b-8cc0-4337-bd95-6441ac7434de_800x800.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!nm_I!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F69b91a7b-8cc0-4337-bd95-6441ac7434de_800x800.jpeg 424w, https://substackcdn.com/image/fetch/$s_!nm_I!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F69b91a7b-8cc0-4337-bd95-6441ac7434de_800x800.jpeg 848w, https://substackcdn.com/image/fetch/$s_!nm_I!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F69b91a7b-8cc0-4337-bd95-6441ac7434de_800x800.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!nm_I!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F69b91a7b-8cc0-4337-bd95-6441ac7434de_800x800.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!nm_I!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F69b91a7b-8cc0-4337-bd95-6441ac7434de_800x800.jpeg" width="266" height="266" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/69b91a7b-8cc0-4337-bd95-6441ac7434de_800x800.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:800,&quot;width&quot;:800,&quot;resizeWidth&quot;:266,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;No alternative text description for this image&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="No alternative text description for this image" title="No alternative text description for this image" srcset="https://substackcdn.com/image/fetch/$s_!nm_I!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F69b91a7b-8cc0-4337-bd95-6441ac7434de_800x800.jpeg 424w, https://substackcdn.com/image/fetch/$s_!nm_I!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F69b91a7b-8cc0-4337-bd95-6441ac7434de_800x800.jpeg 848w, https://substackcdn.com/image/fetch/$s_!nm_I!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F69b91a7b-8cc0-4337-bd95-6441ac7434de_800x800.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!nm_I!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F69b91a7b-8cc0-4337-bd95-6441ac7434de_800x800.jpeg 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p style="text-align: center;"><em><a href="https://static.wikia.nocookie.net/dota2_gamepedia/images/b/bf/Vo_antimage_anti_level_03.mp3/revision/latest?cb=20200711080029">&#8220;&#8216;tis a blessing!&#8221;</a></em></p><p>Honest caveat: this is system-wide, not Xcode-only. You&#8217;re silencing the crash dialog for every app and giving up the instant &#8220;Report to Apple&#8221; prompt. For a dedicated dev machine it&#8217;s an easy yes; on a Mac you also use for normal work&#8212;think twice.</p><h4>8. Enable the spell checker</h4><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!J8_6!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4d711170-98ef-464a-b0b3-e2f67ba75bb1_1194x486.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!J8_6!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4d711170-98ef-464a-b0b3-e2f67ba75bb1_1194x486.png 424w, https://substackcdn.com/image/fetch/$s_!J8_6!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4d711170-98ef-464a-b0b3-e2f67ba75bb1_1194x486.png 848w, https://substackcdn.com/image/fetch/$s_!J8_6!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4d711170-98ef-464a-b0b3-e2f67ba75bb1_1194x486.png 1272w, https://substackcdn.com/image/fetch/$s_!J8_6!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4d711170-98ef-464a-b0b3-e2f67ba75bb1_1194x486.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!J8_6!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4d711170-98ef-464a-b0b3-e2f67ba75bb1_1194x486.png" width="517" height="210.43718592964825" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/4d711170-98ef-464a-b0b3-e2f67ba75bb1_1194x486.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:486,&quot;width&quot;:1194,&quot;resizeWidth&quot;:517,&quot;bytes&quot;:161993,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://yvinsights.substack.com/i/201161893?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4d711170-98ef-464a-b0b3-e2f67ba75bb1_1194x486.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!J8_6!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4d711170-98ef-464a-b0b3-e2f67ba75bb1_1194x486.png 424w, https://substackcdn.com/image/fetch/$s_!J8_6!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4d711170-98ef-464a-b0b3-e2f67ba75bb1_1194x486.png 848w, https://substackcdn.com/image/fetch/$s_!J8_6!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4d711170-98ef-464a-b0b3-e2f67ba75bb1_1194x486.png 1272w, https://substackcdn.com/image/fetch/$s_!J8_6!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4d711170-98ef-464a-b0b3-e2f67ba75bb1_1194x486.png 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a></figure></div><p style="text-align: center;"><em>Image credit: <a href="https://www.swiftwithvincent.com/blog/how-to-enable-spell-checking-in-xcode">Vincent Pradeilles</a></em></p><p>The compiler checks your syntax. Nothing checks your spelling. </p><p>Spelling bugs are the worst kind. Because they compile.</p><p>Turn on <em>Edit &gt; Format &gt; Spelling and Grammar &gt; Check Spelling While Typing</em>. macOS then underlines typos in your identifiers, comments, and string literals. That matters more than it sounds: a misspelled dictionary key, a typo&#8217;d analytics event name, or a public method called <code>intialize</code> builds perfectly and ships straight to production&#8212;where someone finds it 18 months later.</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://yvinsights.com/?utm_source=substack&utm_medium=email&utm_content=share&action=share&quot;,&quot;text&quot;:&quot;Share YV Insights &#129489;&#8205;&#128187;&#128296; by yuryv.info&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://yvinsights.com/?utm_source=substack&utm_medium=email&utm_content=share&action=share"><span>Share YV Insights &#129489;&#8205;&#128187;&#128296; by yuryv.info</span></a></p><p>It is free, it is built in, and it has been sitting in that menu the entire time.</p><h4>9. Anthropic and OpenAI integrations</h4><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!Q2aR!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3324fe2a-e9dc-44cc-bebe-ba4f7726156e_1896x1936.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!Q2aR!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3324fe2a-e9dc-44cc-bebe-ba4f7726156e_1896x1936.png 424w, https://substackcdn.com/image/fetch/$s_!Q2aR!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3324fe2a-e9dc-44cc-bebe-ba4f7726156e_1896x1936.png 848w, https://substackcdn.com/image/fetch/$s_!Q2aR!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3324fe2a-e9dc-44cc-bebe-ba4f7726156e_1896x1936.png 1272w, https://substackcdn.com/image/fetch/$s_!Q2aR!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3324fe2a-e9dc-44cc-bebe-ba4f7726156e_1896x1936.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!Q2aR!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3324fe2a-e9dc-44cc-bebe-ba4f7726156e_1896x1936.png" width="413" height="421.7932692307692" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/3324fe2a-e9dc-44cc-bebe-ba4f7726156e_1896x1936.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1487,&quot;width&quot;:1456,&quot;resizeWidth&quot;:413,&quot;bytes&quot;:738879,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://yvinsights.substack.com/i/201161893?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3324fe2a-e9dc-44cc-bebe-ba4f7726156e_1896x1936.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!Q2aR!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3324fe2a-e9dc-44cc-bebe-ba4f7726156e_1896x1936.png 424w, https://substackcdn.com/image/fetch/$s_!Q2aR!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3324fe2a-e9dc-44cc-bebe-ba4f7726156e_1896x1936.png 848w, https://substackcdn.com/image/fetch/$s_!Q2aR!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3324fe2a-e9dc-44cc-bebe-ba4f7726156e_1896x1936.png 1272w, https://substackcdn.com/image/fetch/$s_!Q2aR!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3324fe2a-e9dc-44cc-bebe-ba4f7726156e_1896x1936.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p style="text-align: center;"><em>Now you can ask Claude and Codex to &#8220;make no mistakes&#8221; without Cmd-tabbing.</em></p><p>The entry that did not exist two years ago.</p><p>Xcode 26 added Coding Intelligence with pluggable model providers&#8212;so the AI assistant is no longer a glorified autocomplete that&#8217;s somehow <a href="https://medium.com/@tttttkkkkk/copilot-vs-xcode-predictive-completion-should-you-switch-a322e098b9bc">worse than GitHub Copilot in its heyday</a>.</p><p>Open <em>Settings &gt; Intelligence</em>. ChatGPT is built in: click Get in the Codex row to use it with a ChatGPT account. For Claude, either sign in with your Anthropic account or choose <em>Add a Model Provider</em>, enter <a href="https://api.anthropic.com/">https://api.anthropic.com/</a> and an API key from <a href="http://console.anthropic.com">console.anthropic.com</a>. Apple wired in the <a href="https://simonbs.dev/posts/using-claude-with-coding-assistant-in-xcode-26/">full Claude Agent SDK</a>, so Claude runs as an autonomous agent inside the IDE&#8212;not just inline completion. </p><p>See <a href="https://developer.apple.com/documentation/Xcode/setting-up-coding-intelligence">Apple&#8217;s own setup docs</a> for the full Rabbit Hole.</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://yvinsights.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe now&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://yvinsights.com/subscribe?"><span>Subscribe now</span></a></p><p>For a company that spent years insisting on-device-or-nothing and a set of mid-2020s Apple Intelligence fiascos, shipping a settings panel whose entire job is to pipe your code to OpenAI and Anthropic is quite a welcome pivot.</p><h4>10. Use xcconfigs</h4><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!f4RK!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faed219fc-79c4-435f-b4be-145c5f5b5c22_520x118.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!f4RK!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faed219fc-79c4-435f-b4be-145c5f5b5c22_520x118.png 424w, https://substackcdn.com/image/fetch/$s_!f4RK!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faed219fc-79c4-435f-b4be-145c5f5b5c22_520x118.png 848w, https://substackcdn.com/image/fetch/$s_!f4RK!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faed219fc-79c4-435f-b4be-145c5f5b5c22_520x118.png 1272w, https://substackcdn.com/image/fetch/$s_!f4RK!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faed219fc-79c4-435f-b4be-145c5f5b5c22_520x118.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!f4RK!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faed219fc-79c4-435f-b4be-145c5f5b5c22_520x118.png" width="418" height="94.85384615384615" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/aed219fc-79c4-435f-b4be-145c5f5b5c22_520x118.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:118,&quot;width&quot;:520,&quot;resizeWidth&quot;:418,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;Working with FxPlug Application Bundles&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="Working with FxPlug Application Bundles" title="Working with FxPlug Application Bundles" srcset="https://substackcdn.com/image/fetch/$s_!f4RK!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faed219fc-79c4-435f-b4be-145c5f5b5c22_520x118.png 424w, https://substackcdn.com/image/fetch/$s_!f4RK!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faed219fc-79c4-435f-b4be-145c5f5b5c22_520x118.png 848w, https://substackcdn.com/image/fetch/$s_!f4RK!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faed219fc-79c4-435f-b4be-145c5f5b5c22_520x118.png 1272w, https://substackcdn.com/image/fetch/$s_!f4RK!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faed219fc-79c4-435f-b4be-145c5f5b5c22_520x118.png 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a></figure></div><p style="text-align: center;"><em>These little guys.</em></p><p>The <code>.xcodeproj</code> is where merge conflicts go to ruin your afternoon. Build settings live inside the project&#8217;s <code>pbxproj</code> by default&#8212;a format that is <a href="https://en.wikipedia.org/wiki/Property_list">technically XML-ish and practically unreadable, and merge-hostile</a> on top of that.</p><p><code>xcconfig</code><a href="https://nshipster.com/xcconfig/"> files</a> pull those settings out into plain text you can read, diff, and review like real code. One file per environment (Debug, Release, Staging), shared values in a base file&#8212;and your configuration stops being something you have to reverse-engineer deliberately. </p><p>Two rules: never add a <code>.xcconfig</code> to a target or to <em>Copy Bundle Resources</em> (that is, it <em>must not</em> end up in your <code>.ipa</code>), and migrate common settings one-by-one, since you can copy any setting&#8217;s resolved value straight from the Build Settings inspector.</p><p>This is the one that scales. On a solo toy app, you <em>maybe</em> won&#8217;t miss it. On a moderately serious app with three environments and a team of developers larger than one, a set of <code>.xcconfig</code>s becomes the difference between clean, flowing work&#8230; and a 600-line <code>pbxproj</code> merge conflict.</p><h3>Summary</h3><blockquote><p>&#8220;People ask if Siri is finally smart now. And I say: she&#8217;s renting a brain from Google. It&#8217;s gonna be great.&#8221;</p><p><em>&#8212; Craig Federighi (source: i made it up)</em></p></blockquote><p>As I&#8217;m writing this, WWDC26&#8212;and, with it, Xcode 27&#8212;are on the way.</p><p>Which means a fresh batch of new APIs piled on top of the old ones Apple still hasn&#8217;t finished burying. (<a href="https://en.wikipedia.org/wiki/Carbon_(API)">Carbon</a> took until macOS Catalina to fully die. Until you <code>grep</code> your system and find its leftovers still there. Go figure.)</p><p>In this first edition of <a href="http://yvinsights.com">YV Insights</a>, you&#8217;re getting a bite-sized version of how I work at <a href="http://yuryv.info">yuryv.info</a> and my Tech, Mobile, and Biz day-to-day. There&#8217;s a lot more coming, and this newsletter is where it lands first.</p><p>So subscribe now, and you&#8217;ll discover how Apple will actually utilize Apple Intelligence in its Google <a href="https://www.geeky-gadgets.com/apple-wwdc-2026-leaks-ios-27/">Gemini-powered</a> &#8220;comeback&#8221; move, and which parts of your future dev workflow are still <a href="https://en.wikipedia.org/wiki/Project_Builder">Project Builder</a> under the hood.</p><p>You&#8217;ll also get what&#8217;s genuinely new in Xcode 27, what breaks once <a href="https://www.macrumors.com/2025/06/10/apple-to-phase-out-rosetta-2">Rosetta 2 is out of the game</a>, and the, uh, <em>insights</em> your Project Manager is bothering you to dig for.</p><p>And one day, I&#8217;ll give one VIP Rabbit a free taco. So buy fast.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!ZOxb!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbcddfa28-2018-4c12-a1f6-a4dcbadc2e84_800x533.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!ZOxb!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbcddfa28-2018-4c12-a1f6-a4dcbadc2e84_800x533.jpeg 424w, https://substackcdn.com/image/fetch/$s_!ZOxb!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbcddfa28-2018-4c12-a1f6-a4dcbadc2e84_800x533.jpeg 848w, https://substackcdn.com/image/fetch/$s_!ZOxb!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbcddfa28-2018-4c12-a1f6-a4dcbadc2e84_800x533.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!ZOxb!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbcddfa28-2018-4c12-a1f6-a4dcbadc2e84_800x533.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!ZOxb!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbcddfa28-2018-4c12-a1f6-a4dcbadc2e84_800x533.jpeg" width="499" height="332.45875" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/bcddfa28-2018-4c12-a1f6-a4dcbadc2e84_800x533.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:533,&quot;width&quot;:800,&quot;resizeWidth&quot;:499,&quot;bytes&quot;:97762,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/jpeg&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://yvinsights.substack.com/i/201161893?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbcddfa28-2018-4c12-a1f6-a4dcbadc2e84_800x533.jpeg&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!ZOxb!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbcddfa28-2018-4c12-a1f6-a4dcbadc2e84_800x533.jpeg 424w, https://substackcdn.com/image/fetch/$s_!ZOxb!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbcddfa28-2018-4c12-a1f6-a4dcbadc2e84_800x533.jpeg 848w, https://substackcdn.com/image/fetch/$s_!ZOxb!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbcddfa28-2018-4c12-a1f6-a4dcbadc2e84_800x533.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!ZOxb!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbcddfa28-2018-4c12-a1f6-a4dcbadc2e84_800x533.jpeg 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>Welcome to the Rabbit Hole.</p><div><hr></div><h4>Links</h4><h3>Intro</h3><ul><li><p><a href="https://www.joelonsoftware.com/2000/04/06/things-you-should-never-do-part-i/">Things You Should Never Do (Joel Spolsky)</a></p></li><li><p><a href="https://forums.macrumors.com/threads/why-is-xcode-still-so-rubbish.2478824/">Why is Xcode still rubbish (MacRumors)</a></p></li><li><p><a href="https://rentamac.io/ios-app-development-statistics/">iOS dev statistics, 404 devs (RentAMac)</a></p></li><li><p><a href="https://code.visualstudio.com/download">VS Code</a></p></li><li><p><a href="https://cursor.com/">Cursor</a></p></li><li><p><a href="https://developer.apple.com/documentation/appclip">App Clips (Apple)</a></p></li><li><p><a href="https://www.macrumors.com/2026/05/31/apple-glasses-late-2027-report/">Apple Glasses, late 2027 (MacRumors)</a></p></li><li><p><a href="https://www.meta.com/ai-glasses/ray-ban-meta/">Ray-Ban Meta glasses</a></p></li><li><p><a href="https://medium.com/rocknnull/xcode-8-plugins-alcatraz-the-end-of-an-era-ea6e63617d14">The end of Xcode plugins / Alcatraz</a></p></li></ul><h3>1. Install Xcodes</h3><ul><li><p><a href="https://github.com/XcodesOrg/XcodesApp">Xcodes</a></p></li><li><p><a href="https://formulae.brew.sh/formula/xcodes">Homebrew formula</a></p></li><li><p><a href="https://www.jetbrains.com/toolbox-app/">JetBrains Toolbox</a></p></li><li><p><a href="https://developer.apple.com/download/">Apple Developer Downloads</a></p></li></ul><h3>4. Install SwiftLint</h3><ul><li><p><a href="https://github.com/realm/SwiftLint">SwiftLint</a></p></li><li><p><a href="https://stackoverflow.com/questions/76412148/what-is-the-new-option-enable-user-script-sandboxing-in-xcode-15">ENABLE_USER_SCRIPT_SANDBOXING explained (Stack Overflow)</a></p></li><li><p><a href="https://askubuntu.com/questions/720678/what-does-export-path-somethingpath-mean">What does export PATH mean (Ask Ubuntu)</a></p></li><li><p><a href="https://www.reddit.com/r/iOSProgramming/comments/1g1z9x4/i_just_saw_that_xcode_16_has_integrated_the_code/">swift-format in Xcode 16 (Reddit)</a></p></li></ul><h3>5. Use Xcode templates</h3><ul><li><p><a href="https://itcraftapps.com/blog/xcode-templates-tutorial/">Xcode templates tutorial (itCraft)</a></p></li><li><p><a href="https://www.hackingwithswift.com/articles/158/how-to-create-a-custom-xcode-template-for-coordinators">Custom template for coordinators (Hacking with Swift)</a></p></li><li><p><a href="https://www.hanselman.com/blog/yak-shaving-defined-ill-get-that-done-as-soon-as-i-shave-this-yak">Yak Shaving Defined (Scott Hanselman)</a></p></li></ul><h3>6. Build performance benchmarks</h3><ul><li><p><a href="https://macos-defaults.com/xcode/showbuildoperationduration.html">ShowBuildOperationDuration (macOS defaults)</a></p></li><li><p><a href="https://www.onswiftwings.com/posts/build-time-optimization-part1/">Build time optimization (On Swift Wings)</a></p></li><li><p><a href="https://github.blog/engineering/infrastructure/experiment-the-hidden-costs-of-waiting-on-slow-build-times/">The hidden costs of waiting on slow builds (GitHub)</a></p></li><li><p><a href="https://github.com/reactivex/rxswift">RxSwift</a></p></li></ul><h3>7. Crash reporter modals</h3><ul><li><p><a href="https://osxdaily.com/2010/02/15/disable-the-crash-reporter-dialog-in-mac-os-x/">Disable the crash reporter dialog (OS X Daily)</a></p></li></ul><h3>8. Spell checker</h3><ul><li><p><a href="https://www.swiftwithvincent.com/blog/how-to-enable-spell-checking-in-xcode">Enable spell checking in Xcode (Swift with Vincent)</a></p></li></ul><h3>9. Anthropic and OpenAI integrations</h3><ul><li><p><a href="https://developer.apple.com/documentation/Xcode/setting-up-coding-intelligence">Setting up coding intelligence (Apple)</a></p></li><li><p><a href="https://api.anthropic.com/">Anthropic API</a></p></li><li><p><a href="https://console.anthropic.com/">Anthropic Console (API keys)</a></p></li><li><p><a href="https://simonbs.dev/posts/using-claude-with-coding-assistant-in-xcode-26/">Claude in Xcode 26 (Simon B. Stovring)</a></p></li><li><p><a href="https://medium.com/@tttttkkkkk/copilot-vs-xcode-predictive-completion-should-you-switch-a322e098b9bc">Copilot vs Xcode predictive completion</a></p></li></ul><h3>10. Use xcconfigs</h3><ul><li><p><a href="https://nshipster.com/xcconfig/">Xcode build configuration files (NSHipster)</a></p></li><li><p><a href="https://en.wikipedia.org/wiki/Property_list">Property list / pbxproj format (Wikipedia)</a></p></li></ul><h3>Summary</h3><ul><li><p><a href="https://en.wikipedia.org/wiki/Carbon_(API)">Carbon API (Wikipedia)</a></p></li><li><p><a href="https://en.wikipedia.org/wiki/Project_Builder">Project Builder (Wikipedia)</a></p></li><li><p><a href="https://www.macrumors.com/2025/06/10/apple-to-phase-out-rosetta-2/">Apple to phase out Rosetta 2 (MacRumors)</a></p></li><li><p><a href="https://www.geeky-gadgets.com/apple-wwdc-2026-leaks-ios-27/">WWDC 2026 and Gemini-powered Siri leaks (Geeky Gadgets)</a></p></li></ul><h3>More from YV Insights</h3><ul><li><p><a href="https://yuryv.info/">yuryv.info</a></p></li><li><p><a href="https://yvinsights.com/">yvinsights.com</a></p></li><li><p><a href="https://yvinsights.substack.com/">Subscribe on Substack</a></p></li><li><p><a href="https://www.linkedin.com/newsletters/yv-insider-by-yuryv-info-7444467518737608704/">LinkedIn newsletter</a></p></li></ul><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://yvinsights.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">YV Insights &#129489;&#8205;&#128187;&#128296; by yuryv.info is a reader-supported publication. To receive new posts and support my work, consider becoming a free or paid subscriber.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div>]]></content:encoded></item><item><title><![CDATA[This is YV Podcast]]></title><description><![CDATA[Welcome to the rabbit hole.]]></description><link>https://yvinsights.com/p/this-is-yv-podcast-5b4</link><guid isPermaLink="false">https://yvinsights.com/p/this-is-yv-podcast-5b4</guid><dc:creator><![CDATA[Yury Vashchylau | yuryv.info]]></dc:creator><pubDate>Sun, 07 Jun 2026 00:00:00 GMT</pubDate><enclosure url="https://api.substack.com/feed/podcast/201268207/ed8b3feef86650f9abfbb050fc2b2dda.mp3" length="0" type="audio/mpeg"/><content:encoded><![CDATA[<p>Welcome to the rabbit hole. How apps, games, and money really work.</p>]]></content:encoded></item></channel></rss>