NewYour coding agent can read the release notes before it upgrades.Set up the MCP server →
npm · #4769 most downloaded on npm
Reusable JSON Schema (Draft 04) validation library for Expo
Last release 5 days ago
29 Sep 2026
Ships fairly regularly
a new release about every 2 weeks
Most releases are documented
notes for 20 of 24 stable releases
Nothing withdrawn
no release was ever pulled
1 years old
95 releases · first in 2025
One column per month.
Force-bump all packages, due to migration to changesets. (#50762 by @kitten)
Add visit to walk a value against a JSON schema (#47340 by @kitten)
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
_This version does not introduce any user-facing changes._
This version does not introduce any user-facing changes.
Nothing published for this version
[iOS] Return NSNull instead of trapping in the deprecated JavaScriptValue.getAny() when it encounters a unrepresentable value. (#47381 by @alanjhughes…
@expo/ui
BasicTextField component instead of Filled Material TextField. (#46442 by @nishan) (#46442 by @intergalacticspacehighway)expo-modules-jsi
expo-font
Server.resetServerContext(). Server-side font state is now scoped per-render via AsyncLocalStorage. (#46669 by @hassankhan)@expo/cli
expo prebuild clear and regenerate the native folders by default. Pass --no-clean to apply changes to the existing folders instead. (#47209 by @alanjhughes)@expo/require-utils 🥳pod-install
@expo/ui
accessibilityHidden modifier to hide decorative views from VoiceOver and other assistive technologies during element traversal. (#46579 by @ramonclaudio)accessibilityIdentifier modifier to set a stable identifier for UI testing tools such as XCUITest. (#46556 by @ramonclaudio)dynamicTypeSize modifier to set or constrain the Dynamic Type size within a view. Accepts a single size or a { min, max } range, and cascades from <Host> to bound how far text scales at the largest accessibility sizes. (#46540 by @ramonclaudio)children prop to Label component, allowing custom title views (e.g. a VStack with title and subtitle) while preserving native icon spacing and Dynamic Type icon sizing.buttonBorderShape SwiftUI modifier, which reshapes a styled button (for example a glass button) while preserving its native press effect. (#46348 by @nishan) (#46348 by @intergalacticspacehighway)NavigationBar and NavigationBarItem components.listRowSpacing modifier. (#46417 by @qiyangdev)Image component. (#46183 by @cinques)<DisclosureGroup.Label> for custom label style. (#46288 by @kudo)<Collapsible.labelStyle> for custom label style. (#46288 by @kudo)dropShadow and innerShadow modifiers. (#46364 by @duyanhv)imageScale modifier to scale SF Symbols within a view relative to the surrounding text (small, medium, large). (#46774 by @ramonclaudio)onGloballyPositioned modifier, which reports a composable's window position and size. (#46744 by @nishan) (#46744 by @intergalacticspacehighway)onGeometryChange modifier to also report the view's global position (x/y) alongside its size. (#46744 by @nishan) (#46744 by @intergalacticspacehighway)minimumScaleFactor modifier to let text shrink down to a given fraction of its size before truncating. (#46740 by @nishan) (#46740 by @intergalacticspacehighway)get() / set() accessors to useNativeState, as an alternative to reading and writing .value. (#46690 by @nishan) (#46692 by @intergalacticspacehighway)BasicTextField component. (#46442 by @nishan) (#46442 by @intergalacticspacehighway)accessibilityInputLabels modifier to set alternative spoken phrases Voice Control uses to refer to a view (for example "Hang up" for an "End" button). (#46661 by @ramonclaudio)activityBackgroundTint modifier for setting Live Activity background. (#46756 by @jakex7)modifiers prop to ListItem to override its default buttonStyle(.plain). (#47124 by @nishan) (#47124 by @intergalacticspacehighway)seedColor prop to the universal and SwiftUI <Host>, used as the SwiftUI tint on iOS and to derive the primary color scale on web. (#46566 by @zoontek)colorScheme prop on <Host> to override the system color scheme for its subtree, matching native parity. (#46459 by @zoontek)accessibilityElement modifier, which collapses a view's subtree into a single accessibility element via ignore, combine, or contain. (#47156 by @ramonclaudio)redacted, unredacted, privacySensitive, and invalidatableContent modifiers, mapping SwiftUI's redaction family for native skeleton-loading and sensitive-content states. (#47269 by @ramonclaudio)accessibilityAddTraits and accessibilityRemoveTraits SwiftUI modifiers, accepting an array of trait names. (#47387 by @ramonclaudio)strokeBorder modifier with a full StrokeStyle (line width, cap, join, miter limit, dash array, dash phase) for dashed and dotted inset borders that follow the shape's corners. (#47426 by @ramonclaudio)expo-network
expo-router
standard-navigation integration (#46456 by @Ubax)expo-router/drawer (#46635 by @Ubax)tabPress event with isPrevented: true when a disabled tab is tapped, without selecting it. (#46445 by @Ubax)Stack.Toolbar.Badge in header left/right placements (#46537 by @benjaminkomen)Stack.Toolbar.Badge on Stack.Toolbar.Menu icons in header left/right placements (#47276 by @Ubax)unstable_nativeProps to native Stack options. (#47482 by @Ubax)testID and accessibilityLabel props to NativeTabs.Trigger. (#47472 by @ramonclaudio)Theme type from the root expo-router entry point. (#47476 by @eliotgevers)expo-modules-autolinking
expo-modules-jsi
JavaScriptObject.setProperty(_:function:) overloads that create a sync or async host function from the given closure. (#46622 by @tsapeta)JavaScriptUnownedValue, a non-owning, non-copyable value that borrows a jsi::Value for the zero-copy argument-decode fast path. (#46616 by @tsapeta)JavaScriptError can now wrap and throw an arbitrary JS value (not only an Error instance) via init(_:value:), preserving the thrown value's identity when it reaches JavaScript. (#47154 by @tsapeta)createFunction/setProperty overloads taking a UnownedThisSyncFunctionClosure, which receives this as a borrowed JavaScriptUnownedValue instead of an owning JavaScriptValue. Used by host functions that ignore this to skip the per-call owning-value allocation and its weak-runtime traffic. (#46949 by @tsapeta)JavaScriptRuntime to Identifiable with an id based on the underlying runtime, equal across multiple wrappers of the same runtime. (#47068 by @tsapeta)expo-media-library
expo-modules-core
@Record macro that synthesizes a record from a type's stored properties, with no @Field wrappers needed. (#46547 by @tsapeta)@Event macro that turns a function-typed var on a module or shared object into a typed JavaScript event. (#46938 by @tsapeta)@ExpoModule now synthesizes the module's JavaScript name from the class name or its @ExpoModule("CustomName") argument, so a Name(…) definition entry is no longer required. (#46938 by @tsapeta)SharedObject.native(from:) that recovers the native shared object paired with a JavaScript object, with a generic overload that returns the concrete subclass directly. (#47054 by @tsapeta)Module.emit that sends an event directly to the module's own JavaScript object, mirroring SharedObject.emit. Both now share an EventEmitter protocol. (#46555 by @tsapeta)expo-linking
Linking.clearInitialURL() to reset the cached deep-link URL. (#46265 by @gabrieldonadel)expo-image-picker
launchCameraAsync to be invoked on the simulator. (#45923 by @EvanBacon)expo-font
Server.withServerContext(callback) which scopes server-side font loads per render. (#46669 by @hassankhan)expo-contacts
expo-clipboard
expo-brownfield
expo-camera
@expo/package-manager
@expo/cli
tvos and macos autolinking gated by expriments.outOfTreePlatforms (#46344 by @kitten)expo-sqlite
@expo/ui
activityBackgroundTint (#46929 by @theeket)listRowInsets modifier being ignored when every edge is set to 0, so a row can now reset all of its insets. (#47000 by @nishan) (#47000 by @intergalacticspacehighway)FieldGroup rendering an empty row/section when a conditional child (e.g. {condition && <FieldGroup.Section>…</FieldGroup.Section>}) evaluates to false. (##46874 by @dileepapeiris)Pressable/Button taps not registering on community/pager-view pages after the first on physical devices. (#46851 by @nishan) (#46851 by @intergalacticspacehighway)modifiers having no effect when the component derives a modifier of the same type from its props, e.g. buttonStyle on Button always losing to the variant prop. (#46815 by @nishan) (#46815 by @intergalacticspacehighway)expand() and Compose handler registration on ModalBottomSheet. Adds initialFullyExpanded prop to drive initial snap state natively. (#46367 by @duyanhv)community/bottom-sheet blocking touches behind the sheet after it's dismissed. (#46805 by @nishan) (#46805 by @intergalacticspacehighway)Pressable) on community/pager-view pages not responding, or triggering the wrong page's handler, after navigating between pages. (#46778 by @nishan) (#46778 by @intergalacticspacehighway)font, dynamicTypeSize, and resizable modifiers not applying to the SwiftUI Image. SF Symbols scale with Dynamic Type when a font modifier sets a textStyle. (#46714 by @ramonclaudio)ScrollView nested scrolling inside BottomSheet. (#46544 by @nishan) (#46544 by @intergalacticspacehighway)Host with matchContents is used inside React Native Screens. (#46604 by @nishan) (#46604 by @intergalacticspacehighway)PagerView offsetting ScrollView by safe area insets. (#46637 by @nishan) (#46637 by @intergalacticspacehighway)SegmentedControl being overlapped by sibling components inside a ScrollView, by disabling the Host safe area insets. (#46575 by @nishan) (#46575 by @intergalacticspacehighway)DateTimePicker, MenuView, Picker, and Slider applying safe area insets (including keyboard avoidance) twice, by disabling the Host safe area insets (ignoreSafeArea="all"). (#46721 by @nishan) (#46721 by @intergalacticspacehighway)TextField jiggling the surrounding content while its label animates on focus (a Material 3 expressive motion spring overshoot). (#46568 by @nishan) (#46568 by @intergalacticspacehighway)BottomSheet animating open from the bottom-left corner in fitToContents mode. (#46546 by @nishan) (#46546 by @intergalacticspacehighway)TextField and SecureField worklet onTextChange firing more than once per keystroke (when a change triggers reformatting) and on programmatic text updates. (#46483 by @nishan) (#46483 by @intergalacticspacehighway)font modifier dropping Dynamic Type scaling (relativeTo) and weight on concatenated Text runs. The Text-concatenation path now resolves the same Font as the view path. (#46509 by @ramonclaudio)TextInput ignoring style backgroundColor / borderWidth and not applying textAlign to the placeholder. (#46441 by @duyanhv)Switch alignment when label is provided (#47088 by @rklomp)ListItem stretching a fixed-size raw RN view in its leading/trailing slot to fill the row instead of honoring its size, matching Android. (#46883 by @david-videau-ortega) (#47236 by @nishan) (#47236 by @intergalacticspacehighway)@expo-ui/community/datetime-picker dialog ignoring minimumDate/maximumDate for its year range, so the calendar and year picker no longer always span 1900–2100. (#47206 by @vioodle) (#47213 by @nishan) (#47213 by @vioodle, @intergalacticspacehighway)FlatList) inside @expo/ui/community/bottom-sheet not scrolling when the <BottomSheet> is mounted inside another same-orientation list (such as a FlatList header). (#47197 by @nishan) (#47197 by @intergalacticspacehighway)FlatList, ScrollView) inside @expo/ui/community/bottom-sheet not scrolling to the end when using fixed snap points. (#47245 by @nishan) (#47245 by @intergalacticspacehighway)TextField crashing with "String index is out of bounds" on iOS 18 when JS writes new text into a focused field that holds an active text selection. (#47447 by @nishan) (#47447 by @intergalacticspacehighway)community/masked-view doubling offsets and transforms by re-applying the user-supplied style to the inner mask/content View wrappers. (#47067 by @tsushanth)DatePicker style (community/datetime-picker display="inline") rendering undersized on mount and jumping to its correct size on the first tap. (#47062 by @etiennetalbot) (#47465 by @nishan) (#47465 by @etiennetalbot, @intergalacticspacehighway)expo-sensors
expo-router
Props type with the options schema, adding the missing redirects, rewrites, platformRoutes, and disableSynchronousScreensUpdates options. (#46677 by @zoontek)unstable_createStandardRouterNavigator (#46737 by @Ubax)jest.setSystemTime across renderRouter (#46978 by @Ubax)extractExactPathFromURL against malformed percent-encoding. (#47526 by @momomuchu)renderRouter ignoring overrides and listing duplicate routes when an override key matches a file in appDir. (#47287 by @wwdrew)expo-modules-autolinking
react-native-reanimated precompile config with react-native-reanimated@4.4.1 upstream defaults, adding the CSS/core/transition and PseudoStyles header mappings along with the missing IOS_CSS_CORE_ANIMATION and USE_ANIMATION_BACKEND feature flags so its XCFramework builds. (#46950 by @zoontek)expo-modules-macros-plugin. (#46294 by @kudo)react-native-reanimated precompile config with react-native-reanimated@4.5.0's generated component and native view sources. (#47201 by @lukmccall)ios.usePrecompiledModules: false even when EXPO_USE_PRECOMPILED_MODULES is already set in the environment (e.g. EAS Build). (#46983 by @ryanda9910)ENABLE_CROSS_RUNTIME_STACK_TRACES flag to the react-native-worklets precompile config so its prebuilt XCFramework matches the package's staticFlags.json. (#47478 by @alanjhughes)pre_install hook (e.g. @rnmapbox/maps) — both the dynamic frameworks and the pods that link against them — instead of forcing them back to static libraries. (#47500 by @kudo)expo-module-scripts
expo-modules-jsi
sed error when building in an environment that uses GNU sed instead of BSD sed (e.g. a Nix shell). (#46389 by @niteshbalusu11)JavaScriptPromise setup failures instead of trapping the app. (#46106 by @qutrek) (#46145 by @mvincentong) (#46145 by @qutrek, @mvincentong)getPropertyAsFunction targets a missing or non-callable property. (#46437 by @tsapeta)getPropertyAsObject targets a non-object property. (#46438 by @tsapeta)JavaScriptPromise that is rejected after the await begins now throws instead of resuming with the rejection value as if fulfilled. (#47154 by @tsapeta)NSNull instead of trapping in the deprecated JavaScriptValue.getAny() when it encounters a unrepresentable value. (#47381 by @alanjhughes)expo-media-library
expo-modules-core
UISupportedInterfaceOrientations~ipad. (#46281 by @bryandent) (#46306 by @mvincentong) (#46306 by @bryandent, @mvincentong)Host double-composing children. (#46304 by @nishan) (#46304 by @intergalacticspacehighway)react-native-worklets's native adapter isn't linked, instead of a misleading "not an instance of Worklet" failure. (#46571 by @chrfalch)Host matchContents views. (#46604 by @nishan) (#46604 by @intergalacticspacehighway)NullPointerException crash when a matchContents view is unmounted while a shadow node size update is pending (e.g. closing a bottom sheet mid-resize). (#46785 by @nishan) (#46785 by @intergalacticspacehighway)Double timestamps in Date Convertible. JS numbers arrive across the JSI bridge as Swift Double; the prior as? Int branch never matched, throwing ConvertingException<Date> whenever a JS caller passed someDate.getTime() to a Date / Date? argument. (#46340 by @kyleasaff)onLayout against detached window to prevent LayoutNode should be attached to an owner crash. (#47085 by @roitium)Host content disappearing before a react-native-screens pop animation finishes, by deferring composition disposal to window detach while the view is still on-screen for a transition. (#45914, #47086 by @aubrey-wodonga) (#47099 by @nishan) (#47099 by @intergalacticspacehighway)Updates.reloadAsync() where the previous AppContext could deallocate before the old runtime finished tearing down, releasing cached JSI objects against a dying runtime on the wrong thread. Its lifetime is now tied to the runtime via native state attached to the global.expo object. (#47051 by @HaiyiMei) (#47080, #47098 by @tsapeta) (#47080, #47098 by @HaiyiMei, @tsapeta)r in the iOS simulator) would freeze the app until the watchdog killed it. reloadAppAsync now triggers the reload synchronously when already on the main thread instead of always deferring via DispatchQueue.main.async. (#47392 by @brentvatne)ExpoModulesProvider lookup failing for bundle names with non-identifier characters (e.g. dots). (#46424 by @shawnthye-guru)expo-contacts
expo-calendar
@platform ios JSDoc annotations to iOS-exclusive APIs: ExpoCalendarReminder class, listReminders(), createReminder(), requestRemindersPermissions(), getRemindersPermissions(), useRemindersPermissions(), AddEventWithFormOptions.url, and AddEventWithFormOptions.alarms. (#46416 by @kota113)UnavailabilityError when iOS-only Reminders and Sources APIs (listReminders(), createReminder(), ExpoCalendarReminder.get/update/delete, requestRemindersPermissions(), getRemindersPermissions(), and getSourcesSync()) are called on non-iOS platforms. (#46416 by @kota113)useRemindersPermissions() on non-iOS platforms instead of throwing. (#46416 by @kota113)expo-blur
BlurTargetView as detached and cancelling their gestures. (#47404 by @efstathiosntonas)expo-camera
videoOrientation API with AVCaptureDevice.RotationCoordinator for the iOS camera preview. (#47172 by @alanjhughes)pictureSize to photo instead of high. (#47173 by @alanjhughes)@expo/cli
@expo/metro-config install from expo customize metro.config.js (#46600 by @kitten)devices:// deep link instead of only bringing the app forward. (#46809 by @krystofwoldrich)Request to DevTools plugin WebSocket handlers instead of IncomingMessage. (#47410 by @krystofwoldrich)loadModule for MCP and DevTools plugin server module loading. (#47139 by @krystofwoldrich)output-metadata.json when resolving APK filenames to support projects that override outputFileName in applicationVariants (#47083 by @NikhilVashistha)expo
gzip / br / zstd expo/fetch responses on Android even when the caller sets their own Accept-Encoding header. (#46398 by @zoontek)bodyUsed leaking across siblings when fetch Response is cloned twice (#46397 by @zoontek)The stream is not in a state that permits close in expo/fetch when native delivers didComplete/didFailWithError after the consumer has already canceled the body stream. (#44909 by @safaiyeh)expo/fetch on Android sending a single 0x00 byte instead of an empty body for body-less POST/PUT/PATCH requests. (#46678 by @zoontek)asyncRoutes failing on Android and iOS with Requiring unknown module (#46870 by @hassankhan)Response.blob() in expo/fetch throwing when the global Blob is react-native's implementation. (#47538 by @kudo)@expo/ui
Button, Checkbox, FieldGroup, Picker, Slider,Switch,TextInput) with shared design tokens, light / dark themes, and keyboard focus styles. (#46258, #46541 by @zoontek)react-native-reanimated dependency from the worklet integration; worklet features rely on react-native-worklets directly. (#46922, #46935 by @nishan) (#46922, #46935 by @intergalacticspacehighway)CLAUDE.md and CONTRIBUTING.md from publishing and fixed side effects. (#47451 by @kudo)expo-modules-autolinking
bannerTitle and serverEntryPoint options to the DevTools plugin module config. (#46764 by @krystofwoldrich)expo-modules-jsi
JavaScriptRef per call: the arguments buffer is now built inside the synchronous assumeIsolated closure instead of being boxed to cross the closure boundary, removing a heap allocation and its retain/release/dealloc from every host call (measured ~10% faster on the no-op @JS host-call floor). (#46949 by @tsapeta)JavaScriptNativeState can now back any jsi::NativeState subtype via a void * factory, so consumers without Swift/C++ interop (e.g. expo-modules-core) can supply their own pointee. expo::NativeState ships from the xcframework as a public C++ header. (#46330 by @tsapeta)NativeArrayBuffer arguments no longer copy the buffer when it's already native-backed. (#46448 by @barthap)JavaScriptUnownedValue and JavaScriptValuesBuffer now cache the runtime as the immortal facebook.jsi.IRuntime instead of the ARC-managed JavaScriptRuntime wrapper, removing per-call retain/release on the argument-decode hot path (measured ~16% faster addNumbers, ~24% faster addStrings). (#46792 by @tsapeta)getExpoNativeState now probes with the specialized hasNativeState<jsi::NativeState> and dynamic-casts the raw pointer once, avoiding a redundant dynamic_pointer_cast on the shared object argument unwrap hot path. (#46712 by @tsapeta)expo-media-library
expo-modules-core
process function that unwraps shared objects to their registry id, so callers can pass shared objects directly as view props instead of unwrapping them manually. (#46212 by @tsapeta)@ExpoModule now synthesizes a _decorateModule that binds the module's @JS functions directly onto the JS object, letting the module holder skip the dynamic definition path for synthesized modules. (#46612 by @tsapeta)react-native-worklets ^0.9.0 in peer dependencies. (#46950 by @zoontek)updateEdgeToEdgeFeatureFlag (#46335 by @zoontek)JavaScriptDecodable / JavaScriptEncodable (composed as JavaScriptCodable), a statically-dispatched, non-erasing conversion path between JavaScript and native values for Expo Modules v2, with conformances for primitives, containers, records, enumerables and Data. (#46893 by @tsapeta)appContext parameter from the JavaScriptCodable conversions; conversions that need the app context now recover it from the runtime via the new public AppContext.from(runtime:). (#47111 by @tsapeta)JavaScriptCodable now maps Int64/UInt64 to a JS BigInt for lossless 64-bit round-tripping, and Int/UInt throw when encoding a value outside JavaScript's safe-integer range. (#46939 by @tsapeta)Exceptions.ArgumentsRangeMismatch exception, thrown by synthesized @JS function bindings when a JavaScript caller passes a number of arguments outside the accepted range. (#46901 by @tsapeta)SharedObject::NativeState now derives from expo::NativeState so the Swift wrapper can be recovered from the JS side via getNativeState, laying the groundwork for native-state-based shared object lookup. (#46330 by @tsapeta)SharedObject is now paired with its JS counterpart through a SharedObjectNativeState attached to the JS object, so registry lookups in both directions go through the native state and fall back to the legacy id-based path. (#46712 by @tsapeta)NativeArrayBuffer arguments no longer copy the buffer when it's already native-backed. (#46448 by @barthap)react-native-worklets holder instead of the reanimated _WORKLET_RUNTIME global; installOnUIRuntime now takes the holder from getUIRuntimeHolder(). (#46922, #46935 by @nishan) (#46922, #46935 by @intergalacticspacehighway)expo-image-picker
expo-modules-core Platform in favor of inline window/document checks. (#45923 by @EvanBacon)expo-gl
createContextAsync and destroyContextAsync methods which purpose wasn't documented and was confusing. (#47200 by @HubertBer)expo-font
@expo/cli
@expo/ws-tunnel@^2.0.0 (#46696 by @kitten)serverEntryPoint that handles HTTP requests and WebSocket connections in the Expo CLI process, and a bannerTitle shown in the CLI startup banner. (#46764 by @krystofwoldrich)expo
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
_This version does not introduce any user-facing changes._
This version does not introduce any user-facing changes.
[android] Fix potential vulnerability in com.canhub.cropper.CropImageActivity being exported. (#45357 by @behenate)
unimodules-app-loader
expo-web-browser
expo-video-thumbnails
expo-task-manager
expo-store-review
expo-speech
expo-sqlite
expo-sms
expo-sharing
expo-secure-store
expo-sensors
expo-screen-capture
expo-screen-orientation
expo-print
expo-network
expo-notifications
expo-localization
expo-media-library
expo-mail-composer
expo-location
expo-keep-awake
expo-modules-core
EXJavaScriptRuntime, EXJavaScriptObject, ExpoModulesHostObject, EXSharedObjectUtils, etc.) with the new ExpoModulesJSI Swift package. Third-party native modules depending on these types must migrate to the new Swift-first API. (#44337 by @tsapeta)expo-local-authentication
expo-linking
expo-image-manipulator
expo-haptics
expo-linear-gradient
expo-gl
expo-image-picker
expo-font
expo-document-picker
expo-file-system
copy() and move() methods of File and Directory are now asynchronous and return a Promise. Use copySync() and moveSync() for synchronous behavior. (#44359 by @barthap)Paths.cache and Paths.document are now pointing to experience-isolated directories. (#45977 by @barthap)File.write() is now asynchronous and returns a Promise. Use File.writeSync() for synchronous behavior. (#45992 by @wh201906)FileHandle.readBytes() and FileHandle.writeBytes() are now asynchronous and return a Promise. Use FileHandle.readBytesSync() and FileHandle.writeBytesSync() for synchronous behavior. (#46280 by @wh201906)expo-device
expo-crypto
expo-contacts
expo-contacts import and move the legacy API to expo-contacts/legacy. (#46037 by @Wenszel)expo-constants
expo-clipboard
expo-cellular
expo-camera
expo-calendar
expo-brightness
expo-blur
expo-battery
expo-background-fetch
expo-application
expo-apple-authentication
expo-asset
@expo/cli 🥳@expo/package-manager 🥳expo 🥳expo-brownfield 🥳expo-json-utils 🥳expo-modules-autolinking 🥳expo-router 🥳expo-module-scripts 🥳expo-modules-jsi 🥳@expo/ui 🥳pod-install 🥳expo-web-browser
expo-task-manager
expo-sqlite
expo-sharing
expo-secure-store
expo-sensors
expo-screen-orientation
expo-notifications
expo-localization
expo-media-library
presentPermissionsPicker (#44432 by @Wenszel)asset.getMediaSubtypes(), asset.getLivePhotoVideoUri(), asset.getIsInCloud(), and asset.getOrientation() (#44568 by @Wenszel)asset.getAlbums() (#44604 by @Wenszel)Album.getAll() (#44446 by @Wenszel)album.removeAssets() (#44455 by @Wenszel)Query.limit(0) returning all assets instead of an empty array (#44245 by @Wenszel)getFavorite()/setFavorite() (#45768 by @Wenszel)expo-mail-composer
expo-location
getMotionActivityAsync, watchMotionActivityAsync, and permission helpers. (#44893 by @Guccio163)expo-modules-core
Equatable conformance to Either type. (#43954 by @nishan) (#43954 by @intergalacticspacehighway) (#43954, #43954 by @intergalacticspacehighway, @intergalacticspacehighway)installModuleClasses and __resolveInWorklet for resolving shared object class prototypes in the worklet runtime. (#44669 by @intergalacticspacehighway)installModuleClasses for building shared object class prototypes in alternate JS runtimes. (#44214 by @nishan) (#44214 by @intergalacticspacehighway)SharedObject.__resolveInWorklet for resolving shared objects in worklet runtimes. (#44215 by @nishan) (#44215 by @intergalacticspacehighway)NativeArrayBuffer and JavaScriptArrayBuffer arguments now also accept typed arrays. (#43082 by @barthap)RuntimeScheduler to schedule tasks on the JS thread. (#43481 by @alanjhughes)nativeModule look up function and bundleURL to AppContext. (#43661 by @gabrieldonadel)Mutex for older platform versions. (#44122 by @tsapeta)@OptimizedComposeProps. (#45021 by @lukmccall)SharedObject.emit dropping NativeArrayBuffer values in events (#45257 by @alanjhughes)SharedObject.emit on iOS and Android. The iOS API also accepts an already-converted JavaScriptValue payload to skip the native-to-JS conversion step. (#45596 by @tsapeta)Decodable types can now be used as native function arguments. JS values are decoded through the dynamic-type registry, so arrays, dictionaries, optionals, RawRepresentable enums and Convertibles are coerced consistently. (#45705 by @tsapeta)expo-local-authentication
expo-linking
Linking.clearInitialURL() to reset the cached deep-link URL. (#46265 by @gabrieldonadel)expo-haptics
expo-linear-gradient
expo-image-picker
launchCameraAsync to be invoked on the simulator. (#45923 by @EvanBacon)expo-font
expo-document-picker
expo-file-system
mode option when opening file handle. (#44559 by @gfemec)expo-document-picker. (#43411 by @HubertBer)overwrite option to copy and move methods. (#42979 by @barthap)mode option when opening file handle. (#42983 by @barthap)onProgress callback and AbortSignal support to File.downloadFileAsync(). (#43053 by @aleqsio)file.createUploadTask() and File.createDownloadTask() APIs (#44055 by @barthap)File.upload() with legacy-compatible upload semantics, progress callbacks, and AbortSignal support. (#45033 by @barthap)File.json() and File.formData() to satisfy Blob type augmentations in consumer projects. (#45685 by @mvincentong)expo-device
expo-contacts
expo-cellular
expo-camera
expo-calendar
calendar.addEventWithForm() (#44966 by @Wenszel)presentPicker() (#44965 by @Wenszel)calendar.addEventWithForm() (#46004 by @Wenszel)expo-brightness
expo-background-fetch
expo-apple-authentication
expo-asset
expo-web-browser
openAuthSessionAsync silently failing on iOS 17.4+ when using https:// redirect URLs without Associated Domains entitlements. The HTTPS universal link callback API is now opt-in via the preferUniversalLinks option. (#44452 by @vonovak)expo-task-manager
HeadlessJsTaskContext. (#43821 by @janicduplessis)proguard-rules.pro via consumerProguardFiles so the -keep class expo.modules.taskManager.** rule is added to consumer apps' R8 pass. (#46029 by @jiunshinn)expo-speech
expo-sqlite
expo-sharing
shareAsync promise leaking when the user picks an activity and then cancels its follow-up dialog (e.g. taps Print, then cancels the print dialog). The completion handler now resolves unconditionally on dismissal. (@Elehiggle) (by @Elehiggle)expo-secure-store
expo-sensors
motionPermission: false — CMAltimeter.stopRelativeAltitudeUpdates() now only runs if updates were started. (#45396 by @JustinFay01)expo-screen-orientation
lockAsync silently failing when flipping between previously-applied masks. (#45239 by @alanjhughes)EXC_BAD_ACCESS crash from recursive supportedInterfaceOrientations when react-native-screens per-screen orientation is set. (#45733 by @rayabelcode)expo-network
isInternetReachable much more robust. Also emit network state changes when network capabilities change. (#45101 by @LumaDevelopment)expo-notifications
requestPermissionsAsync returning raw permission result without several documented fields (#43555 by @vonovak)BackgroundEventTransformer when notification body is a primitive type. (#45198 by @DORI2001)getDevicePushTokenAsync export (#44413 by @vonovak)getRegistrationInfoAsync, relax keychain accessibility to allow access after device unlocked. (#43829 by @jmalmo)BSPreconditionFailure on iOS 16. (#45096 by @qutrek)proguard-rules.pro via consumerProguardFiles so the -keep class expo.modules.notifications.** rule is added to consumer apps' R8 pass. (#45974 by @jiunshinn)expo-localization
expo-media-library
expo-mail-composer
expo-location
locationUnknown errors in watchPositionAsync. (#44027 by @tsapeta)notification_icon drawable before applicationInfo.icon. The launcher icon is full-color and renders as a solid white square in notifications. (#44309 by @creatornader)expo-keep-awake
expo-modules-core
EXJavaScriptSerializable. (#43634 by @tjzel)PersistentFileLog.readEntries race condition by serializing reads on the dispatch queue. (#43958 by @ramonclaudio)EXConstants.bundle from the main bundle to allow running with precompiled XCFrameworks. (#44551 by @chrfalch)ExpoHostWrapper instead of reactBridge.uiManager. (#44375 by @vonovak)react-native-worklets from existing podspec, falling back to peer resolution (#44232 by @kitten)eventEmitter in SwiftUIVirtualView.dispatchEvent to prevent SIGSEGV after view teardown. (#45175 by @DORI2001)Record on Field.options. The set is now guarded by a per-field lock and accessed through a single withOptions API. (#45072 by @nishan) (#45072 by @intergalacticspacehighway)Enumerable function results to JS values. (#45168 by @tsapeta)ExpoModulesJSI (#45124 by @chrfalch)rgb(...) and rgba(...) color strings when converting JS color values to android.graphics.Color. (#44023 by @dileepapeiris)Host component for SwiftUI or Jetpack Compose components. (#44118 by @kudo)Record conversion behavior by hydrating only declared fields, preserving undefined handling for object properties, and emitting typed records directly to JS. (#45085 by @barthap)libworklets.so via prefab before falling back to local CMake output. (#43863 by @Insik-Han)Encodable function results so arrays, dictionaries, optionals, RawRepresentable enums and Convertibles route through their dynamic types instead of producing wrong shapes. (#45575 by @tsapeta)associatedCookies in Network.requestWillBeSentExtraInfo CDP events serializing as a JSON object instead of an array. (#45720 by @huntie)ExpoComposeView content visible during parent view transitions (e.g., react-native-screens pop navigation). (#45942 by @intergalacticspacehighway)SharedObject.emit crashes caused by an off-thread JSI lookup. (#45986 by @tsapeta)-Wunused-result compiler warning in FrontendConverter.cpp. (#46073 by @tomekzaw)Host double-composing children. (#46304 by @nishan) (#46304 by @intergalacticspacehighway)UISupportedInterfaceOrientations~ipad. (#46281 by @bryandent) (#46306 by @mvincentong) (#46306 by @bryandent, @mvincentong)expo-local-authentication
expo-intent-launcher
getApplicationIcon throwing an error on Android below API 26. (#46043 by @lukmccall)expo-image-manipulator
expo-gl
msaaSamples and enableExperimentalWorkletSupport optional in GLViewProps to align TypeScript types with their runtime defaultProps values. (#43767 by @jcarlosroldan)WebGLRenderingContext and WebGL2RenderingContext globals and their numeric constants at module init so libraries that read them before any GL context is created no longer crash. (#45865 by @tsapeta)WebGL2RenderingContext inherit from WebGLRenderingContext, matching the WebGL spec. gl2 instanceof WebGLRenderingContext now returns true for WebGL2 contexts, and shared constants and methods are no longer duplicated on the WebGL2 prototype. (#45871 by @tsapeta)expo-image-picker
null mime type reported (#43734 by @vonovak)com.canhub.cropper.CropImageActivity being exported. (#45357 by @behenate)base64 result not being a JPEG data. (#43806 by @barthap)expo-font
expo-document-picker
expo-file-system
md5 hash. (#44064 by @barthap)totalDiskSpace returning free disk space instead of total disk capacity. (#44849 by @shanebdavis)onProgress callback of File.downloadFileAsync() sometimes not firing on download completion. (#45238 by @barthap)File.pickFileAsync() greying out all files when using wildcard MIME types like */* or image/*. (#45245 by @barthap)FileSystemFileHandle to honor FileMode string values ('r', 'w', 'wa', 'wt', 'rw') instead of the obsolete name table, expose handle and file metadata, and match the documented default mode for content:// URIs. The dispatch is now exhaustive over FileMode, so future enum additions fail to compile in the mock. (by @radko93)delete() and openHandle() in the next-gen File System API. (#45967 by @barthap)createFile, createDirectory, and rename that allowed escaping the parent directory. (#45967 by @barthap)Paths.cache and Paths.document pointing to wrong directory in Expo Go. (#45977 by @barthap)expo-crypto
crypto on globalThis rather than just window.crypto (#43405 by @bradleyayers)expo-contacts
expo-cellular
expo-camera
isAvailableAsync returning true on devices without a camera. (#43932 by @alanjhughes)type value returned by ZXing fallback scanner (code39, pdf417, codabar) — it now returns the same format as the AVFoundation scanner (e.g. "code39" instead of "org.iso.Code39"). (#44726 by @jensdev)CameraView.launchScanner is interactively dismissed and the app is backgrounded/foregrounded. (#45063 by @alanjhughes)RECORD_AUDIO from the manifest so recordAudioAndroid depends on the plugin. (#45132 by @alanjhughes)itf14 barcode type not detecting generic Interleaved 2 of 5 barcodes, so behavior matches Android's FORMAT_ITF. (#44796 by @mduchev)expo-calendar
NumberFormatException crash on Android when calendar/event IDs exceed Integer.MAX_VALUE. (#43344 by @olivier-bouillet)deleteEventAsync deleting wrong recurring event instance when instanceStartDate is provided. (#40172 by @marcelogdeandrade)calendarIds filter input (#45951 by @kitten)expo-brightness
expo-blur
BlurTargetView that could trigger view already removed from parent errors during root tree transitions. (#43595 by @stathis) (#43595 by @efstathiosntonas) (#43595, #43595 by @efstathiosntonas, @efstathiosntonas)blurReductionFactor into account. (#43814 by @behenate)expo-battery
expo-background-fetch
expo-application
PromiseAlreadySettledException crash in getInstallReferrerAsync when onInstallReferrerServiceDisconnected gets called after promise settlement. (#43419 by @nishan) (#43419 by @intergalacticspacehighway) (#43419, #43419 by @intergalacticspacehighway, @intergalacticspacehighway)expo-apple-authentication
expo-asset
unimodules-app-loader
expo-web-browser
experimentalLauncherActivity config plugin option. (#44073 by @lukmccall)expo-store-review
expo-sqlite
runSync, applyChangesetSync, invertChangesetSync) to accept any AnyArrayBuffer in place of the removed JavaScriptArrayBuffer. (#44337 by @tsapeta)ArrayBuffers. (#42638 by @barthap)ArrayBuffers for blob columns. (#42639 by @barthap)ArrayBuffers. (#42640 by @barthap)ArrayBuffers. (#42642 by @barthap)expo-sensors
expo-screen-capture
expo-screen-orientation
expo-notifications
import React for xcframework compatibility. (#44248 by @chrfalch)expo instead of expo-modules-core (#45565 by @Wenszel)expo-localization
expo-media-library
expo-location
expo-modules-core
EXAppContextProtocol, EXReactDelegateProtocol, EXAppContextFactoryRegistry) for cross-xcframework module boundaries. Refactored legacy module registry, Fabric view headers, JSI layer, and podspecs for xcframework compatibility. (#44248 by @chrfalch)ViewWrapper protocol and AnyContentViewProvider for type-erased access to wrapped SwiftUI views. (#43669 by @nishan) (#43669 by @intergalacticspacehighway) (#43669, #43669 by @intergalacticspacehighway, @intergalacticspacehighway)SwiftUIVirtualViewSharedImpl+Private.h leaking into the public module umbrella. (#44993 by @chrfalch)ExpoModulesCore.podspec to propagate to swift-only targets like Expo Widgets (#44984 by @chrfalch)AppContext, and worklets integration on top of the new ExpoModulesJSI package. (#44337 by @tsapeta)Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
_This version does not introduce any user-facing changes._
This version does not introduce any user-facing changes.
Update types to accept $id and change exclusiveMinimum/exclusiveMaximum to accept number for Draft 06 spec (#44510 by @Nedunchezhiyan-M)
$id and change exclusiveMinimum/exclusiveMaximum to accept number for Draft 06 spec (#44510 by @Nedunchezhiyan-M)Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
_This version does not introduce any user-facing changes._
This version does not introduce any user-facing changes.
_This version does not introduce any user-facing changes._
This version does not introduce any user-facing changes.
Removed deprecated content property of the clipboard event listener. Use getStringAsync() instead. (#41739 by @barthap)
expo-notifications
expo-modules-core
ignoreSafeAreaKeyboardInsets to ignoreSafeArea on Host component. It now accepts 'all' or 'keyboard' instead of a boolean. (#42598 by @nishan) (#42598 by @intergalacticspacehighway)expo-localization
expo-image-loader
expo-clipboard
expo-cellular
expo-brightness
expo-blur
expo-web-browser
expo-sqlite
expo-speech
expo-sharing
expo-notifications
expo-modules-core
ExpoAppDelegate inheritance requirement in ExpoReactNativeFactory (#39417 by @gabrieldonadel)applicationDidReceiveMemoryWarning subscribing to ExpoAppDelegateSubscriberManager (#40504 by @szydlovsky)Encodable types can now be converted to JavaScript values. (#40621 by @tsapeta)subscriberDidRegister function to AppDelegate subscribers. (#40684 by @tsapeta)reloadAppAsync method to AppContext. (#42295 by @aleqsio)map to ValueOrUndefined. (#40593 by @Wenszel)process.env.EXPO_DOM_HOST_OS. (#40382 by @EvanBacon)ComposableScope for compose Content functions. (#39155 by @aleqsio)ArrayBuffer. (#39943 by @lukmccall)convertResult to Convertible. (#40302 by @jakex7)ReactActivityHandler.onDidCreateReactActivityDelegateNotification. (#40537 by @lukmccall)ReactNativeHostHandler.onDidCreateReactHost. (#40561 by @lukmccall)hermesEnabled property requirement for internal testing (#40678 by @gabrieldonadel)Class definition for shared objects is now optional. (#40708 by @tsapeta)ArrayBuffers. (#41404 by @barthap)ArrayBuffers in native modules. (#41415 by @barthap)appDelegateWillBeginInitialization function to AppDelegate subscribers. (#41456 by @tsapeta)RNHost to improve RN component layout inside SwiftUI views (#40938 by @nishan) (#40938 by @intergalacticspacehighway)ignoreSafeAreaKeyboardInsets to SwiftUIHostingView. (#41302 by @nishan) (#41302 by @intergalacticspacehighway)ArrayBuffers. (#41548 by @barthap)RCTHostRuntimeDelegate instead of unofficial bridge.runtime. (#41311 by @tsapeta)JavaScriptActor to isolate code requiring running on the JavaScript thread. (#41793 by @tsapeta)NSEdgeInsets.zero extension to better match UIEdgeInsets. (#42675 by @tsapeta)expo-media-library
expo-location
androidForegroundServiceIcon for controlling the icon for the foreground service. (#41132 by @jeppester)accuracy field to PermissionDetailsLocationIOS exposing iOS 14+ precise/reduced location authorization. (#42931 by @sbs44)expo-image-picker
expo-font
expo-file-system
idempotent option to downloadFileAsync (#39681 by @vonovak)append option to write methods. (#42778 by @aleqsio)expo-device
expo-constants
expo-crypto
expo-camera
expo-contacts
Contacts@Next (#40886 by @Wenszel)hasContactsAsync function (#40756 by @hryhoriiK97)expo-calendar
ExpoCalendar@next (#39108 by @kosmydel and @arturgesiarz) (#39108 by @kosmydel, @arturgesiarz)expo-blur
expo-auth-session
extraHeaders option to TokenRequest and RevokeTokenRequest. (#31381) by @levizimmerman and @lsarni (#31381 by @levizimmerman, @lsarni)expo-web-browser
dismissBrowser hanging when called with no browser open. (#40799 by @alanjhughes)expo-video-thumbnails
expo-task-manager
expo-sqlite
ExpoSQLite.defaultDatabaseDirectory returns undefined. (#40680 by @kudo)useSQLCipher. (#40781 by @ronickg)serializeAsync / serializeSync errors from memory database on web. (#40899 by @kudo)expo-store-review
expo-sensors
expo-sharing
expo-screen-capture
expo-screen-orientation
expo-network
expo-notifications
deleteNotificationChannelGroupAsync export (#43244 by @vonovak)NotificationForwarderActivity on Android 11/12 when Parcelable extras fail to deserialize by using byte array serialization as fallback. (#43203 by @vonovak)requestPermissionsAsync not forwarding new options to the OS when notifications were already granted (#43378 by @vonovak)expo-modules-core
TurboModuleRegistry on web (#39726 by @satya164)useReleasingSharedObject getting destroyed after a fast refresh caused by a change in its dependencies. (#39753 by @behenate)[NSString UTF8String] could return nil for certain string inputs (non-English), leading to an attempt to dereference a null pointer during jsi::String creation. (#40639 by @mohammadamin16)androidNavigationBar.enforceContrast app config property not working. (#40263 by @behenate)Either conversion in Record (#40655 by @vonovak)TextField causing crash when reload and unmounting. (#40960 by @nishan) (#40960 by @intergalacticspacehighway) (#40960, #40960 by @intergalacticspacehighway, @intergalacticspacehighway)useReleasingSharedObject to defer releasing until after render.InvalidArgsNumberException when declaring AsyncFunction with optional arguments and Promise. (#41054 by @Wenszel)AppContextActivityResultLauncher coroutine continuation is active before resuming (#41319 by @vonovak)register overload in ModuleRegistry. (#40149 by @alanjhughes)invalidate callback to SwiftUIVirtualView. (#40237 by @intergalacticspacehighway)ValueOrUndefined conversion in Record. (#40289 by @jakex7)null not being correctly converted to ValueOrUndefined in Record. (#41005 by @lukmccall)NativeModule extending Record<string, any>, which made it not type-safe. (#41320 by @lukmccall)expo -> expo-modules-core/types -> ./build/global rather than types="node" (#42751 by @kitten)DynamicBoolType to correctly distinguish boolean values from numeric 0/1. (#42978 by @nishan) (#42978 by @intergalacticspacehighway)DynamicBoolType to throw NullCastException for nil values, matching DynamicRawType behavior. (#43085 by @nishan) (#43085 by @intergalacticspacehighway)PersistentFileLog. (#43283 by @alanjhughes)field.options.insert() silently failing in fieldsOf() due to mutation on protocol existential. (#43341 by @just1and0)Prop definition component by isolating its setter to the main actor. (#43348 by @tsapeta)expo-mail-composer
expo-media-library
endCursor description in the documentation. (#39120 by @Wenszel)id to URI format (#39920 by @Wenszel)delete() throwing security exception (#39914 by @Wenszel)asset.getModificationTime to return milliseconds (#39715 by @Wenszel)expo-location
mIsHostPaused initialization. Location updates are now delivered immediately when app is in foreground, matching iOS behavior. (#41659 by @tyrauber)scope field in a permissions request result (#41328 by @vonovak)expo-localization
expo-intent-launcher
expo-image-manipulator
expo-image-picker
expo-gl
expo-font
expo-file-system
createFile and createDirectory methods. (#40314 by @jakex7)File/Directory/Paths API. (#43005 by @aleqsio)File and Directory static methods. (#43282 by @alanjhughes)expo-clipboard
expo-constants
expo-crypto
expo-camera
expo-contacts
namePrefix on iOS (#39974 by @hryhoriiK97)editWithForm throws error (#43315 by @Wenszel)expo-calendar
expo-brightness
expo-asset
expo-web-browser
experimentalLauncherActivity config plugin option as it was replaced with the useProxyActivity option on openBrowserAsync and openAuthSessionAsync methods. (#41535 by @lukmccall)warmUpAsync JSDoc. (#42944 by @brentvatne)expo-video-thumbnails
androidx.annotation:annotation dependency. (#39755 by @lukmccall)expo-task-manager
expo-sqlite
expo-sensors
expo-sms
androidx.annotation:annotation dependency. (#39756 by @lukmccall)expo-sharing
androidx.legacy:legacy-support-v4 dependency. (#39757 by @lukmccall)expo-screen-capture
removeScreenshotListener call as deprecated (#42098 by @vonovak)expo-secure-store
expo-screen-orientation
expo-notifications
assertValidAndroidAssetName from expo/config-plugins (#39883 by @vonovak)NotificationImportance.UNSPECIFIED as not suitable for use (#41709 by @vonovak)assert dependency (#42970 by @kitten)expo-modules-core
kotlinOptions to compilerOptions DSL. (#39794 by @huextrat)expo-module.config.json. (#39985, #40241 by @jakex7)RuntimeScheduler to schedule tasks on the JS thread. (#40473 by @alanjhughes)EXConstantsService) from expo-constants. (#41339 by @tsapeta)appContext.fileSystem, appContext.utilities, appContext.imageLoader and appContext.permissions with the core implementations. (#41350, #41370, #41396 by @tsapeta)executeOnJavaScriptThread in favor of runtime.schedule. (#41478 by @tsapeta & #41551 by @lukmccall) (#41478, #41551 by @tsapeta, @lukmccall)ShadowNodeProxy.setStyleSize() for Jetpack Compose integration. (#41553 by @kudo)RCTHost. (#41632 by @alanjhughes)NativeViewManagerAdapter. (#41804 by @tsapeta)EXReactNativeEventEmitter class. (#41915 by @tsapeta)NativeModulesProxy is absent. (#43020 by @tsapeta)Either type stable. (#43267 by @lukmccall)ExpoModulesCorePlugin. (#43312 by @lukmccall)expo-media-library
removeSubscription calls as deprecated (#42098 by @vonovak)android:maxSdkVersion annotation to READ_EXTERNAL_STORAGE and WRITE_EXTERNAL_STORAGE permissions. (#40976 by @behenate)expo-location
androidx.annotation:annotation dependency. (#39758 by @lukmccall)expo-localization
expo-keep-awake
expo-intent-launcher
androidx.annotation:annotation dependency. (#39760 by @lukmccall)expo-image-manipulator
androidx.annotation:annotation dependency (#39764 by @lukmccall)expo-image-loader on iOS. (#41395 by @tsapeta)expo-image-picker
expo-image-loader
expo-gl
expo-haptics
await for performHapticsAsync (#40987 by @kamui545)androidx.annotation:annotation dependency. (#39759 by @lukmccall)expo-font
expo-file-system
android:maxSdkVersion annotation to READ_EXTERNAL_STORAGE and WRITE_EXTERNAL_STORAGE permissions. (#40976 by @behenate)expo-device
androidx.legacy:legacy-support dependency. (#39762 by @lukmccall)expo-clipboard
removeClipboardListener call as deprecated (#42098 by @vonovak)expo-constants
expo-crypto
ExpoCrypto.getRandomBase64String() fallback in getRandomBytes() (#41517 by @hassankhan)expo-camera
CGImageProperties in exif data. (#40801 by @alanjhughes)expo-contacts
CNContactStore lazily (#42096 by @vonovak)androidx.annotation:annotation dependency (#39761 by @lukmccall)expo-calendar
@ in @platform ios JSDoc tag for EntityTypes enum. (#42944 by @brentvatne)expo-blur
expo-asset
expo-gl
texImage2D expo wrapper. (#41499 by @psnet)stb_image.h used for image decoding in texImage2D expo wrapper to support only JPEG, PNG, GIF image formats. Formats BMP, PSD, TGA, HDR, PIC, PNM are no longer supported. (#41001 by @psnet)stb_image.h used for image decoding in texImage2D expo wraper method. A lot of fixes and performance improvements, see related PR. (#41000 by @psnet)Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Your coding agent can read these notes before it upgrades. Set up the MCP server →