Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
38 commits
Select commit Hold shift + click to select a range
14cd13f
fix(precompile): handle building react-native from source with Expo X…
chrfalch May 5, 2026
d2856c3
[core][iOS] Route SharedObject events through function conversion pat…
alanjhughes May 5, 2026
f2f7f2c
[image-picker][android] Force `com.canhub.cropper.CropImageActivity` …
behenate May 5, 2026
ca9873f
[docs] Create SDK 55 llms-sdk.txt file (#45309)
amandeepmittal May 5, 2026
86515e2
[docs] Update HeadingCase exceptions list (#45310)
amandeepmittal May 5, 2026
404bfff
[docs] Update outdated info in Documentation for AI agents and LLMs (…
amandeepmittal May 5, 2026
a7458b3
[docs] Fix internal links in multiple docs (#45312)
amandeepmittal May 5, 2026
545a160
[docs] Update EAS CLI reference to 18.10 (#45331)
amandeepmittal May 5, 2026
6ef3a17
[widget][docs] Export `LiveActivityEnvironment` type (#45358)
amandeepmittal May 5, 2026
54275b7
[docs] Update/remove deprecated terminology around "bare" (#45359)
amandeepmittal May 5, 2026
ca50c34
[docs] Add a blockquote to the CNG page's generated Markdown (#45361)
amandeepmittal May 5, 2026
30933db
[docs] Update Extending Jetpack Compose to use Prerequisite component…
amandeepmittal May 5, 2026
22acca8
fix(precompile): handle 404 when downloading 3rd part frameworks (#45…
chrfalch May 5, 2026
bcd00cb
docs(expo-router): document streaming SSR and `generateMetadata()` (#…
hassankhan May 5, 2026
17e0a7d
feat: support streaming SSR in development (#45362)
hassankhan May 5, 2026
8d62d45
docs(expo-router): document suspense fallbacks (#44437)
hassankhan May 5, 2026
4a11fad
[calendar][next] Clean up null options workaround (#45328)
Wenszel May 5, 2026
c83bb95
[ncl] Fix AssetScreen (#45382)
Wenszel May 5, 2026
0b4d5ee
[test-suite] Fix contacts get/set tests (#45383)
Wenszel May 5, 2026
320457e
[video][android] Prevent crash in `FullscreenPlayerActivity` when `Vi…
DORI2001 May 5, 2026
70b94b0
[bare-expo] Refine benchmarks screen (#45364)
tsapeta May 5, 2026
8cad2c1
fix(precompile) added expo-ui back to the list of precompiled package…
chrfalch May 5, 2026
4c6a64f
[iOS][core] Fix double to UIColor conversion (#45387)
Wenszel May 5, 2026
d06095d
[calendar][next] Add permission hooks (#45390)
Wenszel May 5, 2026
598995e
[expo-router] update toolbar docs to reflect android changes (#45251)
Ubax May 5, 2026
f7bd1d6
refactor/fix(cli): Implement new TypeScript paths/baseUrl resolver (#…
kitten May 5, 2026
e77a3ef
refactor(metro-config): Update Babel config/rc discovery and filename…
kitten May 5, 2026
e0f3e4f
fix(expo-sensors): guard CMAltimeter stop calls to prevent TCC crash …
JustinFay01 May 5, 2026
86b6024
[core][Android] Remove `KType` from `SharedObjectTypeConverter` (#45388)
lukmccall May 5, 2026
8d3fd23
feat(metro-config,cli): Provide Babel config path hint to Expo Metro …
kitten May 5, 2026
73b0d41
refactor(babel-preset-expo): Split sub-configs, restructure, and fork…
kitten May 5, 2026
b47a296
feat(babel-preset-expo): Update Hermes v1 preset to drop obsolete tra…
kitten May 5, 2026
5866b23
refactor(babel-preset-expo): Detach from `@babel/preset-react` and sk…
kitten May 5, 2026
5c2e65a
[create-expo-module] Fix flaky e2e tests (#45389)
behenate May 5, 2026
4502806
perf(babel-preset-expo): Apply decorators plugin lazily (#45353)
kitten May 5, 2026
e966011
perf(babel-preset-expo): Optimize vendored RN deep-import warning plu…
kitten May 5, 2026
60101f0
perf(metro-config): Skip `generateImportNames` when live-bindings imp…
kitten May 5, 2026
e0dd495
test(create-expo-module): Fix minimumReleaseAge applying to create-ex…
kitten May 5, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
24 changes: 16 additions & 8 deletions apps/bare-expo/ios/Podfile.lock
Original file line number Diff line number Diff line change
Expand Up @@ -578,6 +578,10 @@ PODS:
- ExpoModulesWorklets (55.0.12):
- ExpoModulesCore
- ExpoModulesJSI
- ExpoModulesWorkletsAdapter (55.0.12):
- ExpoModulesCore
- ExpoModulesJSI
- ExpoModulesWorklets
- RNWorklets
- ExpoNetwork (55.0.8):
- ExpoModulesCore
Expand Down Expand Up @@ -2186,7 +2190,7 @@ PODS:
- React-RCTFBReactNativeSpec
- ReactCommon/turbomodule/core
- ReactNativeDependencies
- react-native-keyboard-controller (1.21.0):
- react-native-keyboard-controller (1.21.6):
- hermes-engine
- RCTRequired
- RCTTypeSafety
Expand All @@ -2198,7 +2202,7 @@ PODS:
- React-graphics
- React-ImageManager
- React-jsi
- react-native-keyboard-controller/common (= 1.21.0)
- react-native-keyboard-controller/common (= 1.21.6)
- React-NativeModulesApple
- React-RCTFabric
- React-renderercss
Expand All @@ -2209,7 +2213,7 @@ PODS:
- ReactCommon/turbomodule/core
- ReactNativeDependencies
- Yoga
- react-native-keyboard-controller/common (1.21.0):
- react-native-keyboard-controller/common (1.21.6):
- hermes-engine
- RCTRequired
- RCTTypeSafety
Expand Down Expand Up @@ -3319,6 +3323,7 @@ DEPENDENCIES:
- ExpoModulesJSI/Tests (from `../../../packages/expo-modules-jsi/apple`)
- ExpoModulesTestCore (from `../../../packages/expo-modules-test-core/ios`)
- ExpoModulesWorklets (from `../../../packages/expo-modules-core`)
- ExpoModulesWorkletsAdapter (from `../../../packages/expo-modules-core`)
- ExpoNetwork (from `../../../packages/expo-network/ios`)
- ExpoNotifications (from `../../../packages/expo-notifications/ios`)
- ExpoNotifications/Tests (from `../../../packages/expo-notifications/ios`)
Expand Down Expand Up @@ -3390,7 +3395,7 @@ DEPENDENCIES:
- "React-logger (from `../../../node_modules/.pnpm/react-native@0.85.2_@babel+core@7.29.0_@react-native+jest-preset@0.85.2_@babel+core@7.2_1ba4e579bcf69516e035b5d165f89777/node_modules/react-native/ReactCommon/logger`)"
- "React-Mapbuffer (from `../../../node_modules/.pnpm/react-native@0.85.2_@babel+core@7.29.0_@react-native+jest-preset@0.85.2_@babel+core@7.2_1ba4e579bcf69516e035b5d165f89777/node_modules/react-native/ReactCommon`)"
- "React-microtasksnativemodule (from `../../../node_modules/.pnpm/react-native@0.85.2_@babel+core@7.29.0_@react-native+jest-preset@0.85.2_@babel+core@7.2_1ba4e579bcf69516e035b5d165f89777/node_modules/react-native/ReactCommon/react/nativemodule/microtasks`)"
- "react-native-keyboard-controller (from `../../../node_modules/.pnpm/react-native-keyboard-controller@1.21.0_react-native-reanimated@4.3.0_patch_hash=1e34e4_cd02e1b4ea6391140214b0aa40af208c/node_modules/react-native-keyboard-controller`)"
- "react-native-keyboard-controller (from `../../../node_modules/.pnpm/react-native-keyboard-controller@1.21.6_react-native-reanimated@4.3.0_patch_hash=1e34e4_4a7542518132451a7b077bd8ae3655f6/node_modules/react-native-keyboard-controller`)"
- "react-native-netinfo (from `../../../node_modules/.pnpm/@react-native-community+netinfo@11.5.2_patch_hash=ced0cb79848978ecc3e780a4d812d94868434_f303a19f4539b0222af26531323c0855/node_modules/@react-native-community/netinfo`)"
- "react-native-pager-view (from `../../../node_modules/.pnpm/react-native-pager-view@6.9.1_react-native@0.85.2_@babel+core@7.29.0_@react-native+jest_42c16d1948ed01ee7c222c36c8d0a21c/node_modules/react-native-pager-view`)"
- "react-native-safe-area-context (from `../../../node_modules/.pnpm/react-native-safe-area-context@5.6.2_react-native@0.85.2_@babel+core@7.29.0_@react-nati_61644d84055e7f59795950119a69a708/node_modules/react-native-safe-area-context`)"
Expand Down Expand Up @@ -3639,6 +3644,8 @@ EXTERNAL SOURCES:
ExpoModulesWorklets:
inhibit_warnings: false
:path: "../../../packages/expo-modules-core"
ExpoModulesWorkletsAdapter:
:path: "../../../packages/expo-modules-core"
ExpoNetwork:
inhibit_warnings: false
:path: "../../../packages/expo-network/ios"
Expand Down Expand Up @@ -3797,7 +3804,7 @@ EXTERNAL SOURCES:
React-microtasksnativemodule:
:path: "../../../node_modules/.pnpm/react-native@0.85.2_@babel+core@7.29.0_@react-native+jest-preset@0.85.2_@babel+core@7.2_1ba4e579bcf69516e035b5d165f89777/node_modules/react-native/ReactCommon/react/nativemodule/microtasks"
react-native-keyboard-controller:
:path: "../../../node_modules/.pnpm/react-native-keyboard-controller@1.21.0_react-native-reanimated@4.3.0_patch_hash=1e34e4_cd02e1b4ea6391140214b0aa40af208c/node_modules/react-native-keyboard-controller"
:path: "../../../node_modules/.pnpm/react-native-keyboard-controller@1.21.6_react-native-reanimated@4.3.0_patch_hash=1e34e4_4a7542518132451a7b077bd8ae3655f6/node_modules/react-native-keyboard-controller"
react-native-netinfo:
:path: "../../../node_modules/.pnpm/@react-native-community+netinfo@11.5.2_patch_hash=ced0cb79848978ecc3e780a4d812d94868434_f303a19f4539b0222af26531323c0855/node_modules/@react-native-community/netinfo"
react-native-pager-view:
Expand Down Expand Up @@ -3968,10 +3975,11 @@ SPEC CHECKSUMS:
ExpoMaps: 94294944cff46ad1170ce4f92800adecbcdd04ac
ExpoMediaLibrary: 2fbddcb06042f43076cf5e495e8237ec2ab95726
ExpoMeshGradient: 93cf09380e6d86cd7a525da26dfddab2620a8421
ExpoModulesCore: 0b10a40c52e82e182c70dbfc12001ec30ba74cbd
ExpoModulesCore: 549c4ec6534357031c563ba7f3bd40eff1f93b3e
ExpoModulesJSI: 16f789b94db843249981e5f550e050cc321fe554
ExpoModulesTestCore: 62ce59e8c8162b449e65467e0421240256ba6732
ExpoModulesWorklets: 3a4d6451e29822c01c397da92be1f962a0f870fe
ExpoModulesWorklets: 3fc573fcc96eb8c457091dde007055ef35d58d70
ExpoModulesWorkletsAdapter: 8e561ffec777e8eacf2a2bad53a0edf04cfffa1a
ExpoNetwork: 15d026c5c28251e0810849c8c01ebc9bc73ad007
ExpoNotifications: 58a5bf9c5a0a2ee7d1800f9ed26ff17ff3748fde
ExpoObserve: d5a52bd0670d1b2bc24a1d59cf9322f3c843a045
Expand Down Expand Up @@ -4045,7 +4053,7 @@ SPEC CHECKSUMS:
React-logger: 2c87840a9f6322a1226d0df337d9662f44ea6094
React-Mapbuffer: 1fc10d873f00aa895836c316a9737ce7d43875ce
React-microtasksnativemodule: 85ac7286ff84e8fc8e1956233748b8d4b2a6dcea
react-native-keyboard-controller: 7d0575fb5c30f0c528bb7cbc72ea3516e0b80611
react-native-keyboard-controller: 91fb57a926597b9d16c8438bc88f1142a169715c
react-native-netinfo: 4319d381f35bc11b53dafebd5cd99c04c66a9fb4
react-native-pager-view: a3cb9627d41fa2f31ad2b312af6e3f10f831f26d
react-native-safe-area-context: 91a90d98c310adcc90a511e5aeb6046d7c19d885
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@ package expo.modules.benchmark

import com.facebook.react.bridge.Arguments
import com.facebook.react.bridge.BaseJavaModule
import com.facebook.react.bridge.Promise
import com.facebook.react.bridge.ReactMethod
import com.facebook.react.bridge.ReadableArray
import com.facebook.react.bridge.ReadableMap
Expand All @@ -20,6 +21,11 @@ class BenchmarkingBridgeModule : BaseJavaModule() {
return 0.0
}

@ReactMethod
fun nothingAsync(promise: Promise) {
promise.resolve(null)
}

@ReactMethod(isBlockingSynchronousMethod = true)
fun addNumbers(a: Double, b: Double): Double {
return a + b
Expand All @@ -42,7 +48,7 @@ class BenchmarkingBridgeModule : BaseJavaModule() {
}

@ReactMethod(isBlockingSynchronousMethod = true)
fun echoObject(point: ReadableMap): WritableMap {
fun passthroughDict(point: ReadableMap): WritableMap {
val result = Arguments.createMap()
result.putDouble("x", point.getDouble("x"))
result.putDouble("y", point.getDouble("y"))
Expand Down
Original file line number Diff line number Diff line change
@@ -1,9 +1,11 @@
package expo.modules.benchmark

import expo.modules.kotlin.AppContext
import expo.modules.kotlin.modules.Module
import expo.modules.kotlin.modules.ModuleDefinition
import expo.modules.kotlin.records.Field
import expo.modules.kotlin.records.Record
import expo.modules.kotlin.sharedobjects.SharedObject

class Point : Record {
@Field
Expand All @@ -13,6 +15,11 @@ class Point : Record {
var y: Double = 0.0
}

class SharedPoint(appContext: AppContext) : SharedObject(appContext) {
var x: Double = 0.0
var y: Double = 0.0
}

class BenchmarkingExpoModule : Module() {
override fun definition() = ModuleDefinition {
Name("BenchmarkingExpoModule")
Expand All @@ -21,10 +28,18 @@ class BenchmarkingExpoModule : Module() {
// Do nothing
}

AsyncFunction("nothingAsync") {
// Do nothing
}

Function("addNumbers") { a: Double, b: Double ->
a + b
}

AsyncFunction("addNumbersAsync") { a: Double, b: Double ->
a + b
}

Function("addStrings") { a: String, b: String ->
a + b
}
Expand All @@ -33,8 +48,33 @@ class BenchmarkingExpoModule : Module() {
array.sum()
}

Function("echoObject") { point: Point ->
Function("passthroughDict") { point: Map<String, Any> ->
point
}

Function("passthroughRecord") { point: Point ->
point
}

Function("passthroughSharedObject") { point: SharedPoint ->
point
}

Class(SharedPoint::class) {
Constructor { x: Double, y: Double ->
val point = SharedPoint(appContext)
point.x = x
point.y = y
return@Constructor point
}

Property("x") { point: SharedPoint ->
point.x
}

Property("y") { point: SharedPoint ->
point.y
}
}
}
}
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
package expo.modules.benchmark

import com.facebook.react.bridge.Arguments
import com.facebook.react.bridge.Promise
import com.facebook.react.bridge.ReactApplicationContext
import com.facebook.react.bridge.ReadableArray
import com.facebook.react.bridge.ReadableMap
Expand All @@ -20,6 +21,10 @@ class BenchmarkingTurboModule(reactContext: ReactApplicationContext) : NativeBen
return 0.0
}

override fun nothingAsync(promise: Promise) {
promise.resolve(null)
}

override fun addNumbers(a: Double, b: Double): Double {
return a + b
}
Expand All @@ -38,7 +43,7 @@ class BenchmarkingTurboModule(reactContext: ReactApplicationContext) : NativeBen
return sum
}

override fun echoObject(point: ReadableMap): WritableMap {
override fun passthroughDict(point: ReadableMap): WritableMap {
val result = Arguments.createMap()
result.putDouble("x", point.getDouble("x"))
result.putDouble("y", point.getDouble("y"))
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
package expo.modules.benchmark;

import com.facebook.proguard.annotations.DoNotStrip;
import com.facebook.react.bridge.Promise;
import com.facebook.react.bridge.ReactApplicationContext;
import com.facebook.react.bridge.ReactContextBaseJavaModule;
import com.facebook.react.bridge.ReactMethod;
Expand All @@ -26,6 +27,10 @@ public NativeBenchmarkingTurboModuleSpec(ReactApplicationContext reactContext) {
@DoNotStrip
public abstract double nothing();

@ReactMethod
@DoNotStrip
public abstract void nothingAsync(Promise promise);

@ReactMethod(isBlockingSynchronousMethod = true)
@DoNotStrip
public abstract double addNumbers(double a, double b);
Expand All @@ -40,5 +45,5 @@ public NativeBenchmarkingTurboModuleSpec(ReactApplicationContext reactContext) {

@ReactMethod(isBlockingSynchronousMethod = true)
@DoNotStrip
public abstract WritableMap echoObject(ReadableMap point);
public abstract WritableMap passthroughDict(ReadableMap point);
}
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,12 @@ @implementation BenchmarkingBridgeModule
return 0;
}

RCT_EXPORT_METHOD(nothingAsync:(RCTPromiseResolveBlock)resolve
reject:(RCTPromiseRejectBlock)reject)
{
resolve(nil);
}

RCT_EXPORT_BLOCKING_SYNCHRONOUS_METHOD(addNumbers:(double)a b:(double)b)
{
NSNumber* number = [[NSNumber alloc] initWithDouble:a + b];
Expand All @@ -31,7 +37,7 @@ @implementation BenchmarkingBridgeModule
return @(sum);
}

RCT_EXPORT_BLOCKING_SYNCHRONOUS_METHOD(echoObject:(NSDictionary *)point)
RCT_EXPORT_BLOCKING_SYNCHRONOUS_METHOD(passthroughDict:(NSDictionary *)point)
{
return point;
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,11 @@ struct Point: Record {
var y: Double = 0
}

final class SharedPoint: SharedObject {
var x: Double = 0
var y: Double = 0
}

public final class BenchmarkingExpoModule: Module {
// @OptimizedFunction
private func addNumbersOptimized(a: Double, b: Double) throws -> Double {
Expand All @@ -24,28 +29,63 @@ public final class BenchmarkingExpoModule: Module {

Function("nothing") {}

AsyncFunction("nothingAsync") { () async -> Void in }

// MARK: - Numbers

Function("addNumbers") { (a: Double, b: Double) in
return a + b
}

Function("addNumbersOptimized", addNumbersOptimized)

AsyncFunction("addNumbersAsync") { (a: Double, b: Double) in
return a + b
}

AsyncFunction("addNumbersAsyncOptimized", addNumbersAsyncOptimized)

// MARK: - Strings

Function("addStrings") { (a: String, b: String) in
return a + b
}

// MARK: - Arrays

Function("foldArray") { (array: [Double]) in
return array.reduce(0.0, +)
}

Function("echoObject") { (point: Point) in
// MARK: - Passthrough

Function("passthroughDict") { (point: [String: Any]) in
return point
}

AsyncFunction("addNumbersAsync") { (a: Double, b: Double) in
return a + b
Function("passthroughRecord") { (point: Point) in
return point
}

AsyncFunction("addNumbersAsyncOptimized", addNumbersAsyncOptimized)
Function("passthroughSharedObject") { (point: SharedPoint) in
return point
}

Class(SharedPoint.self) {
Constructor { (x: Double, y: Double) -> SharedPoint in
let point = SharedPoint()
point.x = x
point.y = y
return point
}

Property("x") { (point: SharedPoint) in
return point.x
}

Property("y") { (point: SharedPoint) in
return point.y
}
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,11 @@ - (NSNumber *)nothing
return 0;
}

- (void)nothingAsync:(RCTPromiseResolveBlock)resolve reject:(RCTPromiseRejectBlock)reject
{
resolve(nil);
}

- (NSNumber *)addNumbers:(double)a b:(double)b
{
NSNumber* number = [[NSNumber alloc] initWithDouble:a + b];
Expand All @@ -36,7 +41,7 @@ - (NSNumber *)foldArray:(NSArray *)array
return @(sum);
}

- (NSDictionary *)echoObject:(NSDictionary *)point
- (NSDictionary *)passthroughDict:(NSDictionary *)point
{
return point;
}
Expand Down
Loading
Loading