expo-dev-launcher 57.0.7 → 57.0.9

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/CHANGELOG.md CHANGED
@@ -10,6 +10,16 @@
10
10
 
11
11
  ### 💡 Others
12
12
 
13
+ ## 57.0.9 — 2026-07-23
14
+
15
+ ### 🐛 Bug fixes
16
+
17
+ - [Android] Fix onUserLeaveHint NPE and lost EAS sign-in redirect. ([#47347](https://github.com/expo/expo/pull/47347) by [@vicprz](https://github.com/vicprz))
18
+
19
+ ## 57.0.8 — 2026-07-22
20
+
21
+ _This version does not introduce any user-facing changes._
22
+
13
23
  ## 57.0.7 — 2026-07-17
14
24
 
15
25
  _This version does not introduce any user-facing changes._
@@ -26,13 +26,13 @@ expoModule {
26
26
  }
27
27
 
28
28
  group = "host.exp.exponent"
29
- version = "57.0.7"
29
+ version = "57.0.9"
30
30
 
31
31
  android {
32
32
  namespace "expo.modules.devlauncher"
33
33
  defaultConfig {
34
34
  versionCode 9
35
- versionName "57.0.7"
35
+ versionName "57.0.9"
36
36
  }
37
37
 
38
38
  buildTypes {
@@ -8,6 +8,8 @@ import androidx.activity.result.contract.ActivityResultContract
8
8
  import androidx.appcompat.app.AppCompatActivity
9
9
  import androidx.browser.customtabs.CustomTabsIntent
10
10
  import androidx.core.net.toUri
11
+ import expo.modules.devlauncher.launcher.DevLauncherActivity
12
+ import expo.modules.devlauncher.services.DependencyInjection
11
13
  import java.net.URLEncoder
12
14
 
13
15
  enum class AuthRequestType(val type: String) {
@@ -57,11 +59,43 @@ class AuthActivity : AppCompatActivity() {
57
59
  }
58
60
  }
59
61
 
62
+ private fun consumeAuthRedirect(intent: Intent?): Boolean {
63
+ val data = intent?.data
64
+ if (intent?.action != ACTION_VIEW || data?.scheme != "expo-dev-launcher" || data.host != "auth") {
65
+ return false
66
+ }
67
+ val sessionSecret = data.getQueryParameter("session_secret")
68
+ val userNameOrEmail = data.getQueryParameter("username_or_email")
69
+ if (sessionSecret.isNullOrEmpty() || userNameOrEmail.isNullOrEmpty()) {
70
+ setResult(RESULT_CANCELED)
71
+ } else {
72
+ DependencyInjection.sessionService?.setSession(Session(sessionSecret))
73
+ setResult(
74
+ RESULT_OK,
75
+ Intent().apply {
76
+ putExtra(SESSION_KEY, sessionSecret)
77
+ putExtra(USERNAME_KEY, userNameOrEmail)
78
+ }
79
+ )
80
+ }
81
+ return true
82
+ }
83
+
60
84
  var wasStarted = false
61
85
 
62
86
  override fun onCreate(savedInstanceState: Bundle?) {
63
87
  super.onCreate(savedInstanceState)
64
88
 
89
+ if (consumeAuthRedirect(intent)) {
90
+ wasStarted = true // guard onResume's RESULT_CANCELED path on this instance
91
+ startActivity(
92
+ Intent(this, DevLauncherActivity::class.java)
93
+ .addFlags(Intent.FLAG_ACTIVITY_NEW_TASK)
94
+ )
95
+ finishAndRemoveTask()
96
+ return
97
+ }
98
+
65
99
  val extraType = intent.getStringExtra(AUTH_REQUEST_TYPE_KEY)
66
100
  if (extraType != null) {
67
101
  wasStarted = true
@@ -90,21 +124,7 @@ class AuthActivity : AppCompatActivity() {
90
124
  override fun onNewIntent(intent: Intent) {
91
125
  super.onNewIntent(intent)
92
126
 
93
- if (intent.action == ACTION_VIEW && intent.data?.scheme == "expo-dev-launcher" && intent.data?.host == "auth") {
94
- val sessionSecret = intent.data?.getQueryParameter("session_secret")
95
- val userNameOrEmail = intent.data?.getQueryParameter("username_or_email")
96
-
97
- if (sessionSecret.isNullOrEmpty() || userNameOrEmail.isNullOrEmpty()) {
98
- setResult(RESULT_CANCELED)
99
- finish()
100
- return
101
- }
102
-
103
- val resultIntent = Intent().apply {
104
- putExtra(SESSION_KEY, sessionSecret)
105
- putExtra(USERNAME_KEY, userNameOrEmail)
106
- }
107
- setResult(RESULT_OK, resultIntent)
127
+ if (consumeAuthRedirect(intent)) {
108
128
  finish()
109
129
  }
110
130
  }
@@ -12,6 +12,7 @@ open class DevLauncherReactActivityNOPDelegate(activity: ReactActivity) :
12
12
  override fun onCreate(savedInstanceState: Bundle?) {}
13
13
  override fun onResume() {}
14
14
  override fun onPause() {}
15
+ override fun onUserLeaveHint() {}
15
16
  override fun onDestroy() {}
16
17
  override fun onNewIntent(intent: Intent?): Boolean = true
17
18
  override fun onBackPressed(): Boolean = true
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "expo-dev-launcher",
3
3
  "title": "Expo Development Launcher",
4
- "version": "57.0.7",
4
+ "version": "57.0.9",
5
5
  "description": "Pre-release version of the Expo development launcher package for testing.",
6
6
  "repository": {
7
7
  "type": "git",
@@ -16,7 +16,7 @@
16
16
  "homepage": "https://docs.expo.dev",
17
17
  "dependencies": {
18
18
  "@expo/schema-utils": "^57.0.2",
19
- "expo-dev-menu": "~57.0.7",
19
+ "expo-dev-menu": "~57.0.9",
20
20
  "expo-manifests": "~57.0.1"
21
21
  },
22
22
  "peerDependencies": {
@@ -25,9 +25,9 @@
25
25
  },
26
26
  "devDependencies": {
27
27
  "@types/node": "^22.14.0",
28
- "expo": "57.0.7"
28
+ "expo": "57.0.8"
29
29
  },
30
- "gitHead": "0dac79c8469fa00b76fb8f402c47ed61f3d6317e",
30
+ "gitHead": "fd9d8a5a544dcb10ac047e78780f5f53d67d352f",
31
31
  "scripts": {
32
32
  "build:plugin": "expo-module build plugin",
33
33
  "expo-module": "expo-module"
@@ -1 +1 @@
1
- {"root":["./src/index.ts","./src/pluginconfig.ts","./src/withdevlauncher.ts"],"version":"6.0.2"}
1
+ {"root":["./src/index.ts","./src/pluginconfig.ts","./src/withdevlauncher.ts"],"version":"6.0.3"}