Important: This documentation covers Yarn 1 (Classic).
For Yarn 2+ docs and migration guide, see yarnpkg.com.

Package detail

expo-modules-core

expo5.2mMIT2.2.3TypeScript support: included

The core of Expo Modules architecture

expo, modules, expo-modules, unimodules, react-native

readme

expo sdk

Expo

Expo SDK version Chat or ask a question License: MIT Downloads

Try Expo in the Browser  •  Read the Documentation  •  Learn more on our blog  •  Request a feature

Follow us on

Expo on X   Expo on GitHub   Expo on Reddit   Expo on LinkedIn   Expo on LinkedIn

Introduction

Expo is an open-source platform for making universal native apps that run on Android, iOS, and the web. It includes a universal runtime and libraries that let you build native apps by writing React and JavaScript.

This repository includes the Expo SDK, Modules API, Go app, CLI, Router, documentation, and various other supporting tools. Expo Application Services (EAS) is a platform of hosted services that are deeply integrated with Expo open source tools. EAS helps you build, ship, and iterate on your app as an individual or a team.

Read the Expo Community Guidelines before interacting in the repository. Thank you for helping keep the Expo community open and welcoming!

Table of contents

📚 Documentation

Learn about building and deploying universal apps in our official docs!

🗺 Project Layout

  • packages All the source code for Expo modules, if you want to edit a library or just see how it works this is where you'll find it.
  • apps This is where you can find Expo projects which are linked to the development modules. You'll do most of your testing in here.
  • apps/expo-go This is where you can find the source code for Expo Go.
  • apps/expo-go/ios/Exponent.xcworkspace is the Xcode workspace. When developing iOS, always open this instead of Exponent.xcodeproj because the workspace also loads the CocoaPods dependencies.
  • docs The source code for https://docs.expo.dev
  • templates The template projects you get when you run npx create-expo-app
  • react-native-lab This is our fork of react-native used to build Expo Go.
  • guides In-depth tutorials for advanced topics like contributing to the client.
  • tools contain build and configuration tools.
  • template-files contains templates for files that require private keys. They are populated using the keys in template-files/keys.json.
  • template-files/ios/dependencies.json specifies the CocoaPods dependencies of the app.

🏅 Badges

Let everyone know your app can be run instantly in the Expo Go app!

runs with Expo Go

runs with Expo Go

