expo-dev-launcher 55.0.1 → 55.0.2

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,10 @@
10
10
 
11
11
  ### 💡 Others
12
12
 
13
+ ## 55.0.2 — 2026-01-22
14
+
15
+ _This version does not introduce any user-facing changes._
16
+
13
17
  ## 55.0.1 — 2026-01-22
14
18
 
15
19
  _This version does not introduce any user-facing changes._
@@ -24,7 +28,6 @@ _This version does not introduce any user-facing changes._
24
28
  - [iOS] Add activity indicator when loading dev server URL. ([#40825](https://github.com/expo/expo/pull/40825) by [@alanjhughes](https://github.com/alanjhughes))
25
29
  - Add initial macOS support ([#41330](https://github.com/expo/expo/pull/41330) by [@gabrieldonadel](https://github.com/gabrieldonadel))
26
30
  - Add api to change bundleUrl from JS ([#42065](https://github.com/expo/expo/pull/42065) by [@alanjhughes](https://github.com/alanjhughes))
27
- - Full native interface for updates. ([#41527](https://github.com/expo/expo/pull/41527) by [@douglowder](https://github.com/douglowder))
28
31
 
29
32
  ### 🐛 Bug fixes
30
33
 
@@ -26,13 +26,13 @@ expoModule {
26
26
  }
27
27
 
28
28
  group = "host.exp.exponent"
29
- version = "55.0.1"
29
+ version = "55.0.2"
30
30
 
31
31
  android {
32
32
  namespace "expo.modules.devlauncher"
33
33
  defaultConfig {
34
34
  versionCode 9
35
- versionName "55.0.1"
35
+ versionName "55.0.2"
36
36
  }
37
37
 
38
38
  buildTypes {
@@ -42,7 +42,6 @@ import expo.modules.devlauncher.services.DependencyInjection
42
42
  import expo.modules.kotlin.weak
43
43
  import expo.modules.manifests.core.Manifest
44
44
  import expo.modules.updatesinterface.UpdatesInterface
45
- import expo.modules.updatesinterface.UpdatesDevLauncherInterface
46
45
  import kotlinx.coroutines.CoroutineScope
47
46
  import kotlinx.coroutines.Dispatchers
48
47
  import kotlinx.coroutines.launch
@@ -147,7 +146,7 @@ class DevLauncherController private constructor(
147
146
  val manifestParser = DevLauncherManifestParser(httpClient, parsedUrl, installationIDHelper.getOrCreateInstallationID(context))
148
147
  val appIntent = createAppIntent()
149
148
 
150
- (updatesInterface as UpdatesDevLauncherInterface).reset()
149
+ updatesInterface?.reset()
151
150
 
152
151
  val appLoaderFactory = DevLauncherAppLoaderFactory(
153
152
  context,
@@ -2,7 +2,7 @@ package expo.modules.devlauncher.helpers
2
2
 
3
3
  import android.content.Context
4
4
  import android.net.Uri
5
- import expo.modules.updatesinterface.UpdatesDevLauncherInterface
5
+ import expo.modules.updatesinterface.UpdatesInterface
6
6
  import org.json.JSONObject
7
7
  import java.lang.Exception
8
8
  import java.util.*
@@ -11,16 +11,16 @@ import kotlin.coroutines.resume
11
11
  import kotlin.coroutines.resumeWithException
12
12
  import kotlin.coroutines.suspendCoroutine
13
13
 
14
- suspend fun UpdatesDevLauncherInterface.loadUpdate(
14
+ suspend fun UpdatesInterface.loadUpdate(
15
15
  configuration: HashMap<String, Any>,
16
16
  context: Context,
17
17
  shouldContinue: (manifest: JSONObject) -> Boolean
18
- ): UpdatesDevLauncherInterface.Update =
18
+ ): UpdatesInterface.Update =
19
19
  suspendCoroutine { cont ->
20
20
  this.fetchUpdateWithConfiguration(
21
21
  configuration,
22
- object : UpdatesDevLauncherInterface.UpdateCallback {
23
- override fun onSuccess(update: UpdatesDevLauncherInterface.Update?) {
22
+ object : UpdatesInterface.UpdateCallback {
23
+ override fun onSuccess(update: UpdatesInterface.Update?) {
24
24
  // if the update is null, we previously aborted the fetch, so we've already resumed
25
25
  update?.let { cont.resume(update) }
26
26
  }
@@ -32,7 +32,7 @@ suspend fun UpdatesDevLauncherInterface.loadUpdate(
32
32
  return if (shouldContinue(manifest)) {
33
33
  true
34
34
  } else {
35
- cont.resume(object : UpdatesDevLauncherInterface.Update {
35
+ cont.resume(object : UpdatesInterface.Update {
36
36
  override val manifest: JSONObject = manifest
37
37
  override val launchAssetPath: String
38
38
  get() = throw Exception("Tried to access launch asset path for a manifest that was not loaded")
@@ -9,7 +9,6 @@ import expo.modules.devlauncher.helpers.createUpdatesConfigurationWithUrl
9
9
  import expo.modules.devlauncher.helpers.loadUpdate
10
10
  import expo.modules.devlauncher.launcher.manifest.DevLauncherManifestParser
11
11
  import expo.modules.manifests.core.Manifest
12
- import expo.modules.updatesinterface.UpdatesDevLauncherInterface
13
12
  import expo.modules.updatesinterface.UpdatesInterface
14
13
 
15
14
  class DevLauncherAppLoaderFactory(
@@ -37,7 +36,7 @@ class DevLauncherAppLoaderFactory(
37
36
  null
38
37
  } else {
39
38
  val configurationCandidate = createUpdatesConfigurationWithUrl(url, projectUrl, runtimeVersion, installationIDHelper.getOrCreateInstallationID(context))
40
- if ((it as UpdatesDevLauncherInterface).isValidUpdatesConfiguration(configurationCandidate)) {
39
+ if (it.isValidUpdatesConfiguration(configurationCandidate)) {
41
40
  configurationCandidate
42
41
  } else {
43
42
  null
@@ -52,7 +51,7 @@ class DevLauncherAppLoaderFactory(
52
51
  }
53
52
  DevLauncherLocalAppLoader(manifest!!, appHost, context, controller)
54
53
  } else {
55
- val update = (updatesInterface as UpdatesDevLauncherInterface?)!!.loadUpdate(validConfiguration, context) {
54
+ val update = updatesInterface!!.loadUpdate(validConfiguration, context) {
56
55
  manifest = Manifest.fromManifestJson(it) // TODO: might be able to pass actual manifest object in here
57
56
  return@loadUpdate !manifest!!.isUsingDeveloperTool()
58
57
  }
@@ -9,7 +9,6 @@ import expo.modules.core.interfaces.ReactNativeHostHandler
9
9
  import expo.modules.devlauncher.DevLauncherController
10
10
  import java.lang.ref.WeakReference
11
11
  import expo.modules.updatesinterface.UpdatesControllerRegistry
12
- import expo.modules.updatesinterface.UpdatesDevLauncherInterface
13
12
  import kotlinx.coroutines.CoroutineScope
14
13
  import kotlinx.coroutines.Dispatchers
15
14
  import kotlinx.coroutines.launch
@@ -46,7 +45,7 @@ class DevLauncherReactNativeHostHandler(context: Context) : ReactNativeHostHandl
46
45
  CoroutineScope(Dispatchers.Main).launch {
47
46
  UpdatesControllerRegistry.controller?.get()?.let {
48
47
  DevLauncherController.instance.updatesInterface = it
49
- (it as UpdatesDevLauncherInterface).updatesInterfaceCallbacks = WeakReference(DevLauncherController.instance)
48
+ it.updatesInterfaceCallbacks = WeakReference(DevLauncherController.instance)
50
49
  }
51
50
  }
52
51
  }
@@ -45,7 +45,7 @@ NS_ASSUME_NONNULL_BEGIN
45
45
  @property (nonatomic, weak) EXAppContext * _Nullable appContext;
46
46
  @property (nonatomic, strong) EXDevLauncherPendingDeepLinkRegistry *pendingDeepLinkRegistry;
47
47
  @property (nonatomic, strong) EXDevLauncherRecentlyOpenedAppsRegistry *recentlyOpenedAppsRegistry;
48
- @property (nonatomic, strong) id<EXUpdatesDevLauncherInterface> updatesInterface;
48
+ @property (nonatomic, strong) id<EXUpdatesExternalInterface> updatesInterface;
49
49
 
50
50
  + (instancetype)sharedInstance;
51
51
 
@@ -270,8 +270,8 @@
270
270
 
271
271
  - (nullable NSURL *)sourceUrl
272
272
  {
273
- if (_shouldPreferUpdatesInterfaceSourceUrl && _updatesInterface && ((id<EXUpdatesDevLauncherInterface>)_updatesInterface).launchAssetURL) {
274
- return ((id<EXUpdatesDevLauncherInterface>)_updatesInterface).launchAssetURL;
273
+ if (_shouldPreferUpdatesInterfaceSourceUrl && _updatesInterface && ((id<EXUpdatesExternalInterface>)_updatesInterface).launchAssetURL) {
274
+ return ((id<EXUpdatesExternalInterface>)_updatesInterface).launchAssetURL;
275
275
  }
276
276
  return _sourceUrl;
277
277
  }
@@ -406,7 +406,7 @@
406
406
  // do nothing for now
407
407
  } success:^(NSDictionary * _Nullable manifest) {
408
408
  if (manifest) {
409
- launchExpoApp(((id<EXUpdatesDevLauncherInterface>)self->_updatesInterface).launchAssetURL, [EXManifestsManifestFactory manifestForManifestJSON:manifest]);
409
+ launchExpoApp(((id<EXUpdatesExternalInterface>)self->_updatesInterface).launchAssetURL, [EXManifestsManifestFactory manifestForManifestJSON:manifest]);
410
410
  }
411
411
  } error:onError];
412
412
  };
@@ -669,7 +669,7 @@
669
669
  return updatesConfig;
670
670
  }
671
671
 
672
- - (void)updatesExternalInterfaceDidRequestRelaunch:(id<EXUpdatesDevLauncherInterface> _Nonnull)updatesExternalInterface {
672
+ - (void)updatesExternalInterfaceDidRequestRelaunch:(id<EXUpdatesExternalInterface> _Nonnull)updatesExternalInterface {
673
673
  NSURL * _Nullable appUrl = self.appManifestURLWithFallback;
674
674
  if (!appUrl) {
675
675
  return;
@@ -60,7 +60,7 @@ public class ExpoDevLauncherReactDelegateHandler: ExpoReactDelegateHandler, EXDe
60
60
  self.reactDelegate = reactDelegate
61
61
  self.launchOptions = launchOptions
62
62
 
63
- if let sharedController = UpdatesControllerRegistry.sharedInstance.controller as? UpdatesDevLauncherInterface {
63
+ if let sharedController = UpdatesControllerRegistry.sharedInstance.controller {
64
64
  // for some reason the swift compiler and bridge are having issues here
65
65
  EXDevLauncherController.sharedInstance().updatesInterface = sharedController
66
66
  sharedController.updatesExternalInterfaceDelegate = EXDevLauncherController.sharedInstance()
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "expo-dev-launcher",
3
3
  "title": "Expo Development Launcher",
4
- "version": "55.0.1",
4
+ "version": "55.0.2",
5
5
  "description": "Pre-release version of the Expo development launcher package for testing.",
6
6
  "repository": {
7
7
  "type": "git",
@@ -15,12 +15,12 @@
15
15
  "license": "MIT",
16
16
  "homepage": "https://docs.expo.dev",
17
17
  "dependencies": {
18
- "@expo/schema-utils": "^55.0.0",
19
- "expo-dev-menu": "55.0.0",
18
+ "@expo/schema-utils": "^55.0.1",
19
+ "expo-dev-menu": "55.0.1",
20
20
  "expo-manifests": "~55.0.1"
21
21
  },
22
22
  "peerDependencies": {
23
23
  "expo": "*"
24
24
  },
25
- "gitHead": "9e6e4e518083f0516edf32a14a39f8afbbd049e4"
25
+ "gitHead": "4728ba25fbd4d5835780306de78a83bd1628e271"
26
26
  }