expo-modules-core 55.0.22 → 55.0.24
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 +12 -0
- package/android/build.gradle +2 -2
- package/ios/Core/Views/SwiftUI/SwiftUIVirtualViewObjC.mm +3 -0
- package/ios/Fabric/ExpoFabricViewObjC.h +10 -2
- package/ios/Platform/Platform.h +0 -2
- package/ios/Protocols/EXReactDelegateProtocol.h +6 -1
- package/ios/Utilities/ConstantsProvider.swift +20 -2
- package/package.json +2 -2
- package/prebuilds/output/debug/xcframeworks/ExpoModulesCore.tar.gz +0 -0
- package/prebuilds/output/release/xcframeworks/ExpoModulesCore.tar.gz +0 -0
package/CHANGELOG.md
CHANGED
|
@@ -10,6 +10,18 @@
|
|
|
10
10
|
|
|
11
11
|
### 💡 Others
|
|
12
12
|
|
|
13
|
+
## 55.0.24 — 2026-05-01
|
|
14
|
+
|
|
15
|
+
### 🐛 Bug fixes
|
|
16
|
+
|
|
17
|
+
- [iOS] Guard against null `eventEmitter` in `SwiftUIVirtualView.dispatchEvent` to prevent SIGSEGV after view teardown. ([#45175](https://github.com/expo/expo/pull/45175) by [@DORI2001](https://github.com/DORI2001))
|
|
18
|
+
|
|
19
|
+
## 55.0.23 — 2026-04-21
|
|
20
|
+
|
|
21
|
+
### 🐛 Bug fixes
|
|
22
|
+
|
|
23
|
+
- [iOS] Fix finding EXConstants.bundle inside framework bundle for brownfield ([#44810](https://github.com/expo/expo/pull/44810) by [@gabrieldonadel](https://github.com/gabrieldonadel))
|
|
24
|
+
|
|
13
25
|
## 55.0.22 — 2026-04-09
|
|
14
26
|
|
|
15
27
|
### 🐛 Bug fixes
|
package/android/build.gradle
CHANGED
|
@@ -29,7 +29,7 @@ if (shouldIncludeCompose) {
|
|
|
29
29
|
}
|
|
30
30
|
|
|
31
31
|
group = 'host.exp.exponent'
|
|
32
|
-
version = '55.0.
|
|
32
|
+
version = '55.0.24'
|
|
33
33
|
|
|
34
34
|
def isExpoModulesCoreTests = {
|
|
35
35
|
Gradle gradle = getGradle()
|
|
@@ -96,7 +96,7 @@ android {
|
|
|
96
96
|
defaultConfig {
|
|
97
97
|
consumerProguardFiles 'proguard-rules.pro'
|
|
98
98
|
versionCode 1
|
|
99
|
-
versionName "55.0.
|
|
99
|
+
versionName "55.0.24"
|
|
100
100
|
buildConfigField "String", "EXPO_MODULES_CORE_VERSION", "\"${versionName}\""
|
|
101
101
|
buildConfigField "boolean", "IS_NEW_ARCHITECTURE_ENABLED", "true"
|
|
102
102
|
|
|
@@ -327,6 +327,9 @@ static std::unordered_map<std::string, expo::ExpoViewComponentDescriptor::Flavor
|
|
|
327
327
|
|
|
328
328
|
- (void)dispatchEvent:(nonnull NSString *)eventName payload:(nullable id)payload
|
|
329
329
|
{
|
|
330
|
+
if (!_eventEmitter) {
|
|
331
|
+
return;
|
|
332
|
+
}
|
|
330
333
|
const auto &eventEmitter = static_cast<const expo::ExpoViewEventEmitter &>(*_eventEmitter);
|
|
331
334
|
|
|
332
335
|
eventEmitter.dispatch([normalizeEventName(eventName) UTF8String], [payload](jsi::Runtime &runtime) {
|
|
@@ -11,11 +11,19 @@
|
|
|
11
11
|
|
|
12
12
|
#else
|
|
13
13
|
|
|
14
|
-
// Interface visible in Swift - we expose
|
|
15
|
-
// The actual C++ implementation inherits from RCTViewComponentView
|
|
14
|
+
// Interface visible in Swift - we expose the view base class so Swift sees it as a UIView subclass.
|
|
15
|
+
// The actual C++ implementation inherits from RCTViewComponentView.
|
|
16
16
|
// Methods that Swift needs to override must be declared here (not in a category) so Swift
|
|
17
17
|
// can properly override them.
|
|
18
|
+
//
|
|
19
|
+
// On macOS, react-native-macos provides RCTUIView (an NSView subclass with iOS-compatible methods
|
|
20
|
+
// like layoutSubviews and didMoveToWindow). We must inherit from it so Swift overrides resolve correctly.
|
|
21
|
+
#if TARGET_OS_OSX
|
|
22
|
+
#import <React/RCTUIKit.h>
|
|
23
|
+
@interface ExpoFabricViewObjC : RCTUIView
|
|
24
|
+
#else
|
|
18
25
|
@interface ExpoFabricViewObjC : UIView
|
|
26
|
+
#endif
|
|
19
27
|
|
|
20
28
|
/*
|
|
21
29
|
* Called for mounting (attaching) a child component view inside `self` component view.
|
package/ios/Platform/Platform.h
CHANGED
|
@@ -14,10 +14,15 @@ NS_ASSUME_NONNULL_BEGIN
|
|
|
14
14
|
/**
|
|
15
15
|
Creates a React root view with the given module name and properties.
|
|
16
16
|
*/
|
|
17
|
+
#if !TARGET_OS_OSX
|
|
17
18
|
- (UIView *)createReactRootViewWithModuleName:(NSString *)moduleName
|
|
18
19
|
initialProperties:(nullable NSDictionary<NSString *, id> *)initialProperties
|
|
19
20
|
launchOptions:(nullable NSDictionary<UIApplicationLaunchOptionsKey, id> *)launchOptions;
|
|
20
|
-
|
|
21
|
+
#else
|
|
22
|
+
- (NSView *)createReactRootViewWithModuleName:(NSString *)moduleName
|
|
23
|
+
initialProperties:(nullable NSDictionary<NSString *, id> *)initialProperties
|
|
24
|
+
launchOptions:(nullable NSDictionary *)launchOptions;
|
|
25
|
+
#endif
|
|
21
26
|
/**
|
|
22
27
|
Returns the bundle URL for the React Native bundle.
|
|
23
28
|
*/
|
|
@@ -87,9 +87,27 @@ private func getDeviceName() -> String {
|
|
|
87
87
|
#endif
|
|
88
88
|
}
|
|
89
89
|
|
|
90
|
+
private func findEXConstantsBundle() -> Bundle? {
|
|
91
|
+
let bundleName = "EXConstants.bundle"
|
|
92
|
+
|
|
93
|
+
// Check the main app bundle first (standard CocoaPods setup)
|
|
94
|
+
if let bundleUrl = Bundle.main.resourceURL?.appendingPathComponent(bundleName),
|
|
95
|
+
let bundle = Bundle(url: bundleUrl) {
|
|
96
|
+
return bundle
|
|
97
|
+
}
|
|
98
|
+
|
|
99
|
+
// Fall back to the bundle containing this code, which handles the case where
|
|
100
|
+
// EXConstants.bundle is embedded inside a dynamic framework (e.g. expo-brownfield xcframework)
|
|
101
|
+
if let bundleUrl = Bundle(for: ConstantsProvider.self).resourceURL?.appendingPathComponent(bundleName),
|
|
102
|
+
let bundle = Bundle(url: bundleUrl) {
|
|
103
|
+
return bundle
|
|
104
|
+
}
|
|
105
|
+
|
|
106
|
+
return nil
|
|
107
|
+
}
|
|
108
|
+
|
|
90
109
|
private func getManifest() -> [String: Any]? {
|
|
91
|
-
guard let
|
|
92
|
-
let bundle = Bundle(url: bundleUrl),
|
|
110
|
+
guard let bundle = findEXConstantsBundle(),
|
|
93
111
|
let url = bundle.url(forResource: "app", withExtension: "config") else {
|
|
94
112
|
log.error("Unable to find the embedded app config")
|
|
95
113
|
return nil
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "expo-modules-core",
|
|
3
|
-
"version": "55.0.
|
|
3
|
+
"version": "55.0.24",
|
|
4
4
|
"description": "The core of Expo Modules architecture",
|
|
5
5
|
"main": "src/index.ts",
|
|
6
6
|
"types": "build/index.d.ts",
|
|
@@ -72,5 +72,5 @@
|
|
|
72
72
|
"@testing-library/react-native": "^13.3.0",
|
|
73
73
|
"expo-module-scripts": "^55.0.2"
|
|
74
74
|
},
|
|
75
|
-
"gitHead": "
|
|
75
|
+
"gitHead": "1528d89d7b1076a4d8b88eb7b1e9e9c4e8c8f9d8"
|
|
76
76
|
}
|
|
Binary file
|
|
Binary file
|