Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -63,7 +63,9 @@ export const APISectionPlatformTags = ({
{experimentalData.length > 0 && (
<div className="inline-flex flex-row">
<StatusTag status="experimental" className="!mr-0" />
<span className={mergeClasses(STYLES_SECONDARY)}>&ensp;&bull;&ensp;</span>
{!!platformNames?.length && (
<span className={mergeClasses(STYLES_SECONDARY)}>&ensp;&bull;&ensp;</span>
)}
</div>
)}
<PlatformTags
Expand Down
12 changes: 8 additions & 4 deletions docs/pages/versions/unversioned/sdk/imagepicker.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -39,6 +39,8 @@ On iOS, when an image (usually of a [higher resolution](http://www.openradar.me/

You can configure `expo-image-picker` using its built-in [config plugin](/config-plugins/introduction/) if you use config plugins in your project ([Continuous Native Generation (CNG)](/workflow/continuous-native-generation/)). The plugin allows you to configure various properties that cannot be set at runtime and require building a new app binary to take effect. If your app does **not** use CNG, then you'll need to manually configure the library.

By default `expo-image-picker` will add `RECORD_AUDIO` permission on Android. You can remove it by setting the `microphonePermission` to false in the config below.

<ConfigPluginExample>

```json app.json
Expand Down Expand Up @@ -76,14 +78,16 @@ You can configure `expo-image-picker` using its built-in [config plugin](/config
},
{
name: 'cameraPermission',
platform: 'ios',
description: 'A string to set the `NSCameraUsageDescription` permission message.',
platform: 'android' | 'ios',
description:
'A string to set the `NSCameraUsageDescription` permission message. If value `false` is provided then `CAMERA` permission will be blocked on Android.',
default: '"Allow $(PRODUCT_NAME) to access your camera"',
},
{
name: 'microphonePermission',
platform: 'ios',
description: 'A string to set the `NSMicrophoneUsageDescription` permission message.',
platform: 'android' | 'ios',
description:
'A string to set the `NSMicrophoneUsageDescription` permission message. If value `false` is provided then `RECORD_AUDIO` permission will be blocked on Android.',
default: '"Allow $(PRODUCT_NAME) to access your microphone"',
},
{
Expand Down
12 changes: 8 additions & 4 deletions docs/pages/versions/v54.0.0/sdk/imagepicker.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -39,6 +39,8 @@ On iOS, when an image (usually of a [higher resolution](http://www.openradar.me/

You can configure `expo-image-picker` using its built-in [config plugin](/config-plugins/introduction/) if you use config plugins in your project ([Continuous Native Generation (CNG)](/workflow/continuous-native-generation/)). The plugin allows you to configure various properties that cannot be set at runtime and require building a new app binary to take effect. If your app does **not** use CNG, then you'll need to manually configure the library.

By default `expo-image-picker` will add `RECORD_AUDIO` permission on Android. You can remove it by setting the `microphonePermission` to false in the config below.

<ConfigPluginExample>

```json app.json
Expand Down Expand Up @@ -68,14 +70,16 @@ You can configure `expo-image-picker` using its built-in [config plugin](/config
},
{
name: 'cameraPermission',
platform: 'ios',
description: 'A string to set the `NSCameraUsageDescription` permission message.',
platform: 'android' | 'ios',
description:
'A string to set the `NSCameraUsageDescription` permission message. If value `false` is provided then `CAMERA` permission will be blocked on Android.',
default: '"Allow $(PRODUCT_NAME) to access your camera"',
},
{
name: 'microphonePermission',
platform: 'ios',
description: 'A string to set the `NSMicrophoneUsageDescription` permission message.',
platform: 'android' | 'ios',
description:
'A string to set the `NSMicrophoneUsageDescription` permission message. If value `false` is provided then `RECORD_AUDIO` permission will be blocked on Android.',
default: '"Allow $(PRODUCT_NAME) to access your microphone"',
},
]}
Expand Down
12 changes: 8 additions & 4 deletions docs/pages/versions/v55.0.0/sdk/imagepicker.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -39,6 +39,8 @@ On iOS, when an image (usually of a [higher resolution](http://www.openradar.me/

You can configure `expo-image-picker` using its built-in [config plugin](/config-plugins/introduction/) if you use config plugins in your project ([Continuous Native Generation (CNG)](/workflow/continuous-native-generation/)). The plugin allows you to configure various properties that cannot be set at runtime and require building a new app binary to take effect. If your app does **not** use CNG, then you'll need to manually configure the library.

By default `expo-image-picker` will add `RECORD_AUDIO` permission on Android. You can remove it by setting the `microphonePermission` to false in the config below.

<ConfigPluginExample>

```json app.json
Expand Down Expand Up @@ -76,14 +78,16 @@ You can configure `expo-image-picker` using its built-in [config plugin](/config
},
{
name: 'cameraPermission',
platform: 'ios',
description: 'A string to set the `NSCameraUsageDescription` permission message.',
platform: 'android' | 'ios',
description:
'A string to set the `NSCameraUsageDescription` permission message. If value `false` is provided then `CAMERA` permission will be blocked on Android.',
default: '"Allow $(PRODUCT_NAME) to access your camera"',
},
{
name: 'microphonePermission',
platform: 'ios',
description: 'A string to set the `NSMicrophoneUsageDescription` permission message.',
platform: 'android' | 'ios',
description:
'A string to set the `NSMicrophoneUsageDescription` permission message. If value `false` is provided then `RECORD_AUDIO` permission will be blocked on Android.',
default: '"Allow $(PRODUCT_NAME) to access your microphone"',
},
{
Expand Down
8 changes: 6 additions & 2 deletions docs/ui/components/ConfigSection/ConfigPluginProperties.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -39,13 +39,17 @@ export const ConfigPluginProperties = ({ children, properties }: Props) => (
{property.deprecated && (
<>
<StatusTag status="deprecated" className="!mr-0" />
<span className={mergeClasses(STYLES_SECONDARY)}>&ensp;&bull;&ensp;</span>
{(property.experimental || property.platform) && (
<span className={mergeClasses(STYLES_SECONDARY)}>&ensp;&bull;&ensp;</span>
)}
</>
)}
{property.experimental && (
<>
<StatusTag status="experimental" className="!mr-0" />
<span className={mergeClasses(STYLES_SECONDARY)}>&ensp;&bull;&ensp;</span>
{!!property.platform && (
<span className={mergeClasses(STYLES_SECONDARY)}>&ensp;&bull;&ensp;</span>
)}
</>
)}
</div>
Expand Down
2 changes: 2 additions & 0 deletions packages/expo-audio/CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,8 @@

### 🐛 Bug fixes

- [Android] Fix memory leaks when refreshing the app. ([#42785](https://github.com/expo/expo/pull/42785) by [@behenate](https://github.com/behenate))

### 💡 Others

## 55.0.5 — 2026-02-08
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,9 @@ import expo.modules.kotlin.AppContext
import expo.modules.kotlin.exception.Exceptions
import expo.modules.kotlin.sharedobjects.SharedRef
import kotlinx.coroutines.CoroutineScope
import kotlinx.coroutines.DelicateCoroutinesApi
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.GlobalScope
import kotlinx.coroutines.Job
import kotlinx.coroutines.cancel
import kotlinx.coroutines.delay
Expand Down Expand Up @@ -314,9 +316,12 @@ class AudioPlayer(
}
}

@OptIn(DelicateCoroutinesApi::class)
override fun sharedObjectDidRelease() {
super.sharedObjectDidRelease()
appContext?.mainQueue?.launch {
// Run on global scope (not appContext.mainQueue) so that reloading doesn't cancel the release process
// https://github.com/expo/expo/blob/cdf592a7fea56fc01b0149e9b2e5dbd294bcdc4c/packages/expo-modules-core/android/src/main/java/expo/modules/kotlin/AppContext.kt#L277-L279
GlobalScope.launch(Dispatchers.Main) {
if (isActiveForLockScreen) {
AudioControlsService.clearSession()
}
Expand Down
2 changes: 2 additions & 0 deletions packages/expo-brownfield/CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,8 @@

### 🐛 Bug fixes

- [iOS] fix framework search paths settings ([#43106](https://github.com/expo/expo/pull/43106) by [@pmleczek](https://github.com/pmleczek))

### 💡 Others

- [test] add compilation verification and optimize brownfield workflow in [#42894](https://github.com/expo/expo/pull/42894) by [@pmleczek](https://github.com/pmleczek)
Expand Down
3 changes: 2 additions & 1 deletion packages/expo-brownfield/plugin/build/ios/utils/project.js

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

4 changes: 3 additions & 1 deletion packages/expo-brownfield/plugin/src/ios/utils/project.ts
Original file line number Diff line number Diff line change
Expand Up @@ -139,7 +139,6 @@ const getCommonBuildSettings = (
DEBUG_INFORMATION_FORMAT = dwarf;
DEVELOPMENT_TEAM = ;
GCC_C_LANGUAGE_STANDARD = gnu11;
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @executable_path/../../Frameworks";
MARKETING_VERSION = 1.0;
MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE;
MTL_FAST_MATH = YES;
Expand All @@ -152,6 +151,9 @@ const getCommonBuildSettings = (
TARGETED_DEVICE_FAMILY: `"1,2"`,
INFOPLIST_FILE: `${targetName}/Info.plist`,
CURRENT_PROJECT_VERSION: `"${currentProjectVersion}"`,
LD_RUNPATH_SEARCH_PATHS:
'"$(inherited) @executable_path/Frameworks @executable_path/../../Frameworks"',
DYLIB_INSTALL_NAME_BASE: '"@rpath"',
// IPHONEOS_DEPLOYMENT_TARGET: `"${deploymentTarget}"`,
PRODUCT_BUNDLE_IDENTIFIER: `"${bundleIdentifier}"`,
GENERATE_INFOPLIST_FILE: `"YES"`,
Expand Down
3 changes: 1 addition & 2 deletions packages/expo-widgets/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -7,11 +7,10 @@
"scripts": {
"build": "expo-module build",
"build:plugin": "expo-module build plugin",
"build:bundle": "tsc --build bundle",
"clean": "expo-module clean",
"lint": "expo-module lint",
"test": "expo-module test",
"prepare": "node bundle/build/index.js && expo-module prepare",
"prepare": "expo-module prepare",
"prepublishOnly": "expo-module prepublishOnly",
"expo-module": "expo-module"
},
Expand Down
Loading