Skip to content

Commit 63b37fd

Browse files
author
maciejmakowski2003
committed
Merge branch 'main' into fix/ios/framework-static-linkage
2 parents 83850af + 1f342f3 commit 63b37fd

File tree

13 files changed

+578
-356
lines changed

13 files changed

+578
-356
lines changed

apps/common-app/package.json

Lines changed: 12 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -15,12 +15,12 @@
1515
"lucide-react-native": "^0.555.0",
1616
"react-native-audio-api": "workspace:*",
1717
"react-native-background-timer": "2.4.1",
18-
"react-native-gesture-handler": "2.28.0",
19-
"react-native-reanimated": "4.1.3",
18+
"react-native-gesture-handler": "2.30.0",
19+
"react-native-reanimated": "4.2.1",
2020
"react-native-safe-area-context": "5.6.1",
21-
"react-native-screens": "4.18.0",
21+
"react-native-screens": "4.19.0",
2222
"react-native-svg": "15.14.0",
23-
"react-native-worklets": "0.6.1"
23+
"react-native-worklets": "0.7.1"
2424
},
2525
"devDependencies": {
2626
"@babel/core": "^7.25.2",
@@ -29,20 +29,20 @@
2929
"@react-native-community/cli": "20.0.0",
3030
"@react-native-community/cli-platform-android": "20.0.0",
3131
"@react-native-community/cli-platform-ios": "20.0.0",
32-
"@react-native/babel-preset": "0.82.0",
33-
"@react-native/eslint-config": "0.82.0",
34-
"@react-native/metro-config": "0.82.0",
35-
"@react-native/typescript-config": "0.82.0",
32+
"@react-native/babel-preset": "0.83.1",
33+
"@react-native/eslint-config": "0.83.1",
34+
"@react-native/metro-config": "0.83.1",
35+
"@react-native/typescript-config": "0.83.1",
3636
"@types/jest": "^29.5.13",
37-
"@types/react": "^19.1.1",
37+
"@types/react": "^19.2.0",
3838
"@types/react-native-background-timer": "^2.0.2",
3939
"@types/react-test-renderer": "^19.1.0",
4040
"eslint": "^8.57.0",
4141
"jest": "^29.6.3",
4242
"prettier": "^3.3.3",
43-
"react": "19.1.1",
44-
"react-native": "0.82.0",
45-
"react-test-renderer": "19.1.1",
43+
"react": "19.2.0",
44+
"react-native": "0.83.1",
45+
"react-test-renderer": "19.2.0",
4646
"typescript": "~5.8.3"
4747
}
4848
}

apps/common-app/tsconfig.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
{
22
"extends": "../../tsconfig.json",
33
"compilerOptions": {
4+
"types": ["jest"],
45
"moduleSuffixes": [".ios", ".android", ".native", ""]
56
}
67
}

