expo-modules-core 56.0.22 → 56.0.23

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,12 @@
10
10
 
11
11
  ### 💡 Others
12
12
 
13
+ ## 56.0.23 — 2026-08-06
14
+
15
+ ### 🐛 Bug fixes
16
+
17
+ - [Android] Fixed hosted Compose views missing layout after reattachment or in-place configuration changes. ([#48370](https://github.com/expo/expo/issues/48370) by [@lujjjh](https://github.com/lujjjh))
18
+
13
19
  ## 56.0.22 — 2026-07-23
14
20
 
15
21
  ### 🎉 New features
@@ -27,7 +27,7 @@ if (shouldIncludeCompose) {
27
27
  }
28
28
 
29
29
  group = 'host.exp.exponent'
30
- version = '56.0.22'
30
+ version = '56.0.23'
31
31
 
32
32
  def isExpoModulesCoreTests = {
33
33
  Gradle gradle = getGradle()
@@ -94,7 +94,7 @@ android {
94
94
  defaultConfig {
95
95
  consumerProguardFiles 'proguard-rules.pro'
96
96
  versionCode 1
97
- versionName "56.0.22"
97
+ versionName "56.0.23"
98
98
  buildConfigField "String", "EXPO_MODULES_CORE_VERSION", "\"${versionName}\""
99
99
  buildConfigField "boolean", "IS_NEW_ARCHITECTURE_ENABLED", "true"
100
100
 
@@ -2,6 +2,7 @@ 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
5
6
  import android.util.Log
6
7
  import android.view.View
7
8
  import android.view.ViewGroup
@@ -113,6 +114,15 @@ abstract class ExpoComposeView<T : ComposeProps>(
113
114
  }
114
115
  }
115
116
 
117
+ override fun dispatchConfigurationChanged(newConfig: Configuration) {
118
+ super.dispatchConfigurationChanged(newConfig)
119
+ // React Native owns this view's bounds and may not schedule another Android layout pass
120
+ // when a configuration change leaves its Yoga layout unchanged.
121
+ if (withHostingView && isAttachedToWindow && isLaidOut) {
122
+ requestLayout()
123
+ }
124
+ }
125
+
116
126
  /**
117
127
  * Validates that this non-hosting Compose view has a valid Compose parent.
118
128
  *
@@ -193,6 +203,15 @@ abstract class ExpoComposeView<T : ComposeProps>(
193
203
  if (withHostingView) {
194
204
  clipChildren = false
195
205
  clipToPadding = false
206
+ addOnAttachStateChangeListener(
207
+ OnAttachAfterDetachmentListener(
208
+ onAttachAfterDetachment = {
209
+ // Restore the Android layout pass after a real detach. The listener deliberately
210
+ // ignores the first attach and React Native's same-loop reparenting.
211
+ requestLayout()
212
+ }
213
+ )
214
+ )
196
215
  addComposeView()
197
216
  } else {
198
217
  this.visibility = GONE
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "expo-modules-core",
3
- "version": "56.0.22",
3
+ "version": "56.0.23",
4
4
  "description": "The core of Expo Modules architecture",
5
5
  "main": "src/index.ts",
6
6
  "types": "build/index.d.ts",
@@ -66,7 +66,7 @@
66
66
  "@types/invariant": "^2.2.33",
67
67
  "expo-module-scripts": "56.0.3"
68
68
  },
69
- "gitHead": "60c9da71e15060aa859a7a6e85f4b14062b761f4",
69
+ "gitHead": "eebecc21d8d868d97e72bd61bb8e668fb2feb704",
70
70
  "scripts": {
71
71
  "build": "expo-module build",
72
72
  "clean": "expo-module clean",