Au 14 septembre 2026, iOS 27 est dans la fenêtre d’automne. Une « app IA iOS 27 » n’est pas une énième boîte de chat hébergée. Le chemin développeur d’Apple a deux rails : Foundation Models pour planifier, extraire et appeler des outils dans votre processus ; App Intents pour que les mêmes actions apparaissent dans Siri AI, Spotlight et Raccourcis. Concevez la boucle d’abord, choisissez le modèle ensuite — on-device, Private Cloud Compute et LLM tiers partagent une API de session Swift, mais la review, les textes de confidentialité et la disponibilité régionale, non. En Union européenne, le DMA peut retarder Siri AI sur iPhone sans empêcher de livrer Intents et couche de session.
Ce qu’est vraiment une app IA iOS 27
Beaucoup d’équipes définissent encore la « fonction IA » comme un champ texte qui envoie une phrase à OpenAI ou Gemini et colle la réponse. Ça compile encore sous iOS 27. Ce n’est plus la forme vers laquelle Apple livre. La WWDC 2026 a été nette : modèles système, Siri AI et modèles partenaires doivent entrer dans l’app via une session Foundation Models ; tout ce que l’utilisateur lance depuis l’écran de verrouillage, Siri ou le contenu à l’écran passe par App Intents — pas par une extension SiriKit restante.
En langage produit : Foundation Models « comprend » (langue naturelle → brouillon typé, appels d’outils, bascule local/cloud). App Intents « font la chose » (créer une tâche, ouvrir une entité, modifier un enregistrement, laisser Siri dire « le troisième »). Une UI de chat n’est qu’une peau. Un chat sans Intents est invisible pour Siri. Des Intents sans couche de session rendent la planification in-app et les allers-retours d’édition fragiles.
Ce texte est un guide de construction, pas une visite grand public. Tarifs et limites gratuit/payant : Apple Intelligence : gratuit ou payant. Ce que Siri peut faire sur Mac : Siri AI sur Mac (macOS 27). Ci-dessous, le chemin d’ingénierie d’une cible vide jusqu’à une boucle que vous pouvez démontrer, tester et soumettre — y compris si Siri AI reste derrière une porte DMA ou un compte Apple dans votre vitrine.
Avant le code : Xcode 27, paliers matériels, régions
Fixez la toolchain avant le premier import FoundationModels. Le SDK iOS 27 arrive avec Xcode 27. Le Simulateur suffit pour le plomberie de session. Private Cloud Compute, les taux réels d’appels d’outils et les chemins vocaux divergent souvent sur appareil. Les notes de version iOS 27 signalent déjà des trous PCC dans le Simulateur et des appels d’outils excessifs quand on mélange tools on-device et génération guidée. Ce n’est pas un détail : prévoyez du calendrier.
Ne planifiez pas l’IA sur « les appareils qui installent iOS 27 ». L’iPhone 11 et suivants reçoivent l’OS. Apple Intelligence et les Foundation Models on-device commencent toujours à iPhone 15 Pro / iPhone 16. La pile on-device plus lourde (souvent dite AFM 3 Core Advanced — voix Siri expressive et dictée plus précise) tient surtout sur iPhone 17 Pro / Air. Sur iPad, grosso modo M1 pour Apple Intelligence ; les modèles on-device plus récents demandent plus de RAM. Écrivez trois lignes, pas une cellule « min. iOS 27 » :
| Palier | Matériel typique | Ce que vous pouvez promettre |
|---|---|---|
| OS seul, pas d’Apple Intelligence | iPhone 11–15 (non Pro) | Ne pas mettre l’IA sur le chemin critique ; repli ou votre cloud |
| Apple Intelligence standard | iPhone 15 Pro, famille iPhone 16 | Sessions on-device, Siri AI de base, la plupart des App Intents |
| Modèle on-device complet | Classe iPhone 17 Pro / Air | Échantillonner parole avancée et inférence locale lourde — jamais le promettre à tous |
La région est le deuxième verrou. Siri AI et certaines fonctions système peuvent encore se bloquer selon le compte, la langue ou la régulation. C’est visible en Chine continentale ; en Union européenne, le Digital Markets Act (DMA) et l’interopérabilité avec d’autres assistants rendent le calendrier encore plus concret. Pour beaucoup de builds d’automne, Siri AI peut manquer sur iPhone, iPad et Watch, ou rester en deçà de la keynote US, alors que Mac et visionOS restent plus proches du périmètre annoncé. Ce n’est pas un mémo juridique : c’est une contrainte de livraison. Écrivez quand même les Intents — la porte reste. Rendez le backend Foundation Models interchangeable : build UE sur un LanguageModel partenaire revu, build US plutôt on-device + PCC. Ne filmez pas les previews App Store avec un Apple ID américain pour les légender « Siri AI partout en Europe ».
Gardez Xcode 27 hors du portable qui porte votre train App Store stable. Séparez le CI « or » de la machine d’essai SDK 27. La même idée d’isolation est dans isoler la beta Xcode des runners de production.
Foundation Models : une API, trois emplacements
Foundation Models est arrivé avec iOS 26. iOS 27 en fait une API Swift native unique : les modèles on-device prennent de l’image, une session peut viser des modèles serveur, et vous pouvez attacher des Skills. Le résumé Apple est dans le billet Newsroom de juin 2026. La vraie décision n’est pas « IA : on/off ». C’est où tourne cette inférence.
| Emplacement | Type typique | À utiliser pour | À ne pas utiliser pour |
|---|---|---|---|
| On-device | SystemLanguageModel | Résumés, réécriture, extraction de formulaires, plans courts, brouillons hors ligne | Très longs documents, Q&R web ouverte qui exige un retrieval live |
| Cloud Apple | Modèles Private Cloud Compute | Raisonnement plus lourd sans apporter vos propres clés | Données qui doivent rester dans votre VPC sous vos auditeurs |
| Partenaire / custom | LanguageModel + LanguageModelExecutor | Claude, Gemini, MLX, Core AI | Clés API brutes dans un initialiseur client |
Le changement iOS 27 qui compte : changer de modèle ne doit pas réécrire la session. Les fournisseurs implémentent des protocoles publics (session WWDC26 Bring an LLM provider to the Foundation Models framework), livrent un Swift Package et mappent les entrées Transcript dans l’executor — prewarm, streaming et cache KV inclus. L’app parle toujours à LanguageModelSession.
Côté coût, un nouveau levier : les développeurs du App Store Small Business Program sous deux millions de premiers téléchargements peuvent utiliser la nouvelle génération Apple Foundation Models sur Private Cloud Compute sans facture d’API cloud (vérifier les conditions du moment). C’est une rampe d’essai, pas de l’inférence infinie. Au-dessus du plafond — ou s’il vous faut Claude/Gemini — vous payez le fournisseur. Pour les équipes UE où PCC ou Siri système manque encore, l’executor partenaire est souvent le premier chemin productif, pas le dernier recours.
Étape 1 : LanguageModelSession et sortie structurée
La session est la colonne. Voir LanguageModelSession : un objet tient un Transcript ; dépassez la fenêtre et vous avez LanguageModelError.contextSizeExceeded. N’allouez pas une nouvelle session à chaque Envoyer. N’empilez pas non plus sans fin. Des sessions courtes pour planifier, une fraîche pour committer, valent mieux qu’un chat dieu unique.
import FoundationModels
@Generable
struct TaskDraft {
@Guide(description: "Titre de tâche, 20 caractères maximum")
var title: String
@Guide(description: "Échéance ISO-8601, ou none si l'utilisateur n'en a pas parlé")
var dueISO8601: String
var priority: Priority
}
@Generable
enum Priority {
case low, normal, high
}
let session = LanguageModelSession {
"""
Tu es le planificateur d'une app de tâches.
Produis uniquement un TaskDraft. N'invente aucun événement calendrier que l'utilisateur n'a pas mentionné.
"""
}
let response = try await session.respond(
generating: TaskDraft.self,
to: Prompt("Déposer le rapport hebdo demain à 15 h, priorité haute")
)
let draft = response.content
Le gain produit est le type, pas la syntaxe. @Generable transforme « un modèle qui discute » en « un modèle qui remplit un formulaire ». SwiftData, un App Intent ou le tour de planification suivant consomment une valeur — pas du Markdown à reparser. Les notes de version préviennent aussi qu’un @Generable sur un enum peut coller un avertissement GenerationError. Lisez les notes avant de déboguer votre store.
L’entrée image sert aux reçus, SKU de rayon et objets à l’écran — pas à toute la photothèque. Quand la fenêtre satura, jetez d’abord les vieux payloads d’outils, pas le tour utilisateur en cours.
Étape 2 : Tools, Skills, Dynamic Profiles
La sortie structurée ne suffit pas. Le modèle doit toucher votre domaine. Un Tool Foundation Models n’est pas automatiquement un App Intent. Les Tools servent la session ; les Intents servent le système. Partagez un Store. Ne supposez pas : « on a livré un Intent, donc le modèle le voit ».
iOS 27 ajoute les Dynamic Profiles pour les agents multi-phases. La session WWDC26 Build agentic app experiences fait passer une app créative par brainstorm / plan / review : la même session peut changer de modèle, de température et de profondeur de raisonnement — PCC + raisonnement plus profond pour planifier, on-device pour relire. Le body du profil se réévalue à chaque prompt : pas d’I/O dedans.
enum PlanPhase { case brainstorm, plan, review }
func makeProfile(_ phase: PlanPhase) -> LanguageModelSession.DynamicProfile {
LanguageModelSession.DynamicProfile {
switch phase {
case .brainstorm, .plan:
return .init(model: .privateCloudCompute, tools: [SearchNotesTool(), ListCalendarTool()])
case .review:
return .init(model: SystemLanguageModel.default, tools: [ValidateDraftTool()])
}
}
}
Deux pièges de perf. Réécrire l’historique du transcript invalide le cache KV, la latence saute — appendiez quand vous pouvez. Les modèles on-device peuvent spammer les tools quand génération guidée et tools sont combinés ; plafonnez les appels consécutifs et arrêtez après des échecs répétés. Utilisez l’instrument Foundation Models plus 20–30 formulations réelles avant de traiter une démo keynote comme une couverture.
Les Skills servent le ton, les termes interdits et les dictionnaires métier que l’ops veut éditer sans resoumission. Ce n’est pas un second backend. Elles restent dans la frontière de session et partagent les règles d’audit des Tools. Pour un build FR/BE/CH, un Skill de ton professionnel français et un autre qui ne « traduit » pas les noms de produit anglophones évitent bien des allers-retours.
Étape 3 : App Intents pour Siri AI
Les App Intents ne sont pas « un extra Raccourcis ». Sous iOS 27, c’est la seule porte prise en charge de Siri vers une app tierce. SiriKit a été déprécié à la WWDC 2026, avec à peu près deux à trois ans de piste. Migrer une surface SiriKit vivante passe avant de polir le copy du chat. Point de départ : AppIntent.
Utilisez volontairement les Intents de cette génération : schémas système pour ouvrir/créer/chercher plutôt que des titres uniques mignons ; conscience de l’écran pour que Siri résolve « ça » et « le troisième » ; résultats en streaming ou longs ; remplissage multi-tours des paramètres. Indexez les entités avec IndexedEntity si Spotlight doit les voir. La recherche Visual Intelligence passe par SemanticContentDescriptor et IntentValueQuery — pas par une LanguageModelSession bourrée. Même si Siri AI manque encore sur l’iPhone UE, Raccourcis, Spotlight et les routes système futures restent sur les mêmes Intents : le travail de migration n’attend pas le calendrier DMA.
import AppIntents
struct CreateTaskIntent: AppIntent {
static var title: LocalizedStringResource = "Créer une tâche"
static var description = IntentDescription("Enregistrer une tâche dans l'app.")
@Parameter(title: "Titre")
var title: String
@Parameter(title: "Priorité")
var priority: String?
func perform() async throws -> some IntentResult & ProvidesDialog {
try await TaskStore.shared.create(title: title, priority: priority ?? "normal")
return .result(dialog: "Créé : \(title)")
}
}
Séparez le texte humain du contrat machine : title / description sont pour Siri et la galerie Raccourcis ; perform() doit être idempotent et auditable. Un acte destructeur exige une confirmation explicite. Si un paramètre ne se résout pas, laissez le système redemander — le modèle ne doit pas improviser un dialogue qui écrit des données.
Brancher le modèle sur un Intent
Architecture par défaut : le modèle rédige le brouillon, l’Intent commit.
- L’utilisateur parle ou tape dans l’app, ou Siri arrive avec une phrase en langue naturelle.
LanguageModelSessionémet un brouillon@Generable, en appelant d’abord des Tools pour lire calendrier, notes ou stock si besoin.- L’UI montre le brouillon. L’utilisateur confirme — ou vous n’auto-confirmez que des formes à faible risque.
- Construire l’
AppIntentcorrespondant etperform(). Le même Store sert Raccourcis et Spotlight. - Réécrire le résultat dans le Transcript en sortie d’outil, pour que l’édition suivante ne soit pas un démarrage à froid.
func commit(_ draft: TaskDraft) async throws {
var intent = CreateTaskIntent()
intent.title = draft.title
intent.priority = String(describing: draft.priority)
_ = try await intent.perform()
}
Pourquoi un Tool n’insère-t-il pas les lignes ? App Review, la galerie Raccourcis, les suggestions Siri et votre pile d’annulation comprennent les Intents. Une date inventée coûte peu si l’UI peut la bloquer. Elle coûte cher si un Tool a déjà créé dix rappels.
Gardez les bascules de modèle dans une fabrique de session. Les interrupteurs régionaux aussi : un build US peut préférer on-device + PCC ; un build UE ou CN peut par défaut un executor partenaire revu, jusqu’à ce que les portes DMA et de compte libèrent vraiment Siri système et le PCC. L’Intent reste CreateTaskIntent dans les deux cas — ceux qui arriveront plus tard via Siri tombent sur la même piste d’écriture.
Tests, confidentialité, checklist App Review
Les fonctions IA échouent plus souvent en review et au support que le CRUD ordinaire. Parcourez ce tableau avant de basculer GA :
| Contrôle | Comment | Échec = pas GA |
|---|---|---|
| Pas d’Apple Intelligence | iPhone 15 non Pro ou IA désactivée | Chemin critique vide ou crash |
| PCC indisponible | Simulateur, mode Avion, déconnecté | Spinner infini, aucun repli |
| Région / langue | Apple ID CN, compte UE, locale française seule | Le copy promet une Siri système absente |
| Écritures hallucinées | Prompt vague + dates appât | Calendrier ou paiements sans confirmation |
| Restes SiriKit | L’ancien chemin compile encore | « On migrera plus tard » comme plan |
| Secrets | Chercher sk- / clés fournisseur dans l’IPA | Clés tierces dans le client |
Les textes de confidentialité doivent coller aux bits. On-device peut dire « reste sur le téléphone ». PCC ou un modèle partenaire doit être nommé dans Réglages — en UE, utilisateurs et review s’y attendent, DMA ou non. La doc fournisseur veut le Trousseau (et souvent App Attest), pas une clé dans l’initialiseur de session. Journalisez schémas de brouillon et IDs d’Intent, pas les transcripts complets, vers votre hôte d’analytics.
Pour la review, trois artefacts : une capture de 30 secondes « parler → brouillon → confirmer → la ligne apparaît » dans la même locale que les captures ; un chemin de repli écrit pour le matériel sans Intelligence ; une page d’emplacements de modèle (on-device / PCC / partenaire). Gardez le marketing dans l’enveloppe du guide Siri AI WWDC 2026 — surtout pas de textes vitrine UE qui vendent des démos Siri AI US comme disponibles partout.
Si chaque portable d’ingénieur est aussi la boîte Xcode 27, la matrice d’appareils et l’hôte d’évals de nuit, l’orchestration coûtera plus que les tokens. Un nœud Apple Silicon toujours allumé est en général moins cher qu’une flotte de nouveaux portables.
Garder la boucle IA iOS 27 sur un Mac mini cloud
Sessions Foundation Models, Simulateur, proxys d’appareils et toolchain Xcode 27 veulent de la RAM, un SSD et une machine qui ne dort pas. Un Mac mini Nuvcloud, c’est de l’Apple Silicon bare metal dédié : mémoire unifiée pour compile + évals locales, SSH qui reste, et une boîte louable à la journée pour le SDK iOS 27 — plutôt que de se battre avec Slack et Figma sur le même couvercle.
Si LanguageModelSession et App Intents deviennent une régression quotidienne, voir les offres et régions Nuvcloud et garder le builder en ligne — fermer le portable sans fermer la session.
Pour aller plus loin
Questions fréquentes
Peut-on livrer une app IA iOS 27 sans Swift ?
Le chemin pris en charge pour Foundation Models et App Intents est Swift. Flutter ou React Native peuvent encore posséder l’UI, mais la session, les Tools et les Intents vont dans un module natif. Sinon Siri AI et les modèles on-device ne vous voient pas.
En quoi Foundation Models diffère-t-il d’un appel à l’API ChatGPT ?
Foundation Models est une API de session système : on-device, PCC ou partenaire protocolaire, avec Tools, génération guidée et invites de confidentialité système. Un appel ChatGPT brut, c’est votre HTTPS. Flexible, mais sans modèles on-device ni distribution Siri — clés et risque de review à votre charge.
Les App Intents deviennent-ils automatiquement des Tools du modèle ?
Non. Les Intents sont pour Siri, Raccourcis et suggestions. Les Tools sont pour LanguageModelSession. Partagez un Store ; n’attendez pas un pont magique.
Foundation Models système marche-t-il en UE et en Chine continentale ?
Ça dépend de l’appareil, de la langue système et de la région de l’Apple ID. En Chine continentale, Apple Intelligence / Siri AI système peuvent encore manquer. En UE, le DMA peut retarder Siri AI sur iPhone, iPad et Watch, le Mac restant plus souvent ouvert. Traitez les modèles système comme optionnels et gardez un LanguageModel partenaire conforme pour que le chemin critique ne soit jamais vide.
Private Cloud Compute est-il obligatoire ?
Non. Résumés courts, extraction de formulaires et brouillons locaux restent on-device. Passez au PCC seulement si la qualité ne suffit pas et que vous acceptez la frontière PCC d’Apple. L’éligibilité Small Business Program peut exonérer les frais d’API cloud PCC — relisez les conditions en vigueur.
Combien de temps SiriKit fonctionnera-t-il encore ?
Déprécié à la WWDC 2026, avec une fenêtre de compatibilité souvent citée de deux à trois ans. N’ajoutez plus de surfaces SiriKit. Planifiez la migration dans le train iOS 27, avant que les avertissements deviennent des erreurs dures.
Le Simulateur suffit-il pour App Review ?
Non. PCC, certains comportements d’outils et les chemins vocaux diffèrent sur appareil. Gardez au moins un téléphone Intelligence standard ; échantillonnez le haut de gamme à part. Ne représentez pas tous les utilisateurs avec un enregistrement 17 Pro — et pas de clips vitrine UE tournés uniquement sous compte US.
Faut-il acheter de nouveaux Mac pour Xcode 27 ?
Pas forcément de nouveaux portables de bureau. Il vous faut de l’Apple Silicon qui fait tourner le SDK iOS 27 sans dormir. Beaucoup d’équipes louent un Mac mini cloud pour séparer les builds beta du CI de production, plutôt que de renouveler chaque bureau.