[![runs with Expo Go](https://img.shields.io/badge/Runs%20with%20Expo%20Go-000.svg?style=flat-square&logo=EXPO&labelColor=f3f3f3&logoColor=000)](https://expo.dev/client)

[![runs with Expo Go](https://img.shields.io/badge/Runs%20with%20Expo%20Go-4630EB.svg?style=flat-square&logo=EXPO&labelColor=f3f3f3&logoColor=000)](https://expo.dev/client)

👏 Contributing

If you like Expo and want to help make it better then check out our contributing guide! Check out the CLI package to work on the Expo CLI.

❓ FAQ

If you have questions about Expo and want answers, then check out our Frequently Asked Questions!

If you still have questions you can ask them on our Discord and Forums or X @expo.

💙 The Team

Curious about who makes Expo? Here are our team members!

License

The Expo source code is made available under the MIT license. Some of the dependencies are licensed differently, with the BSD license, for example.

Star the Expo repo on GitHub to support the project

changelog

Changelog

Unpublished

🛠 Breaking changes

🎉 New features

🐛 Bug fixes

💡 Others

2.2.3 — 2025-03-11

🐛 Bug fixes

  • Fixed kotlinx.coroutines.CancellableContinuationImpl.alreadyResumedError error on Android. (#35114 by @kudo)

2.2.2 — 2025-02-14

🎉 New features

  • [iOS] Support async functions by SwiftUI views (#34853 by @jakex7)

2.2.1 — 2025-02-06

This version does not introduce any user-facing changes.

2.2.0 — 2025-01-27

🎉 New features

  • [Android] Added support for Jetpack Compose views. (#33759 by @aleqsio)

🐛 Bug fixes

  • Fixed AppDelegate.mm methods not be called on iOS. (#34464 by @kudo)
  • [Android] Fixes AppContext is 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

🎉 New features

💡 Others

  • Allowed extending process.env types. (#34112 by @kudo)

2.1.3 — 2025-01-10

This version does not introduce any user-facing changes.

2.1.2 — 2024-12-16

🐛 Bug fixes

2.1.1 — 2024-12-02

This version does not introduce any user-facing changes.

2.1.0 — 2024-11-29

🎉 New features

  • Added support for rendering children components in SwiftUI views. (#33271 by @tsapeta)

🐛 Bug fixes

  • Fixed backwards compatibility in the EventEmitter constructor. (#33294 by @tsapeta)

💡 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 process type 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 findNodeHandle with a native ref instead of a class component instance to avoid expensive calls to findCurrentFiberUsingSlowPath. (#33016 by @tsapeta)
  • Introduced ReactNativeFeatureFlags compat 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/fetch being stuck on iOS. (#32894 by @kudo)
  • [Android] Fixed sending event containing ByteArray from the Kotlin module results in string ID instead of Uint8Array. (#32945 by @lukmccall)

2.0.2 — 2024-11-13

💡 Others

  • [Android] Added executeTask method to TaskManagerUtilsInterface (#32849 by @chrfalch)

2.0.1 — 2024-11-12

🐛 Bug fixes

2.0.0 — 2024-11-10

🐛 Bug fixes

  • [Android] Ensure that the headless app loader is started on the main thread. (#32705 by @chrfalch)

2.0.0-preview.10 — 2024-11-07

🐛 Bug fixes

2.0.0-preview.9 — 2024-10-31

💡 Others

  • [Android] Fix ClassCastException in 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 process an interface. (#32464 by @tsapeta)

2.0.0-preview.7 — 2024-10-29

💡 Others

  • [Android] Added shouldUseAndroidLayout flag to ExpoView. (#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

  • Added a new dynamic type dedicated for Either types. (#32328 by @tsapeta)

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

💡 Others

2.0.0-preview.1 — 2024-10-22

🐛 Bug fixes

  • [iOS] Removed window synthesis in EXAppDelegateWrapper to fix crashes caused by deallocated RCTFabricSurface. (#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 startObserving and stopObserving on the web. (#28953 by @aleqsio)
  • Switched exported EventEmitter to the C++ implementation. (#28946 by @tsapeta)
  • [Android] OnStartObserving and OnStopObserving can 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 SharedObject from functions. (#30426 by @lukmccall)
  • [iOS] Support implementing customizeRootView in ExpoAppDelegateSubscriber. (#30550 by @alanjhughes)
  • [Android] Added support for primitive arrays in functions. (#30657 by @lukmccall)
  • Implemented toJSON function 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] EitherTypeConverter now can work with the Dynamic class. (#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] SharedRef converter 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 onStartListeningToEvent and onStopListeningToEvent to the SharedObject. (#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 nativeRefType to SharedRef. (#31776 by @lukmccall)
  • [Android] Added kotlin.time.Duration support. (#31858 by @lukmccall)
  • Return duration from logger timer block methods. (#31805 by @wschurman)
  • [iOS] Made CMTime from CoreMedia a convertible type. (#31967 by @tsapeta)

🐛 Bug fixes

  • [Android] Fixed RNHeadlessAppLoader class for New Architecture support. (#32146 by @chrfalch)
  • [iOS] Fix using enums as optional arguments. (#32147 by @aleqsio)
  • [Android] Change JS return type for kotlin null to be null instead of undefined. (#31301 by @aleqsio)
  • [iOS] Swift Enumerables did not correctly convert to JS values. (#30191 by @vonovak)
  • [jest] Fix uuid mock in jest-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 getName of ModuleRegistryReadyNotifier.java (#30358 by @WoLewicki)
  • [Android] When a SharedObject that 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.RuntimeHolder class not found crash when R8 is enabled. (#30572 by @kudo)
  • [Android] Fixed Class declares 0 type parameters, but X were provided on 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 device when saving persistent log. (#31583 by @RodolfoGS)
  • Fixed iOS reload crash on New Architecture mode. (#31789 by @kudo)
  • [iOS] Fixed views using the incorrect AppContext instance. (#31897 by @lukmccall)
  • [iOS] Fixed crashes on the New Architecture when dispatching events during the props update. (#31971 by @tsapeta)
  • Fixed registerAdditionalModuleClasses deadlock issue on old architecture mode. (#32209 by @kudo)

💡 Others

  • Added documentation links to Record and Field implementations (#31997 by @vonovak)
  • Remove web hydration process.env type. (#31267 by @EvanBacon)
  • Added an async extension for OkHttp requests. (#30841 by @aleqsio)
  • Change sideEffects to use src folder. (#29964 by @EvanBacon)
  • [web] Use global crypto object for UUID. (#29828 by @EvanBacon)
  • [iOS] Send open url event to all matching subscribers. (#29645 by @aleqsio)
  • Use process.env.EXPO_OS for Platform.OS and Platform.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) from expo-modules-core/types. (#28994 by @tsapeta)
  • [Android] Switch to the JS thread when sending an event. (#29753 by @lukmccall)
  • Moved process object declaration to global declaration. (#29745 by @tsapeta)
  • Use the src folder 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 pointer property in the SharedRef class to ref for 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 URLSessionSessionDelegateProxy class. (#30173 by @kudo)
  • [Android] Supports passing Accept: text/event-stream header to bypass streaming requests from ExpoNetworkInspectOkHttpInterceptors. (#30219 by @kudo)
  • Replaced @testing-library/react-hooks with @testing-library/react-native. (#30742 by @byCedric)
  • Cleaned up the podspec and replaced RN_FABRIC_ENABLED flag with RCT_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 enumerated function. (#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() as JavaScriptRuntime.eval() on iOS. (#31445 by @kudo)
  • Removed all NativeModulesProxy occurrences. (#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 Either type. (#31787 by @lukmccall)
  • [iOS] Improved converting function results. (#31827 by @tsapeta)
  • [iOS] Disabled ExpoView recycling from the New Architecture. (#31841 by @tsapeta)
  • [Android] Renamed SharedObject.deallocate to SharedObject.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

1.12.24 - 2024-09-03

🐛 Bug fixes

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

1.12.19 - 2024-07-11

💡 Others

  • [iOS] Added customizeRootView: support to EXAppDelegateWrapper.createRCTRootViewFactory. (#30245 by @kudo)

1.12.18 - 2024-06-28

🐛 Bug fixes

  • Fixed RCTTriggerReloadCommandListeners not 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 getPathPermissions permission error for local path with spaces on iOS 16 and older. (#29958 by @kudo)
  • [iOS] Fixed broken addUIBlock and executeUIBlock on New Architecture mode. (#30030 by @kudo)

💡 Others

  • [iOS] Exposed Utilities class for Expo Modules common tasks. (#29945 by @kudo)

1.12.16 - 2024-06-20

🐛 Bug fixes

  • Fixed resource leakage from ExpoRequestInterceptorProtocol. (#29798 by @kudo)

1.12.15 - 2024-06-13

🐛 Bug fixes

  • Fixed reload crash on Android. (#29593 by @kudo)
  • [Android] Fixed converting from null to Record sometimes 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 ExpoFabricView and 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

  • Fix expo-modules-core is broken on the server side. (#28764 by @alantoa)

1.12.10 — 2024-05-09

🎉 New features

  • Added onKeyDown and onKeyLongPress to ReactActivityHandler on 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

  • Fixed building error when use_frameworks on new architecture. (#28451 by @kudo)

1.12.7 — 2024-05-02

🎉 New features

  • Introduced the reloadAppAsync to reload the app. (#28400 by @kudo)

1.12.6 — 2024-05-01

🐛 Bug fixes

  • [Android] Fix field operation on NULL object when 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 null currentActivity on 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

🎉 New features

  • [Web] Add createWebModule function 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 startObserving and stopObserving in the new EventEmitter class. (#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 NativeModule class that inherits from EventEmitter. (#27510 by @tsapeta)
  • [iOS] Exposed a function on the runtime to schedule some work with synchronized access to JS. (#27567 by @tsapeta)
  • [iOS] OnStartObserving and OnStopObserving can 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 RCTHost is 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 recreateRootViewWithBundleURL parameters. (#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 undefined exceptions 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 EXJavaScriptObject accesses 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)
  • ObjectDeallocator is now a native state instead of a host object. (#26906 by @tsapeta)
  • Moved away from SharedObjectRegistry being a singleton. (#27032 by @tsapeta)
  • Moved and added more JSI utils to the common C++ codebase. (#27045 by @tsapeta)
  • Introduce EXCreateReactBindingRootView to create correct React Native setup for New Architecture mode. (#27216 by @kudo)
  • Set bridge on AppContext in ExpoBridgeModule. (#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: to RCTAppDelegate.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-font and 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 onDidCreateDevSupportManager handler to support error recovery from expo-updates. (#28177 by @kudo)
  • Dropped support for custom type converters on Android. (#28252 by @lukmccall)
  • Introduced ExpoReactDelegateHandler.bundleURL for clients to override newer bundleURL. (#28256 by @kudo)

1.11.11 - 2024-03-11

🐛 Bug fixes

  • [Android] Ensured that onCreate before OnActivityEntersForeground event. (#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 PlatformColor and DynamicColorIOS color props. (#26724 by @dlindenkreuz)
  • BarCodeScannerResult interface now declares an additional raw field 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

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

🐛 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 with com.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 SharedObjectRegistry crash 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 SharedObject leakage on Android. (#25995 by @kudo)

1.11.2 — 2023-12-15

💡 Others

1.11.1 — 2023-12-12

🐛 Bug fixes

  • [Android] Fixed OnCreate was called before the React instance was ready. (#25866 by @lukmccall)

1.11.0 — 2023-12-12

🎉 New features

🐛 Bug fixes

  • [Android] Prevent the app from crashing during reloading when an unfinished promise tries to execute.
  • [Android] Fix JavaScriptFunction not working when the return type wasn't provided. (#25688 by @lukmccall)
  • [Android] Fix requesting only WRITE_SETTINGS rejecting 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 FileSystemUtilities to replace legacy interfaces. (#25495 by @alanhughes)
  • Bump C++ compiler setting to C++20. (#25548 by @kudo)
  • Marked NativeModulesProxy as deprecated in favor of requireNativeModule and requireOptionalNativeModule. (#25666 by @tsapeta)

1.10.0 — 2023-11-14

🛠 Breaking changes

🎉 New features

  • Add preventModuleOverriding to ModuleRegistry.register method. (#24860 by @wschurman)
  • [iOS] CGFloat can 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.json in favour of expo-module.config.json. (#25100 by @reichhartd)
  • Remove deprecated REACT_NATIVE_OVERRIDE_VERSION for 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

🐛 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 null or undefined wasn't converted to JavaScriptValue. (#24899 by @lukmccall)
  • [Android] Fixed Either converter not working with types that have common representation in JavaScript. (#24903 by @lukmccall)
  • [Android] Any converter doesn't use ReadableMap or ReadableList anymore. Objects and arrays are converted to Kotlin's primitives. (#24963 by @lukmccall)

💡 Others

1.8.0 — 2023-09-15

🎉 New features

💡 Others

  • Remove deprecated RCTDeviceEventEmitter. (#24298 by @EvanBacon)
  • Remove deprecate utility function. (#24298 by @EvanBacon)
  • Deprecate SyntheticPlatformEmitter in favor of DeviceEventEmitter. (#24298 by @EvanBacon)
  • Introduced an AppContext config to provide things like documents and caches directories for the modules. (#24292 by @tsapeta)
  • Fixed random NullPointerExceptions when calling Updates.reloadAsync on 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] Property component can now take the native shared object instance as the first argument. (#24206 by @lukmccall)
  • Introduced requireOptionalNativeModule that returns null when 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 List and Map when 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 device when saving persistent log. (#24247 by @RodolfoGS)

💡 Others

  • Use native UUIDv4 generation on Android and iOS. (#24199 by @behenate)
  • [Android] Add type converter for the ReadableArguments class to allow backward compatibility with older modules. (#24137 by @lukmccall)
  • [Android] SharedObjectTypeConverter now can work with the Dynamic class. (#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

1.5.8 - 2023-07-23

🐛 Bug fixes

  • Fixed the ErrorViewGroup cannot be cast to module view class exception on Android. (#23651 by @lukmccall)
  • [iOS] Fix allowed orientations set in Info.plist being ignored when no delegates requested a different orientation. (#23593 by @behenate)

1.5.7 — 2023-07-12

🐛 Bug fixes

  • Fixed regressions and crashes in the dev client introduced by #23405. (#23491 by @kudo)

1.5.6 - 2023-07-10

🐛 Bug fixes

  • Fixed the Network Inspector cannot preview response body for response without the Content-Length header. (#23405 by @kudo)
  • Fixed SoLoader does not work on Android. (#23415 by @kudo)
  • Fixed slower boot time on Android. (#23345 by @lukmccall)

1.5.5 - 2023-07-07

🐛 Bug fixes

1.5.4 - 2023-07-04

🐛 Bug fixes

  • Fix the View cannot be cast to ViewGroup exception on Android. (#23264 by @lukmccall)

💡 Others

  • Changed Objective-C names for ExpoReactDelegate and ExpoReactDelegateHandler to fix issues with versioning in Expo Go. (#23229 by @tsapeta)

1.5.3 — 2023-06-24

🎉 New features

  • Supported other network CDP types like Image and Media rather than Fetch. (#23058 by @kudo)

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

  • [iOS] Added Interface Geometry Management section to ExpoAppDelegate. (#22599 by @behenate)

1.4.0 — 2023-06-13

📚 3rd party library updates

🎉 New features

  • Added ReactActivityHandler.getDelayLoadAppHandler interface 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 Color converter 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-ktx to 1.7.1 and androidx.fragment:fragment-ktx to 1.5.7 #22658 by @fobos531

1.3.2 — 2023-05-09

🐛 Bug fixes

  • Fixed passing JavaScriptObject argument and view props. (#22427 by @lukmccall)

1.3.1 — 2023-05-08

💡 Others

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 fallbackCallback optional in the registerForActivityResult method. (#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::WeakObject for weak objects on Hermes. (#21986 by @tsapeta)
  • [iOS] Removed legacyViewManager references from ExpoFabricView. (#22089 by @gabrieldonadel)
  • [iOS] Dropped proxiedProperties prop. (#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 ReadableNativeMap cannot be cast to the Record. (#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 URL object. (#21569 by @tsapeta)

1.2.4 - 2023-03-03

🐛 Bug fixes

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 URL type 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

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 Long type 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 null or undefined. (#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 compileSdkVersion and targetSdkVersion to 33. (#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

  • Fixed boost build error on Android. (#20719 by @kudo)

1.1.0 — 2022-12-30

🎉 New features

  • Added TS definitions for TypedArray and additional union types for Int, Uint and Float TypedArrays. (#20257 by @aleqsio)
  • Added a new executeOnJavaScriptThread method to appContext to allow for running code blocks on the JS thread. (#20161 by @aleqsio)
  • Added the Exceptions.MissingActivity on Android. (#20174 by @lukmccall)
  • Trailing optional arguments can be skipped when calling native functions from JavaScript on iOS. (#20234 by @tsapeta)
  • Events component can now be initialized with an array of event names (not only variadic arguments). (#20590 by @tsapeta)
  • Property component 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 ViewDefinitionBuilder crashes 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 SharedObject initializer being inaccessible due to internal protection level. (#20588 by @tsapeta)

💡 Others

  • [iOS] Make Enumerable protocol implement CaseIterable to 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

  • Rephrased the message of ArgumentCastException to use ordinal numbers. (#19912 by @tsapeta)

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

1.0.0 — 2022-11-03

This version does not introduce any user-facing changes.

0.13.4 — 2022-11-02

🐛 Bug fixes

  • Fixed build errors when testing on React Native nightly builds. (#19369 by @kudo)

0.13.3 — 2022-10-30

🎉 New features

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.Enumerable on Android. (#19551 by @lukmccall)
  • AppContext.currentActivity is not longer returning AppCompatActivity, but an instance of android.app.Activity class. (#19573 by @lukmccall)

⚠️ Notices

  • Deprecated ConvertibleArgument in favor of Convertible and EnumArgument in favor of Enumerable. (#19612 by @tsapeta)

🎉 New features

  • Implemented a mechanism for hooking into to the view lifecycle events (introduces new OnViewDidUpdateProps definition 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 CodedError instead of a plain object. (#19605 by @tsapeta)

💡 Others

0.12.0 — 2022-10-06

🛠 Breaking changes

  • Bumped iOS deployment target to 13.0 and deprecated support for iOS 12. (#18873 by @tsapeta)

⚠️ 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 coalescingKey in 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 self on iOS. (#18831 by @tsapeta)
  • Support for CSS named colors in UIColor and CGColor convertibles 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 Prop setter closure. (#19004 by @tsapeta)
  • [core] Added REACT_NATIVE_DOWNLOADS_DIR environment variable to specify custom third party libraries download location. (#19015 by @kudo)
  • Add support for the android.graphics.Color class as the function parameter. (#19054 by @lukmccall)
  • Add support for android.net.Uri, java.io.File, java.net.URI and java.nio.file.Path classes as function parameters. (#19169 by @lukmccall)
  • Add the RegisterActivityContracts component 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 cacheDirectory and persistentFilesDirectory to AppContext on Android to fix cache directories being incorrect in new Sweet API modules. It uses a new AppDirectoriesModule to 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 object on 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.modules instead of global.ExpoModules. (#19273 & #19281 by @tsapeta, @lukmccall)

0.11.7 — 2022-10-06

🐛 Bug fixes

  • Fixed ModuleRegistry initialized 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.onHostDestroy call. (#19406 by @kudo)

0.11.6 — 2022-10-02

🐛 Bug fixes

  • Give precedence to UIBackgroundFetchResult.newData over .failed in proxied ExpoAppDelegate.swift completion 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 FabricUIManager errors 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

  • Fixed a crash when remote debugging is enabled on Android. (#18165 by @kudo)

0.11.0 — 2022-07-07

🎉 New features

🐛 Bug fixes

  • Added support for React Native 0.69.x (#18006 by @kudo)

0.10.0 — 2022-06-23

🎉 New features

  • Add proxy methods for Permissions module accepting expo.modules.kotlin.Promise on Android. (#17668 by @bbarthec)
  • Create CurrentActivityProvider on Android. (#17571 by @bbarthec)
  • Create AppContextProvider on 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 AppContext on 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 allow expo-dev-launcher to override this value at runtime. (#17069 by @esamelson)

0.8.0 — 2022-04-18

🛠 Breaking changes

  • Remove backward compatible workaround and drop react-native 0.64 support. (#16446 by @kudo)

⚠️ Notices

  • Deprecated current behavior of function module definition component in favor of asyncFunction to emphasize that it's being executed asynchronously in JavaScript. In the future release function will become synchronous. (#16630 by @tsapeta, #16656 by @lukmccall)
  • On Android bump compileSdkVersion to 31, targetSdkVersion to 31 and Java version to 11. (#16941 by @bbarthec)

🎉 New features

  • Add getDevSupportManagerFactory support to ReactNativeHostHandler. (#16434 by @lukmccall)
  • Add support for automatic setup of expo-dev-client on Android. (#16441 by @esamelson)
  • Stopped relying on deprecated ViewPropTypes from React Native. (#16207 by @tsapeta)
  • Added Android ReactNativeHostHandler.getJavaScriptExecutorFactory() for a module to override the JavaScriptExecutorFactory. (#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 NativeModulesProxy in favor of another solution introduced in #15847. (#16825 by @tsapeta)

0.7.0 — 2022-01-26

🎉 New features

  • Allow accessing RCTBridge from 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 ModuleDefinition will use class name if the name component wasn't provided in Sweet API on Android. (#15738 by @lukmccall)
  • Added onViewDestroys component to the ViewManager in Sweet API on Android. (#15740 by @lukmccall)
  • Added shortened constants component that takes vargs 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 requireNativeModule function to replace accessing native modules from NativeModulesProxy. (#15848 by @tsapeta)
  • Implemented basic functionality of JSI host object to replace NativeModulesProxy on iOS. (#15847 by @tsapeta)

🐛 Bug fixes

  • It's no longer possible to directly call methods from the ModuleDefinition in the ViewManagers on Android. (#15741 by @lukmccall)
  • Fix compatibility with react-native 0.66. (#15914 by @kudo)
  • Fix Plugin with id 'maven' not found build error from Android Gradle 7. (#16080 by @kudo)

0.6.5 — 2022-02-01

🐛 Bug fixes

  • Fix Plugin with id 'maven' not found build error from Android Gradle 7. (#16080 by @kudo)

0.6.4 — 2022-01-05

🐛 Bug fixes

  • Fix ReactInstanceManager.onHostPause exception 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

  • Add onNewIntent and onBackPressed support to ReactActivityLifecycleListener. (#15550 by @Kudo)

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.URL a 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.onDidCreateReactInstanceManager on Android. (#15221 by @esamelson)
  • Make the no-argument module initializer unavailable — onCreate definition 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)
  • AppDelegateWrapper is 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 ReactActivityHandler and support createReactRootView hook. (#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

  • Fix Gradle error when running Gradle from outside of the project directory. (#15109 by @kudo)

0.4.7 — 2021-10-28

🐛 Bug fixes

  • Fix iOS app freezing in remote debugging mode. (#14922 by @kudo)

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

  • Fix UIManager has not setter or ivar error when reloading app. (#14741 by @kudo)

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.isAsyncDebugging to detect remote debugging (#14396 by @EvanBacon)

🐛 Bug fixes

  • Revert prebuilt binaries on iOS to fix build errors. (#14418 by @kudo)

0.3.1 — 2021-09-09

⚠️ Notices

0.3.0 — 2021-09-08

🎉 New features

  • Expo modules are now being automatically registered on iOS which means less installation steps. Using EXModuleRegistryProvider and EXModuleRegistryAdapter becomes deprecated. (#14132 by @tsapeta)
  • Pass useDeveloperSupport value to ReactNativeHostHandler for expo-updates. (#14198 by @kudo)

🐛 Bug fixes

  • Fix Cannot read property 'addProxiedListener' of null on Android. (#14343 by @lukmccall)
  • Fix '-[RCTModuleRegistry getAllExportedModules]: unrecognized selector crash while adding the event listener. (#14130 by @lukmccall)
  • Fix redbox error for Unable to find module for UMReactNativeEventEmitter in debug build. (#14276 by @kudo)

0.3.0-alpha.0 — 2021-08-17

🎉 New features

🐛 Bug fixes

  • Add generics to the permission hook factory to inherit right types. (#13860 by @bycedric)

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 Interface suffix 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.