{"code":"var Component=(()=>{var p=Object.create;var t=Object.defineProperty;var h=Object.getOwnPropertyDescriptor;var m=Object.getOwnPropertyNames;var g=Object.getPrototypeOf,v=Object.prototype.hasOwnProperty;var b=(n,e)=>()=>(e||n((e={exports:{}}).exports,e),e.exports),f=(n,e)=>{for(var r in e)t(n,r,{get:e[r],enumerable:!0})},a=(n,e,r,s)=>{if(e&&typeof e==\"object\"||typeof e==\"function\")for(let l of m(e))!v.call(n,l)&&l!==r&&t(n,l,{get:()=>e[l],enumerable:!(s=h(e,l))||s.enumerable});return n};var q=(n,e,r)=>(r=n!=null?p(g(n)):{},a(e||!n||!n.__esModule?t(r,\"default\",{value:n,enumerable:!0}):r,n)),S=n=>a(t({},\"__esModule\",{value:!0}),n);var c=b((A,o)=>{o.exports=_jsx_runtime});var k={};f(k,{default:()=>u});var i=q(c());function d(n){let e={a:\"a\",blockquote:\"blockquote\",code:\"code\",em:\"em\",h2:\"h2\",h3:\"h3\",img:\"img\",li:\"li\",ol:\"ol\",p:\"p\",pre:\"pre\",span:\"span\",strong:\"strong\",table:\"table\",tbody:\"tbody\",td:\"td\",th:\"th\",thead:\"thead\",tr:\"tr\",ul:\"ul\",...n.components};return(0,i.jsxs)(i.Fragment,{children:[(0,i.jsx)(e.p,{children:\"Ouvrez un projet d'application Mac qui compile sans probl\\xE8me depuis des ann\\xE9es, passez \\xE0 la b\\xEAta de Xcode 27, lancez le build, et tout s'arr\\xEAte net :\"}),`\n`,(0,i.jsx)(i.Fragment,{children:(0,i.jsx)(e.pre,{className:\"shiki shiki-themes github-light github-dark\",style:{\"--shiki-light\":\"#24292e\",\"--shiki-dark\":\"#e1e4e8\",\"--shiki-light-bg\":\"#fff\",\"--shiki-dark-bg\":\"#24292e\"},tabIndex:\"0\",icon:'<svg viewBox=\"0 0 24 24\"><path d=\"M 6,1 C 4.354992,1 3,2.354992 3,4 v 16 c 0,1.645008 1.354992,3 3,3 h 12 c 1.645008,0 3,-1.354992 3,-3 V 8 7 A 1.0001,1.0001 0 0 0 20.707031,6.2929687 l -5,-5 A 1.0001,1.0001 0 0 0 15,1 h -1 z m 0,2 h 7 v 3 c 0,1.645008 1.354992,3 3,3 h 3 v 11 c 0,0.564129 -0.435871,1 -1,1 H 6 C 5.4358712,21 5,20.564129 5,20 V 4 C 5,3.4358712 5.4358712,3 6,3 Z M 15,3.4140625 18.585937,7 H 16 C 15.435871,7 15,6.5641288 15,6 Z\" fill=\"currentColor\" /></svg>',children:(0,i.jsx)(e.code,{children:(0,i.jsx)(e.span,{className:\"line\",children:(0,i.jsx)(e.span,{children:\"The macOS deployment target 'MACOSX_DEPLOYMENT_TARGET' is set to 10.13, but the range of supported deployment target versions is 12.0 to 27.0.99.\"})})})})}),`\n`,(0,i.jsx)(e.p,{children:\"Dans Xcode 26, cette phrase n'\\xE9tait qu'un avertissement jaune que l'on pouvait ignorer en faisant d\\xE9filer l'\\xE9cran. Dans Xcode 27, c'est une erreur rouge et le build ne va pas plus loin. C'est tout le changement, et il est \\xE0 la fois plus petit et plus important qu'il n'y para\\xEEt : plus petit, parce que la documentation d'Apple annonce depuis des ann\\xE9es un plancher de macOS 11 et iOS 15 ; plus important, parce que Xcode ne l'a jamais r\\xE9ellement impos\\xE9, et qu'un grand nombre d'applications publi\\xE9es en d\\xE9pendent discr\\xE8tement.\"}),`\n`,(0,i.jsx)(e.p,{children:\"Cet article d\\xE9taille ce que Xcode 27 impose r\\xE9ellement (d'apr\\xE8s les tableaux et les notes de version d'Apple elles-m\\xEAmes), ce que Xcode 26 autorisait r\\xE9ellement (d'apr\\xE8s le SDK pr\\xE9sent sur notre propre disque), qui est concern\\xE9, le r\\xE9glage non document\\xE9 qui transforme l'erreur en simple avertissement, et pourquoi l'\\xE9ch\\xE9ance qui compte vraiment n'est pas la sortie de Xcode 27, mais l'exigence de SDK de l'App Store au printemps prochain.\"}),`\n`,(0,i.jsx)(e.p,{children:(0,i.jsx)(e.img,{alt:\"Erreur de build li\\xE9e \\xE0 la cible de d\\xE9ploiement dans Xcode 27\",src:\"/images/blog/xcode-27-minimum-deployment-target-macos-12-ios-15-build-error-fix-2026/hero.webp\",width:\"1024\",height:\"541\"})}),`\n`,(0,i.jsx)(e.h2,{id:\"points-cl\\xE9s-\\xE0-retenir\",children:\"Points cl\\xE9s \\xE0 retenir\"}),`\n`,(0,i.jsxs)(e.ul,{children:[`\n`,(0,i.jsxs)(e.li,{children:[(0,i.jsx)(e.strong,{children:\"Les cibles de d\\xE9ploiement prises en charge par Xcode 27 sont macOS 12\\u201327, iOS/iPadOS/tvOS 15\\u201327, watchOS 9\\u201327, visionOS 1\\u201327, DriverKit 21\\u201327\"}),\", selon la page d'assistance Xcode d'Apple pour la b\\xEAta 6. En dessous de ces valeurs, le build \\xE9choue.\"]}),`\n`,(0,i.jsxs)(e.li,{children:[(0,i.jsx)(e.strong,{children:\"Xcode 26 documentait macOS 11 comme plancher, mais acceptait en r\\xE9alit\\xE9 10.13.\"}),\" Nous avons v\\xE9rifi\\xE9 le fichier de r\\xE9glages du SDK macOS 26.0 : 34 cibles de d\\xE9ploiement valides, \\xE0 partir de 10.13. Xcode 27 comble cet \\xE9cart en faisant de la plage document\\xE9e la plage r\\xE9ellement impos\\xE9e.\"]}),`\n`,(0,i.jsxs)(e.li,{children:[(0,i.jsx)(e.strong,{children:\"Le plancher macOS a \\xE9volu\\xE9 pendant la b\\xEAta.\"}),\" En juin, la note d'Apple \\xE9voquait un back-deployment Universal \\xAB up to and including macOS 27 \\xBB ; les d\\xE9veloppeurs y ont lu Big Sur. La note de la b\\xEAta 6 indique \\xAB macOS 12 and later \\xBB. Pr\\xE9voyez Monterey, pas Big Sur.\"]}),`\n`,(0,i.jsxs)(e.li,{children:[(0,i.jsx)(e.strong,{children:\"Il existe une \\xE9chappatoire non document\\xE9e\"}),\", \",(0,i.jsx)(e.code,{children:\"__DIAGNOSE_INVALID_DEPLOYMENT_TARGET_AS_ERROR = NO\"}),\", qui transformerait \\xE0 nouveau l'erreur en avertissement selon les t\\xE9moignages. Elle n'est pas prise en charge, peut dispara\\xEEtre \\xE0 tout moment, et ne change rien au fait qu'Apple ne teste pas ces cibles.\"]}),`\n`,(0,i.jsxs)(e.li,{children:[(0,i.jsx)(e.strong,{children:\"L'\\xE9ch\\xE9ance qui compte vraiment est l'exigence de SDK de l'App Store.\"}),\" Le SDK de Xcode 26 est devenu obligatoire pour les soumissions le 28 avril 2026. Si Apple r\\xE9p\\xE8te ce sch\\xE9ma, le SDK de Xcode 27 deviendra obligatoire vers avril 2027, et c'est \\xE0 ce moment-l\\xE0 que la prise en charge de macOS 11 ou d'iOS 14 dans une application App Store cessera d'\\xEAtre possible par la voie normale.\"]}),`\n`]}),`\n`,(0,i.jsx)(e.h2,{id:\"les-chiffres-officiellement\",children:\"Les chiffres, officiellement\"}),`\n`,(0,i.jsxs)(e.p,{children:[\"La \",(0,i.jsx)(e.a,{href:\"https://developer.apple.com/support/xcode/\",children:\"page d'assistance Xcode\"}),\" d'Apple publie un tableau indiquant ce que chaque version de Xcode peut cibler. Voici la comparaison qui compte :\"]}),`\n`,(0,i.jsxs)(e.table,{children:[(0,i.jsx)(e.thead,{children:(0,i.jsxs)(e.tr,{children:[(0,i.jsx)(e.th,{children:\"Plateforme\"}),(0,i.jsx)(e.th,{children:\"Xcode 26.6\"}),(0,i.jsx)(e.th,{children:\"Xcode 27 b\\xEAta 6\"})]})}),(0,i.jsxs)(e.tbody,{children:[(0,i.jsxs)(e.tr,{children:[(0,i.jsx)(e.td,{children:\"macOS\"}),(0,i.jsx)(e.td,{children:\"11 \\u2013 26.5\"}),(0,i.jsx)(e.td,{children:(0,i.jsx)(e.strong,{children:\"12 \\u2013 27\"})})]}),(0,i.jsxs)(e.tr,{children:[(0,i.jsx)(e.td,{children:\"iOS / iPadOS\"}),(0,i.jsx)(e.td,{children:\"15 \\u2013 26.5\"}),(0,i.jsx)(e.td,{children:\"15 \\u2013 27\"})]}),(0,i.jsxs)(e.tr,{children:[(0,i.jsx)(e.td,{children:\"tvOS\"}),(0,i.jsx)(e.td,{children:\"15 \\u2013 26.5\"}),(0,i.jsx)(e.td,{children:\"15 \\u2013 27\"})]}),(0,i.jsxs)(e.tr,{children:[(0,i.jsx)(e.td,{children:\"watchOS\"}),(0,i.jsx)(e.td,{children:\"8 \\u2013 26.5\"}),(0,i.jsx)(e.td,{children:(0,i.jsx)(e.strong,{children:\"9 \\u2013 27\"})})]}),(0,i.jsxs)(e.tr,{children:[(0,i.jsx)(e.td,{children:\"visionOS\"}),(0,i.jsx)(e.td,{children:\"1 \\u2013 26.5\"}),(0,i.jsx)(e.td,{children:\"1 \\u2013 27\"})]}),(0,i.jsxs)(e.tr,{children:[(0,i.jsx)(e.td,{children:\"DriverKit\"}),(0,i.jsx)(e.td,{children:\"20 \\u2013 25.5\"}),(0,i.jsx)(e.td,{children:(0,i.jsx)(e.strong,{children:\"21 \\u2013 27\"})})]})]})]}),`\n`,(0,i.jsx)(e.p,{children:\"Lisez-le attentivement, car le titre qui claironnerait \\xAB Xcode 27 rel\\xE8ve le minimum \\xBB n'est vrai qu'\\xE0 moiti\\xE9. Pour iOS, le plancher document\\xE9 est rest\\xE9 \\xE0 15 pendant toute la dur\\xE9e de Xcode 26 et reste \\xE0 15 dans Xcode 27. Pour macOS, il progresse d'une version, de 11 \\xE0 12. Pour watchOS, de 8 \\xE0 9. Sur le papier, c'est un resserrement modeste.\"}),`\n`,(0,i.jsx)(e.p,{children:\"Ce qui ne figure pas sur le papier, c'est que les chiffres de Xcode 26 n'ont jamais \\xE9t\\xE9 r\\xE9ellement appliqu\\xE9s.\"}),`\n`,(0,i.jsx)(e.h2,{id:\"ce-que-xcode-26-autorisait-r\\xE9ellement\",children:\"Ce que Xcode 26 autorisait r\\xE9ellement\"}),`\n`,(0,i.jsx)(e.p,{children:\"Chaque SDK int\\xE9gr\\xE9 \\xE0 Xcode embarque un fichier de r\\xE9glages qui d\\xE9clare les cibles de d\\xE9ploiement qu'il consid\\xE8re comme valides. Sur notre machine, avec Xcode 26.0.1 (17A400) install\\xE9, ce fichier se trouve \\xE0 :\"}),`\n`,(0,i.jsx)(i.Fragment,{children:(0,i.jsx)(e.pre,{className:\"shiki shiki-themes github-light github-dark\",style:{\"--shiki-light\":\"#24292e\",\"--shiki-dark\":\"#e1e4e8\",\"--shiki-light-bg\":\"#fff\",\"--shiki-dark-bg\":\"#24292e\"},tabIndex:\"0\",icon:'<svg viewBox=\"0 0 24 24\"><path d=\"M 6,1 C 4.354992,1 3,2.354992 3,4 v 16 c 0,1.645008 1.354992,3 3,3 h 12 c 1.645008,0 3,-1.354992 3,-3 V 8 7 A 1.0001,1.0001 0 0 0 20.707031,6.2929687 l -5,-5 A 1.0001,1.0001 0 0 0 15,1 h -1 z m 0,2 h 7 v 3 c 0,1.645008 1.354992,3 3,3 h 3 v 11 c 0,0.564129 -0.435871,1 -1,1 H 6 C 5.4358712,21 5,20.564129 5,20 V 4 C 5,3.4358712 5.4358712,3 6,3 Z M 15,3.4140625 18.585937,7 H 16 C 15.435871,7 15,6.5641288 15,6 Z\" fill=\"currentColor\" /></svg>',children:(0,i.jsx)(e.code,{children:(0,i.jsx)(e.span,{className:\"line\",children:(0,i.jsx)(e.span,{children:\"/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/SDKSettings.json\"})})})})}),`\n`,(0,i.jsx)(e.p,{children:\"Une seule commande suffit pour le lire :\"}),`\n`,(0,i.jsx)(i.Fragment,{children:(0,i.jsx)(e.pre,{className:\"shiki shiki-themes github-light github-dark\",style:{\"--shiki-light\":\"#24292e\",\"--shiki-dark\":\"#e1e4e8\",\"--shiki-light-bg\":\"#fff\",\"--shiki-dark-bg\":\"#24292e\"},tabIndex:\"0\",icon:'<svg viewBox=\"0 0 24 24\"><path d=\"m 4,4 a 1,1 0 0 0 -0.7070312,0.2929687 1,1 0 0 0 0,1.4140625 L 8.5859375,11 3.2929688,16.292969 a 1,1 0 0 0 0,1.414062 1,1 0 0 0 1.4140624,0 l 5.9999998,-6 a 1.0001,1.0001 0 0 0 0,-1.414062 L 4.7070312,4.2929687 A 1,1 0 0 0 4,4 Z m 8,14 a 1,1 0 0 0 -1,1 1,1 0 0 0 1,1 h 8 a 1,1 0 0 0 1,-1 1,1 0 0 0 -1,-1 z\" fill=\"currentColor\" /></svg>',children:(0,i.jsxs)(e.code,{children:[(0,i.jsxs)(e.span,{className:\"line\",children:[(0,i.jsx)(e.span,{style:{\"--shiki-light\":\"#6F42C1\",\"--shiki-dark\":\"#B392F0\"},children:\"python3\"}),(0,i.jsx)(e.span,{style:{\"--shiki-light\":\"#005CC5\",\"--shiki-dark\":\"#79B8FF\"},children:\" -c\"}),(0,i.jsx)(e.span,{style:{\"--shiki-light\":\"#032F62\",\"--shiki-dark\":\"#9ECBFF\"},children:\" '\"})]}),`\n`,(0,i.jsx)(e.span,{className:\"line\",children:(0,i.jsx)(e.span,{style:{\"--shiki-light\":\"#032F62\",\"--shiki-dark\":\"#9ECBFF\"},children:\"import json\"})}),`\n`,(0,i.jsx)(e.span,{className:\"line\",children:(0,i.jsx)(e.span,{style:{\"--shiki-light\":\"#032F62\",\"--shiki-dark\":\"#9ECBFF\"},children:'d = json.load(open(\"/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/SDKSettings.json\"))'})}),`\n`,(0,i.jsx)(e.span,{className:\"line\",children:(0,i.jsx)(e.span,{style:{\"--shiki-light\":\"#032F62\",\"--shiki-dark\":\"#9ECBFF\"},children:'t = d[\"SupportedTargets\"][\"macosx\"]'})}),`\n`,(0,i.jsx)(e.span,{className:\"line\",children:(0,i.jsx)(e.span,{style:{\"--shiki-light\":\"#032F62\",\"--shiki-dark\":\"#9ECBFF\"},children:'print(t[\"MinimumDeploymentTarget\"], \"->\", t[\"MaximumDeploymentTarget\"])'})}),`\n`,(0,i.jsx)(e.span,{className:\"line\",children:(0,i.jsx)(e.span,{style:{\"--shiki-light\":\"#032F62\",\"--shiki-dark\":\"#9ECBFF\"},children:'print(len(t[\"ValidDeploymentTargets\"]), \"valid:\", t[\"ValidDeploymentTargets\"][:6], \"...\")'})}),`\n`,(0,i.jsx)(e.span,{className:\"line\",children:(0,i.jsx)(e.span,{style:{\"--shiki-light\":\"#032F62\",\"--shiki-dark\":\"#9ECBFF\"},children:\"'\"})})]})})}),`\n`,(0,i.jsx)(e.p,{children:\"R\\xE9sultat sur Xcode 26.0.1 :\"}),`\n`,(0,i.jsx)(i.Fragment,{children:(0,i.jsx)(e.pre,{className:\"shiki shiki-themes github-light github-dark\",style:{\"--shiki-light\":\"#24292e\",\"--shiki-dark\":\"#e1e4e8\",\"--shiki-light-bg\":\"#fff\",\"--shiki-dark-bg\":\"#24292e\"},tabIndex:\"0\",icon:'<svg viewBox=\"0 0 24 24\"><path d=\"M 6,1 C 4.354992,1 3,2.354992 3,4 v 16 c 0,1.645008 1.354992,3 3,3 h 12 c 1.645008,0 3,-1.354992 3,-3 V 8 7 A 1.0001,1.0001 0 0 0 20.707031,6.2929687 l -5,-5 A 1.0001,1.0001 0 0 0 15,1 h -1 z m 0,2 h 7 v 3 c 0,1.645008 1.354992,3 3,3 h 3 v 11 c 0,0.564129 -0.435871,1 -1,1 H 6 C 5.4358712,21 5,20.564129 5,20 V 4 C 5,3.4358712 5.4358712,3 6,3 Z M 15,3.4140625 18.585937,7 H 16 C 15.435871,7 15,6.5641288 15,6 Z\" fill=\"currentColor\" /></svg>',children:(0,i.jsxs)(e.code,{children:[(0,i.jsx)(e.span,{className:\"line\",children:(0,i.jsx)(e.span,{children:\"10.13 -> 26.0.99\"})}),`\n`,(0,i.jsx)(e.span,{className:\"line\",children:(0,i.jsx)(e.span,{children:\"34 valid: ['10.13', '10.14', '10.15', '11.0', '11.1', '11.2'] ...\"})})]})})}),`\n`,(0,i.jsxs)(e.p,{children:[\"Ainsi, alors que le tableau d'Apple indiquait \\xAB macOS 11 \\xBB, le SDK indiquait \\xAB 10.13 \\xBB, et Xcode vous laissait saisir 10.13 dans le champ de la cible de d\\xE9ploiement, vous avertissait, puis compilait quand m\\xEAme. Michael Tsai \",(0,i.jsx)(e.a,{href:\"https://mjtsai.com/blog/2026/09/01/ending-the-golden-era-for-backward-compatible-apps/\",children:\"d\\xE9crit cette pratique\"}),\" sans d\\xE9tour : les d\\xE9veloppeurs \\xAB have been able to enter older targets manually \\xBB, et un grand nombre de logiciels Mac ind\\xE9pendants ont fait exactement cela pour garder leurs utilisateurs de High Sierra, Mojave et Catalina sur la version actuelle.\"]}),`\n`,(0,i.jsxs)(e.p,{children:[\"Si vous avez la b\\xEAta de Xcode 27 install\\xE9e, ex\\xE9cutez la m\\xEAme commande sur son SDK (en rempla\\xE7ant par \",(0,i.jsx)(e.code,{children:\"Xcode-beta.app\"}),\") et vous verrez le nouveau plancher. Nous n'avons pas la b\\xEAta sur cette machine, nous nous appuyons donc sur le tableau d'Apple et sur les t\\xE9moignages des d\\xE9veloppeurs pour le chiffre de 12.0, plut\\xF4t que de le lire nous-m\\xEAmes dans le fichier.\"]}),`\n`,(0,i.jsx)(e.h2,{id:\"de-lavertissement-\\xE0-lerreur\",children:\"De l'avertissement \\xE0 l'erreur\"}),`\n`,(0,i.jsx)(e.p,{children:\"Le diagnostic lui-m\\xEAme n'est pas nouveau. Le syst\\xE8me de build d'Apple \\xE9met depuis des ann\\xE9es le message \\xAB the range of supported deployment target versions is X to Y \\xBB, sous forme d'avertissement. Ce qui change avec Xcode 27, c'est sa gravit\\xE9.\"}),`\n`,(0,i.jsxs)(e.p,{children:[(0,i.jsx)(e.a,{href:\"https://bleepingswift.com/blog/deployment-target-supported-range-xcode-27\",children:\"Un article sur bleepingswift.com\"}),\" cite la forme iOS de ce message telle qu'elle appara\\xEEt dans Xcode 27 :\"]}),`\n`,(0,i.jsxs)(e.blockquote,{children:[`\n`,(0,i.jsx)(e.p,{children:\"The iOS Simulator deployment target 'IPHONEOS_DEPLOYMENT_TARGET' is set to xx.x, but the range of supported deployment targets versions is 15.0 to 27.0.x\"}),`\n`]}),`\n`,(0,i.jsxs)(e.p,{children:[\"La forme macOS est le m\\xEAme message avec \",(0,i.jsx)(e.code,{children:\"MACOSX_DEPLOYMENT_TARGET\"}),\" et une plage de 12.0 \\xE0 27.0.99. Il se d\\xE9clenche par cible, donc une application dot\\xE9e d'une extension, d'un widget et d'un bundle de tests h\\xE9ritant tous d'une ancienne cible l'affichera quatre fois, et corriger uniquement l'application principale ne suffit pas \\xE0 d\\xE9bloquer le build.\"]}),`\n`,(0,i.jsxs)(e.p,{children:[\"Les mainteneurs de Vienna RSS \",(0,i.jsx)(e.a,{href:\"https://github.com/ViennaRSS/vienna-rss/issues/2140\",children:\"sont tomb\\xE9s dessus le 10 juin\"}),\", deux jours apr\\xE8s la sortie de la b\\xEAta : leur cible \\xE9tait 10.13, cela compilait sans avertissement ni erreur sous Xcode 26, et sous Xcode 27 \\xAB it's a hard requirement (build error) \\xBB. Leur inqui\\xE9tude suivante est celle que partage tout d\\xE9veloppeur Mac dans cette situation : Xcode 26 ne devrait pas \\xEAtre pris en charge sous macOS 27, si bien que la solution de repli \\xAB keep the old Xcode \\xBB a une date de p\\xE9remption.\"]}),`\n`,(0,i.jsx)(e.h2,{id:\"ce-qui-a-chang\\xE9-entre-juin-et-la-b\\xEAta-6\",children:\"Ce qui a chang\\xE9 entre juin et la b\\xEAta 6\"}),`\n`,(0,i.jsx)(e.p,{children:\"Le plancher macOS n'est pas rest\\xE9 stable pendant toute la p\\xE9riode de b\\xEAta, et il vaut la peine de savoir quelle version de l'histoire vous avez lue.\"}),`\n`,(0,i.jsxs)(e.p,{children:[\"En juin, la note de version concernant Intel disait, selon la citation reprise sur les \",(0,i.jsx)(e.a,{href:\"https://developer.apple.com/forums/thread/829619\",children:\"forums Apple Developer\"}),\" :\"]}),`\n`,(0,i.jsxs)(e.blockquote,{children:[`\n`,(0,i.jsx)(e.p,{children:\"Xcode 27 will only install and run on Apple silicon Macs. The macOS SDK is still Universal for back deployment up to and including macOS 27. Intel development is still possible with macOS versions that support Rosetta like macOS 27. (162138432)\"}),`\n`]}),`\n`,(0,i.jsxs)(e.p,{children:[\"Cela ne dit rien sur un minimum. Le \",(0,i.jsx)(e.a,{href:\"https://mjtsai.com/blog/2026/06/09/xcode-27-announced/\",children:\"r\\xE9sum\\xE9 du premier jour\"}),\" de Tsai interpr\\xE9tait la situation ainsi : \\xAB the minimum you can target is now Big Sur (or Monterey for Apple Silicon Macs) \\xBB, et le ticket de ViennaRSS parlait carr\\xE9ment de macOS 12. Les \",(0,i.jsx)(e.a,{href:\"https://developer.apple.com/documentation/xcode-release-notes/xcode-27-release-notes\",children:\"notes de version actuelles de la b\\xEAta 6\"}),\" tranchent la question :\"]}),`\n`,(0,i.jsxs)(e.blockquote,{children:[`\n`,(0,i.jsx)(e.p,{children:\"Xcode 27 will only install and run on Apple silicon Macs. The macOS 27 SDK supports back deploying Universal (Intel and Apple Silicon) apps to macOS 12 and later. Intel development is still possible with macOS versions that support Rosetta like macOS 27. (162138432)\"}),`\n`]}),`\n`,(0,i.jsx)(e.p,{children:\"M\\xEAme num\\xE9ro de ticket, reformul\\xE9 pour nommer macOS 12. La mise \\xE0 jour de septembre de Tsai indique la m\\xEAme chose : \\xAB Xcode 27 Beta 6 documents macOS 12.0 as the minimum deployment target now \\xBB. Si votre plan de migration reposait sur Big Sur, r\\xE9visez-le pour viser Monterey.\"}),`\n`,(0,i.jsx)(e.h2,{id:\"qui-est-vraiment-concern\\xE9\",children:\"Qui est vraiment concern\\xE9\"}),`\n`,(0,i.jsx)(e.p,{children:\"Trois groupes, par ordre d\\xE9croissant de douleur.\"}),`\n`,(0,i.jsx)(e.h3,{id:\"les-applications-mac-qui-prennent-encore-en-charge-high-sierra-jusqu\\xE0-big-sur\",children:\"Les applications Mac qui prennent encore en charge High Sierra jusqu'\\xE0 Big Sur\"}),`\n`,(0,i.jsx)(e.p,{children:\"C'est le groupe dont parle l'article de Tsai, et celui qui b\\xE9n\\xE9ficie le moins de la sympathie de la plateforme. Matthias Gansrigler-Hrad, d'Eternal Storms, l'a formul\\xE9 sans d\\xE9tour sur Mastodon :\"}),`\n`,(0,i.jsxs)(e.blockquote,{children:[`\n`,(0,i.jsx)(e.p,{children:\"I don't appreciate being forced by Xcode 27 to drop support for macOS 10.13-11.0. It's my decision\"}),`\n`]}),`\n`,(0,i.jsx)(e.p,{children:\"Pour ces d\\xE9veloppeurs, Xcode 27 impose un choix forc\\xE9 : relever le plancher et couper l'acc\\xE8s aux utilisateurs de syst\\xE8mes 2017-2020, ou rester sur Xcode 26 et renoncer au SDK macOS 27 et \\xE0 tout ce qui en d\\xE9pend.\"}),`\n`,(0,i.jsx)(e.h3,{id:\"les-applications-ios-et-surtout-les-biblioth\\xE8ques-ios-en-dessous-de-15\",children:\"Les applications iOS, et surtout les biblioth\\xE8ques iOS en dessous de 15\"}),`\n`,(0,i.jsxs)(e.p,{children:[\"Le plancher iOS d'Apple est fix\\xE9 \\xE0 15 depuis Xcode 26, donc une application d\\xE9j\\xE0 sur 15 ne voit rien changer. Mais l'\",(0,i.jsx)(e.em,{children:\"\\xE9cosyst\\xE8me\"}),\" regorgeait de biblioth\\xE8ques d\\xE9clarant des minimums plus bas, et chacune d'elles g\\xE9n\\xE8re d\\xE9sormais le diagnostic dans tout projet qui l'importe. Les trackers d'issues GitHub se sont remplis, d\\xE8s la premi\\xE8re semaine de juin, de demandes quasi identiques intitul\\xE9es \\xAB Support Xcode 27: raise minimum iOS deployment target to 15 \\xBB \\u2014 contre le \",(0,i.jsx)(e.a,{href:\"https://github.com/facebook/facebook-ios-sdk/issues/3828\",children:\"SDK iOS de Facebook\"}),\", qui d\\xE9clarait \",(0,i.jsx)(e.code,{children:\".iOS(.v12)\"}),\" dans son \",(0,i.jsx)(e.code,{children:\"Package.swift\"}),\", contre \",(0,i.jsx)(e.a,{href:\"https://github.com/adjust/ios_sdk/issues/799\",children:\"Adjust\"}),\", DataDog, SDWebImage et d'autres. Si vous d\\xE9pendez d'un paquet dont le mainteneur n'a pas r\\xE9pondu, vous \\xEAtes bloqu\\xE9 jusqu'\\xE0 ce qu'il le fasse, ou jusqu'\\xE0 ce que vous forkiez le projet.\"]}),`\n`,(0,i.jsx)(e.h3,{id:\"quiconque-a-une-ancienne-cible-enfouie-dans-une-d\\xE9pendance\",children:\"Quiconque a une ancienne cible enfouie dans une d\\xE9pendance\"}),`\n`,(0,i.jsxs)(e.p,{children:[\"Le cas subtil. Votre application cible 15. Un paquet Swift transitif cible 13. Xcode 27 compile ce paquet avec votre toolchain, voit 13, et fait \\xE9chouer votre build. Il n'existe aucune surcharge c\\xF4t\\xE9 consommateur dans Swift Package Manager : la conclusion de bleepingswift, qui rejoint la n\\xF4tre, est que \\xAB packages declaring older minimums in their \",(0,i.jsx)(e.code,{children:\"platforms\"}),\" declaration require either upgrading to a newer package version or forking and updating the requirement yourself \\xBB.\"]}),`\n`,(0,i.jsx)(e.p,{children:(0,i.jsx)(e.img,{alt:\"Planchers des cibles de d\\xE9ploiement selon les versions de Xcode\",src:\"/images/blog/xcode-27-minimum-deployment-target-macos-12-ios-15-build-error-fix-2026/content-1.webp\",width:\"1024\",height:\"572\"})}),`\n`,(0,i.jsx)(e.h2,{id:\"l\\xE9chappatoire-cach\\xE9e\",children:\"L'\\xE9chappatoire cach\\xE9e\"}),`\n`,(0,i.jsx)(e.p,{children:\"Elle existe, vous devez la conna\\xEEtre, et vous devez vous en m\\xE9fier.\"}),`\n`,(0,i.jsx)(e.p,{children:\"Ighor July, dans un billet du 24 juillet cit\\xE9 par Tsai, rapporte que dans la b\\xEAta de Xcode 27, \\xAB a hidden setting changed those errors back into warnings, and the compiler still produced the older targets I tested \\xBB. Il d\\xE9crit ce r\\xE9glage comme \\xAB undocumented, absent from the normal Xcode interface, and currently being tested only \\xBB dans une toolchain b\\xEAta. Un lecteur du billet de Tsai, Harald Striepe, le nomme :\"}),`\n`,(0,i.jsx)(i.Fragment,{children:(0,i.jsx)(e.pre,{className:\"shiki shiki-themes github-light github-dark\",style:{\"--shiki-light\":\"#24292e\",\"--shiki-dark\":\"#e1e4e8\",\"--shiki-light-bg\":\"#fff\",\"--shiki-dark-bg\":\"#24292e\"},tabIndex:\"0\",icon:'<svg viewBox=\"0 0 24 24\"><path d=\"M 6,1 C 4.354992,1 3,2.354992 3,4 v 16 c 0,1.645008 1.354992,3 3,3 h 12 c 1.645008,0 3,-1.354992 3,-3 V 8 7 A 1.0001,1.0001 0 0 0 20.707031,6.2929687 l -5,-5 A 1.0001,1.0001 0 0 0 15,1 h -1 z m 0,2 h 7 v 3 c 0,1.645008 1.354992,3 3,3 h 3 v 11 c 0,0.564129 -0.435871,1 -1,1 H 6 C 5.4358712,21 5,20.564129 5,20 V 4 C 5,3.4358712 5.4358712,3 6,3 Z M 15,3.4140625 18.585937,7 H 16 C 15.435871,7 15,6.5641288 15,6 Z\" fill=\"currentColor\" /></svg>',children:(0,i.jsx)(e.code,{children:(0,i.jsx)(e.span,{className:\"line\",children:(0,i.jsx)(e.span,{children:\"__DIAGNOSE_INVALID_DEPLOYMENT_TARGET_AS_ERROR = NO\"})})})})}),`\n`,(0,i.jsxs)(e.p,{children:[\"C'est un r\\xE9glage de build, donc il se place l\\xE0 o\\xF9 vont les r\\xE9glages de build : un fichier \",(0,i.jsx)(e.code,{children:\".xcconfig\"}),\" attach\\xE9 \\xE0 la configuration, ou un r\\xE9glage d\\xE9fini par l'utilisateur (User-Defined) ajout\\xE9 en bas du panneau Build Settings de la cible. Une fois d\\xE9fini, la v\\xE9rification de la cible de d\\xE9ploiement revient au comportement de Xcode 26.\"]}),`\n`,(0,i.jsx)(e.p,{children:\"Voici maintenant les r\\xE9serves, et elles ne sont pas anodines.\"}),`\n`,(0,i.jsxs)(e.p,{children:[(0,i.jsx)(e.strong,{children:\"Ce n'est pas pris en charge.\"}),\" Les deux tirets bas en pr\\xE9fixe sont la convention d'Apple pour les r\\xE9glages internes. Il peut \\xEAtre renomm\\xE9 ou supprim\\xE9 dans n'importe quelle b\\xEAta, y compris celle qui suit le moment o\\xF9 vous commencez \\xE0 en d\\xE9pendre.\"]}),`\n`,(0,i.jsxs)(e.p,{children:[(0,i.jsx)(e.strong,{children:\"Il r\\xE9tablit l'avertissement, pas les tests.\"}),\" L'appr\\xE9ciation de Tsai sur l'ensemble de ce changement m\\xE9rite d'\\xEAtre cit\\xE9e int\\xE9gralement, car elle pose le cadre honn\\xEAte de la situation :\"]}),`\n`,(0,i.jsxs)(e.blockquote,{children:[`\n`,(0,i.jsx)(e.p,{children:\"I'm frustrated, too, but it's more honest than the recent releases that claimed to support deployment on older macOS versions when Apple clearly hadn't tested that it actually worked.\"}),`\n`]}),`\n`,(0,i.jsx)(e.p,{children:\"D\\xE9sactiver l'erreur vous ram\\xE8ne \\xE0 compiler pour une cible qu'Apple ne testait d\\xE9j\\xE0 pas auparavant, et qu'elle ne prend d\\xE9sormais plus en charge explicitement. Tout ce qui \\xE9tait cass\\xE9 sous Catalina dans Xcode 26 le restera.\"}),`\n`,(0,i.jsxs)(e.p,{children:[(0,i.jsx)(e.strong,{children:\"Cela ne r\\xE8gle rien du c\\xF4t\\xE9 de l'App Store.\"}),\" Ce qui nous am\\xE8ne \\xE0 l'\\xE9ch\\xE9ance qui compte vraiment.\"]}),`\n`,(0,i.jsx)(e.h2,{id:\"la-v\\xE9ritable-\\xE9ch\\xE9ance-cest-avril-2027\",children:\"La v\\xE9ritable \\xE9ch\\xE9ance, c'est avril 2027\"}),`\n`,(0,i.jsx)(e.p,{children:\"La sortie de Xcode 27 n'oblige personne \\xE0 l'utiliser. L'exigence de SDK de l'App Store, si.\"}),`\n`,(0,i.jsxs)(e.p,{children:[\"La \",(0,i.jsx)(e.a,{href:\"https://developer.apple.com/news/upcoming-requirements/\",children:\"page des exigences \\xE0 venir\"}),\" d'Apple indique que depuis le \",(0,i.jsx)(e.strong,{children:\"28 avril 2026\"}),\", les applications envoy\\xE9es \\xE0 App Store Connect doivent \\xEAtre compil\\xE9es avec Xcode 26 et les SDK 26. Apple applique la m\\xEAme r\\xE8gle \\xE0 chaque nouveau SDK, chaque printemps, depuis des ann\\xE9es : le SDK courant devient obligatoire en avril, environ sept mois apr\\xE8s sa sortie.\"]}),`\n`,(0,i.jsx)(e.p,{children:\"Si ce sch\\xE9ma se confirme \\u2014 et Apple n'a pas annonc\\xE9 la date pour 2027, il s'agit donc d'une projection fond\\xE9e sur ce sch\\xE9ma, pas d'un fait \\xE9tabli \\u2014 alors \\xE0 partir d'environ avril 2027, toute soumission \\xE0 l'App Store devra \\xEAtre compil\\xE9e avec le SDK de Xcode 27. \\xC0 ce moment-l\\xE0 :\"}),`\n`,(0,i.jsxs)(e.ul,{children:[`\n`,(0,i.jsx)(e.li,{children:\"Une application Mac App Store ne pourra plus \\xEAtre mise \\xE0 jour avec une cible de d\\xE9ploiement inf\\xE9rieure \\xE0 12.0, car la seule toolchain accept\\xE9e par la boutique refusera de la compiler.\"}),`\n`,(0,i.jsx)(e.li,{children:\"Une application iOS App Store ne pourra plus \\xEAtre mise \\xE0 jour en dessous de 15.0, pour la m\\xEAme raison.\"}),`\n`,(0,i.jsx)(e.li,{children:\"Le r\\xE9glage d'\\xE9chappatoire pourrait survivre ou non \\xE0 la validation de l'App Store. Personne n'a rapport\\xE9 l'avoir test\\xE9, et nous ne b\\xE2tirions pas une activit\\xE9 dessus.\"}),`\n`]}),`\n`,(0,i.jsx)(e.p,{children:\"En dehors de l'App Store \\u2014 distribution directe avec Developer ID \\u2014 rien de tout cela ne s'applique. Vous pouvez continuer \\xE0 compiler avec Xcode 26 aussi longtemps que Xcode 26 tourne sur un Mac que vous poss\\xE9dez. Ce qui nous am\\xE8ne au probl\\xE8me suivant.\"}),`\n`,(0,i.jsx)(e.h2,{id:\"garder-xcode-26-sous-la-main-et-pourquoi-cela-cesse-de-fonctionner\",children:\"Garder Xcode 26 sous la main, et pourquoi cela cesse de fonctionner\"}),`\n`,(0,i.jsxs)(e.p,{children:[\"La solution \\xE9vidente consiste \\xE0 installer les deux. Des outils comme \",(0,i.jsx)(e.code,{children:\"xcodes\"}),\" permettent de garder facilement Xcode 26.6 aux c\\xF4t\\xE9s de la b\\xEAta 27 et de basculer entre les deux avec \",(0,i.jsx)(e.code,{children:\"xcode-select\"}),\". Pour un projet ciblant 10.13 que vous devez encore livrer cette ann\\xE9e, c'est la bonne d\\xE9cision.\"]}),`\n`,(0,i.jsx)(e.p,{children:\"Elle a une date de p\\xE9remption. Le tableau d'assistance d'Apple indique que Xcode 26.6 requiert \\xAB macOS Tahoe 26.2 \\u2013 macOS Tahoe 26.x \\xBB. Rien n'indique qu'il tourne sous macOS 27, et la lecture de Tsai est que \\xAB using old versions of Xcode isn't a great solution because they aren't supported on Golden Gate \\xBB. Il se peut qu'il se lance ; Apple ne le corrigera pas si ce n'est pas le cas. Et il ajoute un co\\xFBt plus subtil :\"}),`\n`,(0,i.jsxs)(e.blockquote,{children:[`\n`,(0,i.jsx)(e.p,{children:\"Swift also makes it more difficult to call newer APIs when using an older SDK.\"}),`\n`]}),`\n`,(0,i.jsx)(e.p,{children:\"Rester sur Xcode 26 signifie rester sur le SDK macOS 26, ce qui veut dire que les API de macOS 27 ne sont accessibles que par r\\xE9solution dynamique, voire pas du tout. Pour une application en mode maintenance, cela passe. Pour tout ce que vous d\\xE9veloppez activement, c'est un \\xE9tranglement lent.\"}),`\n`,(0,i.jsx)(e.h2,{id:\"xcode-27-lui-m\\xEAme-est-r\\xE9serv\\xE9-\\xE0-apple-silicon\",children:\"Xcode 27 lui-m\\xEAme est r\\xE9serv\\xE9 \\xE0 Apple Silicon\"}),`\n`,(0,i.jsx)(e.p,{children:\"Il s'agit d'un changement distinct, qui arrive dans la m\\xEAme version et se m\\xEAle facilement \\xE0 l'histoire de la cible de d\\xE9ploiement ; autant pr\\xE9ciser clairement lequel est lequel.\"}),`\n`,(0,i.jsxs)(e.p,{children:[\"Les notes de version sont sans ambigu\\xEFt\\xE9 : \\xAB Xcode 27 will only install and run on Apple silicon Macs \\xBB. Le binaire est exclusivement en arm64, comme l'a \",(0,i.jsx)(e.a,{href:\"https://developer.apple.com/forums/thread/829619\",children:\"confirm\\xE9 sur les forums\"}),\" un propri\\xE9taire de MacBook Pro Intel, apr\\xE8s que la mention \\xAB requires macOS Tahoe 26.4 or later \\xBB des notes de version lui avait laiss\\xE9 croire le contraire \\u2014 Tahoe tourne sur une poign\\xE9e de Mac Intel, pas Xcode 27.\"]}),`\n`,(0,i.jsx)(e.p,{children:\"Le SDK reste Universal. Vous pouvez toujours compiler des tranches x86_64 et des binaires Universal depuis Xcode 27 ; il faut simplement le faire sur Apple Silicon. C'est une exigence mat\\xE9rielle pour le d\\xE9veloppeur, pas une restriction de distribution pour l'application.\"}),`\n`,(0,i.jsx)(e.h2,{id:\"lautre-changement-intel--universal-nest-plus-la-valeur-par-d\\xE9faut-\\xE0-partir-de-270\",children:\"L'autre changement Intel : Universal n'est plus la valeur par d\\xE9faut \\xE0 partir de 27.0\"}),`\n`,(0,i.jsx)(e.p,{children:\"Un dernier point li\\xE9 \\xE0 Intel dans les notes de la b\\xEAta 6, class\\xE9 sous \\xAB Intel Deprecation \\xBB, que la plupart des articles ont pass\\xE9 sous silence :\"}),`\n`,(0,i.jsxs)(e.blockquote,{children:[`\n`,(0,i.jsxs)(e.p,{children:[\"Build targets with a min deployment target set to macOS 27.0 or DriverKit 27.0 will not build Universal by default. The \",(0,i.jsx)(e.code,{children:\"ARCHS_STANDARD\"}),\" build setting will no longer include x86_64 when \",(0,i.jsx)(e.code,{children:\"MACOSX_DEPLOYMENT_TARGET\"}),\" or \",(0,i.jsx)(e.code,{children:\"DRIVERKIT_DEPLOYMENT_TARGET\"}),\" >= 27.0. The x86_64 architecture can be added to the \",(0,i.jsx)(e.code,{children:\"ARCHS\"}),\" build setting if this is needed. (161837535)\"]}),`\n`]}),`\n`,(0,i.jsxs)(e.p,{children:[\"C'est logique \\u2014 macOS 27 \",(0,i.jsx)(e.a,{href:\"/blog/macos-27-end-of-intel-mac-era-final-compatibility-list-2026\",children:\"ne tourne sur aucun Mac Intel\"}),\", donc une cible exclusivement 27.0 n'a aucune machine Intel sur laquelle s'ex\\xE9cuter \\u2014 mais cela a un effet de bord. Rosetta est toujours pr\\xE9sent dans macOS 27, et la \",(0,i.jsx)(e.a,{href:\"https://developer.apple.com/news/\",children:\"note d\\xE9veloppeur du 1er septembre\"}),\" d'Apple a r\\xE9affirm\\xE9 que la version 27 en est la derni\\xE8re \\xE9dition. Une application exclusivement 27.0 qui abandonne x86_64 par d\\xE9faut ne peut plus non plus tourner sous Rosetta sur Apple Silicon, ce qui ne compte que si vous distribuiez un h\\xF4te de plug-in exclusivement Intel ou quelque chose de similaire. Ajoutez explicitement \",(0,i.jsx)(e.code,{children:\"x86_64\"}),\" \\xE0 \",(0,i.jsx)(e.code,{children:\"ARCHS\"}),\" si vous en avez besoin.\"]}),`\n`,(0,i.jsx)(e.h2,{id:\"un-troisi\\xE8me-plancher-que-personne-ne-mentionne--libc-\\xE0-110\",children:\"Un troisi\\xE8me plancher que personne ne mentionne : libc++ \\xE0 11.0\"}),`\n`,(0,i.jsx)(e.p,{children:\"Enfoui dans la m\\xEAme liste de d\\xE9pr\\xE9ciations : \\xAB The minimum supported deployment target on macOS for the C++ standard library has been increased to 11.0 \\xBB. C'est un plancher diff\\xE9rent, plus bas que le plancher de 12.0 impos\\xE9 par le syst\\xE8me de build, et il s'applique au runtime C++ auquel vous vous liez plut\\xF4t qu'\\xE0 la cible de d\\xE9ploiement que vous d\\xE9clarez. En pratique, cela ne se manifeste que si vous avez contourn\\xE9 la v\\xE9rification du syst\\xE8me de build \\u2014 avec le r\\xE9glage cach\\xE9, par exemple \\u2014 et que vous ciblez encore 10.15 ou une version ant\\xE9rieure avec du code C++. C'est alors libc++ lui-m\\xEAme qui devient le prochain obstacle.\"}),`\n`,(0,i.jsx)(e.h2,{id:\"corriger-le-probl\\xE8me--les-d\\xE9pendances\",children:\"Corriger le probl\\xE8me : les d\\xE9pendances\"}),`\n`,(0,i.jsx)(e.p,{children:\"Pour vos propres cibles, la correction se r\\xE9sume \\xE0 un chiffre dans un champ de texte. Pour les d\\xE9pendances :\"}),`\n`,(0,i.jsxs)(e.p,{children:[(0,i.jsx)(e.strong,{children:\"CocoaPods.\"}),\" Ajoutez un hook \",(0,i.jsx)(e.code,{children:\"post_install\"}),\" qui r\\xE9\\xE9crit la cible de d\\xE9ploiement de chaque pod \\xE0 la valeur plancher, puis relancez \",(0,i.jsx)(e.code,{children:\"pod install\"}),\" et nettoyez le dossier de build. La version de ce hook propos\\xE9e par bleepingswift a la forme standard ; l'essentiel est qu'elle s'applique \\xE0 \",(0,i.jsx)(e.em,{children:\"tous\"}),\" les pods, pas seulement \\xE0 ceux qui se plaignent aujourd'hui.\"]}),`\n`,(0,i.jsxs)(e.p,{children:[(0,i.jsx)(e.strong,{children:\"Swift Package Manager.\"}),\" Aucune surcharge n'existe. Vos options sont : passer \\xE0 une version du paquet qui a relev\\xE9 son \",(0,i.jsx)(e.code,{children:\"platforms\"}),\" ; ouvrir ou soutenir l'issue existante ; ou forker le projet, modifier \",(0,i.jsx)(e.code,{children:\"Package.swift\"}),\", et pointer votre projet vers ce fork jusqu'\\xE0 ce que l'amont rattrape son retard. V\\xE9rifiez d'abord le tracker d'issues \\u2014 pour les principaux SDK, quelqu'un a d\\xE9pos\\xE9 la demande d\\xE8s la premi\\xE8re semaine de juin, et une pull request y est g\\xE9n\\xE9ralement d\\xE9j\\xE0 attach\\xE9e.\"]}),`\n`,(0,i.jsxs)(e.p,{children:[(0,i.jsx)(e.strong,{children:\"Frameworks vendoris\\xE9s et XCFrameworks.\"}),\" Ils portent leur propre minimum dans leur \",(0,i.jsx)(e.code,{children:\"Info.plist\"}),\" et leurs commandes de chargement Mach-O. Xcode 27 ne refuse pas de \",(0,i.jsx)(e.em,{children:\"lier\"}),\" un ancien framework binaire, mais l'\\xE9diteur de liens signalera l'incompatibilit\\xE9 de version, et le comportement sur l'ancienne cible correspond exactement \\xE0 ce qui a \\xE9t\\xE9 test\\xE9 \\u2014 c'est-\\xE0-dire rien.\"]}),`\n`,(0,i.jsx)(e.h2,{id:\"ce-que-signifie--honn\\xEAte--ici\",children:\"Ce que signifie \\xAB honn\\xEAte \\xBB ici\"}),`\n`,(0,i.jsx)(e.p,{children:\"Il vaut la peine de s'arr\\xEAter un instant sur la mani\\xE8re dont Tsai pose le probl\\xE8me, car cela change ce contre quoi vous devriez \\xEAtre en col\\xE8re.\"}),`\n`,(0,i.jsx)(e.p,{children:\"Xcode 26 ne prenait pas en charge macOS 10.13. Il vous permettait de saisir 10.13, il g\\xE9n\\xE9rait du code, et Apple n'a pas test\\xE9 que les frameworks du SDK 26 se comportaient correctement sur un syst\\xE8me d'exploitation de 2017. Les d\\xE9veloppeurs qui publiaient ces builds faisaient leur propre assurance qualit\\xE9 face \\xE0 un OS qu'Apple avait laiss\\xE9 derri\\xE8re lui, et, la plupart du temps, cela fonctionnait, parce que les frameworks sont r\\xE9trocompatibles par conception. Mais \\xAB la plupart du temps \\xBB faisait tout le travail dans cette phrase, et chaque ann\\xE9e, l'\\xE9cart entre le SDK et la cible s'\\xE9largissait.\"}),`\n`,(0,i.jsx)(e.p,{children:\"Xcode 27 fait de la plage document\\xE9e la plage r\\xE9elle. C'est une perte pour les utilisateurs de vieux Mac et pour les d\\xE9veloppeurs qui les servaient. Ce n'est pas la perte de quelque chose qu'Apple avait un jour promis.\"}),`\n`,(0,i.jsx)(e.p,{children:(0,i.jsx)(e.img,{alt:\"Chronologie de l'exigence de SDK de l'App Store et cons\\xE9quences sur la cible de d\\xE9ploiement\",src:\"/images/blog/xcode-27-minimum-deployment-target-macos-12-ios-15-build-error-fix-2026/content-2.webp\",width:\"1024\",height:\"572\"})}),`\n`,(0,i.jsx)(e.h2,{id:\"la-complication-r\\xE9glementaire\",children:\"La complication r\\xE9glementaire\"}),`\n`,(0,i.jsxs)(e.p,{children:[\"Un dernier fil \\xE0 tirer. Le 26 ao\\xFBt, Tsai a \",(0,i.jsx)(e.a,{href:\"https://mjtsai.com/blog/2026/08/26/cyber-resilience-act/\",children:\"rassembl\\xE9 des commentaires\"}),\" sur le Cyber Resilience Act de l'UE, dont les principales obligations entrent en vigueur le 11 d\\xE9cembre 2027 et qui exige des mises \\xE0 jour de s\\xE9curit\\xE9 pendant au moins cinq ans. Un lecteur identifi\\xE9 comme Frederik a soulev\\xE9 l'interaction avec l'App Store :\"]}),`\n`,(0,i.jsxs)(e.blockquote,{children:[`\n`,(0,i.jsx)(e.p,{children:\"Once you update the minimum supported OS version of your app (which you might be forced to by newer Xcode versions\\u2026 you can no longer provide updates for your older app versions on the App Store.\"}),`\n`]}),`\n`,(0,i.jsx)(e.p,{children:\"C'est exactement le m\\xE9canisme que d\\xE9crit cet article. L'App Store n'a qu'une seule version courante par application. Si le SDK de Xcode 27 devient obligatoire et que votre plancher passe \\xE0 macOS 12, les utilisateurs de macOS 11 conservent le dernier build qu'ils ont re\\xE7u, pour toujours, sans aucune mise \\xE0 jour de s\\xE9curit\\xE9. Que le CRA consid\\xE8re cela comme une obligation du d\\xE9veloppeur, d'Apple, ou de personne, est une question pour les juristes ; le fait technique est que le mod\\xE8le de distribution d'Apple n'a aucun m\\xE9canisme de branche, et Xcode 27 est sur le point de rendre cela visible \\xE0 beaucoup plus de d\\xE9veloppeurs.\"}),`\n`,(0,i.jsx)(e.h2,{id:\"liste-de-contr\\xF4le-pour-la-migration\",children:\"Liste de contr\\xF4le pour la migration\"}),`\n`,(0,i.jsx)(e.p,{children:\"Pour une application Mac avec une ancienne cible, dans l'ordre :\"}),`\n`,(0,i.jsxs)(e.ol,{children:[`\n`,(0,i.jsxs)(e.li,{children:[(0,i.jsx)(e.strong,{children:\"Faites l'inventaire de vos utilisateurs r\\xE9els.\"}),\" Si vos statistiques indiquent que personne n'est en dessous de macOS 12, il s'agit d'un changement d'une ligne et d'une note de version. La plupart des applications sont dans ce cas.\"]}),`\n`,(0,i.jsxs)(e.li,{children:[(0,i.jsx)(e.strong,{children:\"R\\xE9glez la cible de d\\xE9ploiement sur 12.0 (macOS) ou 15.0 (iOS) sur chaque cible\"}),\", y compris les extensions, les helpers et les tests. Compilez avec la b\\xEAta de Xcode 27 et \\xE9liminez chaque occurrence du diagnostic.\"]}),`\n`,(0,i.jsxs)(e.li,{children:[(0,i.jsx)(e.strong,{children:\"Auditez vos d\\xE9pendances\"}),\" \\xE0 la recherche de d\\xE9clarations \",(0,i.jsx)(e.code,{children:\"platforms\"}),\" et de podspecs en dessous du plancher. Forkez ce qui doit l'\\xEAtre.\"]}),`\n`,(0,i.jsxs)(e.li,{children:[(0,i.jsx)(e.strong,{children:\"Tranchez le sort des irr\\xE9ductibles.\"}),\" Si vous devez r\\xE9ellement continuer \\xE0 livrer aux utilisateurs de 10.13-11.0, planifiez un dernier build sur Xcode 26 avant avril 2027, distribuez-le en dehors de l'App Store ou comme version h\\xE9rit\\xE9e fig\\xE9e, et annoncez-le publiquement.\"]}),`\n`,(0,i.jsxs)(e.li,{children:[(0,i.jsx)(e.strong,{children:\"N'exp\\xE9diez pas le r\\xE9glage cach\\xE9 en production\"}),\", sauf si vous avez vous-m\\xEAme test\\xE9 le r\\xE9sultat sur l'ancien OS et que vous acceptez que ce r\\xE9glage puisse dispara\\xEEtre dans la prochaine b\\xEAta.\"]}),`\n`,(0,i.jsxs)(e.li,{children:[(0,i.jsxs)(e.strong,{children:[\"Si vous ciblez exclusivement 27.0, v\\xE9rifiez \",(0,i.jsx)(e.code,{children:\"ARCHS\"}),\".\"]}),\" Vous venez peut-\\xEAtre d'abandonner x86_64 sans vous en rendre compte.\"]}),`\n`]}),`\n`,(0,i.jsx)(e.h2,{id:\"r\\xE9solution-des-probl\\xE8mes-courants\",children:\"R\\xE9solution des probl\\xE8mes courants\"}),`\n`,(0,i.jsx)(e.h3,{id:\"lerreur-persiste-apr\\xE8s-avoir-relev\\xE9-la-cible-de-lapplication\",children:\"L'erreur persiste apr\\xE8s avoir relev\\xE9 la cible de l'application\"}),`\n`,(0,i.jsx)(e.p,{children:\"Une autre cible du projet conserve encore l'ancienne valeur. S\\xE9lectionnez le projet (et non une cible) dans le navigateur, v\\xE9rifiez la cible de d\\xE9ploiement au niveau du projet, puis chaque cible et chaque bundle de tests. Les widgets et les extensions d'application sont les coupables habituels.\"}),`\n`,(0,i.jsx)(e.h3,{id:\"lerreur-nomme-un-paquet-dont-je-ne-d\\xE9pends-pas-directement\",children:\"L'erreur nomme un paquet dont je ne d\\xE9pends pas directement\"}),`\n`,(0,i.jsxs)(e.p,{children:[\"Une d\\xE9pendance transitive. Utilisez \",(0,i.jsx)(e.code,{children:\"swift package show-dependencies\"}),\" (ou le graphe de paquets de Xcode) pour trouver qui l'introduit, puis mettez \\xE0 jour ce paquet interm\\xE9diaire ou forkez la feuille en question.\"]}),`\n`,(0,i.jsxs)(e.h3,{id:\"xcodebuild-en-ligne-de-commande-\\xE9choue-mais-linterface-graphique-de-xcode-compile\",children:[(0,i.jsx)(e.code,{children:\"xcodebuild\"}),\" en ligne de commande \\xE9choue mais l'interface graphique de Xcode compile\"]}),`\n`,(0,i.jsxs)(e.p,{children:[\"V\\xE9rifiez quelle toolchain la ligne de commande utilise : \",(0,i.jsx)(e.code,{children:\"xcode-select -p\"}),\". Il se peut que vous ayez l'interface graphique sur 26 et la ligne de commande sur 27, ou l'inverse.\"]}),`\n`,(0,i.jsx)(e.h3,{id:\"jai-activ\\xE9-le-drapeau-cach\\xE9-et-cela-na-rien-chang\\xE9\",children:\"J'ai activ\\xE9 le drapeau cach\\xE9 et cela n'a rien chang\\xE9\"}),`\n`,(0,i.jsx)(e.p,{children:\"Le drapeau doit \\xEAtre visible du syst\\xE8me de build au niveau o\\xF9 s'ex\\xE9cute la v\\xE9rification \\u2014 un xcconfig au niveau du projet est l'endroit le plus s\\xFBr. S'il n'est d\\xE9fini que sur une seule cible, les autres cibles continueront \\xE0 g\\xE9n\\xE9rer l'erreur. Si cela ne change toujours rien, la b\\xEAta que vous utilisez l'a peut-\\xEAtre supprim\\xE9.\"}),`\n`,(0,i.jsx)(e.h3,{id:\"mes-runners-ci-sont-sous-intel\",children:\"Mes runners CI sont sous Intel\"}),`\n`,(0,i.jsx)(e.p,{children:\"Xcode 27 ne s'installera pas dessus. C'est une migration mat\\xE9rielle, pas un probl\\xE8me de configuration. Les fournisseurs h\\xE9berg\\xE9s sont pass\\xE9s aux runners Apple Silicon depuis un certain temps d\\xE9j\\xE0 ; les Mac mini Intel auto-h\\xE9berg\\xE9s sont d\\xE9sormais en fin de vie pour les builds utilisant la toolchain actuelle.\"}),`\n`,(0,i.jsx)(e.h2,{id:\"faq\",children:\"FAQ\"}),`\n`,(0,i.jsx)(e.h3,{id:\"xcode-27-rel\\xE8ve-t-il-le-minimum-ios-\",children:\"Xcode 27 rel\\xE8ve-t-il le minimum iOS ?\"}),`\n`,(0,i.jsx)(e.p,{children:\"Pas sur le papier \\u2014 le tableau d'Apple indique iOS 15 depuis Xcode 26. Ce qui change, c'est l'application de la r\\xE8gle : les cibles en dessous de 15, qui compilaient avec un avertissement dans Xcode 26, \\xE9chouent dans Xcode 27.\"}),`\n`,(0,i.jsx)(e.h3,{id:\"quel-est-le-minimum-macos-dans-xcode-27-\",children:\"Quel est le minimum macOS dans Xcode 27 ?\"}),`\n`,(0,i.jsx)(e.p,{children:\"macOS 12 Monterey, selon la page d'assistance Xcode d'Apple et les notes de version de la b\\xEAta 6. Plus t\\xF4t dans le cycle de b\\xEAta, la note avait \\xE9t\\xE9 lue comme d\\xE9signant Big Sur ; cette lecture est d\\xE9sormais d\\xE9pass\\xE9e.\"}),`\n`,(0,i.jsx)(e.h3,{id:\"puis-je-encore-compiler-des-applications-universal-intel--apple-silicon-\",children:\"Puis-je encore compiler des applications Universal (Intel + Apple Silicon) ?\"}),`\n`,(0,i.jsx)(e.p,{children:\"Oui, depuis un Mac Apple Silicon. Le SDK macOS 27 prend en charge le back-deployment Universal jusqu'\\xE0 macOS 12 et versions ult\\xE9rieures. Le seul cas o\\xF9 x86_64 dispara\\xEEt par d\\xE9faut est une cible r\\xE9gl\\xE9e sur 27.0 ou plus r\\xE9cent.\"}),`\n`,(0,i.jsx)(e.h3,{id:\"quand-dois-je-passer-\\xE0-xcode-27-\",children:\"Quand dois-je passer \\xE0 Xcode 27 ?\"}),`\n`,(0,i.jsx)(e.p,{children:\"Pour la distribution directe, jamais \\u2014 tant que vous disposez d'un Mac capable de faire tourner Xcode 26. Pour l'App Store, lorsqu'Apple rendra le SDK 27 obligatoire, ce qui, selon le sch\\xE9ma \\xE9tabli, se situerait vers avril 2027. Apple n'a pas annonc\\xE9 cette date.\"}),`\n`,(0,i.jsx)(e.h3,{id:\"le-r\\xE9glage-cach\\xE9-est-il-s\\xFBr-pour-les-builds-destin\\xE9s-\\xE0-lapp-store-\",children:\"Le r\\xE9glage cach\\xE9 est-il s\\xFBr pour les builds destin\\xE9s \\xE0 l'App Store ?\"}),`\n`,(0,i.jsx)(e.p,{children:\"Inconnu. Personne n'a rapport\\xE9 de soumission compil\\xE9e avec ce r\\xE9glage, et il s'agit d'un drapeau interne non document\\xE9. Consid\\xE9rez-le comme un outil pour les builds locaux et les branches h\\xE9rit\\xE9es, pas pour votre pipeline de release.\"}),`\n`,(0,i.jsx)(e.h2,{id:\"conclusion\",children:\"Conclusion\"}),`\n`,(0,i.jsx)(e.p,{children:\"Le changement de cible de d\\xE9ploiement dans Xcode 27 est une modification minime aux cons\\xE9quences durables. Apple n'a pas beaucoup relev\\xE9 le plancher \\u2014 une version sur macOS, aucune sur iOS \\u2014 mais elle a cess\\xE9 de faire semblant que ce plancher \\xE9tait optionnel, et une d\\xE9cennie de logiciels Mac ind\\xE9pendants s'est construite sur cette fiction. L'erreur de build que vous obtenez aujourd'hui est facile \\xE0 corriger si vos utilisateurs sont sur des syst\\xE8mes modernes, et impossible \\xE0 corriger proprement s'ils ne le sont pas.\"}),`\n`,(0,i.jsxs)(e.p,{children:[\"Sachez dans quel cas vous \\xEAtes. Si vous livrez encore \\xE0 macOS 11 ou ant\\xE9rieur, la fen\\xEAtre qu'il vous reste est Xcode 26 sur un Mac qui le fait encore tourner, et elle se referme pour les applications App Store dans environ sept mois. Si ce n'est pas votre cas, relevez le chiffre, corrigez les d\\xE9pendances, v\\xE9rifiez \",(0,i.jsx)(e.code,{children:\"ARCHS\"}),\" si vous \\xEAtes exclusivement en 27, et passez \\xE0 autre chose \\u2014 Apple a enfin document\\xE9 ce qu'elle allait de toute fa\\xE7on finir par faire.\"]}),`\n`,(0,i.jsx)(e.p,{children:(0,i.jsxs)(e.em,{children:[\"\\xC0 lire aussi : \",(0,i.jsx)(e.a,{href:\"/blog/rosetta-2-ending-macos-27-intel-app-audit-guide-2026\",children:\"auditez vos applications Intel avant la fin de Rosetta\"}),\", \",(0,i.jsx)(e.a,{href:\"/blog/macos-27-end-of-intel-mac-era-final-compatibility-list-2026\",children:\"la date limite de compatibilit\\xE9 Intel de macOS 27\"}),\", \",(0,i.jsx)(e.a,{href:\"/blog/macos-tahoe-developer-setup-npm-python-xcode-fix-guide-2025\",children:\"r\\xE9soudre une configuration de d\\xE9veloppement macOS Tahoe\"}),\", et \",(0,i.jsx)(e.a,{href:\"/blog/best-mac-developer-tools-2026\",children:\"les meilleurs outils de d\\xE9veloppement Mac de l'ann\\xE9e\"}),\".\"]})})]})}function u(n={}){let{wrapper:e}=n.components||{};return e?(0,i.jsx)(e,{...n,children:(0,i.jsx)(d,{...n})}):d(n)}return S(k);})();\n;return Component;","toc":[{"title":"Points clés à retenir","url":"#points-clés-à-retenir","depth":2},{"title":"Les chiffres, officiellement","url":"#les-chiffres-officiellement","depth":2},{"title":"Ce que Xcode 26 autorisait réellement","url":"#ce-que-xcode-26-autorisait-réellement","depth":2},{"title":"De l'avertissement à l'erreur","url":"#de-lavertissement-à-lerreur","depth":2},{"title":"Ce qui a changé entre juin et la bêta 6","url":"#ce-qui-a-changé-entre-juin-et-la-bêta-6","depth":2},{"title":"Qui est vraiment concerné","url":"#qui-est-vraiment-concerné","depth":2},{"title":"Les applications Mac qui prennent encore en charge High Sierra jusqu'à Big Sur","url":"#les-applications-mac-qui-prennent-encore-en-charge-high-sierra-jusquà-big-sur","depth":3},{"title":"Les applications iOS, et surtout les bibliothèques iOS en dessous de 15","url":"#les-applications-ios-et-surtout-les-bibliothèques-ios-en-dessous-de-15","depth":3},{"title":"Quiconque a une ancienne cible enfouie dans une dépendance","url":"#quiconque-a-une-ancienne-cible-enfouie-dans-une-dépendance","depth":3},{"title":"L'échappatoire cachée","url":"#léchappatoire-cachée","depth":2},{"title":"La véritable échéance, c'est avril 2027","url":"#la-véritable-échéance-cest-avril-2027","depth":2},{"title":"Garder Xcode 26 sous la main, et pourquoi cela cesse de fonctionner","url":"#garder-xcode-26-sous-la-main-et-pourquoi-cela-cesse-de-fonctionner","depth":2},{"title":"Xcode 27 lui-même est réservé à Apple Silicon","url":"#xcode-27-lui-même-est-réservé-à-apple-silicon","depth":2},{"title":"L'autre changement Intel : Universal n'est plus la valeur par défaut à partir de 27.0","url":"#lautre-changement-intel--universal-nest-plus-la-valeur-par-défaut-à-partir-de-270","depth":2},{"title":"Un troisième plancher que personne ne mentionne : libc++ à 11.0","url":"#un-troisième-plancher-que-personne-ne-mentionne--libc-à-110","depth":2},{"title":"Corriger le problème : les dépendances","url":"#corriger-le-problème--les-dépendances","depth":2},{"title":"Ce que signifie « honnête » ici","url":"#ce-que-signifie--honnête--ici","depth":2},{"title":"La complication réglementaire","url":"#la-complication-réglementaire","depth":2},{"title":"Liste de contrôle pour la migration","url":"#liste-de-contrôle-pour-la-migration","depth":2},{"title":"Résolution des problèmes courants","url":"#résolution-des-problèmes-courants","depth":2},{"title":"L'erreur persiste après avoir relevé la cible de l'application","url":"#lerreur-persiste-après-avoir-relevé-la-cible-de-lapplication","depth":3},{"title":"L'erreur nomme un paquet dont je ne dépends pas directement","url":"#lerreur-nomme-un-paquet-dont-je-ne-dépends-pas-directement","depth":3},{"title":"xcodebuild en ligne de commande échoue mais l'interface graphique de Xcode compile","url":"#xcodebuild-en-ligne-de-commande-échoue-mais-linterface-graphique-de-xcode-compile","depth":3},{"title":"J'ai activé le drapeau caché et cela n'a rien changé","url":"#jai-activé-le-drapeau-caché-et-cela-na-rien-changé","depth":3},{"title":"Mes runners CI sont sous Intel","url":"#mes-runners-ci-sont-sous-intel","depth":3},{"title":"FAQ","url":"#faq","depth":2},{"title":"Xcode 27 relève-t-il le minimum iOS ?","url":"#xcode-27-relève-t-il-le-minimum-ios-","depth":3},{"title":"Quel est le minimum macOS dans Xcode 27 ?","url":"#quel-est-le-minimum-macos-dans-xcode-27-","depth":3},{"title":"Puis-je encore compiler des applications Universal (Intel + Apple Silicon) ?","url":"#puis-je-encore-compiler-des-applications-universal-intel--apple-silicon-","depth":3},{"title":"Quand dois-je passer à Xcode 27 ?","url":"#quand-dois-je-passer-à-xcode-27-","depth":3},{"title":"Le réglage caché est-il sûr pour les builds destinés à l'App Store ?","url":"#le-réglage-caché-est-il-sûr-pour-les-builds-destinés-à-lapp-store-","depth":3},{"title":"Conclusion","url":"#conclusion","depth":2}],"estimatedTime":23}