apps/fabric-example/ios/FabricExample.xcodeproj/project.pbxproj

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -383,6 +383,7 @@
383383
);
384384
MTL_ENABLE_DEBUG_INFO = YES;
385385
ONLY_ACTIVE_ARCH = YES;
386+
OTHER_CFLAGS = "$(inherited)";
386387
OTHER_CPLUSPLUSFLAGS = (
387388
"$(OTHER_CFLAGS)",
388389
"-DFOLLY_NO_CONFIG",
@@ -468,6 +469,7 @@
468469
"\"$(inherited)\"",
469470
);
470471
MTL_ENABLE_DEBUG_INFO = NO;
472+
OTHER_CFLAGS = "$(inherited)";
471473
OTHER_CPLUSPLUSFLAGS = (
472474
"$(OTHER_CFLAGS)",
473475
"-DFOLLY_NO_CONFIG",

apps/fabric-example/ios/Podfile.lock

Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -2467,7 +2467,6 @@ PODS:
24672467
- ReactCommon/turbomodule/bridging
24682468
- ReactCommon/turbomodule/core
24692469
- RNAudioAPI/audioapi (= 0.11.0)
2470-
- RNWorklets
24712470
- SocketRocket
24722471
- Yoga
24732472
- RNAudioAPI/audioapi (0.11.0):
@@ -2498,7 +2497,6 @@ PODS:
24982497
- ReactCommon/turbomodule/core
24992498
- RNAudioAPI/audioapi/audioapi_dsp (= 0.11.0)
25002499
- RNAudioAPI/audioapi/ios (= 0.11.0)
2501-
- RNWorklets
25022500
- SocketRocket
25032501
- Yoga
25042502
- RNAudioAPI/audioapi/audioapi_dsp (0.11.0):
@@ -2527,7 +2525,6 @@ PODS:
25272525
- ReactCodegen
25282526
- ReactCommon/turbomodule/bridging
25292527
- ReactCommon/turbomodule/core
2530-
- RNWorklets
25312528
- SocketRocket
25322529
- Yoga
25332530
- RNAudioAPI/audioapi/ios (0.11.0):
@@ -2556,7 +2553,6 @@ PODS:
25562553
- ReactCodegen
25572554
- ReactCommon/turbomodule/bridging
25582555
- ReactCommon/turbomodule/core
2559-
- RNWorklets
25602556
- SocketRocket
25612557
- Yoga
25622558
- RNGestureHandler (2.28.0):
@@ -3220,7 +3216,7 @@ SPEC CHECKSUMS:
32203216
ReactAppDependencyProvider: c5c4f5280e4ae0f9f4a739c64c4260fe0b3edaf1
32213217
ReactCodegen: 096bbbb2498ca55f385e2fbd465bfa0211ee8295
32223218
ReactCommon: 25c7f94aee74ddd93a8287756a8ac0830a309544
3223-
RNAudioAPI: ffb84555071242298857704771c3bf5cd634acf0
3219+
RNAudioAPI: 05b3e78da312dd4f5b42fae8a4b1652911db84a3
32243220
RNGestureHandler: f1dd7f92a0faa2868a919ab53bb9d66eb4ebfcf5
32253221
RNReanimated: e4993dd98196c698cbacc1441a4ac5b855ae56dc
32263222
RNScreens: d821082c6dd1cb397cc0c98b026eeafaa68be479

apps/fabric-example/package.json

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,8 +12,8 @@
1212
"dependencies": {
1313
"common-app": "workspace:*",
1414
"lucide-react-native": "^0.555.0",
15-
"react": "19.1.1",
16-
"react-native": "0.82.0",
15+
"react": "19.2.0",
16+
"react-native": "0.83.1",
1717
"react-native-svg": "15.14.0"
1818
},
1919
"devDependencies": {

apps/fabric-example/tsconfig.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
{
22
"extends": "../../tsconfig.json",
33
"compilerOptions": {
4+
"types": ["jest"],
45
"baseUrl": ".",
56
"moduleSuffixes": [".ios", ".android", ".native", ""],
67
"paths": {

packages/audiodocs/docs/other/compatibility.mdx

Lines changed: 13 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -12,18 +12,19 @@ import { Yes, No, Version, Spacer } from '@site/src/components/Compatibility';
1212

1313
<div className="compatibility">
1414

15-
| | 0.74 | 0.75 | 0.76 | 0.77 | 0.78 | 0.79 | 0.80 | 0.81 | 0.82 |
16-
| ----------------------------------- | ----- | ----- | ----- | ----- | ----- | ----- | ----- | ----- | ----- |
17-
| <Version version="0.10.x"/> | <No/> | <No/> | <Yes/>| <Yes/>| <Yes/>| <Yes/>| <Yes/>| <Yes/>| <Yes/>|
18-
| <Version version="0.9.x"/> | <No/> | <No/> | <Yes/>| <Yes/>| <Yes/>| <Yes/>| <Yes/>| <Yes/>| <No/> |
19-
| <Version version="0.8.x"/> | <No/> | <No/> | <Yes/>| <Yes/>| <Yes/>| <Yes/>| <Yes/>| <Yes/>| <No/> |
20-
| <Version version="0.7.x"/> | <No/> | <Yes/>| <Yes/>| <Yes/>| <Yes/>| <Yes/>| <Yes/>| <No/> | <No/> |
21-
| <Version version="0.6.x"/> | <No/> | <Yes/>| <Yes/>| <Yes/>| <Yes/>| <Yes/>| <No/> | <No/> | <No/> |
22-
| <Version version="0.5.x"/> | <No/> | <Yes/>| <Yes/>| <Yes/>| <Yes/>| <No/> | <No/> | <No/> | <No/> |
23-
| <Version version="0.4.x"/> | <No/> | <Yes/>| <Yes/>| <Yes/>| <Yes/>| <No/> | <No/> | <No/> | <No/> |
24-
| <Version version="0.3.x"/> | <No/> | <Yes/>| <Yes/>| <Yes/>| <No/> | <No/> | <No/> | <No/> | <No/> |
25-
| <Version version="0.2.x"/> | <Yes/>| <Yes/>| <Yes/>| <No/> | <No/> | <No/> | <No/> | <No/> | <No/> |
26-
| <Version version="0.1.x"/> | <Yes/>| <Yes/>| <No/> | <No/> | <No/> | <No/> | <No/> | <No/> | <No/> |
15+
| | 0.74 | 0.75 | 0.76 | 0.77 | 0.78 | 0.79 | 0.80 | 0.81 | 0.82 | 0.83 |
16+
| ----------------------------------- | ----- | ----- | ----- | ----- | ----- | ----- | ----- | ----- | ----- | ----- |
17+
| <Version version="0.11.x"/> | <No/> | <No/> | <Yes/>| <Yes/>| <Yes/>| <Yes/>| <Yes/>| <Yes/>| <Yes/>| <Yes/>|
18+
| <Version version="0.10.x"/> | <No/> | <No/> | <Yes/>| <Yes/>| <Yes/>| <Yes/>| <Yes/>| <Yes/>| <Yes/>| <No/> |
19+
| <Version version="0.9.x"/> | <No/> | <No/> | <Yes/>| <Yes/>| <Yes/>| <Yes/>| <Yes/>| <Yes/>| <No/> | <No/> |
20+
| <Version version="0.8.x"/> | <No/> | <No/> | <Yes/>| <Yes/>| <Yes/>| <Yes/>| <Yes/>| <Yes/>| <No/> | <No/> |
21+
| <Version version="0.7.x"/> | <No/> | <Yes/>| <Yes/>| <Yes/>| <Yes/>| <Yes/>| <Yes/>| <No/> | <No/> | <No/> |
22+
| <Version version="0.6.x"/> | <No/> | <Yes/>| <Yes/>| <Yes/>| <Yes/>| <Yes/>| <No/> | <No/> | <No/> | <No/> |
23+
| <Version version="0.5.x"/> | <No/> | <Yes/>| <Yes/>| <Yes/>| <Yes/>| <No/> | <No/> | <No/> | <No/> | <No/> |
24+
| <Version version="0.4.x"/> | <No/> | <Yes/>| <Yes/>| <Yes/>| <Yes/>| <No/> | <No/> | <No/> | <No/> | <No/> |
25+
| <Version version="0.3.x"/> | <No/> | <Yes/>| <Yes/>| <Yes/>| <No/> | <No/> | <No/> | <No/> | <No/> | <No/> |
26+
| <Version version="0.2.x"/> | <Yes/>| <Yes/>| <Yes/>| <No/> | <No/> | <No/> | <No/> | <No/> | <No/> | <No/> |
27+
| <Version version="0.1.x"/> | <Yes/>| <Yes/>| <No/> | <No/> | <No/> | <No/> | <No/> | <No/> | <No/> | <No/> |
2728

2829
</div>
2930

packages/react-native-audio-api/android/src/main/java/com/swmansion/audioapi/system/MediaSessionManager.kt

Lines changed: 38 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ import android.media.AudioDeviceInfo
1010
import android.media.AudioManager
1111
import android.os.Build
1212
import androidx.annotation.RequiresApi
13+
import androidx.core.app.ActivityCompat
1314
import androidx.core.app.NotificationCompat
1415
import androidx.core.content.ContextCompat
1516
import com.facebook.react.bridge.Arguments
@@ -134,16 +135,30 @@ object MediaSessionManager {
134135
permissionAwareActivity.requestPermissions(arrayOf(Manifest.permission.RECORD_AUDIO), RECORDING_REQUEST_CODE, permissionListener)
135136
}
136137

137-
fun checkRecordingPermissions(): String =
138-
if (reactContext.get()!!.checkSelfPermission(
138+
fun checkRecordingPermissions(): String {
139+
val context = reactContext.get()!!
140+
141+
if (context.checkSelfPermission(Manifest.permission.RECORD_AUDIO) == PackageManager.PERMISSION_GRANTED) {
142+
return "Granted"
143+
}
144+
145+
// Permission not granted - check if we should show rationale
146+
val activity = context.currentActivity
147+
if (activity != null &&
148+
ActivityCompat.shouldShowRequestPermissionRationale(
149+
activity,
139150
Manifest.permission.RECORD_AUDIO,
140-
) == PackageManager.PERMISSION_GRANTED
151+
)
141152
) {
142-
"Granted"
143-
} else {
144-
"Denied"
153+
// User previously denied but didn't select "Don't ask again"
154+
return "Denied"
145155
}
146156

157+
// Either never asked OR user selected "Don't ask again"
158+
// Return "Undetermined" to match iOS behavior and let caller decide to request
159+
return "Undetermined"
160+
}
161+
147162
fun requestNotificationPermissions(permissionListener: PermissionListener) {
148163
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU) {
149164
val permissionAwareActivity = reactContext.get()!!.currentActivity as PermissionAwareActivity
@@ -166,14 +181,26 @@ object MediaSessionManager {
166181

167182
fun checkNotificationPermissions(): String {
168183
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU) {
169-
return if (reactContext.get()!!.checkSelfPermission(
184+
val context = reactContext.get()!!
185+
186+
if (context.checkSelfPermission(Manifest.permission.POST_NOTIFICATIONS) == PackageManager.PERMISSION_GRANTED) {
187+
return "Granted"
188+
}
189+
190+
// Permission not granted - check if we should show rationale
191+
val activity = context.currentActivity
192+
if (activity != null &&
193+
ActivityCompat.shouldShowRequestPermissionRationale(
194+
activity,
170195
Manifest.permission.POST_NOTIFICATIONS,
171-
) == PackageManager.PERMISSION_GRANTED
196+
)
172197
) {
173-
"Granted"
174-
} else {
175-
"Denied"
198+
// User previously denied but didn't select "Don't ask again"
199+
return "Denied"
176200
}
201+
202+
// Either never asked OR user selected "Don't ask again"
203+
return "Undetermined"
177204
}
178205
// For Android < 13, permission is granted by default
179206
return "Granted"

packages/react-native-audio-api/common/cpp/audioapi/utils/SpscChannel.hpp

Lines changed: 8 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
#include <algorithm>
44
#include <atomic>
55
#include <memory>
6+
#include <new>
67
#include <thread>
78
#include <type_traits>
89
#include <utility>
@@ -413,15 +414,17 @@ class InnerChannel {
413414
T *buffer_;
414415

415416
/// Producer-side data (accessed by sender thread)
416-
alignas(64) std::atomic<size_t> sendCursor_{0};
417-
alignas(64) size_t rcvCursorCache_{0}; // reduces cache coherency
417+
alignas(std::hardware_destructive_interference_size) std::atomic<size_t> sendCursor_{0};
418+
alignas(std::hardware_destructive_interference_size) size_t rcvCursorCache_{
419+
0}; // reduces cache coherency
418420

419421
/// Consumer-side data (accessed by receiver thread)
420-
alignas(64) std::atomic<size_t> rcvCursor_{0};
421-
alignas(64) size_t sendCursorCache_{0}; // reduces cache coherency
422+
alignas(std::hardware_destructive_interference_size) std::atomic<size_t> rcvCursor_{0};
423+
alignas(std::hardware_destructive_interference_size) size_t sendCursorCache_{
424+
0}; // reduces cache coherency
422425

423426
/// Flag indicating if the oldest element is occupied
424-
alignas(64) std::atomic<bool> oldestOccupied_{false};
427+
alignas(std::hardware_destructive_interference_size) std::atomic<bool> oldestOccupied_{false};
425428

426429
friend class Sender<T, Strategy, Wait>;
427430
friend class Receiver<T, Strategy, Wait>;

packages/react-native-audio-api/package.json

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -94,17 +94,17 @@
9494
"@evilmartians/lefthook": "^1.5.0",
9595
"@expo/config-plugins": "^9.0.0",
9696
"@expo/config-types": "^53.0.4",
97-
"@react-native/babel-preset": "0.82.0",
98-
"@react-native/eslint-config": "0.82.0",
99-
"@react-native/metro-config": "0.82.0",
100-
"@react-native/typescript-config": "0.82.0",
97+
"@react-native/babel-preset": "0.83.1",
98+
"@react-native/eslint-config": "0.83.1",
99+
"@react-native/metro-config": "0.83.1",
100+
"@react-native/typescript-config": "0.83.1",
101101
"@types/babel__core": "^7.20.0",
102102
"@types/babel__generator": "^7.6.4",
103103
"@types/babel__traverse": "^7.14.2",
104104
"@types/convert-source-map": "^2.0.0",
105105
"@types/jest": "^29.5.5",
106106
"@types/node": "^18.0.0",
107-
"@types/react": "^19.1.1",
107+
"@types/react": "^19.2.0",
108108
"@types/react-test-renderer": "^19.1.0",
109109
"@types/semver": "7.7.1",
110110
"babel-plugin-module-resolver": "^4.1.0",
@@ -126,8 +126,8 @@
126126
"eslint-plugin-tsdoc": "^0.2.17",
127127
"jest": "^29.7.0",
128128
"prettier": "^3.3.3",
129-
"react": "19.1.1",
130-
"react-native": "0.82.0",
129+
"react": "19.2.0",
130+
"react-native": "0.83.1",
131131
"react-native-builder-bob": "0.33.1",
132132
"turbo": "^1.10.7",
133133
"typescript": "~5.8.3"

0 commit comments

Comments
 (0)