Skip to content

Commit 54a5ff9

Browse files
louiszawadzkifacebook-github-bot
authored andcommitted
Set iOS AppState to inactive when app is launching (#37690)
Summary: When an iOS app launches, the current `AppStateStatus` that is returned is `"unknown"`. However, `RCTSharedApplication().applicationState` returns `UIApplicationStateInactive` - which makes sense since the app is still showing its launch screen. I suggest to return `"inactive"` instead of `"unknown"`, since it makes more sense and `"unknown"` is not mentioned in the [official documentation](https://reactnative.dev/docs/appstate). I also edited the annotation for the `"inactive"` status type to make it more accurate. bypass-github-export-checks ## Changelog: [IOS] [CHANGED] - Set initial AppState status to "inactive" instead of "unknown" Pull Request resolved: #37690 Test Plan: I played a bit with the `rn-tester` app to display the `AppStateExample` [component](https://github.com/facebook/react-native/blob/main/packages/rn-tester/js/examples/AppState/AppStateExample.js). I did not manage to display its content, but I managed to render it and log from [its render function](https://github.com/facebook/react-native/blob/main/packages/rn-tester/js/examples/AppState/AppStateExample.js#L84). This is what I log in the `render` function: ![image](https://github.com/facebook/react-native/assets/8973379/76212f48-6d2e-4b14-b2a4-72c58e39bf3d) Here is the log I saw before the change: ![image](https://github.com/facebook/react-native/assets/8973379/f3c56047-dfca-4bad-b676-0fc79b990dd9) and after the change: ![image](https://github.com/facebook/react-native/assets/8973379/8de84b31-69a7-4547-b251-483ddde68e25) Reviewed By: cortinico Differential Revision: D46729548 Pulled By: cipolleschi fbshipit-source-id: 18d2d606e0b77306811bd898b28858746c713e12
1 parent 09c9541 commit 54a5ff9

File tree

2 files changed

+6
-2
lines changed

2 files changed

+6
-2
lines changed

packages/react-native/Libraries/AppState/AppState.d.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ import {NativeEventSubscription} from '../EventEmitter/RCTNativeAppEventEmitter'
2424
* App States
2525
* active - The app is running in the foreground
2626
* background - The app is running in the background. The user is either in another app or on the home screen
27-
* inactive [iOS] - This is a transition state that currently never happens for typical React Native apps.
27+
* inactive [iOS] - This is a transition state that happens when the app launches, is asking for permissions or when a call or SMS message is received.
2828
* unknown [iOS] - Initial value until the current app state is determined
2929
* extension [iOS] - The app is running as an app extension
3030
*

packages/react-native/React/CoreModules/RCTAppState.mm

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,11 @@
2020
static NSDictionary *states;
2121
static dispatch_once_t onceToken;
2222
dispatch_once(&onceToken, ^{
23-
states = @{@(UIApplicationStateActive) : @"active", @(UIApplicationStateBackground) : @"background"};
23+
states = @{
24+
@(UIApplicationStateActive) : @"active",
25+
@(UIApplicationStateBackground) : @"background",
26+
@(UIApplicationStateInactive) : @"inactive"
27+
};
2428
});
2529

2630
if (RCTRunningInAppExtension()) {

0 commit comments

Comments
 (0)