sdkbump
Comprueba apps nativas de iOS, Flutter y React Native frente a los cambios del SDK de iOS 27 y indica la solución para cada una.
Licencia: MIT
Una app compilada con el SDK de iOS 27 que no declara ninguna scene compila sin aviso y luego se detiene al lanzarse. sdkbump lee los archivos de un proyecto nativo de iOS, Flutter o React Native/Expo (project.pbxproj, Info.plist, fuentes Swift y Objective-C, package.json, pubspec.yaml), reporta los problemas del ciclo de vida de UIScene como las reglas SCN001 a SCN004, y elige la solución que corresponde al ecosistema y la versión del proyecto. No compila, ejecuta ni modifica el proyecto.
Características
- Un veredicto que responde "¿se va a lanzar?": falla al lanzarse, se lanza a una pantalla negra, se lanza gracias a un paquete workaround, o lanzamiento no determinado
- iOS nativo, Flutter (app y ejemplo de plugin), React Native y Expo en un solo informe con los mismos IDs de regla
- La solución elegida según el ecosistema y la versión: React Native 0.88 o un scene delegate escrito a mano, el opt-in de Expo SDK 57 o SDK 58, la migración automática de Flutter o los pasos manuales
- Las reglas se mantienen como datos en rules/ios27.json, validadas con zod; cada regla, solución y workaround lleva una fuente, y un test falla cuando no la lleva
- Informes en terminal, Markdown y JSON, con --fail-on y códigos de salida 0, 1 y 2 para CI
- Reconoce react-native-uiscene-bridge y react-native-xcode27, y muestra los hallazgos que resuelven en tiempo de ejecución como resueltos ("handled"), con sus límites
- Solo lee archivos, así que no necesita Xcode y también funciona en Linux; el texto del proyecto analizado se imprime como texto plano en todos los formatos
Inicio rápido
1npx @mcamdali/sdkbump --format markdown --output sdkbump.mdInstalación
npm (global)
1npm i -g @mcamdali/sdkbump2sdkbumpnpx
1npx @mcamdali/sdkbumpHomebrew
1brew install muhittincamdali/tap/sdkbumpCapturas de pantalla

Cronología
Primer commit y primera versión, 0.1.0: SCN001 a SCN004 para proyectos nativos de iOS, Flutter, React Native y Expo
0.1.1 y 0.1.2: los archivos del proyecto solo se leen cuando son archivos regulares dentro del proyecto; un Info.plist ilegible da "Launch not determined" en lugar de un fallo de lanzamiento
0.1.3: publicado en npm como @mcamdali/sdkbump; los caracteres de control se limpian en todos los formatos de informe y en stderr