sdkbump
Vérifie les apps iOS natif, Flutter et React Native face aux changements du SDK iOS 27 et indique le correctif pour chaque cas.
Licence: MIT
Une app compilée avec le SDK iOS 27 qui ne déclare aucune scene compile sans avertissement puis s'arrête au lancement. sdkbump lit les fichiers d'un projet iOS natif, Flutter ou React Native/Expo (project.pbxproj, Info.plist, sources Swift et Objective-C, package.json, pubspec.yaml), signale les problèmes de cycle de vie UIScene sous forme de règles SCN001 à SCN004, et choisit le correctif adapté à l'écosystème et à la version du projet. Il ne compile, n'exécute ni ne modifie le projet.
Fonctionnalités
- Un verdict qui répond à « est-ce que ça se lance ? » : échec au lancement, lancement sur un écran noir, lancement via un package de contournement, ou lancement non déterminé
- iOS natif, Flutter (app et exemple de plugin), React Native et Expo dans un même rapport avec les mêmes identifiants de règle
- Le correctif choisi selon l'écosystème et la version : React Native 0.88 ou un scene delegate écrit à la main, l'option opt-in du SDK 57 d'Expo ou le SDK 58, la migration automatique de Flutter ou les étapes manuelles
- Règles conservées comme données dans rules/ios27.json, validées avec zod ; chaque règle, correctif et contournement porte une source, et un test échoue si ce n'est pas le cas
- Rapports terminal, Markdown et JSON, avec --fail-on et les codes de sortie 0, 1 et 2 pour la CI
- Reconnaît react-native-uiscene-bridge et react-native-xcode27 et affiche les constats qu'ils traitent à l'exécution comme « handled », avec leurs limites
- Ne lit que des fichiers, donc n'a pas besoin de Xcode et fonctionne aussi sous Linux ; le texte provenant du projet vérifié est affiché en texte brut dans chaque format
Démarrage rapide
1npx @mcamdali/sdkbump --format markdown --output sdkbump.mdInstallation
npm (global)
1npm i -g @mcamdali/sdkbump2sdkbumpnpx
1npx @mcamdali/sdkbumpHomebrew
1brew install muhittincamdali/tap/sdkbumpCaptures d'écran

Chronologie
Premier commit et première version, 0.1.0 : SCN001 à SCN004 pour les projets iOS natif, Flutter, React Native et Expo
0.1.1 et 0.1.2 : les fichiers du projet ne sont lus que s'il s'agit de fichiers normaux à l'intérieur du projet ; un Info.plist illisible donne désormais « Launch not determined » plutôt qu'un échec de lancement
0.1.3 : publié sur npm sous le nom @mcamdali/sdkbump ; caractères de contrôle nettoyés dans chaque format de rapport et sur stderr