122 KiB
Changelog
Unpublished
🛠 Breaking changes
🎉 New features
🐛 Bug fixes
💡 Others
3.0.29 — 2025-12-12
🐛 Bug fixes
- [Android] check if
AppContextActivityResultLaunchercoroutine continuation is active before resuming (#41319 by @vonovak)
3.0.28 — 2025-12-05
This version does not introduce any user-facing changes.
3.0.27 — 2025-12-04
🐛 Bug fixes
- [iOS] Universal links not working on cold start. (#41185) by @jbaudanza
3.0.26 — 2025-11-17
🐛 Bug fixes
3.0.25 — 2025-11-07
🐛 Bug fixes
- [iOS] Fix sizing glitch when React Native components are used as child in Expo UI components (#40693 by @nishan)
3.0.24 — 2025-11-03
🎉 New features
🐛 Bug fixes
3.0.23 — 2025-10-28
🎉 New features
- [iOS] Add
applicationDidReceiveMemoryWarningsubscribing to ExpoAppDelegateSubscriberManager (#40504 by @szydlovsky) - [iOS] Swift's
Encodabletypes can now be converted to JavaScript values. (#40621 by @tsapeta)
🐛 Bug fixes
- [core] [iOS] Addresses a potential crash where
[NSString UTF8String]could returnnilfor certain string inputs (non-English), leading to an attempt to dereference a null pointer duringjsi::Stringcreation. (#40639 by @mohammadamin16) - [Android] Fix
androidNavigationBar.enforceContrastapp config property not working. (#40263 by @behenate)
💡 Others
- [iOS] Removed some runtime type checks for dynamic types. (#40611 by @tsapeta)
- [iOS] Added base props support for SwiftUI integration. (#40492 by @kudo)
3.0.22 — 2025-10-20
🎉 New features
- [iOS] Introduce ExpoAppDelegateSubscriberManager class (#40008 by @gabrieldonadel)
3.0.21 — 2025-10-09
💡 Others
- [iOS] Add
invalidatecallback to SwiftUIVirtualView. (#40237 by @intergalacticspacehighway)
3.0.20 — 2025-10-01
🐛 Bug fixes
- [iOS] Fix NSURL to JSIString conversion returning nil. (#39567 by @behenate)
- Fix SharedObject created with
useReleasingSharedObjectgetting destroyed after a fast refresh caused by a change in its dependencies. (#39753 by @behenate)
3.0.19 — 2025-10-01
💡 Others
3.0.18 — 2025-09-22
🐛 Bug fixes
3.0.17 — 2025-09-18
This version does not introduce any user-facing changes.
3.0.16 — 2025-09-16
🎉 New features
- [Android] Starts using precompiled headers to improve build times. (#39641 by @lukmccall)
- Remove
ExpoAppDelegateinheritance requirement in ExpoReactNativeFactory (#39844 by @gabrieldonadel)
🐛 Bug fixes
- Fix runtime error due to passing undefined into function that doesnt receive any argument (#39594 by @mrevanzak)
- Fix build error on Vite due to non-existent import for
TurboModuleRegistryon web (#39726 by @satya164)
3.0.15 — 2025-09-10
🐛 Bug fixes
- [Android] Fixes
JNI detected error in application: obj == nullinExpoModulesHostObject::get. (#39523 by @lukmccall)
3.0.14 — 2025-09-08
🐛 Bug fixes
- [Android] Fix type check in the
SharedRefconverter. (#39446 by @lukmccall)
💡 Others
3.0.13 — 2025-09-04
💡 Others
- [Android] Remove some usage of
kotlin.reflect.full.*. (#39385 by @lukmccall)
3.0.12 — 2025-09-03
💡 Others
- Use new LongLivedObject.h and CallbackWrapper.h headers namespace (#39344 by @gabrieldonadel)
- [iOS] Added
Colorconvertible support without passingAppContext. (#39183 by @aleqsio) - Extracted the read permission check from
FileSystemUtilities(#39210 by @kosmydel)
3.0.11 — 2025-09-02
🎉 New features
- Add
disableForceFlattenprop to control flattening of display contents views. (#39262 by @nishan) - Add logging from native to JS, compliant with the Logger interface, via
appContext.jsLogger. (#39159 by @behenate)
🐛 Bug fixes
- Fix Color extension on macOS. (#39280 by @gabrieldonadel)
- Fix ErrorManager not receiving events. (#39290 by @behenate)
💡 Others
- Fix JavaScriptRuntimeSpec tests (#39281 by @gabrieldonadel)
- Added
appContexttoExpoSwiftUI.ViewProps. (#39231 by @kudo) requireOptionalNativeModulewill now catch errors which occur while requiring a module. (#39290 by @behenate)
3.0.10 — 2025-08-31
This version does not introduce any user-facing changes.
3.0.9 — 2025-08-28
🐛 Bug fixes
3.0.8 — 2025-08-27
This version does not introduce any user-facing changes.
3.0.7 — 2025-08-26
🐛 Bug fixes
3.0.6 — 2025-08-25
🎉 New features
- [Android] Add new type -
ValueOrUndefined. (#39116 by @lukmccall)
3.0.5 — 2025-08-21
This version does not introduce any user-facing changes.
3.0.4 — 2025-08-19
🐛 Bug fixes
3.0.3 — 2025-08-18
💡 Others
- [ios] Wrap system color references for dev client. (#38912 by @douglowder)
- [Android] Update min, target, and compile SDK versions. (#38938 by @alanjhughes)
3.0.2 — 2025-08-16
This version does not introduce any user-facing changes.
3.0.1 — 2025-08-15
This version does not introduce any user-facing changes.
3.0.0 — 2025-08-13
🎉 New features
- Added support for expo modules written using TurboModules (#36996 by @acoates-ms)
- [Android] Add Array converter and handle nullable values. (#37220 by @jakex7)
- [Android] Support object arrays in type converters. (#37276 by @jakex7)
- [Android] Add
testIDsupport toExpoComposeView. (#38005 by @mateoguzmana) - [iOS] Return proper dynamic type for AnyEither. (#38072 by @jakex7)
- [Android] Add VRUtilities for VR-related values and utils (#37744 by @behenate)
- [Andorid] Start using experimental converters in properties. (#38597 by @lukmccall)
- [Android] Rethrow pending Jni exceptions. (#38625 by @jakex7)
- [iOS] Add new type -
ValueOrUndefined. (#38620 by @lukmccall)
🐛 Bug fixes
- [iOS] Fix view functions for SwiftUI views. (#38275 by @aleqsio)
- [iOS] Fix missing CDP headers when using static frameworks. (#37448 by @alanjhughes)
- [android] Fix android build without coreFeatures compose (#38153 by @Ubax)
- [iOS] Fix
ExpoRequestInterceptorProtocolto properly notify client about HTTP redirects. (#38078 by @kudo) - [Android] Conditionally register
RuntimeHolderbindings. (#38345 by @alanjhughes) - [iOS] Fix null string conversion. (#38284 by @jakex7)
💡 Others
- Add package exports support. (#37302 by @EvanBacon)
- [iOS] Cleaned up iOS header files for precompilation (#38441 by @chrfalch)
- [Android] RN 0.81.0: patched some reflection issues after kotlin upgrade (#38451 by @chrfalch)
- Restructure Jest polyfills to not import forbidden platform extension directly. (#37588 by @EvanBacon)
- [Android] Improve time to retrieve the Expo module. (#37082 by @lukmccall)
- [Android] Reduce the memory footprint of calling function from the native module. (#37080 by @lukmccall)
- [Android] Changed how nullable types are converted. (#37055 by @lukmccall)
- [Android] Reduce the number of conversions needed to call a function from the native module. (#37099 by @lukmccall)
- Updated
ExpoComposeViewto support virtual view. (#36255 by @kudo) - [iOS] Support throwing errors in shared object constructor. (#37618 by @alanjhughes)
- [iOS] Remove boilerplate from function factories. (#37884 by @alanjhughes)
- [Android] Remove react-native 0.74 support files (#38216 by @gabrieldonadel)
- Add missing peer dependencies for
reactandreact-native(#38528 by @kitten) - Deprecate
Constantsin favor ofConstantandProperty. (#38748 by @jakex7) - Refactor typings to replace
ExpoGlobalwith namespace and to preserve type+value overlay on re-exported core globals (#38649 by @kitten) - Fixed internal
JavaScriptValueand addedprops.globalEventDispatcherfor expo-ui. (#38542 by @kudo)
2.5.0 - 2025-07-17
🎉 New features
🐛 Bug fixes
2.4.2 - 2025-07-02
🐛 Bug fixes
- [Android] Fix
Value is undefined, expected an Objectin theJNIUtils::emitEventOnJSIObject. (#37778 by @lukmccall)
2.4.1 - 2025-07-01
🐛 Bug fixes
2.4.0 - 2025-06-04
🎉 New features
- [iOS] Add module registry encoder for JSON. (#36677 by @aleqsio)
- [Android] New custom Type Converter API (#36823 by @jakex7)
- [iOS] Natively support
rgbcolor conversions. (#36914 by @alanjhughes) - Add default values to prop definition. (#37011, #37013 by @jakex7)
🐛 Bug fixes
- [iOS] Call
createRootViewControllerfrom theExpoReactNativeFactoryDelegate. (#36787 by @alanjhughes) - [iOS] Prevent crash on failed networked requests (#36896 by @adrum)
💡 Others
- Improved
@expo/ui/swift-ui-primitivesintegrations. (#36937 by @kudo) - [iOS] Use dynamic type for AsyncFunction result conversion (#36986 by @jakex7)
2.3.13 — 2025-05-08
🐛 Bug fixes
- [Android] Fix
getSharedObjectIdfor devices running android 7 and below. (#36698 by @lukmccall) - [iOS] Fixed missing upload progress from
XMLHttpRequestwhen network inspector is enabled. (#36715 by @kudo)
2.3.12 — 2025-04-30
🐛 Bug fixes
- Fixed
extraMavenReposnot applied on Gradle subprojects. (#36500 by @lukmccall)
2.3.11 — 2025-04-28
This version does not introduce any user-facing changes.
2.3.10 — 2025-04-28
🐛 Bug fixes
- [iOS] Fix concurrent functions on views. (#36431 by @alanjhughes)
2.3.9 — 2025-04-25
💡 Others
- Removes
Jetpack Composeintegration if not needed. (#36353 by @lukmccall) - Refined
Childrenreturn type for SwiftUI integration. (#36377 by @kudo)
2.3.8 — 2025-04-23
💡 Others
- Droped support for Kotlin <
2.0.0. (#36323 by @lukmccall)
2.3.7 — 2025-04-22
🐛 Bug fixes
2.3.6 — 2025-04-21
🐛 Bug fixes
2.3.5 — 2025-04-14
🐛 Bug fixes
- Fixed
UnwrappedChildrennot get the unwrapped content view for SwiftUI integration. (#36112 by @kudo)
💡 Others
- Removed the limitation to use
collapsable={false}when hosting a UIView in SwiftUI views. (#36153 by @kudo)
2.3.4 — 2025-04-11
🐛 Bug fixes
2.3.3 — 2025-04-11
This version does not introduce any user-facing changes.
2.3.2 — 2025-04-09
💡 Others
- [Android] Migrate
AppLoaderProviderto kotlin. (#36035 by @alanjhughes)
2.3.1 — 2025-04-08
This version does not introduce any user-facing changes.
2.3.0 — 2025-04-04
🛠 Breaking changes
- upgrade RN to 0.78 (#35050 by @vonovak)
- Bump minimum macOS version to 11.0. (#34980 by @gabrieldonadel)
- Fix support for react-native-macos 0.78 (#35688 by @gabrieldonadel)
🎉 New features
- support Java
longvalues in arrays and maps (#35446 by @vonovak) - [iOS] Add
UnwrappedChildrenfor nested SwiftUI views. (#34954 by @andrew-levy) - support react-native 0.77 (#33946 by @vonovak)
- Implemented dispatching events by SwiftUI views. (#33860 by @tsapeta)
- [iOS] Support returning
SharedObjects from aPromise. (#34655 by @alanjhughes) - Add ExpoAppDelegate support for macOS. (#35061 by @gabrieldonadel)
- Add support for macOS AppDelegate subscribers (#35062 by @gabrieldonadel)
- Add SwiftUI views support for macOS (#35078 by @gabrieldonadel)
- Add common constants to the CoreModule (#35057 by @jakex7)
- [Android] Add Constant API (#35157 by @jakex7)
- [iOS] Add Constant API (#35199 by @jakex7)
- [Android] Added support for custom queues for async functions. (#35838 by @lukmccall)
- [iOS] Allow undefined props on ExpoSwiftUIView (#35852 by @jakex7)
🐛 Bug fixes
- [Android] Fixes compose views disappearing on navigation. (#34689 by @aleqsio)
- [iOS] Fixes view managers not deallocating when reloading. (#33760 by @alanjhughes)
- Fixed converting double to float. (#34906 by @janicduplessis)
- [iOS] Fixed ViewModuleWrapper initializer on old arch to use the DEFAULT_MODULE_VIEW view from the module as the default view. (#35007 by @gabrieldonadel)
- Fix UnimplementedExpoView on macOS. (#35014 by @gabrieldonadel)
- [iOS] Fix tvOS breakage. (#35146 by @douglowder)
- [iOS] Fix calls to
AsyncFunctionnot working in the initial render of aView. (#35176 by @behenate) - [Android] Fixed
ConcurrentModificationExceptionbeing thrown byJNIDeallocator.deallocateduring the app reload. (#35322 by @lukmccall)
💡 Others
- [iOS] Updated UnwrappedChildren to return a ForEach type, allowing support for modifiers such as onDelete. (#35222 by @Pflaumenbaum)
- [Android] make ReactNativeFeatureFlags injectable by wrapping it in an interface to make some tests pass (#34363 by @chrfalch)
- [Android] Fixed failing unit tests after internal API change that adds support for named views. (#34384 by @chrfalch)
- [iOS] Enable named view exports. (#34293 by @aleqsio)
- [Android] Enable named view exports. (#34161 by @aleqsio)
- [Android] Introduced the option to disabled
overflow: hiddenapplied to each view by default. (#33261 by @lukmccall) - Fixed compatibility for React Native 0.78 nightlies. (#33718 by @kudo)
- Show
UnimplementedExpoViewin place of SwiftUI views when the New Architecture is not enabled. (#33901 by @tsapeta) - [iOS] Use REACT_NATIVE_PATH to determine react-native version (#34042 by @gabrieldonadel)
- [Android] Started using expo modules gradle plugin.
- [Android] Remove
BarCodeScannerInterface. (#34966 by @alanjhughes) - [Android] Make ExpoComposeView builder function optional. (#34907 by @janicduplessis)
- Refactored
RCTReactNativeFactoryintegration. (#35679 by @kudo) - [Android] Used
compileOnlyto depend on theexpo-modules-corewhen applying default dependencies. (#35822 by @lukmccall) - Removed extra
UIViewfrom SwiftUI integration. (#35553 by @kudo)
⚠️ Notices
2.2.3 - 2025-03-11
🐛 Bug fixes
- Fixed
kotlinx.coroutines.CancellableContinuationImpl.alreadyResumedErrorerror on Android. (#35114 by @kudo)
2.2.2 - 2025-02-14
🎉 New features
2.2.1 - 2025-02-06
This version does not introduce any user-facing changes.
2.2.0 - 2025-01-27
🎉 New features
🐛 Bug fixes
- Fixed AppDelegate.mm methods not be called on iOS. (#34464 by @kudo)
- [Android] Fixes
AppContextis lost in nested converters. (#34373 by @lukmccall)
💡 Others
- [Android]: Added callback to executeTask method signature after adding package expo-background-task (#33438 by @chrfalch)
2.1.4 - 2025-01-19
💡 Others
2.1.3 - 2025-01-10
This version does not introduce any user-facing changes.
2.1.2 - 2024-12-16
🐛 Bug fixes
- Ensure
uuid.v4anduuid.v5is available on old react native architecture. (#33621 by @andrejpavlovic) - Changed
importtoimport typefor TS type declarations. (#33447 by @j-piasecki) - [macOS] Allow SwiftUI views to work on macOS (#33506 by @hassankhan)
2.1.1 - 2024-12-02
This version does not introduce any user-facing changes.
2.1.0 - 2024-11-29
🎉 New features
🐛 Bug fixes
💡 Others
- Fixed compatibility for React Native 0.77. (#33277 by @kudo)
- [Android] Bump KSP version for Kotlin 2.0.21. (#33306 by @kudo)
2.0.6 — 2024-11-22
🐛 Bug fixes
- [Android] Fixed issue with RNHeadlessAppLoader destroying the reactHost instance in the new architecture. (#33176 by @chrfalch)
2.0.5 — 2024-11-22
🐛 Bug fixes
- [iOS] Fixed build error when using jsEngine=jsc. (#33130 by @kudo)
- Fixed TypeScript incompatible
processtype error when including@types/node. (#33155 by @kudo)
💡 Others
- [Android] Introduced
applyKspJvmToolchain()gradle helper to enforce JVM Toolchain version for KSP. (#33148 by @kudo)
2.0.4 — 2024-11-19
🎉 New features
- [Android] Supported css properties (border, background and shadow) by default. (#33074 by @lukmccall)
🐛 Bug fixes
- Fixed type errors when using
ts-jest. (#32954 by @kudo) - [Android] Fixed `no non-static method "SharedObject.getSharedObjectId()" when proguard is enabled. (#33011 by @lukmccall)
💡 Others
- Use
findNodeHandlewith a native ref instead of a class component instance to avoid expensive calls tofindCurrentFiberUsingSlowPath. (#33016 by @tsapeta) - Introduced
ReactNativeFeatureFlagscompat to fix React Native 0.77 breaking changes. (#33077 by @kudo) - Fixed compatibility for React Native 0.77. (#33079 by @kudo)
2.0.3 — 2024-11-14
🐛 Bug fixes
- Fixed requests from
expo/fetchbeing stuck on iOS. (#32894 by @kudo) - [Android] Fixed sending event containing
ByteArrayfrom the Kotlin module results in string ID instead ofUint8Array. (#32945 by @lukmccall)
2.0.2 — 2024-11-13
💡 Others
2.0.1 — 2024-11-12
🐛 Bug fixes
- [Android] Added
@DoNotStripannotation to newEithertypes. (#32783 by @alanjhughes)
2.0.0 — 2024-11-10
🐛 Bug fixes
2.0.0-preview.10 — 2024-11-07
🐛 Bug fixes
- [iOS] Fixed broken self-signed connections from network inspector. (#32670 by @kudo)
- [macOS] Fix UIKit import (#32727 by @gabrieldonadel)
2.0.0-preview.9 — 2024-10-31
💡 Others
- [Android] Fix
ClassCastExceptionin headless app loader under the old architecture. (#32390 by @robertying)
2.0.0-preview.8 — 2024-10-31
🛠 Breaking changes
💡 Others
- [android] Added helper for looking up TaskService instance used by expo-task-manager (#32300 by @chrfalch)
- Made TypeScript declaration for
processan interface. (#32464 by @tsapeta)
2.0.0-preview.7 — 2024-10-29
💡 Others
- [Android] Added
shouldUseAndroidLayoutflag toExpoView. (#32446 by @lukmccall)
2.0.0-preview.6 — 2024-10-29
This version does not introduce any user-facing changes.
2.0.0-preview.5 — 2024-10-28
🐛 Bug fixes
- Fixed updating props on SwiftUI views on the New Architecture. (#32381 by @tsapeta)
- Fixed build error when
use_frameworks!. (#32358 by @kudo)
2.0.0-preview.4 — 2024-10-25
💡 Others
2.0.0-preview.3 — 2024-10-24
This version does not introduce any user-facing changes.
2.0.0-preview.2 — 2024-10-24
🐛 Bug fixes
- [iOS] Fix optionals conversion. (#32239 by @aleqsio)
- Fixed retain cycle for
ExpoRequestCdpInterceptor. (#32289 by @kudo)
💡 Others
- [android] Add enum event support to OnStartObserving and OnStopObserving. (#32251, #32287 by @wschurman)
2.0.0-preview.1 — 2024-10-22
🐛 Bug fixes
- [iOS] Removed window synthesis in
EXAppDelegateWrapperto fix crashes caused by deallocatedRCTFabricSurface. (#32233 by @tsapeta)
2.0.0-preview.0 — 2024-10-22
🛠 Breaking changes
🎉 New features
- [Android] Add support for
onUserLeaveHint. (#32033 by @behenate) - [Web] Modules are now registered in global. (#29870 by @aleqsio)
- [iOS] Add support for passing SharedObjects as a function parameter. (#30314 by @aleqsio)
- Added support for
startObservingandstopObservingon the web. (#28953 by @aleqsio) - Switched exported
EventEmitterto the C++ implementation. (#28946 by @tsapeta) - [Android]
OnStartObservingandOnStopObservingcan now be attached to a specific event. (#29012 by @lukmccall) - [Android] Add the ability to change the name of the exported shared object. (#30040 by @lukmccall)
- [Android] Supported returning of the
SharedObjectfrom functions. (#30426 by @lukmccall) - [iOS] Support implementing
customizeRootViewinExpoAppDelegateSubscriber. (#30550 by @alanjhughes) - [Android] Added support for primitive arrays in functions. (#30657 by @lukmccall)
- Implemented
toJSONfunction on shared objects that includes dynamic properties defined in their prototype chain. (#30813 by @tsapeta) - [iOS] Added experimental support for rendering SwiftUI views. (#19888 by @tsapeta)
- [Android] Introduced experimental converter to support a broader range of types that can be passed to the JS. (#30944 by @lukmccall)
- [iOS] Add functions that are called before and after a shared object is removed from the registry. (#30949 by @alanjhughes)
- [Android] Rewrite map converter to support a broader range of types that can be passed to the JS. (#31016 by @lukmccall)
- [Android]
EitherTypeConverternow can work with theDynamicclass. (#31074 by @lukmccall) - [iOS] Added a way to provide shared objects memory pressure to improve garbage collection of native objects retaining some heavy data. (#31168 by @tsapeta)
- [Android] The single parameter now can be auto-cast to the list. (#31290 by @lukmccall)
- [Android]
SharedRefconverter now checks the inner ref type. (#31441 by @lukmccall) - [Android] Added support for changing if functions are enumerable. (#31495 by @lukmccall)
- Introduced a base class for all shared refs (
expo.SharedRef). (#31513 & #31706 by @lukmccall) - [Android] Add support for react-native 0.76 (#31580 by @gabrieldonadel)
- [Android] Added
onStartListeningToEventandonStopListeningToEventto theSharedObject. (#31385 by @lukmccall) - Added Apple shared app groups support. (#31519 by @kudo)
- [Android] Added a way to provide shared objects memory pressure to improve garbage collection of native objects retaining some heavy data. (#31784 by @lukmccall)
- Added
nativeRefTypetoSharedRef. (#31776 by @lukmccall) - [Android] Added
kotlin.time.Durationsupport. (#31858 by @lukmccall) - Return duration from logger timer block methods. (#31805 by @wschurman)
- [iOS] Made
CMTimefromCoreMediaa convertible type. (#31967 by @tsapeta)
🐛 Bug fixes
- [Android] Fixed
RNHeadlessAppLoaderclass for New Architecture support. (#32146 by @chrfalch) - [iOS] Fix using enums as optional arguments. (#32147 by @aleqsio)
- [Android] Change JS return type for kotlin
nullto benullinstead ofundefined. (#31301 by @aleqsio) - [iOS] Swift
Enumerables did not correctly convert to JS values. (#30191 by @vonovak) - [jest] Fix
uuidmock injest-expo. (#29840 by @EvanBacon) - [Android] Fix error: no viable constructor or deduction guide for deduction of template arguments of 'weak_ptr' (#29075 by @rafi16jan)
- [Android] Fix
getContext().getNativeModule(UIManagerModule.class)in Bridgeless. (#29203 by @arushikesarwani94) - [iOS] Fix data race in
PersistentFileLogSpec.swift. (#28924 by @hakonk) - [Android] Fix the event emitter, which might crash during the reloads. (#29176 by @lukmccall)
- [iOS] Fix random conversion errors when converting JavaScript floating point numbers to
Swift.Float. (#29053 by @behenate) - Fixed a crash when the event listener throws an error. (#30065 by @tsapeta)
- [Android] Fixed the record's constructor with default parameters were being ignored when converting from JavaScript to native. (#30217 by @lukmccall)
- [iOS] Fixed returning already registered shared objects. (#30241 by @tsapeta)
- [Android] Provide value in
getNameofModuleRegistryReadyNotifier.java(#30358 by @WoLewicki) - [Android] When a
SharedObjectthat was passed as an argument is returned, it no longer creates a new object. (#30231 by @lukmccall) - [Android] Fixed some types weren't correctly converted when using coroutines. (#30227 by @lukmccall)
- [Android] Fixed not throwing when setting read-only properties. (#30428 by @lukmccall)
- [Android] Fixed
expo.modules.kotlin.jni.tests.RuntimeHolderclass not found crash when R8 is enabled. (#30572 by @kudo) - [Android] Fixed
Class declares 0 type parameters, but X were providedon Android when R8 is enabled. (#30659 by @lukmccall) - [Android] Fixed SharedObject class names are obfuscated when R8 is enabled. (#30948 by @lukmccall)
- [Android] Fixed
CodedException.getCode()crash when R8 is enabled. (#31392 by @kudo) - [Android] Fixed getter for the third parameter of
Either. (#31443 by @lukmccall) - [Android] Fixed R8 build error
Missing class expo.modules.kotlin.types.ExperimentalJSTypeConverter$URIConverter. on macOS host. (#31452 by @kudo) - [iOS] Fixed
No space left on devicewhen saving persistent log. (#31583 by @RodolfoGS) - Fixed iOS reload crash on New Architecture mode. (#31789 by @kudo)
- [iOS] Fixed views using the incorrect
AppContextinstance. (#31897 by @lukmccall) - [iOS] Fixed crashes on the New Architecture when dispatching events during the props update. (#31971 by @tsapeta)
- Fixed
registerAdditionalModuleClassesdeadlock issue on old architecture mode. (#32209 by @kudo)
💡 Others
- Added documentation links to
RecordandFieldimplementations (#31997 by @vonovak) - Remove web hydration
process.envtype. (#31267 by @EvanBacon) - Added an
asyncextension for OkHttp requests. (#30841 by @aleqsio) - Change
sideEffectsto usesrcfolder. (#29964 by @EvanBacon) - [web] Use global
cryptoobject for UUID. (#29828 by @EvanBacon) - [iOS] Send open url event to all matching subscribers. (#29645 by @aleqsio)
- Use
process.env.EXPO_OSforPlatform.OSandPlatform.select, when available. (#29429 by @EvanBacon) - [Android] Removed unneeded in-between function call when resolving promise without arguments. (#28944 by @lukmccall)
- Exported some TypeScript declarations (e.g.
EventEmitter) fromexpo-modules-core/types. (#28994 by @tsapeta) - [Android] Switch to the JS thread when sending an event. (#29753 by @lukmccall)
- Moved
processobject declaration to global declaration. (#29745 by @tsapeta) - Use the
srcfolder as the Metro target. (#29702 by @tsapeta) - Make it possible for TypeScript to infer EventEmitter's events map. (#29056 by @tsapeta)
- [iOS] Stop throwing runtime errors when the promise is settled more than once. (#30000 by @tsapeta)
- [iOS] Renamed
pointerproperty in theSharedRefclass toreffor parity with Android. (#30061 by @tsapeta) - [Android] Started using
noexcept. (#30128 by @lukmccall) - [Android] Decouple the modules state from the
AppContext(#30098 by @lukmccall) - Bumped Kotlin version to 1.9.24. (#30199 by @gabrieldonadel)
- [Android] Bump Kotlin coroutines version to 1.7.3. (#30226 by @lukmccall)
- [Android] Limit the number of "Current Activity is of incorrect class" log entries. (#30427 by @lukmccall)
- [iOS] Refactor and expose
URLSessionSessionDelegateProxyclass. (#30173 by @kudo) - [Android] Supports passing
Accept: text/event-streamheader to bypass streaming requests fromExpoNetworkInspectOkHttpInterceptors. (#30219 by @kudo) - Replaced
@testing-library/react-hookswith@testing-library/react-native. (#30742 by @byCedric) - Cleaned up the podspec and replaced
RN_FABRIC_ENABLEDflag withRCT_NEW_ARCH_ENABLED. (#31044 by @tsapeta) - JS values are now used directly instead of using shared pointers to improve the overall performance. (#31219 by @tsapeta)
- [iOS] Use singletons for string and data dynamic types. (#31220 by @tsapeta)
- [iOS] Fixed a bottleneck in the performance-critical code by getting away from
enumeratedfunction. (#31226 by @tsapeta) - [Android] Cached argument's type information to improve memory and startup time. (#31297 by @lukmccall)
- [iOS] Make
func application(_ application: UIApplication, supportedInterfaceOrientationsFor window: UIWindow?)open. (#31398 by @abulenok) - [Android] Expose
RuntimeContext.eval()asJavaScriptRuntime.eval()on iOS. (#31445 by @kudo) - Removed all
NativeModulesProxyoccurrences. (#31496 by @reichhartd) - Align web implementation exports as native to support DOM components when using
@expo/dom-webview. (#31662 by @kudo) - Removed
expo_patch_react_imports!and align more stardard react-native project layout. (#31700 by @kudo) - Removed deprecated code for react-native 0.74.0. (#31740 by @kudo)
- [Android] Improve error messages when converting the
Eithertype. (#31787 by @lukmccall) - [iOS] Improved converting function results. (#31827 by @tsapeta)
- [iOS] Disabled
ExpoViewrecycling from the New Architecture. (#31841 by @tsapeta) - [Android] Renamed
SharedObject.deallocatetoSharedObject.sharedObjectDidRelease. (#31921 by @lukmccall) - [Android] Throws a descriptive error when trying to use a released
SharedObject. (#31922 by @lukmccall) - Include error cause message in logger (#31929, #31953 by @wschurman)
- [Android] Started using view's event dispatchers with the
surfaceId. (#32227 by @lukmccall)
⚠️ Notices
- Added support for React Native 0.75.x. (#30034 by @gabrieldonadel)
- Added support for React Native 0.76.x. (#31552 by @gabrieldonadel)
1.12.24 - 2024-09-03
🐛 Bug fixes
- Fix support for macOS. (#31307 by @gabrieldonadel)
1.12.23 - 2024-08-23
This version does not introduce any user-facing changes.
1.12.22 - 2024-08-20
This version does not introduce any user-facing changes.
1.12.21 - 2024-08-14
🐛 Bug fixes
- [iOS] Fix getExternalPathPermissions returns no read/write permissions. (#30540 by @dispelpowerone)
1.12.19 - 2024-07-11
💡 Others
- [iOS] Added
customizeRootView:support toEXAppDelegateWrapper.createRCTRootViewFactory. (#30245 by @kudo)
1.12.18 - 2024-06-28
🐛 Bug fixes
- Fixed
RCTTriggerReloadCommandListenersnot found build error on iOS. (#30014 by @kudo) - Fixed blocking SSE responses from network interceptor on Android. (#30062 by @kudo)
1.12.17 - 2024-06-27
🐛 Bug fixes
- [Android] Reduce the number of global references to JSIContext. (#29936 by @lukmccall)
- Fixed
getPathPermissionspermission error for local path with spaces on iOS 16 and older. (#29958 by @kudo) - [iOS] Fixed broken
addUIBlockandexecuteUIBlockon New Architecture mode. (#30030 by @kudo)
💡 Others
1.12.16 - 2024-06-20
🐛 Bug fixes
1.12.15 - 2024-06-13
🐛 Bug fixes
- Fixed reload crash on Android. (#29593 by @kudo)
- [Android] Fixed converting from
nulltoRecordsometimes didn't work as expected. (#29508 by @lukmccall)
1.12.14 - 2024-06-06
🐛 Bug fixes
- [Android] Fixed
No implementation found for com.facebook.jni.HybridData expo.modules.kotlin.jni.JavaScriptModuleObject.initHybrid. (#29513 by @lukmccall)
1.12.13 - 2024-06-05
💡 Others
- [iOS] Refactored
ExpoFabricViewand remove the view wrapper for each native component. (#28829 by @kudo)
1.12.12 - 2024-05-29
This version does not introduce any user-facing changes.
1.12.11 — 2024-05-14
🐛 Bug fixes
1.12.10 — 2024-05-09
🎉 New features
- Added
onKeyDownandonKeyLongPresstoReactActivityHandleron Android. (#28684 by @lukmccall)
1.12.9 — 2024-05-06
This version does not introduce any user-facing changes.
1.12.8 — 2024-05-03
🐛 Bug fixes
1.12.7 — 2024-05-02
🎉 New features
1.12.6 — 2024-05-01
🐛 Bug fixes
- [Android] Fix
field operation on NULL objectwhen reloading the app. (#28555 by @lukmccall)
1.12.5 — 2024-05-01
This version does not introduce any user-facing changes.
1.12.4 — 2024-04-29
🐛 Bug fixes
- [Android] Fixed gziped payload does not correctly shown in network inspector. (#28486 by @kudo)
- [Android] Fixed crashes during the deallocation of shared objects. (#28491 by @lukmccall)
- [iOS] Fix accessing the view registry to avoid infinite loop crash. (#28531 by @tsapeta)
1.12.3 — 2024-04-26
🐛 Bug fixes
- [Android] Fixes SEGFAULTs caused by
std::shared_ptr<JavaCalllback::CallbackContext>::__on_zero_shared. (#28483 by @lukmccall)
1.12.2 — 2024-04-23
This version does not introduce any user-facing changes.
1.12.1 — 2024-04-22
🐛 Bug fixes
- Fixed
AppContext.onHostResume()sometimes getting nullcurrentActivityon Android. (#28338 by @kudo) - Fixed backward compatibility in the build.gradle from third party Expo modules. (#28359 by @kudo)
1.12.0 — 2024-04-18
🛠 Breaking changes
- Removed
ReactNativeHostHandler.onRegisterJSIModulesinterface. (#26357 by @kudo) - Dropped supports for React Native 0.73 and lower. (#27601, #27689, #27629 by @kudo)
🎉 New features
- [Web] Add
createWebModulefunction to wrap web functionality with the NativeModule class. (#27739 by @aleqsio) - [Web] Add web implementations of event emitter and stubs of shared objects and native modules. (#27595 by @aleqsio)
- Mark React client components with "use client" directives. (#27300 by @EvanBacon)
- [iOS] Added basic filesystem module to decouple expo-file-system from other packages. (#27069 by @aleqsio)
- [Android] Added syntactic sugar for defining a prop group. (#27004 by @lukmccall)
- Introduced a base class for all shared objects (
expo.SharedObject) with a simple mechanism to release native pointer from JS. (#27038 by @tsapeta & #27331 by @lukmccall) - [iOS] Added native implementation of the JS EventEmitter. (#27092 by @tsapeta)
- [iOS] Allow for the export of views that conform to
AnyExpoView(#27284 by @dominicstop) - [iOS] Added support for bridgeless mode in React Native 0.74 (#27242, #27289, #27531 by @tsapeta)
- [iOS] Implemented sending events from native shared objects. (#27333 by @tsapeta)
- Added support for
startObservingandstopObservingin the newEventEmitterclass. (#27393 by @tsapeta) - [Android] Implemented sending events from native shared objects. (#27523 by @lukmccall)
- JS object of the native module is now an instance of the
NativeModuleclass that inherits fromEventEmitter. (#27510 by @tsapeta) - [iOS] Exposed a function on the runtime to schedule some work with synchronized access to JS. (#27567 by @tsapeta)
- [iOS]
OnStartObservingandOnStopObservingcan now be attached to a specific event. (#27766 by @tsapeta) - [iOS] Provide Exception.code to JavaScript (as Error.code) for all types of functions. (#27960 by @cltnschlosser)
🐛 Bug fixes
- Fixed breaking changes from React-Native 0.74. (#26357 by @kudo)
- Fixed breaking changes from React-Native 0.74. (#26357, #26587 by @kudo)
- [Android] Unit converter now ignores nullability. It will always return unit regardless of whether the input value is null or not. (#27591 by @lukmccall)
- Fixed
RCTHostis not retained on iOS bridgeless mode. (#27715 by @kudo) - Fixed errors on Android when running on bridgeless mode. (#27725 by @kudo)
- Fixed breaking changes from React Native 0.75. (#27773 by @kudo)
- Fixed crash from reloading on iOS and bridgeless mode. (#27928 by @kudo)
- Fixed SharedRef class names are obfuscated when R8 is enabled. (#27965 by @kudo)
- [iOS] Fix
recreateRootViewWithBundleURLparameters. (#27989 by @gabrieldonadel) - Fixed
ExpoBridgeModule.installModules()is broken on Android and bridgeless mode. (#28065 by @kudo) - [Android] Fixed segfaults in
expo::MethodMetadata::convertJSIArgsToJNI. (#28163 by @lukmccall) - Fixed random
TypeError: Cannot read property 'NativeModule' of undefinedexceptions on Android. (#28200 by @kudo) - Fixed white screen flickering when using expo-updates with longer
fallbackToCacheTimeout. (#28227 by @kudo) - [iOS] Fixed random crashes when reloads and
EXJavaScriptObjectaccesses to dangling pointers. (#28262 by @kudo)
💡 Others
- Deprecated
expo.modules.core.Promise. (#27471 by @aleqsio) - Removed deprecated
global.ExpoModules. (#26027 by @tsapeta) - Remove most of Constants.appOwnership. (#26313 by @wschurman)
- Added an alternative way of installing the JSI bindings. (#26691 by @lukmccall)
ObjectDeallocatoris now a native state instead of a host object. (#26906 by @tsapeta)- Moved away from
SharedObjectRegistrybeing a singleton. (#27032 by @tsapeta) - Moved and added more JSI utils to the common C++ codebase. (#27045 by @tsapeta)
- Introduce
EXCreateReactBindingRootViewto create correct React Native setup for New Architecture mode. (#27216 by @kudo) - Set bridge on
AppContextinExpoBridgeModule. (#27378 by @alanjhughes) - Added TypeScript declarations and documentation for global JSI bindings. (#27465 by @tsapeta)
- [iOS] Added bridgeless support on ExpoReactDelegate. (#27601, #27689 by @kudo)
- [Android] Added bridgeless support on ReactNativeHostHandler. (#27629 by @kudo)
- Refactored out
EXReactRootViewFactory.createDefaultReactRootView:toRCTAppDelegate.recreateRootViewWithBundleURL:category. (#27945 by @kudo) - Added
ReactNativeHostHandler.onReactInstanceException()for client to listen for exceptions on Android. (#27815 by @kudo) - Removed the legacy interfaces for font processors as they are no longer used by
expo-fontand nothing else depends on them. (#26380 by @tsapeta) - Removed deprecated backward compatible Gradle settings. (#28083 by @kudo)
- Bumped Kotlin version to 1.9.23. (#28088 by @kudo)
- Introduced
onDidCreateDevSupportManagerhandler to support error recovery from expo-updates. (#28177 by @kudo) - Dropped support for custom type converters on Android. (#28252 by @lukmccall)
- Introduced
ExpoReactDelegateHandler.bundleURLfor clients to override newer bundleURL. (#28256 by @kudo)
1.11.11 - 2024-03-11
🐛 Bug fixes
- [Android] Ensured that
onCreatebeforeOnActivityEntersForegroundevent. (#26944 by @lukmccall) - [Android] Fixed activity contract registration after host destruction. (#26881 by @lukmccall)
1.11.10 - 2024-03-06
🐛 Bug fixes
- [Android] Thrown an exception when nested types can't be converted instead of crashing the app. (#27449 by @lukmccall)
1.11.9 - 2024-02-16
🎉 New features
- Add timer capability to Logger. (#26454, #26477 by @wschurman)
- Add iOS support for
PlatformColorandDynamicColorIOScolor props. (#26724 by @dlindenkreuz) BarCodeScannerResultinterface now declares an additionalrawfield corresponding to the barcode value as it was encoded in the barcode without parsing. Will always be undefined on iOS. (#25391 by @ajacquierbret)
1.11.8 - 2024-01-23
🐛 Bug fixes
- Fix proguard rules so
Serializabletypes are not obfuscated. (#26545 by @alanjhughes)
1.11.7 - 2024-01-18
This version does not introduce any user-facing changes.
1.11.6 - 2024-01-12
This version does not introduce any user-facing changes.
1.11.5 - 2024-01-10
🎉 New features
- Added support for returning shared refs from async functions. (#26341 by @aleqsio)
- Added support for macOS platform. (#26186 by @tsapeta)
- Add
Datetype converter. (#26148 by @alanjhughes)
🐛 Bug fixes
- Adjust proguard rules to prevent issues with types implementing
Enumerable. (#26108 by @alanjhughes)
💡 Others
- Replace deprecated
com.facebook.react:react-native:+Android dependency withcom.facebook.react:react-android. (#26237 by @kudo)
1.11.4 - 2023-12-21
This version does not introduce any user-facing changes.
1.11.3 - 2023-12-19
🐛 Bug fixes
- [iOS] Fixed
SharedObjectRegistrycrash for accessing internal data structures from multi-threads. (#25997 by @kudo) - Fixed splash screen view flickering in dark mode on iOS. (#26015, #26029 by @kudo)
- Fixed
SharedObjectleakage on Android. (#25995 by @kudo)
1.11.2 — 2023-12-15
💡 Others
- [Android] Bump Kotlin version from
1.8.10to1.8.22. (#25945 by @lukmccall)
1.11.1 — 2023-12-12
🐛 Bug fixes
- [Android] Fixed
OnCreatewas called before theReactinstance was ready. (#25866 by @lukmccall)
1.11.0 — 2023-12-12
🎉 New features
- Added support for React Native 0.73.0. (#24971, #25453 by @gabrieldonadel)
- Added
Data <-> Uint8Arrayconvertible on iOS. (#25726 by @kudo) - Added
ByteArray <-> Uint8Arrayconvertible on Android. (#25727 by @kudo)
🐛 Bug fixes
- [Android] Prevent the app from crashing during reloading when an unfinished promise tries to execute.
- [Android] Fix
JavaScriptFunctionnot working when the return type wasn't provided. (#25688 by @lukmccall) - [Android] Fix requesting only
WRITE_SETTINGSrejecting promise even if the permission was granted. (#25732 by @lukmccall) - [Android] Fix functions that are scheduled on the main thread weren't being called as soon as possible. (#25757 by @lukmccall)
💡 Others
- [iOS] Made dynamic types creation faster. (#25390 by @tsapeta)
- [iOS] Add
FileSystemUtilitiesto replace legacy interfaces. (#25495 by @alanhughes) - Bump C++ compiler setting to C++20. (#25548 by @kudo)
- Marked
NativeModulesProxyas deprecated in favor ofrequireNativeModuleandrequireOptionalNativeModule. (#25666 by @tsapeta)
1.10.0 — 2023-11-14
🛠 Breaking changes
- Bumped iOS deployment target to 13.4. (#25063 by @gabrieldonadel)
- On
AndroidbumpcompileSdkVersionandtargetSdkVersionto34. (#24708 by @alanjhughes)
🎉 New features
- Add
preventModuleOverridingtoModuleRegistry.registermethod. (#24860 by @wschurman) - [iOS]
CGFloatcan now be used as an argument type. (#25140 by @tsapeta)
🐛 Bug fixes
- Mock native code on web platforms. (#25264 by @EvanBacon)
- [iOS] Fixed the object identifier for shared object types. (#25060 by @tsapeta)
- [iOS] Fixed concurrent functions (async/await) not converting results such as records and shared objects. (#25075 by @tsapeta)
- [iOS] Fixed concurrent functions (async/await) not supporting an owner argument (view and class functions). (#25141 by @tsapeta)
- Fixed UIView arguments not being resolved correctly when passed in with findNodeHandle (#24703 by @javache)
- [Android] Improve boot time on low-end devices. (#25267 by @lukmccall)
- [Android] Improve performance of enum and map converters. (#25272 by @lukmccall)
- [Android] Improve logic responsible for obtaining converters that slow down the startup time. (#25273 by @lukmccall)
- [Android] Improving the creation process of views for better performance. (#25274 by @lukmccall)
💡 Others
- Remove
unimodule.jsonin favour ofexpo-module.config.json. (#25100 by @reichhartd) - Remove deprecated
REACT_NATIVE_OVERRIDE_VERSIONfor React Native nightly testing. (#25151 by @kudo) - Removed backward compatible code for deprecated SDKs. (#25154 by @kudo)
1.9.0 — 2023-10-17
🛠 Breaking changes
🎉 New features
- Add
CommonExceptions.ModuleNotFound. (#24898 by @lukmccall) - [Android]
Set<T>can now be passed as an argument to a module method. (#24897 by @lukmccall)
🐛 Bug fixes
- Fixed typed arrays couldn't be returned from synchronous functions. (#24744 by @lukmccall)
- [iOS] Fixed exception when deallocating shared objects. (#24836 by @kudo)
- [Android] Fixed
nullorundefinedwasn't converted toJavaScriptValue. (#24899 by @lukmccall) - [Android] Fixed
Eitherconverter not working with types that have common representation in JavaScript. (#24903 by @lukmccall) - [Android]
Anyconverter doesn't useReadableMaporReadableListanymore. Objects and arrays are converted to Kotlin's primitives. (#24963 by @lukmccall)
💡 Others
- Improve tracking on Android. (#24625 by @lukmccall)
- Use native UUIDv5 generation on
AndroidandiOS. (#24200 by @behenate) - Ensure native modules are installed before required. (#24746 by @tsapeta)
- Clean up and restructure the modules core package directory. (#24816 by @tsapeta)
1.8.0 — 2023-09-15
🎉 New features
- Added support for Apple tvOS. (#24329 by @douglowder)
💡 Others
- Remove deprecated
RCTDeviceEventEmitter. (#24298 by @EvanBacon) - Remove
deprecateutility function. (#24298 by @EvanBacon) - Deprecate
SyntheticPlatformEmitterin favor ofDeviceEventEmitter. (#24298 by @EvanBacon) - Introduced an AppContext config to provide things like documents and caches directories for the modules. (#24292 by @tsapeta)
- Fixed random
NullPointerExceptionswhen callingUpdates.reloadAsyncon Android. (#24442 by @lukmccall) - Converting shared object id passed as a prop to the associated native object. (#24431 by @tsapeta)
- Added a convenient method to get the app delegate subscriber of the given type. (#23943 by @tsapeta)
1.7.0 — 2023-09-04
🎉 New features
- [Android] Surfaced errorManager to allow throwing errors and warnings from modules. (#23848 by @aleqsio)
- [Android] Enums can now be used to define events. (#23875 by @lukmccall)
- [Android] Promises can now be resolved without arguments. (#23907 by @lukmccall)
- Added support for React Native 0.73. (#24018, #24019 by @kudo)
- [Android]
Propertycomponent can now take the native shared object instance as the first argument. (#24206 by @lukmccall) - Introduced
requireOptionalNativeModulethat returnsnullwhen the module cannot be found instead of throwing an error. (#24262 by @tsapeta) - [Android] Introduced shared refs – a way to pass native objects among different independent modules. (#24446 by @lukmccall)
🐛 Bug fixes
- [Android] Refresh NativeModulesProxy if app bundle is reloaded. (#23824 by @douglowder)
- [Android] Fix nullability of parameter type in
ListandMapwhen converting from JS to native. (#23942 by @lukmccall) - Fixed Fabric setup error on iOS. (#24004 by @kudo)
- Fixed uuid v4 generation. (#24123 by @tsapeta)
- [Android] Fixed owner type of view functions. (#24135 by @lukmccall)
- [Android] Fixed IOException
No space left on devicewhen saving persistent log. (#24247 by @RodolfoGS)
💡 Others
- Use native UUIDv4 generation on
AndroidandiOS. (#24199 by @behenate) - [Android] Add type converter for the
ReadableArgumentsclass to allow backward compatibility with older modules. (#24137 by @lukmccall) - [Android]
SharedObjectTypeConverternow can work with theDynamicclass. (#24207 by @lukmccall) - [Android] Expose a conversion between id and shared objects. (#24220 by @lukmccall)
1.6.0 — 2023-07-28
🐛 Bug fixes
- [iOS] Fixed custom fonts support on Fabric. (#23666 by @aleqsio)
- [Android] Fixed splash screen is missing when using the
getDelayLoadAppHandler()from expo-updates. (#23747 by @kudo)
💡 Others
- Fork
uuid@3.4.0and move intoexpo-modules-core. Remove the original dependency. (#23249 by @alanhughes) - Improved error handling when working with native promises on Android. (#23571 by @lukmccall)
- Added tracing to avoid slow app startup on Android. (#23653 by @lukmccall)
1.5.8 - 2023-07-23
🐛 Bug fixes
- Fixed the
ErrorViewGroupcannot be cast to module view class exception on Android. (#23651 by @lukmccall) - [iOS] Fix allowed orientations set in
Info.plistbeing ignored when no delegates requested a different orientation. (#23593 by @behenate)
1.5.7 — 2023-07-12
🐛 Bug fixes
1.5.6 - 2023-07-10
🐛 Bug fixes
- Fixed the Network Inspector cannot preview response body for response without the
Content-Lengthheader. (#23405 by @kudo) - Fixed
SoLoaderdoes not work on Android. (#23415 by @kudo) - Fixed slower boot time on Android. (#23345 by @lukmccall)
1.5.5 - 2023-07-07
🐛 Bug fixes
- Improved the OkHttp network inspector stability on Android. (#23350 by @kudo)
- [iOS] Fix conversion to
URLtype that failed despite receiving a string that contained a valid URL. (#23331 by @alanhughes) (#23331 by @alanjhughes)
1.5.4 - 2023-07-04
🐛 Bug fixes
- Fix the
View cannot be cast to ViewGroupexception on Android. (#23264 by @lukmccall)
💡 Others
- Changed Objective-C names for
ExpoReactDelegateandExpoReactDelegateHandlerto fix issues with versioning in Expo Go. (#23229 by @tsapeta)
1.5.3 — 2023-06-24
🎉 New features
1.5.2 — 2023-06-24
This version does not introduce any user-facing changes.
1.5.1 — 2023-06-22
This version does not introduce any user-facing changes.
1.5.0 — 2023-06-21
💡 Others
1.4.0 — 2023-06-13
📚 3rd party library updates
- Updated
robolectricto4.10andjunitto4.13.2. (#22395 by @josephyanks)
🎉 New features
- Added
ReactActivityHandler.getDelayLoadAppHandlerinterface on Android. (#20273 by @kudo) - [iOS] Introduced shared refs – a way to pass native objects among different independent modules. (#22583 by @tsapeta)
- Added support for React Native 0.72. (#22588 by @kudo)
🐛 Bug fixes
- Fix failing instrumentation tests in JavaScriptViewModule. (#22518 by @aleqsio)
- Fixed Android build warnings for Gradle version 8. (#22537, #22609 by @kudo)
- [Android] Fix the
Colorconverter doesn't work on devices with SDK version below 26. (#22191 by @lukmccall) - Refactored network inspector code and add unit tests. (#22669, #22693 by @kudo)
💡 Others
- Updated
androidx.activity:activity-ktxto1.7.1andandroidx.fragment:fragment-ktxto1.5.7#22658 by @fobos531
1.3.2 — 2023-05-09
🐛 Bug fixes
- Fixed passing
JavaScriptObjectargument and view props. (#22427 by @lukmccall)
1.3.1 — 2023-05-08
💡 Others
- Made
JavaScriptValue.kindpublic. (#22386 by @lukmccall)
1.3.0 — 2023-05-08
🎉 New features
- [iOS] Introduced native functions on the native component instances. (#21746 by @tsapeta)
- View tag and React component ref can now be converted to an instance of the native view when used as a function's argument. (#21816 by @lukmccall, #21829 by @tsapeta)
- JavaScript functions can now be passed as an argument to a module method. (#21976 by @lukmccall, #22245 by @tsapeta)
- [iOS] Initializing and returning shared objects from the native side. (#22195 by @tsapeta)
🐛 Bug fixes
- Fixed build errors on React Native 0.72.x. (#22170, #22189 by @kudo)
- [Android] Fixed argument trailing not working correctly when all parameters are optional. (#22293 by @lukmccall)
💡 Others
- [Android] Made
fallbackCallbackoptional in theregisterForActivityResultmethod. (#21661 by @lukmccall) - [iOS] Removed the legacy implementation of view managers. (#21760 by @tsapeta)
- [iOS] Passed the app context instance down to dynamic types, object builders and convertibles. (#21819 by @tsapeta)
- [iOS] Use
jsi::WeakObjectfor weak objects on Hermes. (#21986 by @tsapeta) - [iOS] Removed legacyViewManager references from ExpoFabricView. (#22089 by @gabrieldonadel)
- [iOS] Dropped
proxiedPropertiesprop. (#22280 by @tsapeta)
1.2.7 - 2023-05-03
🐛 Bug fixes
- [Android] Improve the initial loading speed of the native view. (#22153 by @lukmccall)
1.2.6 - 2023-03-20
🐛 Bug fixes
- [Android] Fixed
ReadableNativeMapcannot be cast to theRecord. (#21773 by @lukmccall)
1.2.5 - 2023-03-14
🐛 Bug fixes
- [Android] Fixed coroutine functions crashing when invoked with more than 1 argument. (#21635 by @lukmccall)
- [iOS] Fix automatic percent-encoding when converting to the
URLobject. (#21569 by @tsapeta)
1.2.4 - 2023-03-03
🐛 Bug fixes
- [iOS] Fixed jsc import when using use_frameworks (#21479 by @gabrieldonadel)
1.2.3 - 2023-02-21
🐛 Bug fixes
- [iOS] Fixed URI with encoded
#getting cut off. (#21326 by @lukmccall) - [Android] Fail gracefully when the view cannot be constructed due to the missing activity. (#21328 by @lukmccall)
1.2.2 — 2023-02-14
🐛 Bug fixes
- [iOS] Fixed convertible implementation for
URLtype to support unencoded UTF8 urls and file paths. (#21139 by @tsapeta) - Fixed AppDelegateSubscriber broken when running on iOS dynamic framework or static framework mode. (#21206 by @kudo)
1.2.1 — 2023-02-09
🐛 Bug fixes
- Fix crash when reloading app while expo-av video is playing. (#21118 by @janicduplessis)
1.2.0 — 2023-02-03
🎉 New features
- View-related DSL functions do not require providing the view's type in function parameters on Android. (#20751 by @lukmccall)
- Add support for the
Longtype as function parameters on Android. (#20787 by @lukmccall) - [Android] Added experimental support for building the function result from the object definition. (#20864 by @lukmccall)
- Removed boost dependency which needs extra downloading on Android. (#21000 by @kudo)
🐛 Bug fixes
- Fix view prop setter not being called when its new value is
nullorundefined. (#20755 & #20766 by @tsapeta & @lukmccall) - Fixed "Tried to register two views with the same name" error on fast refresh. (#20788 by @tsapeta)
💡 Others
- On Android bump
compileSdkVersionandtargetSdkVersionto33. (#20721 by @lukmccall)
1.1.1 — 2023-01-06
🎉 New features
- Added support for concurrent (async/await) functions in Swift. (#20645 by @tsapeta)
- [iOS] Added experimental support for building the function result from the object definition. (#20623 by @tsapeta)
🐛 Bug fixes
1.1.0 — 2022-12-30
🎉 New features
- Added TS definitions for
TypedArrayand additional union types for Int, Uint and Float TypedArrays. (#20257 by @aleqsio) - Added a new
executeOnJavaScriptThreadmethod toappContextto allow for running code blocks on the JS thread. (#20161 by @aleqsio) - Added the
Exceptions.MissingActivityon Android. (#20174 by @lukmccall) - Trailing optional arguments can be skipped when calling native functions from JavaScript on iOS. (#20234 by @tsapeta)
Eventscomponent can now be initialized with an array of event names (not only variadic arguments). (#20590 by @tsapeta)Propertycomponent can now take the native shared object instance as the first argument. (#20608 by @tsapeta)- Added support for referencing to
Property's owner properties using Swift key paths. (#20610 by @tsapeta)
🐛 Bug fixes
- Fixed build errors when testing on React Native nightly builds. (#19805 by @kudo)
- Fixed failed resolution of 'java.nio.file.Path' on Android. (#20037 by @lukmccall)
- Fixed libraries using the
ViewDefinitionBuildercrashes when ProGuard or R8 is enabled on Android. (#20197 by @lukmccall) - Fixed Either types not supporting non-primitive types on iOS. (#20247 by @tsapeta)
- Fixed Function not supporting certain arities on Android. (#20419 by @motiz88)
- Added React Native 0.71 support. (#20470 by @kudo)
- Fixed the
SharedObjectinitializer being inaccessible due tointernalprotection level. (#20588 by @tsapeta)
💡 Others
- [iOS] Make
Enumerableprotocol implementCaseIterableto get rid of operating on unsafe pointers. (#20640 by @tsapeta)
1.0.4 - 2022-12-21
🐛 Bug fixes
- Fixed views are not correctly initialized after reloading on Android. (#20063 by @lukmccall)
- Fixed threading crash issue when running with Hermes on iOS. (#20506 by @kudo)
1.0.2 - 2022-11-08
💡 Others
1.0.1 - 2022-11-07
🐛 Bug fixes
- Added a list of the acceptable enum values to the conversion error on Android. (#19895 by @lukmccall)
- Fixed
new NativeEventEmitter() was called with a non-null argument without the required addListener method.warnings on Android with JSC. (#19920 by @kudo)
💡 Others
- Exposed coroutines related packages on Android. (#19896 by @lukmccall)
1.0.0 — 2022-11-03
This version does not introduce any user-facing changes.
0.13.4 — 2022-11-02
🐛 Bug fixes
0.13.3 — 2022-10-30
🎉 New features
- Added
AppContext.hasActiveReactInstanceon Android. (#19723 by @lukmccall)
0.13.2 — 2022-10-28
🐛 Bug fixes
- Fixed
new NativeEventEmitter() was called with a non-null argument without the required addListener method.warnings on Android. (#19704 by @kudo, @kudo)
0.13.1 — 2022-10-27
🐛 Bug fixes
- Fixed
~CallbackWrapper()dangling pointer crashes when reloading the app on Android. (#19699 by @kudo, @kudo)
0.13.0 — 2022-10-25
🛠 Breaking changes
- Convertible enums must inherit from
expo.modules.kotlin.types.Enumerableon Android. (#19551 by @lukmccall) AppContext.currentActivityis not longer returningAppCompatActivity, but an instance ofandroid.app.Activityclass. (#19573 by @lukmccall)
⚠️ Notices
- Deprecated
ConvertibleArgumentin favor ofConvertibleandEnumArgumentin favor ofEnumerable. (#19612 by @tsapeta)
🎉 New features
- Implemented a mechanism for hooking into to the view lifecycle events (introduces new
OnViewDidUpdatePropsdefinition component). (#19549 by @tsapeta)
🐛 Bug fixes
- Fixed records aren't correctly converted to JS objects in the release builds on Android. (#19551 by @lukmccall)
- Reject promises with a
CodedErrorinstead of a plain object. (#19605 by @tsapeta)
💡 Others
0.12.0 — 2022-10-06
🛠 Breaking changes
⚠️ Notices
- Removed deprecated module definition components that started with a lowercase letter. (#18851 by @tsapeta)
- Added support for React Native 0.70.x. (#19261 by @kudo)
🎉 New features
- Added the interface for the light sensor support on Android. (#18225 by bearkillerPT)
- Add better JSI error handling on Android. (#18259 by @lukmccall)
- Experimental support for typed arrays on Android. (#18379 by @lukmccall)
- Using JSI instead of the bridge to call native methods also on legacy modules on iOS. (#18438 by @tsapeta)
- Experimental support for Fabric on iOS. (#18500, #18678 by @tsapeta)
- Added view prop callbacks support for old-style views written in Objective-C. (#18636 by @tsapeta)
- Add Logger support for writing logs to a file; add Logger and associated classes to Android. (#18513 by @douglowder)
- Experimental support for Fabric on Android. (#18541 by @kudo)
- Add option to generate a
coalescingKeyin callback on Android. (#18774 by @lukmccall) - Automatically convert records to dicts when returned by the function. (#18824 by @tsapeta)
- Closures passed to definition components are now implicitly capturing
selfon iOS. (#18831 by @tsapeta) - Support for CSS named colors in
UIColorandCGColorconvertibles on iOS. (#18845 by @tsapeta) - Lazy load building the module's JavaScript object from the definition on iOS (already implemented on Android). (#18863 by @tsapeta)
- Inferring the view type in
Propsetter closure. (#19004 by @tsapeta) - [core] Added
REACT_NATIVE_DOWNLOADS_DIRenvironment variable to specify custom third party libraries download location. (#19015 by @kudo) - Add support for the
android.graphics.Colorclass as the function parameter. (#19054 by @lukmccall) - Add support for
android.net.Uri,java.io.File,java.net.URIandjava.nio.file.Pathclasses as function parameters. (#19169 by @lukmccall) - Add the
RegisterActivityContractscomponent to register all of activity result contracts on Android. (#19180 by @lukmccall) - Improves JSI/JNI type conversion to support complex function arguments on Android. (#19120 & #19094 by @lukmccall)
- Using JSI instead of the bridge to call native methods also on legacy modules on iOS. (#19209 by @lukmccall)
- Added
cacheDirectoryandpersistentFilesDirectorytoAppContexton Android to fix cache directories being incorrect in new Sweet API modules. It uses a newAppDirectoriesModuleto get correct scoped directories from old module API. (#19205 by @aleqsio)
🐛 Bug fixes
- Fixed the
2 files found with path 'lib/arm64-v8a/libfbjni.so'error on Android. (#18607 by @lukmccall) - Fixed event dispatching for Sweet API views when running in Fabric mode on Android. (#18814 by @kudo)
- Update gradle excludes to fix detox tests. (#19254 by @esamelson)
- Fixed event listeners do not work when running with remote debugging mode on iOS. (#19211 by @kudo)
- Use shared C++ runtime to reduce library size on Android. (#19372 by @kudo)
- Fixed
JSCRuntime destroyed with a dangling API objecton Android. (#19487 by @lukmccall)
💡 Others
- Centralized Android emulator detection for native code and added checks to pick up additional emulator types in
EmulatorUtilities. (#16177) by @kbrandwijk, @keith-kurak) - Created a separate high priority queue for all async function calls. (#18734 by @tsapeta)
- The host object for native modules is now installed as
global.expo.modulesinstead ofglobal.ExpoModules. (#19273 & #19281 by @tsapeta, @lukmccall)
0.11.7 — 2022-10-06
🐛 Bug fixes
- Fixed
ModuleRegistryinitialized twice when startup on Android. (#19384 by @kudo and @lukmccall) - Ensure that AppDelegate callbacks are invoked. (#19393 by @ferologics)
- Fixed Android crash when Activity is destroyed before
AppContext.onHostDestroycall. (#19406 by @kudo)
0.11.6 — 2022-10-02
🐛 Bug fixes
- Give precedence to
UIBackgroundFetchResult.newDataover.failedin proxiedExpoAppDelegate.swiftcompletion handlers. (#19311 by @ferologics)
0.11.5 — 2022-09-01
🐛 Bug fixes
- Removed the hard dependency to Hermes or JSC in libexpo-modules-core.so on Android and fixed the broken support for react-native-v8. (#18899 by @kudo)
0.11.4 — 2022-08-18
🐛 Bug fixes
- Fix issue with Android builds when gradle clean and build were called concurrently. (#18518 by EdwardDrapkin)
- Fixed
FabricUIManagererrors when turning on new architecture mode on Android. (#18472 by @kudo)
0.11.3 — 2022-07-18
💡 Others
- Changed access levels in the Logger and fixed the timer to log milliseconds instead of seconds. (#18271 by @douglowder)
0.11.2 — 2022-07-16
🐛 Bug fixes
- Fix dangling pointer in the fbjni from the MethodMetadata::createPromiseBody on Android. (#18206 by @lukmccall)
0.11.1 — 2022-07-11
🐛 Bug fixes
0.11.0 — 2022-07-07
🎉 New features
- Create
AppContext.registerForActivityResultmechanism similar toComponentActivity.registerForActivityResult). (#17572, (#17987 by @bbarthec)
🐛 Bug fixes
0.10.0 — 2022-06-23
🎉 New features
- Add proxy methods for
Permissionsmodule acceptingexpo.modules.kotlin.Promiseon Android. (#17668 by @bbarthec) - Create
CurrentActivityProvideron Android. (#17571 by @bbarthec) - Create
AppContextProvideron Android. (#17546 by @bbarthec) - Introduce dynamic properties in the Sweet API on iOS. (#17318 by @tsapeta)
- Implemented classes in the Sweet API on iOS. (#17514, #17525 by @tsapeta)
- Add basic support for sync functions in the Sweet API on Android. (#16977 by @lukmccall)
- Better error handling in the synchronous functions on iOS. (#17628 by @tsapeta)
- Experimental support for typed arrays on iOS. (#17667 by @tsapeta)
🐛 Bug fixes
- Fix modules have not been deallocated during the application reload on iOS. (#17285 by @lukmccall)
- Fix view props weren't recognized in the bare workflow on iOS. (#17411 by @lukmccall)
- Fix support for optional function arguments on iOS. (#17950 by @barthap)
- Added support for React Native 0.69.x (#17629 by @kudo)
💡 Others
- Migrated Expo modules definitions to the new naming convention. (#17193 by @tsapeta)
- Refactored Expo modules registration and the
AppContexton iOS. (#17225 by @tsapeta) - Split the implementation of async and sync functions on iOS. (#17188 by @tsapeta)
0.9.0 — 2022-04-21
⚠️ Notices
- Renamed all definition components to start with the uppercase letter. The old names will be removed in the next minor release. (#17153 by @lukmccall, #17098 by @tsapeta)
🎉 New features
- Add
ReactNativeHostHandler.getUseDeveloperSupport()to allowexpo-dev-launcherto override this value at runtime. (#17069 by @esamelson)
0.8.0 — 2022-04-18
🛠 Breaking changes
⚠️ Notices
- Deprecated current behavior of
functionmodule definition component in favor ofasyncFunctionto emphasize that it's being executed asynchronously in JavaScript. In the future releasefunctionwill become synchronous. (#16630 by @tsapeta, #16656 by @lukmccall) - On Android bump
compileSdkVersionto31,targetSdkVersionto31andJavaversion to11. (#16941 by @bbarthec)
🎉 New features
- Add
getDevSupportManagerFactorysupport toReactNativeHostHandler. (#16434 by @lukmccall) - Add support for automatic setup of
expo-dev-clienton Android. (#16441 by @esamelson) - Stopped relying on deprecated
ViewPropTypesfrom React Native. (#16207 by @tsapeta) - Added Android
ReactNativeHostHandler.getJavaScriptExecutorFactory()for a module to override theJavaScriptExecutorFactory. (#17005 by @kudo)
🐛 Bug fixes
- Fix the
Fatal error: Expo modules provider must implement "ModulesProviderProtocol"runtime error in XCTest targets and SwiftUI Preview. (#16733 by @kudo)
💡 Others
- Removed the opt-in feature to use the turbo module implementation of
NativeModulesProxyin favor of another solution introduced in #15847. (#16825 by @tsapeta)
0.7.0 — 2022-01-26
🎉 New features
- Allow accessing
RCTBridgefrom the modules on iOS. (#15816 by @tsapeta) - Added support for native callbacks through the view props in Sweet API on iOS. (#15731 by @tsapeta)
- Added support for native callbacks through the view props in Sweet API on Android. (#15743 by @lukmccall)
- The
ModuleDefinitionwill use class name if thenamecomponent wasn't provided in Sweet API on Android. (#15738 by @lukmccall) - Added
onViewDestroyscomponent to theViewManagerin Sweet API on Android. (#15740 by @lukmccall) - Added shortened
constantscomponent that takesvargs Pair<String, Any?>as an argument in Sweet API on Android. (#15742 by @lukmccall) - Introduced the concept of chainable exceptions in Sweet API on iOS. (#15813 by @tsapeta)
- Sweet function closures can throw errors on iOS. (#15849 by @tsapeta)
- Add
requireNativeModulefunction to replace accessing native modules fromNativeModulesProxy. (#15848 by @tsapeta) - Implemented basic functionality of JSI host object to replace
NativeModulesProxyon iOS. (#15847 by @tsapeta)
🐛 Bug fixes
- It's no longer possible to directly call methods from the
ModuleDefinitionin theViewManagerson Android. (#15741 by @lukmccall) - Fix compatibility with react-native 0.66. (#15914 by @kudo)
- Fix
Plugin with id 'maven' not foundbuild error from Android Gradle 7. (#16080 by @kudo)
0.6.5 — 2022-02-01
🐛 Bug fixes
0.6.4 — 2022-01-05
🐛 Bug fixes
- Fix
ReactInstanceManager.onHostPauseexception from moving Android apps to background. (#15748 by @kudo)
0.6.3 — 2021-12-16
🐛 Bug fixes
- Fixed the deep link wasn't passed to the application if the application wasn't running when the deep link was sent. (#15593 by @lukmccall)
0.6.2 — 2021-12-15
🎉 New features
0.6.1 — 2021-12-08
This version does not introduce any user-facing changes.
0.6.0 — 2021-12-03
🎉 New features
- Made
Foundation.URLa convertible type to consistently normalize file paths to file URLs. (#15278 by @tsapeta) - Improve external Android handlers or listeners backward compatibility by Java 8 interface default method. (#15421 by @kudo)
💡 Others
- Add parameter to
ReactNativeHostHandler.onDidCreateReactInstanceManageron Android. (#15221 by @esamelson) - Make the no-argument module initializer unavailable —
onCreatedefinition component should be used instead. (#15262 by @tsapeta)
0.5.0 — 2021-11-17
🎉 New features
- Method calls on iOS now can go through the JSI instead of the bridge (opt-in feature). (#14626 by @tsapeta)
AppDelegateWrapperis now written in Swift and is independent of the singleton modules. (#14867 by @tsapeta)- Implemented sending native events to JavaScript in Sweet API on iOS. (#14958 by @tsapeta)
- [Sweet API] Introduced Convertibles on iOS — a way to use custom types as method arguments if they can be converted from JavaScript values. Provided implementation for some common CoreGraphics types. (#14988 by @tsapeta)
- Introduce
ReactActivityHandlerand supportcreateReactRootViewhook. (#14883 by @kudo) - [Sweet API] Added support for array types in method arguments on iOS. (#15042 by @tsapeta)
- [Sweet API] Added support for optional types in method arguments on iOS. (#15068 by @tsapeta)
- [Sweet API] Added support for enums in method arguments on iOS. (#15129 by @tsapeta)
- [Sweet API] Automatic conversion is now available for view props setters. (#15132 by @tsapeta)
- [Sweet API] Added experimental implementation of the new API in Kotlin. (by @lukmccall)
- Introduce EXAppDefines to get app building configurations. (#14428 by @kudo)
- Introduce React Native bridge delegate handlers on iOS. (#15138 by @kudo)
🐛 Bug fixes
0.4.7 — 2021-10-28
🐛 Bug fixes
0.4.6 — 2021-10-27
This version does not introduce any user-facing changes.
0.4.5 — 2021-10-25
This version does not introduce any user-facing changes.
0.4.4 — 2021-10-15
🐛 Bug fixes
0.4.3 — 2021-10-15
This version does not introduce any user-facing changes.
0.4.2 — 2021-10-01
This version does not introduce any user-facing changes.
0.4.1 — 2021-09-29
🐛 Bug fixes
- Removed accidentally published prebuilt binaries on iOS.
0.4.0 — 2021-09-28
🐛 Bug fixes
- Fix imports that affect versioned code inside of Expo Go. (#14436 by @cruzach)
- Fixed event emitter being registered after module registry initialization. (#14502 by @tsapeta)
- Fix building errors from use_frameworks! in Podfile. (#14523 by @kudo)
0.3.2 — 2021-09-15
🛠 Breaking changes
🎉 New features
- Added
Platform.isAsyncDebuggingto detect remote debugging (#14396 by @EvanBacon)
🐛 Bug fixes
0.3.1 — 2021-09-09
⚠️ Notices
- The package is now shipped with prebuilt binaries on iOS. You can read more about it on expo.fyi/prebuilt-modules. (#14350 by @kudo)
0.3.0 — 2021-09-08
🎉 New features
- Expo modules are now being automatically registered on iOS which means less installation steps. Using
EXModuleRegistryProviderandEXModuleRegistryAdapterbecomes deprecated. (#14132 by @tsapeta) - Pass
useDeveloperSupportvalue toReactNativeHostHandlerfor expo-updates. (#14198 by @kudo)
🐛 Bug fixes
- Fix
Cannot read property 'addProxiedListener' of nullon Android. (#14343 by @lukmccall) - Fix
'-[RCTModuleRegistry getAllExportedModules]: unrecognized selectorcrash while adding the event listener. (#14130 by @lukmccall) - Fix redbox error for
Unable to find module for UMReactNativeEventEmitterin debug build. (#14276 by @kudo)
0.3.0-alpha.0 — 2021-08-17
🎉 New features
- Use stable manifest ID where applicable. (#12964 by @wschurman)
- Add permission hook factory. (#13782 by @byCedric)
- Experimental API for creating native modules in Swift (by @tsapeta)
🐛 Bug fixes
0.1.1 — 2021-06-16
This version does not introduce any user-facing changes.
0.1.0 — 2021-06-16
This version does not introduce any user-facing changes.
0.0.2 — 2021-05-25
💡 Others
- Added
Interfacesuffix to sensors, barcode scanner and font interfaces names to get rid of name collisions. (#12888, #12912, #12949 by @tsapeta)
0.0.1 — 2021-05-07
This version does not introduce any user-facing changes.