expo-dev-launcher 55.0.12 → 55.0.14

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
+ ## 55.0.14 — 2026-03-09
14
+
15
+ _This version does not introduce any user-facing changes._
16
+
17
+ ## 55.0.13 — 2026-03-09
18
+
19
+ ### 🐛 Bug fixes
20
+
21
+ - [iOS] Fix missing navigation bar padding ([#43672](https://github.com/expo/expo/pull/43672) by [@alanjhughes](https://github.com/alanjhughes))
22
+
13
23
  ## 55.0.12 — 2026-03-04
14
24
 
15
25
  ### 🐛 Bug fixes
@@ -26,13 +26,13 @@ expoModule {
26
26
  }
27
27
 
28
28
  group = "host.exp.exponent"
29
- version = "55.0.12"
29
+ version = "55.0.14"
30
30
 
31
31
  android {
32
32
  namespace "expo.modules.devlauncher"
33
33
  defaultConfig {
34
34
  versionCode 9
35
- versionName "55.0.12"
35
+ versionName "55.0.14"
36
36
  }
37
37
 
38
38
  buildTypes {
@@ -117,26 +117,49 @@ public class ExpoDevLauncherReactDelegateHandler: ExpoReactDelegateHandler, EXDe
117
117
  )
118
118
  developmentClientController.appBridge = RCTBridge.current()
119
119
 
120
- guard let rootViewController = rootViewController ?? self.reactDelegate?.createRootViewController() else {
120
+ let targetVC: UIViewController
121
+ #if !os(macOS)
122
+ let windowRootVC = rootViewController?.view?.window?.rootViewController
123
+ if let windowRootVC, windowRootVC.view is DevLauncherWrapperView {
124
+ // Greenfield: set root view on the window's root VC so react-native-screens parents its
125
+ // UINavigationController to a VC in the containment hierarchy with correct layout margins.
126
+ targetVC = windowRootVC
127
+ } else if let rootViewController {
128
+ // Brownfield: the wrapper is embedded in a custom hierarchy, fall back to
129
+ // DevLauncherViewController to avoid replacing the host app's root view.
130
+ targetVC = rootViewController
131
+ } else if let fallbackVC = self.reactDelegate?.createRootViewController() {
132
+ targetVC = fallbackVC
133
+ } else {
121
134
  fatalError("Invalid rootViewController returned from ExpoReactDelegate")
122
135
  }
136
+ #else
137
+ // macOS: NSWindow has no rootViewController, fall back to DevLauncherViewController.
138
+ if let rootViewController {
139
+ targetVC = rootViewController
140
+ } else if let fallbackVC = self.reactDelegate?.createRootViewController() {
141
+ targetVC = fallbackVC
142
+ } else {
143
+ fatalError("Invalid rootViewController returned from ExpoReactDelegate")
144
+ }
145
+ #endif
123
146
  #if os(macOS)
124
147
  let newViewController = UIViewController()
125
148
  newViewController.view = rootView
126
149
 
127
- rootViewController.view.subviews.forEach { $0.removeFromSuperview() }
128
- rootViewController.addChild(newViewController)
129
- rootViewController.view.addSubview(newViewController.view)
150
+ targetVC.view.subviews.forEach { $0.removeFromSuperview() }
151
+ targetVC.addChild(newViewController)
152
+ targetVC.view.addSubview(newViewController.view)
130
153
 
131
154
  newViewController.view.translatesAutoresizingMaskIntoConstraints = false
132
155
  NSLayoutConstraint.activate([
133
- newViewController.view.topAnchor.constraint(equalTo: rootViewController.view.topAnchor),
134
- newViewController.view.leadingAnchor.constraint(equalTo: rootViewController.view.leadingAnchor),
135
- newViewController.view.trailingAnchor.constraint(equalTo: rootViewController.view.trailingAnchor),
136
- newViewController.view.bottomAnchor.constraint(equalTo: rootViewController.view.bottomAnchor)
156
+ newViewController.view.topAnchor.constraint(equalTo: targetVC.view.topAnchor),
157
+ newViewController.view.leadingAnchor.constraint(equalTo: targetVC.view.leadingAnchor),
158
+ newViewController.view.trailingAnchor.constraint(equalTo: targetVC.view.trailingAnchor),
159
+ newViewController.view.bottomAnchor.constraint(equalTo: targetVC.view.bottomAnchor)
137
160
  ])
138
161
  #else
139
- rootViewController.view = rootView
162
+ targetVC.view = rootView
140
163
  #endif
141
164
  // it is purposeful that we don't clean up saved properties here, because we may initialize
142
165
  // several React instances over a single app lifetime and we want them all to have the same
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.12",
4
+ "version": "55.0.14",
5
5
  "description": "Pre-release version of the Expo development launcher package for testing.",
6
6
  "repository": {
7
7
  "type": "git",
@@ -16,11 +16,11 @@
16
16
  "homepage": "https://docs.expo.dev",
17
17
  "dependencies": {
18
18
  "@expo/schema-utils": "^55.0.2",
19
- "expo-dev-menu": "55.0.11",
19
+ "expo-dev-menu": "55.0.12",
20
20
  "expo-manifests": "~55.0.9"
21
21
  },
22
22
  "peerDependencies": {
23
23
  "expo": "*"
24
24
  },
25
- "gitHead": "2d0f6652717a0c88f4fb82b7b288bfcbfe0f2373"
25
+ "gitHead": "4555cab5869e94b1152cf2cbbfa6d545766362e3"
26
26
  }