sdkbump
Checks native iOS, Flutter and React Native apps for the iOS 27 SDK changes and names the fix for each.
License: MIT
An app built with the iOS 27 SDK that declares no scene compiles without a warning and then stops at launch. sdkbump reads a native iOS, Flutter or React Native/Expo project's files (project.pbxproj, Info.plist, Swift and Objective-C sources, package.json, pubspec.yaml), reports the UIScene life cycle problems as rules SCN001 to SCN004, and picks the fix that applies to the project's ecosystem and version. It does not build, run or change the project.
Features
- A verdict that answers "will it launch?": fails to launch, launches to a black screen, launches through a workaround package, or launch not determined
- Native iOS, Flutter (app and plugin example), React Native and Expo in one report with the same rule IDs
- The fix chosen by ecosystem and version: React Native 0.88 or a hand-written scene delegate, Expo SDK 57's opt-in or SDK 58, Flutter's automatic migration or the manual steps
- Rules kept as data in rules/ios27.json, validated with zod; every rule, fix and workaround carries a source, and a test fails when one does not
- Terminal, Markdown and JSON reports, with --fail-on and exit codes 0, 1 and 2 for CI
- Recognises react-native-uiscene-bridge and react-native-xcode27 and shows the findings they handle at run time as handled, with their limits
- Reads files only, so it needs no Xcode and also runs on Linux; text from the checked project is printed as plain text in every format
Quickstart
1npx @mcamdali/sdkbump --format markdown --output sdkbump.mdInstallation
npm (global)
1npm i -g @mcamdali/sdkbump2sdkbumpnpx
1npx @mcamdali/sdkbumpHomebrew
1brew install muhittincamdali/tap/sdkbumpScreenshots

Timeline
First commit and first release, 0.1.0: SCN001 to SCN004 for native iOS, Flutter, React Native and Expo projects
0.1.1 and 0.1.2: project files read only when they are regular files inside the project; an unreadable Info.plist gives "Launch not determined" instead of a launch failure
0.1.3: published on npm as @mcamdali/sdkbump; control characters cleaned in every report format and on stderr