expo-modules-core 58.0.13 → 58.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
@@ -1,5 +1,12 @@
1
1
  # Changelog
2
2
 
3
+ ## 58.0.14
4
+
5
+ ### Patch Changes
6
+
7
+ - [Android] Fixed a data race on the Fabric view state-prop map when Expo registers its view components while React Native builds a component descriptor registry on another thread. ([#51044](https://github.com/expo/expo/pull/51044) by [@hirvesh](https://github.com/hirvesh))
8
+ - [Internal] Import `LogBox`, `DevSettings`, and `NativeComponentRegistry` from the `react-native` public API. ([#50862](https://github.com/expo/expo/pull/50862) by [@huntie](https://github.com/huntie))
9
+
3
10
  ## 58.0.13
4
11
 
5
12
  ### Patch Changes
@@ -46,7 +46,7 @@ if (shouldIncludeCompose) {
46
46
  }
47
47
 
48
48
  group = 'host.exp.exponent'
49
- version = '58.0.13'
49
+ version = '58.0.14'
50
50
 
51
51
  def isExpoModulesCoreTests = {
52
52
  Gradle gradle = getGradle()
@@ -175,7 +175,7 @@ android {
175
175
  defaultConfig {
176
176
  consumerProguardFiles 'proguard-rules.pro'
177
177
  versionCode 1
178
- versionName "58.0.13"
178
+ versionName "58.0.14"
179
179
  buildConfigField "String", "EXPO_MODULES_CORE_VERSION", "\"${versionName}\""
180
180
  buildConfigField "boolean", "IS_NEW_ARCHITECTURE_ENABLED", "true"
181
181
 
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "reactNativeVersion": "0.88.0",
3
- "sourceHash": "6f9421c9afcc3239b0995cea1757806a",
3
+ "sourceHash": "cfbedf19c9c9a434a2d9cd5dc4c91880",
4
4
  "variants": [
5
5
  "debug",
6
6
  "release"
@@ -16,5 +16,5 @@
16
16
  "libexpo-modules-jsi.so"
17
17
  ],
18
18
  "stripped": true,
19
- "createdAt": "2026-10-05T21:13:27.466871505Z"
19
+ "createdAt": "2026-10-06T16:00:54.933258624Z"
20
20
  }
Binary file
@@ -8,6 +8,7 @@ namespace react = facebook::react;
8
8
  namespace expo {
9
9
 
10
10
  StatePropMapType statePropMap = {};
11
+ std::shared_mutex statePropMapMutex;
11
12
 
12
13
  react::ComponentDescriptor::Unique concreteExpoComponentDescriptorConstructor(
13
14
  const react::ComponentDescriptorParameters &parameters
@@ -17,6 +18,7 @@ react::ComponentDescriptor::Unique concreteExpoComponentDescriptorConstructor(
17
18
  react::RawPropsParser(/*useRawPropsJsiValue=*/true)
18
19
  );
19
20
 
21
+ std::shared_lock lock(statePropMapMutex);
20
22
  if (statePropMap.contains(std::static_pointer_cast<std::string const>(parameters.flavor))) {
21
23
  descriptor->setStateProps(
22
24
  statePropMap.at(
@@ -5,6 +5,8 @@
5
5
  #include <react/renderer/core/ComponentDescriptor.h>
6
6
  #include "../types/FrontendConverter.h"
7
7
 
8
+ #include <shared_mutex>
9
+
8
10
  namespace react = facebook::react;
9
11
 
10
12
  namespace expo {
@@ -16,6 +18,10 @@ using StatePropMapType = std::unordered_map<
16
18
 
17
19
  extern StatePropMapType statePropMap;
18
20
 
21
+ // Guards `statePropMap`. It is written when Expo registers its view components and read
22
+ // when React Native builds a component descriptor registry, and these can run on different threads.
23
+ extern std::shared_mutex statePropMapMutex;
24
+
19
25
  react::ComponentDescriptor::Unique concreteExpoComponentDescriptorConstructor(
20
26
  const react::ComponentDescriptorParameters &parameters
21
27
  );
@@ -58,10 +58,14 @@ void FabricComponentsRegistry::registerComponentsRegistry(
58
58
  propMap.emplace(propName, converter);
59
59
  }
60
60
 
61
- statePropMap.insert_or_assign(
62
- flavor,
63
- propMap
64
- );
61
+ {
62
+ // Released before `add` below, which constructs descriptors that take the shared lock.
63
+ std::unique_lock lock(statePropMapMutex);
64
+ statePropMap.insert_or_assign(
65
+ flavor,
66
+ propMap
67
+ );
68
+ }
65
69
 
66
70
  providerRegistry->add(react::ComponentDescriptorProvider{
67
71
  reinterpret_cast<react::ComponentHandle>(componentName),
@@ -2,4 +2,4 @@ import { type ComponentType } from 'react';
2
2
  /**
3
3
  * A drop-in replacement for `requireNativeComponent`.
4
4
  */
5
- export declare function requireNativeViewManager<P>(moduleName: string, viewName?: string): ComponentType<P>;
5
+ export declare function requireNativeViewManager<P extends object>(moduleName: string, viewName?: string): ComponentType<P>;
@@ -1,10 +1,8 @@
1
1
  // Copyright © 2024 650 Industries.
2
- /// <reference path="ts-declarations/NativeComponentRegistry.d.ts" />
3
2
  'use client';
4
3
  import { jsx as _jsx } from "react/jsx-runtime";
5
4
  import { createRef, PureComponent } from 'react';
6
- import { findNodeHandle } from 'react-native';
7
- import { get as componentRegistryGet } from 'react-native/Libraries/NativeComponent/NativeComponentRegistry';
5
+ import { findNodeHandle, NativeComponentRegistry } from 'react-native';
8
6
  import { SharedObject } from './SharedObject';
9
7
  import { requireNativeModule } from './requireNativeModule';
10
8
  // To make the transition from React Native's `requireNativeComponent` to Expo's
@@ -24,7 +22,7 @@ import { requireNativeModule } from './requireNativeModule';
24
22
  const appIdentifier = globalThis.expo?.['__expo_app_identifier__'] ?? '';
25
23
  const viewNameSuffix = appIdentifier ? `_${appIdentifier}` : '';
26
24
  const nativeViewName = viewName ? `ViewManagerAdapter_${moduleName}_${viewName}${viewNameSuffix}` : `ViewManagerAdapter_${moduleName}${viewNameSuffix}`;
27
- return componentRegistryGet(nativeViewName, ()=>{
25
+ return NativeComponentRegistry.get(nativeViewName, ()=>{
28
26
  const expoViewConfig = globalThis.expo?.getViewConfig(moduleName, viewName);
29
27
  if (!expoViewConfig) {
30
28
  console.warn('Unable to get the view config for %s from module %s', viewName ?? 'default view', moduleName);
@@ -1 +1 @@
1
- {"version":3,"sources":["NativeViewManagerAdapter.native.tsx"],"sourcesContent":[null],"names":["createRef","PureComponent","findNodeHandle","get","componentRegistryGet","SharedObject","requireNativeModule","nativeComponentsCache","Map","requireNativeComponent","moduleName","viewName","appIdentifier","globalThis","expo","viewNameSuffix","nativeViewName","expoViewConfig","getViewConfig","console","warn","uiViewClassName","directEventTypes","validAttributes","addAttributeProcessing","processPropValue","value","sharedObjectId","__expo_shared_object_id__","descriptor","process","attributes","key","Object","keys","requireCachedNativeComponent","cacheKey","cachedNativeComponent","nativeComponent","set","mapAriaProps","props","accessibilityState","accessibilityValue","ariaBusy","ariaChecked","ariaDisabled","ariaExpanded","ariaHidden","ariaLabel","ariaLabelledBy","ariaLive","ariaSelected","ariaValueMax","ariaValueMin","ariaValueNow","ariaValueText","id","tabIndex","resolvedProps","undefined","accessibilityLabelledBy","split","accessibilityLabel","accessibilityLiveRegion","accessibilityElementsHidden","importantForAccessibility","nativeID","focusable","busy","checked","disabled","expanded","selected","max","min","now","text","requireNativeViewManager","ReactNativeComponent","NativeComponent","displayName","nativeRef","nativeTag","componentDidMount","current","getNativeRef","render","ref","nativeModule","nativeViewPrototype","ViewPrototypes","assign","prototype"],"mappings":"AAAA,mCAAmC;AAEnC,qEAAqE;AAErE;;AAEA,SAA6CA,SAAS,EAAEC,aAAa,QAAQ,QAAQ;AACrF,SAAkCC,cAAc,QAA4B,eAAe;AAC3F,SAASC,OAAOC,oBAAoB,QAAQ,iEAAiE;AAE7G,SAASC,YAAY,QAAQ,iBAAiB;AAC9C,SAASC,mBAAmB,QAAQ,wBAAwB;AAE5D,gFAAgF;AAChF,0FAA0F;AAC1F,4CAA4C;AAC5C,EAAE;AACF,+FAA+F;AAC/F,mGAAmG;AACnG,mGAAmG;AACnG,+DAA+D;AAE/D;;CAEC,GACD,MAAMC,wBAAwB,IAAIC;AAkBlC;;CAEC,GACD,SAASC,uBACPC,UAAkB,EAClBC,QAAiB;IAEjB,MAAMC,gBAAgBC,WAAWC,IAAI,EAAE,CAAC,0BAA0B,IAAI;IACtE,MAAMC,iBAAiBH,gBAAgB,CAAC,CAAC,EAAEA,eAAe,GAAG;IAE7D,MAAMI,iBAAiBL,WACnB,CAAC,mBAAmB,EAAED,WAAW,CAAC,EAAEC,WAAWI,gBAAgB,GAC/D,CAAC,mBAAmB,EAAEL,aAAaK,gBAAgB;IAEvD,OAAOX,qBAA4BY,gBAAgB;QACjD,MAAMC,iBAAiBJ,WAAWC,IAAI,EAAEI,cAAcR,YAAYC;QAElE,IAAI,CAACM,gBAAgB;YACnBE,QAAQC,IAAI,CACV,uDACAT,YAAY,gBACZD;YAEF,OAAO;gBAAEW,iBAAiBL;YAAe;QAC3C;QAEA,OAAO;YACLK,iBAAiBL;YACjBM,kBAAkBL,eAAeK,gBAAgB;YACjDC,iBAAiBC,uBAAuBP,eAAeM,eAAe;QACxE;IACF;AACF;AAEA;;;CAGC,GACD,SAASE,iBAAiBC,KAAc;IACtC,IAAIA,SAAS,QAAQ,OAAOA,UAAU,YAAYA,iBAAiBrB,cAAc;QAC/E,uFAAuF;QACvF,qFAAqF;QACrF,wBAAwB;QACxB,mBAAmB;QACnB,MAAMsB,iBAAiBD,MAAME,yBAAyB;QACtD,IAAI,OAAOD,mBAAmB,UAAU;YACtC,OAAOA;QACT;IACF;IACA,OAAOD;AACT;AAEA;;;;;CAKC,GACD,SAASF,uBAAuBD,eAAoC;IAClE,MAAMM,aAAa;QAAEC,SAASL;IAAiB;IAC/C,MAAMM,aAAkC,CAAC;IACzC,KAAK,MAAMC,OAAOC,OAAOC,IAAI,CAACX,iBAAkB;QAC9CQ,UAAU,CAACC,IAAI,GAAGH;IACpB;IACA,OAAOE;AACT;AAEA;;;;CAIC,GACD,SAASI,6BACPzB,UAAkB,EAClBC,QAAiB;IAEjB,MAAMyB,WAAW,GAAG1B,WAAW,CAAC,EAAEC,UAAU;IAC5C,MAAM0B,wBAAwB9B,sBAAsBJ,GAAG,CAACiC;IAExD,IAAI,CAACC,uBAAuB;QAC1B,MAAMC,kBAAkB7B,uBAA8BC,YAAYC;QAClEJ,sBAAsBgC,GAAG,CAACH,UAAUE;QACpC,OAAOA;IACT;IACA,OAAOD;AACT;AAEA;;;CAGC,GACD,SAASG,aAAaC,KAA0B;IAC9C,MAAM,EACJC,kBAAkB,EAClBC,kBAAkB,EAClB,aAAaC,QAAQ,EACrB,gBAAgBC,WAAW,EAC3B,iBAAiBC,YAAY,EAC7B,iBAAiBC,YAAY,EAC7B,eAAeC,UAAU,EACzB,cAAcC,SAAS,EACvB,mBAAmBC,cAAc,EACjC,aAAaC,QAAQ,EACrB,iBAAiBC,YAAY,EAC7B,iBAAiBC,YAAY,EAC7B,iBAAiBC,YAAY,EAC7B,iBAAiBC,YAAY,EAC7B,kBAAkBC,aAAa,EAC/BC,EAAE,EACFC,QAAQ,EACR,GAAGC,eACJ,GAAGlB;IAEJ,IAAIS,mBAAmBU,WAAW;QAChCD,cAAcE,uBAAuB,GAAGX,eAAeY,KAAK,CAAC;IAC/D;IACA,IAAIb,cAAcW,WAAW;QAC3BD,cAAcI,kBAAkB,GAAGd;IACrC;IACA,IAAIE,aAAaS,WAAW;QAC1BD,cAAcK,uBAAuB,GAAGb,aAAa,QAAQ,SAASA;IACxE;IACA,IAAIH,eAAeY,WAAW;QAC5BD,cAAcM,2BAA2B,GAAGjB;QAC5C,IAAIA,eAAe,MAAM;YACvBW,cAAcO,yBAAyB,GAAG;QAC5C;IACF;IACA,IAAIT,OAAOG,WAAW;QACpBD,cAAcQ,QAAQ,GAAGV;IAC3B;IACA,IAAIC,aAAaE,WAAW;QAC1BD,cAAcS,SAAS,GAAG,CAACV;IAC7B;IACA,IACEhB,sBAAsB,QACtBE,YAAY,QACZC,eAAe,QACfC,gBAAgB,QAChBC,gBAAgB,QAChBK,gBAAgB,MAChB;QACAO,cAAcjB,kBAAkB,GAAG;YACjC2B,MAAMzB,YAAYF,oBAAoB2B;YACtCC,SAASzB,eAAeH,oBAAoB4B;YAC5CC,UAAUzB,gBAAgBJ,oBAAoB6B;YAC9CC,UAAUzB,gBAAgBL,oBAAoB8B;YAC9CC,UAAUrB,gBAAgBV,oBAAoB+B;QAChD;IACF;IACA,IACE9B,sBAAsB,QACtBU,gBAAgB,QAChBC,gBAAgB,QAChBC,gBAAgB,QAChBC,iBAAiB,MACjB;QACAG,cAAchB,kBAAkB,GAAG;YACjC+B,KAAKrB,gBAAgBV,oBAAoB+B;YACzCC,KAAKrB,gBAAgBX,oBAAoBgC;YACzCC,KAAKrB,gBAAgBZ,oBAAoBiC;YACzCC,MAAMrB,iBAAiBb,oBAAoBkC;QAC7C;IACF;IACA,OAAOlB;AACT;AAEA;;CAEC,GACD,OAAO,SAASmB,yBACdpE,UAAkB,EAClBC,QAAiB;IAEjB,MAAMoE,uBAAuB5C,6BAA6BzB,YAAYC;IAEtE,MAAMqE,wBAAwB/E;QAC5B,OAAOgF,cAActE,WAAWA,WAAWD,WAAW;QAEtDwE,0BAAYlF,YAA4C;QAExD,6EAA6E;QAC7E,+CAA+C;QAC/CmF,YAA2B,KAAK;QAEhCC,oBAA0B;YACxB,IAAI,CAACD,SAAS,GAAGjF,eAAe,IAAI,CAACgF,SAAS,CAACG,OAAO;QACxD;QAEA;;KAEC,GACDC,eAAwD;YACtD,OAAO,IAAI,CAACJ,SAAS,CAACG,OAAO;QAC/B;QAEAE,SAAS;YACP,qBAAO,KAACR;gBAAsB,GAAGvC,aAAa,IAAI,CAACC,KAAK,CAAC;gBAAE+C,KAAK,IAAI,CAACN,SAAS;;QAChF;IACF;IAEA,IAAI;QACF,MAAMO,eAAenF,oBAAoBI;QACzC,MAAMgF,sBACJD,aAAaE,cAAc,CAAChF,WAAW,GAAGD,WAAW,CAAC,EAAEC,UAAU,GAAGD,WAAW;QAClF,IAAIgF,qBAAqB;YACvB,iGAAiG;YACjGzD,OAAO2D,MAAM,CAACZ,gBAAgBa,SAAS,EAAEH;QAC3C;IACF,EAAE,OAAM;IACN,mFAAmF;IACnF,gGAAgG;IAChG,8FAA8F;IAC9F,gEAAgE;IAChE,gIAAgI;IAClI;IAEA,OAAOV;AACT"}
1
+ {"version":3,"sources":["NativeViewManagerAdapter.native.tsx"],"sourcesContent":[null],"names":["createRef","PureComponent","findNodeHandle","NativeComponentRegistry","SharedObject","requireNativeModule","nativeComponentsCache","Map","requireNativeComponent","moduleName","viewName","appIdentifier","globalThis","expo","viewNameSuffix","nativeViewName","get","expoViewConfig","getViewConfig","console","warn","uiViewClassName","directEventTypes","validAttributes","addAttributeProcessing","processPropValue","value","sharedObjectId","__expo_shared_object_id__","descriptor","process","attributes","key","Object","keys","requireCachedNativeComponent","cacheKey","cachedNativeComponent","nativeComponent","set","mapAriaProps","props","accessibilityState","accessibilityValue","ariaBusy","ariaChecked","ariaDisabled","ariaExpanded","ariaHidden","ariaLabel","ariaLabelledBy","ariaLive","ariaSelected","ariaValueMax","ariaValueMin","ariaValueNow","ariaValueText","id","tabIndex","resolvedProps","undefined","accessibilityLabelledBy","split","accessibilityLabel","accessibilityLiveRegion","accessibilityElementsHidden","importantForAccessibility","nativeID","focusable","busy","checked","disabled","expanded","selected","max","min","now","text","requireNativeViewManager","ReactNativeComponent","NativeComponent","displayName","nativeRef","nativeTag","componentDidMount","current","getNativeRef","render","ref","nativeModule","nativeViewPrototype","ViewPrototypes","assign","prototype"],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "expo-modules-core",
3
- "version": "58.0.13",
3
+ "version": "58.0.14",
4
4
  "description": "The core of Expo Modules architecture",
5
5
  "keywords": [
6
6
  "expo",
@@ -73,7 +73,7 @@
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.7",
76
+ "expo-module-scripts": "56.0.8",
77
77
  "react-dom": "19.3.0"
78
78
  },
79
79
  "peerDependencies": {
@@ -1,12 +1,14 @@
1
1
  // Copyright © 2024 650 Industries.
2
2
 
3
- /// <reference path="ts-declarations/NativeComponentRegistry.d.ts" />
4
-
5
3
  'use client';
6
4
 
7
5
  import { type Component, type ComponentType, createRef, PureComponent } from 'react';
8
- import { type ReactNativeElement, findNodeHandle, type HostComponent } from 'react-native';
9
- import { get as componentRegistryGet } from 'react-native/Libraries/NativeComponent/NativeComponentRegistry';
6
+ import {
7
+ type ReactNativeElement,
8
+ findNodeHandle,
9
+ type HostComponent,
10
+ NativeComponentRegistry,
11
+ } from 'react-native';
10
12
 
11
13
  import { SharedObject } from './SharedObject';
12
14
  import { requireNativeModule } from './requireNativeModule';
@@ -44,7 +46,7 @@ declare namespace globalThis {
44
46
  /**
45
47
  * Requires a React Native component using the static view config from an Expo module.
46
48
  */
47
- function requireNativeComponent<Props>(
49
+ function requireNativeComponent<Props extends object>(
48
50
  moduleName: string,
49
51
  viewName?: string
50
52
  ): HostComponent<Props> {
@@ -55,7 +57,7 @@ function requireNativeComponent<Props>(
55
57
  ? `ViewManagerAdapter_${moduleName}_${viewName}${viewNameSuffix}`
56
58
  : `ViewManagerAdapter_${moduleName}${viewNameSuffix}`;
57
59
 
58
- return componentRegistryGet<Props>(nativeViewName, () => {
60
+ return NativeComponentRegistry.get<Props>(nativeViewName, () => {
59
61
  const expoViewConfig = globalThis.expo?.getViewConfig(moduleName, viewName);
60
62
 
61
63
  if (!expoViewConfig) {
@@ -113,7 +115,7 @@ function addAttributeProcessing(validAttributes: Record<string, any>): Record<st
113
115
  * "Tried to register two views with the same name" errors on fast refresh, but
114
116
  * also when there are multiple versions of the same package with native component.
115
117
  */
116
- function requireCachedNativeComponent<Props>(
118
+ function requireCachedNativeComponent<Props extends object>(
117
119
  moduleName: string,
118
120
  viewName?: string
119
121
  ): HostComponent<Props> {
@@ -211,7 +213,7 @@ function mapAriaProps(props: Record<string, any>): Record<string, any> {
211
213
  /**
212
214
  * A drop-in replacement for `requireNativeComponent`.
213
215
  */
214
- export function requireNativeViewManager<P>(
216
+ export function requireNativeViewManager<P extends object>(
215
217
  moduleName: string,
216
218
  viewName?: string
217
219
  ): ComponentType<P> {
@@ -1,12 +0,0 @@
1
- declare module 'react-native/Libraries/NativeComponent/NativeComponentRegistry' {
2
- import type { HostComponent } from 'react-native';
3
-
4
- export function get<Props>(
5
- name: string,
6
- register: () => {
7
- uiViewClassName: string;
8
- validAttributes?: Record<string, any>;
9
- directEventTypes?: Record<string, { registrationName: string }>;
10
- }
11
- ): HostComponent<Props>;
12
- }
@@ -1,12 +0,0 @@
1
- declare module 'react-native/Libraries/NativeComponent/NativeComponentRegistry' {
2
- import type { HostComponent } from 'react-native';
3
-
4
- export function get<Props>(
5
- name: string,
6
- register: () => {
7
- uiViewClassName: string;
8
- validAttributes?: Record<string, any>;
9
- directEventTypes?: Record<string, { registrationName: string }>;
10
- }
11
- ): HostComponent<Props>;
12
- }