expo-dev-launcher 6.1.0-canary-20251119-961a032 → 6.1.0-canary-20251127-587bc53

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
@@ -17,12 +17,14 @@
17
17
  - [iOS] Fix React Native dev menu not showing up in 0.83.x ([#40819](https://github.com/expo/expo/pull/40819) by [@gabrieldonadel](https://github.com/gabrieldonadel))
18
18
  - [iOS] Fix port scanning on pysical devices. ([#40824](https://github.com/expo/expo/pull/40824) by [@alanjhughes](https://github.com/alanjhughes))
19
19
  - [iOS] Fix RCTDevMenuConfiguration in release builds ([#40870](https://github.com/expo/expo/pull/40870) by [@gabrieldonadel](https://github.com/gabrieldonadel))
20
+ - [iOS] Fix Safe Area being ignored on physical devices ([#41119](https://github.com/expo/expo/pull/41119) by [@betomoedano](https://github.com/betomoedano))
20
21
 
21
22
  ### 💡 Others
22
23
 
23
24
  - [Android] Migrated from `kotlinOptions` to `compilerOptions` DSL. ([#39794](https://github.com/expo/expo/pull/39794) by [@huextrat](https://github.com/huextrat))
24
25
  - [android] Make reactNativeHost optional in ReactHostWrapper ([#40085](https://github.com/expo/expo/pull/40085) by [@gabrieldonadel](https://github.com/gabrieldonadel))
25
26
  - [Android] Remove `ReactHostWrapper` ([#40295](https://github.com/expo/expo/pull/40295) by [@gabrieldonadel](https://github.com/gabrieldonadel))
27
+ - [iOS] Remove custom `ReactNativeFactory`. ([#41084](https://github.com/expo/expo/pull/41084) by [@alanjhughes](https://github.com/alanjhughes))
26
28
 
27
29
  ## 6.0.16 - 2025-10-21
28
30
 
@@ -20,13 +20,13 @@ expoModule {
20
20
  }
21
21
 
22
22
  group = "host.exp.exponent"
23
- version = "6.1.0-canary-20251119-961a032"
23
+ version = "6.1.0-canary-20251127-587bc53"
24
24
 
25
25
  android {
26
26
  namespace "expo.modules.devlauncher"
27
27
  defaultConfig {
28
28
  versionCode 9
29
- versionName "6.1.0-canary-20251119-961a032"
29
+ versionName "6.1.0-canary-20251127-587bc53"
30
30
  }
31
31
 
32
32
  buildTypes {
@@ -15,8 +15,7 @@
15
15
  #import <EXDevLauncher/EXDevLauncherUpdatesHelper.h>
16
16
  #import <EXDevLauncher/RCTPackagerConnection+EXDevLauncherPackagerConnectionInterceptor.h>
17
17
 
18
- #import <EXDevLauncher/EXDevLauncherReactNativeFactory.h>
19
- #import <EXDevMenu/DevClientNoOpLoadingView.h>
18
+
20
19
  #import <ReactAppDependencyProvider/RCTAppDependencyProvider.h>
21
20
 
22
21
  #if __has_include(<EXDevLauncher/EXDevLauncher-Swift.h>)
@@ -53,7 +52,7 @@
53
52
  @property (nonatomic, strong) EXDevLauncherErrorManager *errorManager;
54
53
  @property (nonatomic, strong) EXDevLauncherInstallationIDHelper *installationIDHelper;
55
54
  @property (nonatomic, strong, nullable) EXDevLauncherNetworkInterceptor *networkInterceptor;
56
- @property (nonatomic, strong) EXDevLauncherReactNativeFactory *reactNativeFactory;
55
+ @property (nonatomic, strong) RCTReactNativeFactory *reactNativeFactory;
57
56
  @property (nonatomic, strong) DevLauncherViewController *devLauncherViewController;
58
57
  @property (nonatomic, strong) NSURL *lastOpenedAppUrl;
59
58
  @property (nonatomic, strong) DevLauncherDevMenuDelegate *devMenuDelegate;
@@ -84,7 +83,7 @@
84
83
  self.shouldPreferUpdatesInterfaceSourceUrl = NO;
85
84
 
86
85
  self.dependencyProvider = [RCTAppDependencyProvider new];
87
- self.reactNativeFactory = [[EXDevLauncherReactNativeFactory alloc] initWithDelegate:self releaseLevel:[self getReactNativeReleaseLevel]];
86
+ self.reactNativeFactory = [[RCTReactNativeFactory alloc] initWithDelegate:self releaseLevel:[self getReactNativeReleaseLevel]];
88
87
  self.devMenuDelegate = [[DevLauncherDevMenuDelegate alloc] initWithController:self];
89
88
  [[DevMenuManager shared] setDelegate:self.devMenuDelegate];
90
89
  }
@@ -4,6 +4,35 @@ import ExpoModulesCore
4
4
  import EXUpdatesInterface
5
5
  import React
6
6
 
7
+ private class DevLauncherWrapperView: UIView {
8
+ weak var devLauncherViewController: UIViewController?
9
+
10
+ override func didMoveToWindow() {
11
+ super.didMoveToWindow()
12
+
13
+ guard let devLauncherViewController,
14
+ let window,
15
+ let rootViewController = window.rootViewController else {
16
+ return
17
+ }
18
+
19
+ if devLauncherViewController.parent != rootViewController {
20
+ rootViewController.addChild(devLauncherViewController)
21
+ devLauncherViewController.didMove(toParent: rootViewController)
22
+ devLauncherViewController.view.setNeedsLayout()
23
+ devLauncherViewController.view.layoutIfNeeded()
24
+ }
25
+ }
26
+
27
+ override func willMove(toWindow newWindow: UIWindow?) {
28
+ super.willMove(toWindow: newWindow)
29
+ if newWindow == nil {
30
+ devLauncherViewController?.willMove(toParent: nil)
31
+ devLauncherViewController?.removeFromParent()
32
+ }
33
+ }
34
+ }
35
+
7
36
  @objc
8
37
  public class ExpoDevLauncherReactDelegateHandler: ExpoReactDelegateHandler, EXDevLauncherControllerDelegate {
9
38
  private weak var reactNativeFactory: RCTReactNativeFactory?
@@ -39,7 +68,8 @@ public class ExpoDevLauncherReactDelegateHandler: ExpoReactDelegateHandler, EXDe
39
68
  rootViewController = viewController
40
69
 
41
70
  // We need to create a wrapper View because React Native Factory will reassign rootViewController later
42
- let wrapperView = UIView()
71
+ let wrapperView = DevLauncherWrapperView()
72
+ wrapperView.devLauncherViewController = viewController
43
73
  wrapperView.addSubview(viewController.view)
44
74
  viewController.view.translatesAutoresizingMaskIntoConstraints = false
45
75
  NSLayoutConstraint.activate([
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "expo-dev-launcher",
3
3
  "title": "Expo Development Launcher",
4
- "version": "6.1.0-canary-20251119-961a032",
4
+ "version": "6.1.0-canary-20251127-587bc53",
5
5
  "description": "Pre-release version of the Expo development launcher package for testing.",
6
6
  "repository": {
7
7
  "type": "git",
@@ -15,10 +15,10 @@
15
15
  "license": "MIT",
16
16
  "homepage": "https://docs.expo.dev",
17
17
  "dependencies": {
18
- "expo-dev-menu": "7.1.0-canary-20251119-961a032",
19
- "expo-manifests": "1.0.10-canary-20251119-961a032"
18
+ "expo-dev-menu": "7.1.0-canary-20251127-587bc53",
19
+ "expo-manifests": "1.0.10-canary-20251127-587bc53"
20
20
  },
21
21
  "peerDependencies": {
22
- "expo": "55.0.0-canary-20251119-961a032"
22
+ "expo": "55.0.0-canary-20251127-587bc53"
23
23
  }
24
24
  }
@@ -1,19 +0,0 @@
1
- #pragma once
2
-
3
- #if __has_include(<React-RCTAppDelegate/RCTReactNativeFactory.h>)
4
- #import <React-RCTAppDelegate/RCTReactNativeFactory.h>
5
- #elif __has_include(<React_RCTAppDelegate/RCTReactNativeFactory.h>)
6
- // for importing the header from framework, the dash will be transformed to underscore
7
- #import <React_RCTAppDelegate/RCTReactNativeFactory.h>
8
- #endif
9
-
10
- @interface RCTReactNativeFactory () <
11
- RCTComponentViewFactoryComponentProvider,
12
- RCTHostDelegate,
13
- RCTJSRuntimeConfiguratorProtocol,
14
- RCTTurboModuleManagerDelegate>
15
- @end
16
-
17
- @interface EXDevLauncherReactNativeFactory : RCTReactNativeFactory
18
-
19
- @end
@@ -1,14 +0,0 @@
1
- #import <EXDevLauncher/EXDevLauncherReactNativeFactory.h>
2
- #import <EXDevMenu/DevClientNoOpLoadingView.h>
3
-
4
- @implementation EXDevLauncherReactNativeFactory
5
-
6
- - (Class)getModuleClassFromName:(const char *)name {
7
- // Overrides DevLoadingView ("Connect to Metro to develop JavaScript") as no-op when loading dev-launcher bundle
8
- if (strcmp(name, "DevLoadingView") == 0) {
9
- return [DevClientNoOpLoadingView class];
10
- }
11
- return [super getModuleClassFromName:name];
12
- }
13
-
14
- @end