nativekeel 0.1.22 → 0.1.23
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +1 -1
- package/package.json +1 -1
- package/src/stability.js +7 -2
package/README.md
CHANGED
|
@@ -6,7 +6,7 @@ Health check for React Native and Expo apps. One command, no install, no account
|
|
|
6
6
|
npx nativekeel
|
|
7
7
|
```
|
|
8
8
|
|
|
9
|
-
**What's new in 0.1.
|
|
9
|
+
**What's new in 0.1.23:** the core `SafeAreaView` does nothing on Android, and with target SDK 35+ Android 15 draws your app under the status bar: now reported as medium. **0.1.22:** auth tokens in AsyncStorage/MMKV are found by what is stored, not only by the key name. Recent releases added a *Start here* list in every report, hacking risks mapped to OWASP MASVS, crash and performance checks. Every check is tuned on 470 open-source React Native and Expo apps to keep false alarms out ([what we found in them](https://dev.to/keel_alican_akyol/we-scanned-470-open-source-react-native-apps-here-is-what-breaks-them-5072)). [All releases →](https://nativekeel.com/changelog)
|
|
10
10
|
|
|
11
11
|
```
|
|
12
12
|
Summary 4 critical · 5 high · 4 medium · 6 low
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "nativekeel",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.23",
|
|
4
4
|
"description": "Health check for React Native and Expo apps: upgrade blockers, store deadlines, crash risks, vulnerable dependencies and leaked secrets, with a step-by-step upgrade plan.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"bin": {
|
package/src/stability.js
CHANGED
|
@@ -328,12 +328,17 @@ export function removedCoreImports(project) {
|
|
|
328
328
|
if (deprecated.size) {
|
|
329
329
|
const names = [...deprecated.keys()];
|
|
330
330
|
const warnsNow = minor !== null && names.some((n) => minor >= DEPRECATED_IN_CORE[n].since);
|
|
331
|
+
// Core SafeAreaView only ever applied to iOS. Targeting API 35+ (Expo SDK 52+ does), Android 15
|
|
332
|
+
// draws edge-to-edge, so those screens slide under the status bar today.
|
|
333
|
+
const target = project.android && project.android.targetSdk;
|
|
334
|
+
const expoMajor = project.expoVersion ? Number(String(project.expoVersion).split('.')[0]) : null;
|
|
335
|
+
const edgeToEdge = deprecated.has('SafeAreaView') && ((target && target >= 35) || (!target && expoMajor !== null && expoMajor >= 52));
|
|
331
336
|
findings.push({
|
|
332
337
|
id: 'deprecated-core-imports',
|
|
333
|
-
severity: 'low',
|
|
338
|
+
severity: edgeToEdge ? 'medium' : 'low',
|
|
334
339
|
area: 'react-native',
|
|
335
340
|
title: `${names.join(', ')} ${names.length === 1 ? 'is' : 'are'} deprecated in React Native core and will be removed`,
|
|
336
|
-
detail: `${[...deprecated].map(([n, at]) => `${n} (${at}, deprecated in 0.${DEPRECATED_IN_CORE[n].since}) → ${DEPRECATED_IN_CORE[n].use}`).join('; ')}. ${warnsNow ? 'They already log a deprecation warning.' : 'They start logging a warning when you upgrade.'} Once removed, the import returns undefined and the screen crashes, so move off them while it is a small change
|
|
341
|
+
detail: `${[...deprecated].map(([n, at]) => `${n} (${at}, deprecated in 0.${DEPRECATED_IN_CORE[n].since}) → ${DEPRECATED_IN_CORE[n].use}`).join('; ')}. ${warnsNow ? 'They already log a deprecation warning.' : 'They start logging a warning when you upgrade.'} Once removed, the import returns undefined and the screen crashes, so move off them while it is a small change.${edgeToEdge ? ' SafeAreaView also does nothing on Android: with your target SDK, Android 15 and newer draw the app edge-to-edge, so those screens already sit under the status bar there. react-native-safe-area-context handles both platforms.' : ''}`,
|
|
337
342
|
fix: { kind: 'deprecated-core', step: `Replace ${names.map((n) => `\`${n}\` (→ ${DEPRECATED_IN_CORE[n].use})`).join(', ')} before React Native removes ${names.length === 1 ? 'it' : 'them'}.` },
|
|
338
343
|
});
|
|
339
344
|
}
|