expo-modules-core 58.0.10 → 58.0.11

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
@@ -1,5 +1,15 @@
1
1
  # Changelog
2
2
 
3
+ ## 58.0.11
4
+
5
+ ### Patch Changes
6
+
7
+ - Bump precompiled artifacts due to ABI breakage in expo-modules-jsi@58.0.6. ([#50881](https://github.com/expo/expo/pull/50881) by [@kitten](https://github.com/kitten))
8
+ - [iOS] `@Record` now accepts properties that hold free-form `Any` values, such as `[String: Any]?` or `[Any]`. ([#50660](https://github.com/expo/expo/pull/50660) by [@tsapeta](https://github.com/tsapeta))
9
+ - [Android] Fixed Expo views using Android layout not completing system-forced layout passes. ([#48679](https://github.com/expo/expo/pull/48679) by [@lujjjh](https://github.com/lujjjh))
10
+ - Updated dependencies. ([#50881](https://github.com/expo/expo/pull/50881), [#50660](https://github.com/expo/expo/pull/50660))
11
+ - expo-modules-jsi@58.0.7
12
+
3
13
  ## 58.0.10
4
14
 
5
15
  ### Patch Changes
@@ -46,7 +46,7 @@ if (shouldIncludeCompose) {
46
46
  }
47
47
 
48
48
  group = 'host.exp.exponent'
49
- version = '58.0.10'
49
+ version = '58.0.11'
50
50
 
51
51
  def isExpoModulesCoreTests = {
52
52
  Gradle gradle = getGradle()
@@ -97,7 +97,7 @@ if (workletsProject != null) {
97
97
 
98
98
  def reactNativeWorkletsRootDir = workletsProject?.projectDir?.parentFile
99
99
 
100
- def expoModulesV2Version = "0.2.0"
100
+ def expoModulesV2Version = "0.2.2"
101
101
 
102
102
  configurations {
103
103
  // Artifact-only: the C++ sources, not something to put on any classpath.
@@ -175,7 +175,7 @@ android {
175
175
  defaultConfig {
176
176
  consumerProguardFiles 'proguard-rules.pro'
177
177
  versionCode 1
178
- versionName "58.0.10"
178
+ versionName "58.0.11"
179
179
  buildConfigField "String", "EXPO_MODULES_CORE_VERSION", "\"${versionName}\""
180
180
  buildConfigField "boolean", "IS_NEW_ARCHITECTURE_ENABLED", "true"
181
181
 
@@ -2,7 +2,6 @@ package expo.modules.kotlin.views
2
2
 
3
3
  import android.annotation.SuppressLint
4
4
  import android.content.Context
5
- import android.content.res.Configuration
6
5
  import android.util.Log
7
6
  import android.view.View
8
7
  import android.view.ViewGroup
@@ -118,15 +117,6 @@ abstract class ExpoComposeView<T : ComposeProps>(
118
117
  }
119
118
  }
120
119
 
121
- override fun dispatchConfigurationChanged(newConfig: Configuration) {
122
- super.dispatchConfigurationChanged(newConfig)
123
- // React Native owns this view's bounds and may not schedule another Android layout pass
124
- // when a configuration change leaves its Yoga layout unchanged.
125
- if (withHostingView && isAttachedToWindow && isLaidOut) {
126
- requestLayout()
127
- }
128
- }
129
-
130
120
  /**
131
121
  * Validates that this non-hosting Compose view has a valid Compose parent.
132
122
  *
@@ -35,7 +35,8 @@ abstract class ExpoView(
35
35
 
36
36
  /**
37
37
  * Manually trigger measure and layout.
38
- * If [shouldUseAndroidLayout] is set to `true`, this method will be called automatically after [requestLayout].
38
+ * If [shouldUseAndroidLayout] is set to `true`, this method will be called automatically after
39
+ * [requestLayout] or [forceLayout].
39
40
  */
40
41
  @UiThread
41
42
  fun measureAndLayout() {
@@ -54,6 +55,19 @@ abstract class ExpoView(
54
55
  }
55
56
  }
56
57
 
58
+ override fun forceLayout() {
59
+ super.forceLayout()
60
+ if (shouldUseAndroidLayout && isAttachedToWindow && isLaidOut) {
61
+ // ViewRootImpl can force-layout the hierarchy without React Native laying out its
62
+ // managed children. Preserve the Android-layout contract at that boundary.
63
+ post {
64
+ if (isAttachedToWindow && isLayoutRequested) {
65
+ measureAndLayout()
66
+ }
67
+ }
68
+ }
69
+ }
70
+
57
71
  open fun clipToPaddingBox(canvas: Canvas) {
58
72
  // When the border radius is set, we need to clip the content to the padding box.
59
73
  // This is because the border radius is applied to the background drawable, not the view itself.
@@ -34,7 +34,7 @@ object ExpoModulesV2Host {
34
34
  val registry = ModuleRegistry()
35
35
  modules.forEach(registry::register)
36
36
  runtime = ReactRuntime.attach(reactContext, registry)
37
- logger.info("✅ Expo Modules v2 installed ${modules.size} module(s) on globalThis.expoV2")
37
+ logger.info("✅ Expo Modules v2 installed ${modules.size} module(s) on globalThis.expo.modules")
38
38
  } catch (e: Throwable) {
39
39
  logger.error("❌ Cannot install Expo Modules v2: $e", e)
40
40
  }
@@ -33,7 +33,7 @@ dependencies {
33
33
  implementation("com.facebook.react:react-native-gradle-plugin")
34
34
  implementation("org.jetbrains.kotlinx:kotlinx-serialization-json:1.6.3")
35
35
  implementation("io.github.expo.pika:pika-gradle:1.1.0")
36
- implementation("io.github.expo:expo-modules-v2-gradle-plugin:0.2.0")
36
+ implementation("io.github.expo:expo-modules-v2-gradle-plugin:0.2.2")
37
37
 
38
38
  if (isExpoAutolinkingSettingsPluginAvailable) {
39
39
  implementation("expo.modules:expo-autolinking-plugin-shared")
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "expo-modules-core",
3
- "version": "58.0.10",
3
+ "version": "58.0.11",
4
4
  "description": "The core of Expo Modules architecture",
5
5
  "keywords": [
6
6
  "expo",
@@ -64,16 +64,16 @@
64
64
  "./package.json": "./package.json"
65
65
  },
66
66
  "dependencies": {
67
- "expo-modules-jsi": "~58.0.6",
67
+ "expo-modules-jsi": "~58.0.7",
68
68
  "expo-modules-macros": "0.14.0",
69
69
  "invariant": "^2.2.4"
70
70
  },
71
71
  "devDependencies": {
72
- "@testing-library/react-native": "^13.3.0",
72
+ "@testing-library/react-native": "^14.0.1",
73
73
  "@types/invariant": "^2.2.33",
74
74
  "@types/react": "~19.3.0",
75
75
  "@types/react-dom": "^19.1.7",
76
- "expo-module-scripts": "56.0.4",
76
+ "expo-module-scripts": "56.0.5",
77
77
  "react-dom": "19.3.0"
78
78
  },
79
79
  "peerDependencies": {