diff --git a/ios/Podfile.lock b/ios/Podfile.lock
index 2a986e133..c5903161c 100644
--- a/ios/Podfile.lock
+++ b/ios/Podfile.lock
@@ -3108,7 +3108,7 @@ PODS:
- ReactCommon/turbomodule/core
- SocketRocket
- Yoga
- - RNReanimated (4.1.6):
+ - RNReanimated (4.2.2):
- boost
- DoubleConversion
- fast_float
@@ -3135,11 +3135,11 @@ PODS:
- ReactCodegen
- ReactCommon/turbomodule/bridging
- ReactCommon/turbomodule/core
- - RNReanimated/reanimated (= 4.1.6)
+ - RNReanimated/reanimated (= 4.2.2)
- RNWorklets
- SocketRocket
- Yoga
- - RNReanimated/reanimated (4.1.6):
+ - RNReanimated/reanimated (4.2.2):
- boost
- DoubleConversion
- fast_float
@@ -3166,11 +3166,11 @@ PODS:
- ReactCodegen
- ReactCommon/turbomodule/bridging
- ReactCommon/turbomodule/core
- - RNReanimated/reanimated/apple (= 4.1.6)
+ - RNReanimated/reanimated/apple (= 4.2.2)
- RNWorklets
- SocketRocket
- Yoga
- - RNReanimated/reanimated/apple (4.1.6):
+ - RNReanimated/reanimated/apple (4.2.2):
- boost
- DoubleConversion
- fast_float
@@ -3372,7 +3372,7 @@ PODS:
- ReactCommon/turbomodule/core
- SocketRocket
- Yoga
- - RNWorklets (0.5.2):
+ - RNWorklets (0.7.4):
- boost
- DoubleConversion
- fast_float
@@ -3399,10 +3399,10 @@ PODS:
- ReactCodegen
- ReactCommon/turbomodule/bridging
- ReactCommon/turbomodule/core
- - RNWorklets/worklets (= 0.5.2)
+ - RNWorklets/worklets (= 0.7.4)
- SocketRocket
- Yoga
- - RNWorklets/worklets (0.5.2):
+ - RNWorklets/worklets (0.7.4):
- boost
- DoubleConversion
- fast_float
@@ -3429,10 +3429,10 @@ PODS:
- ReactCodegen
- ReactCommon/turbomodule/bridging
- ReactCommon/turbomodule/core
- - RNWorklets/worklets/apple (= 0.5.2)
+ - RNWorklets/worklets/apple (= 0.7.4)
- SocketRocket
- Yoga
- - RNWorklets/worklets/apple (0.5.2):
+ - RNWorklets/worklets/apple (0.7.4):
- boost
- DoubleConversion
- fast_float
@@ -4059,12 +4059,12 @@ SPEC CHECKSUMS:
RNGoogleSignin: b126da02b9402311c8093e72b064a7e85d139921
RNLocalize: d8ccb568b40c72c767714db3808ce66a1ecf444a
RNPermissions: 79345e03d8bede3692368496ec89dcc4768585b5
- RNReanimated: 84b0ffbe148232bda35e2527d0b938a97a51c5e7
+ RNReanimated: 372fdfc5e6abdf42bddf588e206d15aedf46121a
RNScreens: 4f2aed147a2775017923789d8a0a2d377712ec2e
RNShareMenu: 8871da57c9d3ed2b94d30c784d6f67d062e3b016
RNStoreReview: 8f6061907efb6474757db004ee8faac728fd2ada
RNSVG: f2979aa72b14050b9220415c19de398f9cec9aaf
- RNWorklets: 88b4f0eb7d19cbc07d19274ee66b15200e206d38
+ RNWorklets: ca03ce776c15a592ef0700386071466810c41ea0
SensitiveInfo: 09107b865dc23b4e9c0a61ec01385387bf3391a8
SocketRocket: d4aabe649be1e368d1318fdf28a022d714d65748
VisionCamera: 0044a94f7489f19e19d5938e97dfc36f4784af3c
diff --git a/package-lock.json b/package-lock.json
index bc9bf1e83..db32e4abf 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -33,12 +33,12 @@
"@react-navigation/native": "^7.1.17",
"@react-navigation/native-stack": "^7.3.25",
"@realm/react": "^0.20.0",
- "@rozenite/metro": "^1.2.0",
- "@rozenite/mmkv-plugin": "^1.2.0",
- "@rozenite/network-activity-plugin": "^1.2.0",
- "@rozenite/react-navigation-plugin": "^1.3.0",
- "@rozenite/require-profiler-plugin": "^1.2.0",
- "@rozenite/tanstack-query-plugin": "^1.2.0",
+ "@rozenite/metro": "^1.4.0",
+ "@rozenite/mmkv-plugin": "^1.4.0",
+ "@rozenite/network-activity-plugin": "^1.4.0",
+ "@rozenite/react-navigation-plugin": "^1.4.0",
+ "@rozenite/require-profiler-plugin": "^1.4.0",
+ "@rozenite/tanstack-query-plugin": "^1.4.0",
"@sayem314/react-native-keep-awake": "^1.3.1",
"@shopify/flash-list": "^2.2.0",
"@tanstack/react-query": "5.90.14",
@@ -90,7 +90,7 @@
"react-native-orientation-locker": "github:wonday/react-native-orientation-locker",
"react-native-paper": "^5.12.3",
"react-native-permissions": "^4.1.5",
- "react-native-reanimated": "~4.1.0",
+ "react-native-reanimated": "^4.2.2",
"react-native-reanimated-carousel": "^4.0.3",
"react-native-render-html": "^6.3.4",
"react-native-restart": "^0.0.27",
@@ -105,7 +105,7 @@
"react-native-vision-camera": "^4.7.3",
"react-native-volume-manager": "^2.0.8",
"react-native-webview": "^13.15.0",
- "react-native-worklets": "^0.5.0",
+ "react-native-worklets": "^0.7.0",
"react-native-worklets-core": "^1.6.2",
"realm": "^20.2.0",
"sanitize-html": "^2.13.0",
@@ -219,9 +219,9 @@
}
},
"node_modules/@babel/code-frame": {
- "version": "7.28.6",
- "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.28.6.tgz",
- "integrity": "sha512-JYgintcMjRiCvS8mMECzaEn+m3PfoQiyqukOMCCVQtoJGYJw8j/8LBJEiqkHLkfwCcs74E3pbAUFNg7d9VNJ+Q==",
+ "version": "7.29.0",
+ "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.29.0.tgz",
+ "integrity": "sha512-9NhCeYjq9+3uxgdtp20LSiJXJvN0FeCtNGpJxuMFZ1Kv3cWUNb6DOhJwUvcVCzKGR66cw4njwM6hrJLqgOwbcw==",
"license": "MIT",
"dependencies": {
"@babel/helper-validator-identifier": "^7.28.5",
@@ -300,13 +300,13 @@
}
},
"node_modules/@babel/generator": {
- "version": "7.28.6",
- "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.28.6.tgz",
- "integrity": "sha512-lOoVRwADj8hjf7al89tvQ2a1lf53Z+7tiXMgpZJL3maQPDxh0DgLMN62B2MKUOFcoodBHLMbDM6WAbKgNy5Suw==",
+ "version": "7.29.1",
+ "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.29.1.tgz",
+ "integrity": "sha512-qsaF+9Qcm2Qv8SRIMMscAvG4O3lJ0F1GuMo5HR/Bp02LopNgnZBC/EkbevHFeGs4ls/oPz9v+Bsmzbkbe+0dUw==",
"license": "MIT",
"dependencies": {
- "@babel/parser": "^7.28.6",
- "@babel/types": "^7.28.6",
+ "@babel/parser": "^7.29.0",
+ "@babel/types": "^7.29.0",
"@jridgewell/gen-mapping": "^0.3.12",
"@jridgewell/trace-mapping": "^0.3.28",
"jsesc": "^3.0.2"
@@ -325,12 +325,12 @@
}
},
"node_modules/@babel/helper-annotate-as-pure": {
- "version": "7.27.1",
- "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.27.1.tgz",
- "integrity": "sha512-WnuuDILl9oOBbKnb4L+DyODx7iC47XfzmNCpTttFsSp6hTG7XZxu60+4IO+2/hPfcGOoKbFiwoI/+zwARbNQow==",
+ "version": "7.27.3",
+ "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.27.3.tgz",
+ "integrity": "sha512-fXSwMQqitTGeHLBC08Eq5yXz2m37E4pJX1qAU1+2cNedz/ifv/bVXft90VeSav5nFO61EcNgwr0aJxbyPaWBPg==",
"license": "MIT",
"dependencies": {
- "@babel/types": "^7.27.1"
+ "@babel/types": "^7.27.3"
},
"engines": {
"node": ">=6.9.0"
@@ -646,12 +646,12 @@
"license": "MIT"
},
"node_modules/@babel/parser": {
- "version": "7.28.6",
- "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.28.6.tgz",
- "integrity": "sha512-TeR9zWR18BvbfPmGbLampPMW+uW1NZnJlRuuHso8i87QZNq2JRF9i6RgxRqtEq+wQGsS19NNTWr2duhnE49mfQ==",
+ "version": "7.29.0",
+ "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.29.0.tgz",
+ "integrity": "sha512-IyDgFV5GeDUVX4YdF/3CPULtVGSXXMLh1xVIgdCgxApktqnQV0r7/8Nqthg+8YLGaAtdyIlo2qIdZrbCv4+7ww==",
"license": "MIT",
"dependencies": {
- "@babel/types": "^7.28.6"
+ "@babel/types": "^7.29.0"
},
"bin": {
"parser": "bin/babel-parser.js"
@@ -1158,17 +1158,17 @@
}
},
"node_modules/@babel/plugin-transform-classes": {
- "version": "7.27.1",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.27.1.tgz",
- "integrity": "sha512-7iLhfFAubmpeJe/Wo2TVuDrykh/zlWXLzPNdL0Jqn/Xu8R3QQ8h9ff8FQoISZOsw74/HFqFI7NX63HN7QFIHKA==",
+ "version": "7.28.4",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.28.4.tgz",
+ "integrity": "sha512-cFOlhIYPBv/iBoc+KS3M6et2XPtbT2HiCRfBXWtfpc9OAyostldxIf9YAYB6ypURBBbx+Qv6nyrLzASfJe+hBA==",
"license": "MIT",
"dependencies": {
- "@babel/helper-annotate-as-pure": "^7.27.1",
- "@babel/helper-compilation-targets": "^7.27.1",
+ "@babel/helper-annotate-as-pure": "^7.27.3",
+ "@babel/helper-compilation-targets": "^7.27.2",
+ "@babel/helper-globals": "^7.28.0",
"@babel/helper-plugin-utils": "^7.27.1",
"@babel/helper-replace-supers": "^7.27.1",
- "@babel/traverse": "^7.27.1",
- "globals": "^11.1.0"
+ "@babel/traverse": "^7.28.4"
},
"engines": {
"node": ">=6.9.0"
@@ -2264,17 +2264,18 @@
}
},
"node_modules/@babel/traverse": {
- "version": "7.27.7",
- "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.27.7.tgz",
- "integrity": "sha512-X6ZlfR/O/s5EQ/SnUSLzr+6kGnkg8HXGMzpgsMsrJVcfDtH1vIp6ctCN4eZ1LS5c0+te5Cb6Y514fASjMRJ1nw==",
+ "version": "7.29.0",
+ "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.29.0.tgz",
+ "integrity": "sha512-4HPiQr0X7+waHfyXPZpWPfWL/J7dcN1mx9gL6WdQVMbPnF3+ZhSMs8tCxN7oHddJE9fhNE7+lxdnlyemKfJRuA==",
+ "license": "MIT",
"dependencies": {
- "@babel/code-frame": "^7.27.1",
- "@babel/generator": "^7.27.5",
- "@babel/parser": "^7.27.7",
- "@babel/template": "^7.27.2",
- "@babel/types": "^7.27.7",
- "debug": "^4.3.1",
- "globals": "^11.1.0"
+ "@babel/code-frame": "^7.29.0",
+ "@babel/generator": "^7.29.0",
+ "@babel/helper-globals": "^7.28.0",
+ "@babel/parser": "^7.29.0",
+ "@babel/template": "^7.28.6",
+ "@babel/types": "^7.29.0",
+ "debug": "^4.3.1"
},
"engines": {
"node": ">=6.9.0"
@@ -2300,9 +2301,9 @@
}
},
"node_modules/@babel/types": {
- "version": "7.28.6",
- "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.28.6.tgz",
- "integrity": "sha512-0ZrskXVEHSWIqZM/sQZ4EV3jZJXRkio/WCxaqKZP1g//CEWEPSfeZFcms4XeKBCHU0ZKnIkdJeU/kF+eRp5lBg==",
+ "version": "7.29.0",
+ "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.29.0.tgz",
+ "integrity": "sha512-LwdZHpScM4Qz8Xw2iKSzS+cfglZzJGvofQICy7W7v4caru4EaAmyUuO6BGrbyQ2mYV11W0U8j5mBhd14dd3B0A==",
"license": "MIT",
"dependencies": {
"@babel/helper-string-parser": "^7.27.1",
@@ -6413,13 +6414,13 @@
}
},
"node_modules/@rozenite/metro": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/@rozenite/metro/-/metro-1.2.0.tgz",
- "integrity": "sha512-SY9rZ0JtGsGSmJFC/thXoMcnYsP3DchVBdUGeLOtM7ZrBuHw3RlwtZYcKDMxGlAcufD4XUPkkhR53/hN/VmJXA==",
+ "version": "1.4.0",
+ "resolved": "https://registry.npmjs.org/@rozenite/metro/-/metro-1.4.0.tgz",
+ "integrity": "sha512-rcsmJ4paeU944IBiahOLc21o3YEUPuOMy3sNeYpyLvXnfbp64/sXf3jCYu5WzjojB1pjV8dXz64cqQJuAtp2pA==",
"license": "MIT",
"dependencies": {
- "@rozenite/middleware": "1.2.0",
- "@rozenite/tools": "1.2.0",
+ "@rozenite/middleware": "1.4.0",
+ "@rozenite/tools": "1.4.0",
"tslib": "^2.3.0"
},
"engines": {
@@ -6427,13 +6428,13 @@
}
},
"node_modules/@rozenite/middleware": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/@rozenite/middleware/-/middleware-1.2.0.tgz",
- "integrity": "sha512-iMESes1NpLuPk05cQ9MMrkdqoGO977HkbyL/Pjn4IDPwDej3qIRzoI6htP1nogrn+SOI41FOJXOuP51TLo1BDw==",
+ "version": "1.4.0",
+ "resolved": "https://registry.npmjs.org/@rozenite/middleware/-/middleware-1.4.0.tgz",
+ "integrity": "sha512-1bxRpCqLkqeMtRpVDbhZnnTYanEM/ye43osuatqv/shgIssx+9ahH3ew21RiOtrE3KftpeC7DOm/7Ou4CeBZ5A==",
"license": "MIT",
"dependencies": {
- "@rozenite/runtime": "1.2.0",
- "@rozenite/tools": "1.2.0",
+ "@rozenite/runtime": "1.4.0",
+ "@rozenite/tools": "1.4.0",
"express": "^5.1.0",
"semver": "^7.7.2",
"tslib": "^2.3.0"
@@ -6455,12 +6456,12 @@
}
},
"node_modules/@rozenite/mmkv-plugin": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/@rozenite/mmkv-plugin/-/mmkv-plugin-1.2.0.tgz",
- "integrity": "sha512-1cIOUU8AMT7ITi3rRx2uVPksRF8YJnHpRCOku1cOmkW2mJSjgsqOrPk8M2GewCoZj45xXPbSBJKp5x7+4jzEmA==",
+ "version": "1.4.0",
+ "resolved": "https://registry.npmjs.org/@rozenite/mmkv-plugin/-/mmkv-plugin-1.4.0.tgz",
+ "integrity": "sha512-L1Gt8mT+dlIkiUOYc5jNmHu4Kz/KAVaUthHhmbWJks7MOtdDuCqWsk2xkFjjLg125WMN+824eeGIpBH+iKbZmw==",
"license": "MIT",
"dependencies": {
- "@rozenite/plugin-bridge": "1.2.0",
+ "@rozenite/plugin-bridge": "1.4.0",
"nanoevents": "^9.1.0"
},
"peerDependencies": {
@@ -6470,12 +6471,12 @@
}
},
"node_modules/@rozenite/network-activity-plugin": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/@rozenite/network-activity-plugin/-/network-activity-plugin-1.2.0.tgz",
- "integrity": "sha512-3l2+w8hXUMg+YmRadYdCoknpCH0IURYJh2fR0ZF5hx3F5cYbfXaJ7Dk31fmKuUA+iyPgaZvmvegbHbSoD1wjjQ==",
+ "version": "1.4.0",
+ "resolved": "https://registry.npmjs.org/@rozenite/network-activity-plugin/-/network-activity-plugin-1.4.0.tgz",
+ "integrity": "sha512-1BD+0PDmXI1cKayccRcn3JL/P3YUcsWaigdxV80/Gu1liSzlrBN6PvZ7EKLaVXua6sSM24coQg05rZ4bjTcaHg==",
"license": "MIT",
"dependencies": {
- "@rozenite/plugin-bridge": "1.2.0",
+ "@rozenite/plugin-bridge": "1.4.0",
"nanoevents": "^9.1.0"
},
"peerDependencies": {
@@ -6488,9 +6489,9 @@
}
},
"node_modules/@rozenite/plugin-bridge": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/@rozenite/plugin-bridge/-/plugin-bridge-1.2.0.tgz",
- "integrity": "sha512-f+rdHD9ACx52SWicVqxB0w82y2bCNk7xda6+EdtVMcchDyzMeqKJWso0BN3yruyB0zFxMeIxd3m7gPtPQPaOdg==",
+ "version": "1.4.0",
+ "resolved": "https://registry.npmjs.org/@rozenite/plugin-bridge/-/plugin-bridge-1.4.0.tgz",
+ "integrity": "sha512-Ug8DqdXmLvy4IXU6VfzXE02RLdnP5wBPmwxnuF8Lw/4WHAeNTazWVHvjyhVTSlTd4Ov25bTgEnHaDxABnGZ2cA==",
"license": "MIT",
"dependencies": {
"tslib": "^2.3.0"
@@ -6503,41 +6504,26 @@
}
},
"node_modules/@rozenite/react-navigation-plugin": {
- "version": "1.3.0",
- "resolved": "https://registry.npmjs.org/@rozenite/react-navigation-plugin/-/react-navigation-plugin-1.3.0.tgz",
- "integrity": "sha512-5FkW/xRNnW2THXA6ZraydhvmrxJuq2ejRQf77RZsW+pSoDRwT4CBj90cfP4ATS8A9lfG/I1S/yd5nnoQnjoKBQ==",
+ "version": "1.4.0",
+ "resolved": "https://registry.npmjs.org/@rozenite/react-navigation-plugin/-/react-navigation-plugin-1.4.0.tgz",
+ "integrity": "sha512-by9kHVz5T8CFaW373F3iglJXXHdqwjyLA2rhGUI3MyCSbpq34J3m7uhia4Mf9qAGGCrtH7QJa/opybzVpC7nyA==",
"license": "MIT",
"dependencies": {
- "@rozenite/plugin-bridge": "1.3.0",
+ "@rozenite/plugin-bridge": "1.4.0",
"fast-deep-equal": "^3.1.3"
},
"peerDependencies": {
"@react-navigation/core": "^7.12.1"
}
},
- "node_modules/@rozenite/react-navigation-plugin/node_modules/@rozenite/plugin-bridge": {
- "version": "1.3.0",
- "resolved": "https://registry.npmjs.org/@rozenite/plugin-bridge/-/plugin-bridge-1.3.0.tgz",
- "integrity": "sha512-OBo+glOyzpAFkhrUYKcpF+W+uHq8S3xRcelVniM2rwrqd7Xr+nfHU1lIJA4Phh6eSiLw4H6k3Uw5saSPis6a8g==",
- "license": "MIT",
- "dependencies": {
- "tslib": "^2.3.0"
- },
- "engines": {
- "node": ">=20"
- },
- "peerDependencies": {
- "react": ">=17"
- }
- },
"node_modules/@rozenite/require-profiler-plugin": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/@rozenite/require-profiler-plugin/-/require-profiler-plugin-1.2.0.tgz",
- "integrity": "sha512-4iAnSW3dwmTkzRCkBovfdSjnRU/BxquyTpe7hn0ihCL37YnxGCs5BmN/dsFj4euYdIE8YMjfO8eEsQO2y4TSwA==",
+ "version": "1.4.0",
+ "resolved": "https://registry.npmjs.org/@rozenite/require-profiler-plugin/-/require-profiler-plugin-1.4.0.tgz",
+ "integrity": "sha512-lgF7QBPJ+mDHMoSNvzmJ/IBMCw6qsM7IZnDHNG47bwSn6NTOyx/GHdBqqFsZHvo+BZgGlIh8I4uqc6r2N9vErQ==",
"license": "MIT",
"dependencies": {
- "@rozenite/plugin-bridge": "1.2.0",
- "@rozenite/tools": "1.2.0",
+ "@rozenite/plugin-bridge": "1.4.0",
+ "@rozenite/tools": "1.4.0",
"nanoevents": "^9.1.0"
},
"peerDependencies": {
@@ -6546,9 +6532,9 @@
}
},
"node_modules/@rozenite/runtime": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/@rozenite/runtime/-/runtime-1.2.0.tgz",
- "integrity": "sha512-37oqM/zfe53g9GCqjzGgCKGquOCKiw/h8Ydiqh3kRfdKUWiXWZTHRgPuo6UV0HIACIJBWEKuJUpnGyO6DNBxzw==",
+ "version": "1.4.0",
+ "resolved": "https://registry.npmjs.org/@rozenite/runtime/-/runtime-1.4.0.tgz",
+ "integrity": "sha512-3QyBJTdpTzkxd8jt5yyveTfTGHDmkFPLli4j5alvKeb09xVb+fxDhleDJhEGJwgmUBuYg5weBZGNpkyg5K0ArA==",
"license": "MIT",
"dependencies": {
"tslib": "^2.3.0"
@@ -6558,12 +6544,12 @@
}
},
"node_modules/@rozenite/tanstack-query-plugin": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/@rozenite/tanstack-query-plugin/-/tanstack-query-plugin-1.2.0.tgz",
- "integrity": "sha512-aanyt23jW/kPKh/Aip8O4Mu8z2g/PkqOWoiTJak1K8gQ1YLu0KUz9+l+kXKc/ceK6xQcgUbZZB7WqYqzMY5n/w==",
+ "version": "1.4.0",
+ "resolved": "https://registry.npmjs.org/@rozenite/tanstack-query-plugin/-/tanstack-query-plugin-1.4.0.tgz",
+ "integrity": "sha512-dOib20914G4aCqxJgQ+TAYP+c3Laxj+6KwaMvYAmTPi61hOPkFPNZqwuAXu+Z4iK/kLoJaRI3ef4gNDRlQudtA==",
"license": "MIT",
"dependencies": {
- "@rozenite/plugin-bridge": "1.2.0",
+ "@rozenite/plugin-bridge": "1.4.0",
"fast-deep-equal": "^3.1.3"
},
"peerDependencies": {
@@ -6573,9 +6559,9 @@
}
},
"node_modules/@rozenite/tools": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/@rozenite/tools/-/tools-1.2.0.tgz",
- "integrity": "sha512-I5E4az+EWq2xRf9aKDg02bubm+2l6fvbQG63DmIOykjQtQ50uFR9t65UMv0/nvdwDlK2aSIyXCr8aJF/O6GA6g==",
+ "version": "1.4.0",
+ "resolved": "https://registry.npmjs.org/@rozenite/tools/-/tools-1.4.0.tgz",
+ "integrity": "sha512-Ptq7g5cfrvl6Ct0BAyZnSiUf9ojkkHkN/snwgyNsoqN92m6wztgUfUSxglpoynf/2SLVU6WQhJh8noseAn0VfA==",
"license": "MIT"
},
"node_modules/@sayem314/react-native-keep-awake": {
@@ -14571,14 +14557,6 @@
"url": "https://github.com/sponsors/isaacs"
}
},
- "node_modules/globals": {
- "version": "11.12.0",
- "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz",
- "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==",
- "engines": {
- "node": ">=4"
- }
- },
"node_modules/globalthis": {
"version": "1.0.4",
"resolved": "https://registry.npmjs.org/globalthis/-/globalthis-1.0.4.tgz",
@@ -20941,19 +20919,18 @@
}
},
"node_modules/react-native-reanimated": {
- "version": "4.1.6",
- "resolved": "https://registry.npmjs.org/react-native-reanimated/-/react-native-reanimated-4.1.6.tgz",
- "integrity": "sha512-F+ZJBYiok/6Jzp1re75F/9aLzkgoQCOh4yxrnwATa8392RvM3kx+fiXXFvwcgE59v48lMwd9q0nzF1oJLXpfxQ==",
+ "version": "4.2.2",
+ "resolved": "https://registry.npmjs.org/react-native-reanimated/-/react-native-reanimated-4.2.2.tgz",
+ "integrity": "sha512-o3kKvdD8cVlg12Z4u3jv0MFAt53QV4k7gD9OLwQqU8eZLyd8QvaOjVZIghMZhC2pjP93uUU44PlO5JgF8S4Vxw==",
"license": "MIT",
"dependencies": {
- "react-native-is-edge-to-edge": "^1.2.1",
- "semver": "7.7.2"
+ "react-native-is-edge-to-edge": "1.2.1",
+ "semver": "7.7.3"
},
"peerDependencies": {
- "@babel/core": "^7.0.0-0",
"react": "*",
"react-native": "*",
- "react-native-worklets": ">=0.5.0"
+ "react-native-worklets": ">=0.7.0"
}
},
"node_modules/react-native-reanimated-carousel": {
@@ -20968,10 +20945,20 @@
"react-native-reanimated": ">=3.0.0"
}
},
+ "node_modules/react-native-reanimated/node_modules/react-native-is-edge-to-edge": {
+ "version": "1.2.1",
+ "resolved": "https://registry.npmjs.org/react-native-is-edge-to-edge/-/react-native-is-edge-to-edge-1.2.1.tgz",
+ "integrity": "sha512-FLbPWl/MyYQWz+KwqOZsSyj2JmLKglHatd3xLZWskXOpRaio4LfEDEz8E/A6uD8QoTHW6Aobw1jbEwK7KMgR7Q==",
+ "license": "MIT",
+ "peerDependencies": {
+ "react": "*",
+ "react-native": "*"
+ }
+ },
"node_modules/react-native-reanimated/node_modules/semver": {
- "version": "7.7.2",
- "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.2.tgz",
- "integrity": "sha512-RF0Fw+rO5AMf9MAyaRXI4AV0Ulj5lMHqVxxdSgiVbixSCXoEmmX/jk0CuJw4+3SqroYO9VoUh+HcuJivvtJemA==",
+ "version": "7.7.3",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.3.tgz",
+ "integrity": "sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q==",
"license": "ISC",
"bin": {
"semver": "bin/semver.js"
@@ -21221,25 +21208,25 @@
}
},
"node_modules/react-native-worklets": {
- "version": "0.5.2",
- "resolved": "https://registry.npmjs.org/react-native-worklets/-/react-native-worklets-0.5.2.tgz",
- "integrity": "sha512-lCzmuIPAK/UaOJYEPgYpVqrsxby1I54f7PyyZUMEO04nwc00CDrCvv9lCTY1daLHYTF8lS3f9zlzErfVsIKqkA==",
+ "version": "0.7.4",
+ "resolved": "https://registry.npmjs.org/react-native-worklets/-/react-native-worklets-0.7.4.tgz",
+ "integrity": "sha512-NYOdM1MwBb3n+AtMqy1tFy3Mn8DliQtd8sbzAVRf9Gc+uvQ0zRfxN7dS8ZzoyX7t6cyQL5THuGhlnX+iFlQTag==",
"license": "MIT",
"dependencies": {
- "@babel/plugin-transform-arrow-functions": "^7.0.0-0",
- "@babel/plugin-transform-class-properties": "^7.0.0-0",
- "@babel/plugin-transform-classes": "^7.0.0-0",
- "@babel/plugin-transform-nullish-coalescing-operator": "^7.0.0-0",
- "@babel/plugin-transform-optional-chaining": "^7.0.0-0",
- "@babel/plugin-transform-shorthand-properties": "^7.0.0-0",
- "@babel/plugin-transform-template-literals": "^7.0.0-0",
- "@babel/plugin-transform-unicode-regex": "^7.0.0-0",
- "@babel/preset-typescript": "^7.16.7",
- "convert-source-map": "^2.0.0",
- "semver": "7.7.2"
+ "@babel/plugin-transform-arrow-functions": "7.27.1",
+ "@babel/plugin-transform-class-properties": "7.27.1",
+ "@babel/plugin-transform-classes": "7.28.4",
+ "@babel/plugin-transform-nullish-coalescing-operator": "7.27.1",
+ "@babel/plugin-transform-optional-chaining": "7.27.1",
+ "@babel/plugin-transform-shorthand-properties": "7.27.1",
+ "@babel/plugin-transform-template-literals": "7.27.1",
+ "@babel/plugin-transform-unicode-regex": "7.27.1",
+ "@babel/preset-typescript": "7.27.1",
+ "convert-source-map": "2.0.0",
+ "semver": "7.7.3"
},
"peerDependencies": {
- "@babel/core": "^7.0.0-0",
+ "@babel/core": "*",
"react": "*",
"react-native": "*"
}
@@ -21258,9 +21245,9 @@
}
},
"node_modules/react-native-worklets/node_modules/semver": {
- "version": "7.7.2",
- "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.2.tgz",
- "integrity": "sha512-RF0Fw+rO5AMf9MAyaRXI4AV0Ulj5lMHqVxxdSgiVbixSCXoEmmX/jk0CuJw4+3SqroYO9VoUh+HcuJivvtJemA==",
+ "version": "7.7.3",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.3.tgz",
+ "integrity": "sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q==",
"license": "ISC",
"bin": {
"semver": "bin/semver.js"
diff --git a/package.json b/package.json
index 4793ccb8c..684ca9b0d 100644
--- a/package.json
+++ b/package.json
@@ -69,12 +69,12 @@
"@react-navigation/native": "^7.1.17",
"@react-navigation/native-stack": "^7.3.25",
"@realm/react": "^0.20.0",
- "@rozenite/metro": "^1.2.0",
- "@rozenite/mmkv-plugin": "^1.2.0",
- "@rozenite/network-activity-plugin": "^1.2.0",
- "@rozenite/react-navigation-plugin": "^1.3.0",
- "@rozenite/require-profiler-plugin": "^1.2.0",
- "@rozenite/tanstack-query-plugin": "^1.2.0",
+ "@rozenite/metro": "^1.4.0",
+ "@rozenite/mmkv-plugin": "^1.4.0",
+ "@rozenite/network-activity-plugin": "^1.4.0",
+ "@rozenite/react-navigation-plugin": "^1.4.0",
+ "@rozenite/require-profiler-plugin": "^1.4.0",
+ "@rozenite/tanstack-query-plugin": "^1.4.0",
"@sayem314/react-native-keep-awake": "^1.3.1",
"@shopify/flash-list": "^2.2.0",
"@tanstack/react-query": "5.90.14",
@@ -126,7 +126,7 @@
"react-native-orientation-locker": "github:wonday/react-native-orientation-locker",
"react-native-paper": "^5.12.3",
"react-native-permissions": "^4.1.5",
- "react-native-reanimated": "~4.1.0",
+ "react-native-reanimated": "^4.2.2",
"react-native-reanimated-carousel": "^4.0.3",
"react-native-render-html": "^6.3.4",
"react-native-restart": "^0.0.27",
@@ -139,9 +139,9 @@
"react-native-svg-transformer": "^1.5.2",
"react-native-url-polyfill": "^2.0.0",
"react-native-vision-camera": "^4.7.3",
- "react-native-worklets": "^0.5.0",
"react-native-volume-manager": "^2.0.8",
"react-native-webview": "^13.15.0",
+ "react-native-worklets": "^0.7.0",
"react-native-worklets-core": "^1.6.2",
"realm": "^20.2.0",
"sanitize-html": "^2.13.0",
diff --git a/src/components/Camera/RotatableIconWrapper.tsx b/src/components/Camera/RotatableIconWrapper.tsx
index 9cb34945e..77fbbab28 100644
--- a/src/components/Camera/RotatableIconWrapper.tsx
+++ b/src/components/Camera/RotatableIconWrapper.tsx
@@ -1,6 +1,7 @@
import type { PropsWithChildren } from "react";
import React from "react";
import type { ViewStyle } from "react-native";
+import { View } from "react-native";
import DeviceInfo from "react-native-device-info";
import type { AnimatedStyle } from "react-native-reanimated";
import Animated from "react-native-reanimated";
@@ -18,7 +19,11 @@ const RotatableIconWrapper = ( {
containerClass,
}: Props ) => {
if ( isTablet || !rotatableAnimatedStyle ) {
- return children;
+ return (
+
+ {children}
+
+ );
}
return (
diff --git a/src/components/Camera/hooks/useZoom.ts b/src/components/Camera/hooks/useZoom.ts
index 20bd06f82..e219f9091 100644
--- a/src/components/Camera/hooks/useZoom.ts
+++ b/src/components/Camera/hooks/useZoom.ts
@@ -12,12 +12,12 @@ import {
import {
Extrapolation,
interpolate,
- runOnJS,
useAnimatedProps,
useSharedValue,
withSpring,
} from "react-native-reanimated";
import type { CameraDevice, CameraProps } from "react-native-vision-camera";
+import { scheduleOnRN } from "react-native-worklets";
// This is taken from react-native-vision library itself: https://github.com/mrousavy/react-native-vision-camera/blob/9eed89aac6155eba155595f3e006707152550d0d/package/example/src/Constants.ts#L19 https://github.com/mrousavy/react-native-vision-camera/blob/9eed89aac6155eba155595f3e006707152550d0d/package/example/src/CameraPage.tsx#L34
@@ -115,7 +115,7 @@ const useZoom = ( device: CameraDevice ): object => {
);
zoom.set( newZoom );
- runOnJS( updateZoomTextValue )( newZoom );
+ scheduleOnRN( updateZoomTextValue, newZoom );
}, [maxZoomWithPinch, minZoom, updateZoomTextValue, startZoom, zoom] );
const animatedProps = useAnimatedProps < CameraProps >(
diff --git a/src/components/LoginSignUp/ForgotPassword.tsx b/src/components/LoginSignUp/ForgotPassword.tsx
index f80149594..03a0da5e3 100644
--- a/src/components/LoginSignUp/ForgotPassword.tsx
+++ b/src/components/LoginSignUp/ForgotPassword.tsx
@@ -1,10 +1,11 @@
import { useNavigation } from "@react-navigation/native";
import { WarningSheet } from "components/SharedComponents";
-import type { ScrollView } from "components/styledComponents";
+import { View } from "components/styledComponents";
import { t } from "i18next";
import React, { useCallback, useState } from "react";
import { Keyboard, TouchableWithoutFeedback } from "react-native";
import { openInbox } from "sharedHelpers/mail";
+import useKeyboardInfo from "sharedHooks/useKeyboardInfo";
import {
resetPassword,
@@ -13,14 +14,10 @@ import ForgotPasswordForm from "./ForgotPasswordForm";
import Header from "./Header";
import LoginSignUpWrapper from "./LoginSignUpWrapper";
-interface RenderProps {
- // eslint-disable-next-line react/no-unused-prop-types
- scrollViewRef: { current: null | React.Ref };
-}
-
const ForgotPassword = ( ) => {
const navigation = useNavigation( );
const [showSheet, setShowSheet] = useState( false );
+ const { keyboardShown } = useKeyboardInfo( );
const reset = useCallback( async ( email: string ) => {
await resetPassword( email );
@@ -32,34 +29,30 @@ const ForgotPassword = ( ) => {
Keyboard.dismiss( );
};
- const renderForgotPassword = useCallback( ( { scrollViewRef }: RenderProps ) => (
- <>
- {showSheet && (
- setShowSheet( false )}
- confirm={openInbox}
- headerText={t( "CHECK-YOUR-EMAIL" )}
- text={t( "If-an-account-with-that-email-exists" )}
- buttonText={t( "OPEN-EMAIL" )}
- secondButtonText={t( "BACK-TO-LOGIN" )}
- handleSecondButtonPress={( ) => {
- setShowSheet( false );
- navigation.navigate( "LoginStackNavigator", { screen: "Login" } );
- }}
- buttonType="focus"
- loading={false}
- />
- )}
-
-
- >
- ), [showSheet, setShowSheet, reset, navigation] );
-
return (
-
- {renderForgotPassword}
-
+
+ {showSheet && (
+ setShowSheet( false )}
+ confirm={openInbox}
+ headerText={t( "CHECK-YOUR-EMAIL" )}
+ text={t( "If-an-account-with-that-email-exists" )}
+ buttonText={t( "OPEN-EMAIL" )}
+ secondButtonText={t( "BACK-TO-LOGIN" )}
+ handleSecondButtonPress={( ) => {
+ setShowSheet( false );
+ navigation.navigate( "LoginStackNavigator", { screen: "Login" } );
+ }}
+ buttonType="focus"
+ loading={false}
+ />
+ )}
+
+
+
+
+
);
};
diff --git a/src/components/LoginSignUp/ForgotPasswordForm.tsx b/src/components/LoginSignUp/ForgotPasswordForm.tsx
index 8f7a1e6f9..d20214c7d 100644
--- a/src/components/LoginSignUp/ForgotPasswordForm.tsx
+++ b/src/components/LoginSignUp/ForgotPasswordForm.tsx
@@ -3,30 +3,22 @@ import {
Body1,
Button,
} from "components/SharedComponents";
-import type { ScrollView } from "components/styledComponents";
import { View } from "components/styledComponents";
import { t } from "i18next";
-import type { ElementRef, Node } from "react";
-import React, {
- useCallback, useEffect, useRef, useState,
-} from "react";
+import type { Node } from "react";
+import React, { useEffect, useRef, useState } from "react";
import { TouchableWithoutFeedback } from "react-native";
-import useKeyboardInfo from "sharedHooks/useKeyboardInfo";
import LoginSignUpInputField from "./LoginSignUpInputField";
interface Props {
reset: ( email: string ) => Promise;
- scrollViewRef?: { current: null | ElementRef };
}
-const ForgotPasswordForm = ( { reset, scrollViewRef }: Props ): Node => {
+const ForgotPasswordForm = ( { reset }: Props ): Node => {
const [email, setEmail] = useState( "" );
const emailRef = useRef( null );
const navigation = useNavigation( );
- const { keyboardShown } = useKeyboardInfo( );
-
- const inputFieldRef = useRef( null );
const blurFields = () => {
if ( emailRef.current ) {
@@ -46,24 +38,6 @@ const ForgotPasswordForm = ( { reset, scrollViewRef }: Props ): Node => {
return unsubscribeTransition;
}, [navigation] );
- const scrollToItem = useCallback( ( ) => {
- if ( scrollViewRef?.current && inputFieldRef?.current ) {
- inputFieldRef.current?.measureLayout(
- scrollViewRef.current,
- ( _, y ) => {
- scrollViewRef.current?.scrollTo( { y, animated: true } );
- },
- () => console.log( "Failed to measure" ),
- );
- }
- }, [scrollViewRef] );
-
- useEffect( ( ) => {
- if ( keyboardShown ) {
- scrollToItem( );
- }
- }, [keyboardShown, scrollToItem] );
-
return (
@@ -79,17 +53,15 @@ const ForgotPasswordForm = ( { reset, scrollViewRef }: Props ): Node => {
onChangeText={text => setEmail( text )}
testID="Login.email"
/>
-
-
+
);
diff --git a/src/components/LoginSignUp/LoginSignUpWrapper.tsx b/src/components/LoginSignUp/LoginSignUpWrapper.tsx
index b242ea1dd..f0a5ec863 100644
--- a/src/components/LoginSignUp/LoginSignUpWrapper.tsx
+++ b/src/components/LoginSignUp/LoginSignUpWrapper.tsx
@@ -3,7 +3,7 @@ import {
ImageBackground, ScrollView, View,
} from "components/styledComponents";
import type { PropsWithChildren } from "react";
-import React, { useEffect, useRef } from "react";
+import React, { useCallback, useEffect, useRef } from "react";
import type {
ImageSourcePropType,
ImageStyle,
@@ -17,6 +17,8 @@ import {
import { useSafeAreaInsets } from "react-native-safe-area-context";
import colors from "styles/tailwindColors";
+type ScrollViewRef = { scrollTo: ( options: { y: number; animated: boolean } ) => void } | null;
+
interface Props extends PropsWithChildren {
backgroundSource: ImageSourcePropType;
imageStyle?: StyleProp;
@@ -34,21 +36,23 @@ const LoginSignupWrapper = ( {
children,
imageStyle,
}: Props ) => {
- const scrollViewRef = useRef( null );
+ const scrollViewRef = useRef( null );
const navigation = useNavigation( );
const insets = useSafeAreaInsets();
+ const resetScroll = useCallback( ( ) => {
+ const scrollNode = scrollViewRef.current;
+ if ( scrollNode && typeof scrollNode.scrollTo === "function" ) {
+ scrollNode.scrollTo( { y: 0, animated: false } );
+ }
+ }, [] );
+
useEffect( ( ) => {
- const resetScroll = ( ) => {
- if ( scrollViewRef.current ) {
- scrollViewRef.current?.scrollTo( { y: 0, animated: false } );
- }
- };
const unsubscribe = navigation.addListener( "focus", ( ) => {
resetScroll( );
} );
return unsubscribe;
- }, [navigation] );
+ }, [navigation, resetScroll] );
// Make the StatusBar translucent in Android but reset it when we leave
// because this alters the layout.
@@ -56,20 +60,13 @@ const LoginSignupWrapper = ( {
if ( Platform.OS !== "android" ) return ( ) => undefined;
// Hide on first render
StatusBar.setTranslucent( true );
-
- const resetScroll = () => {
- if ( scrollViewRef.current ) {
- scrollViewRef.current?.scrollTo( { y: 0, animated: false } );
- }
- };
const unsubscribe = navigation.addListener( "focus", ( ) => {
- console.log( "resetting scroll" );
resetScroll( );
// Hide when focused
StatusBar.setTranslucent( true );
} );
return unsubscribe;
- }, [navigation] );
+ }, [navigation, resetScroll] );
useEffect( ( ) => {
if ( Platform.OS !== "android" ) return ( ) => undefined;
diff --git a/src/components/ProjectDetails/ProjectDetails.js b/src/components/ProjectDetails/ProjectDetails.js
index 5745d312c..f5ee89c61 100644
--- a/src/components/ProjectDetails/ProjectDetails.js
+++ b/src/components/ProjectDetails/ProjectDetails.js
@@ -109,7 +109,7 @@ const ProjectDetails = ( {
/>
);
- const iconClassName = "h-[134px] w-[134px] rounded-full bg-white -top-6";
+ const iconClassName = "h-[90px] w-[90px] rounded-full bg-white -top-6";
const displayProjectIcon = icon => {
const productionIcon = icon?.replace( "staticdev", "static" );
@@ -153,14 +153,6 @@ const ProjectDetails = ( {
{displayProjectIcon( project?.icon )}
-
- {/* */}
- {/* */}
{project.title}
diff --git a/src/components/SharedComponents/ActivityAnimation/Confetti.tsx b/src/components/SharedComponents/ActivityAnimation/Confetti.tsx
index aa4c5cb58..b2f10fbdb 100644
--- a/src/components/SharedComponents/ActivityAnimation/Confetti.tsx
+++ b/src/components/SharedComponents/ActivityAnimation/Confetti.tsx
@@ -11,11 +11,11 @@ import type { SharedValue } from "react-native-reanimated";
import Animated, {
Easing,
interpolate,
- runOnJS,
useAnimatedStyle,
useSharedValue,
withTiming,
} from "react-native-reanimated";
+import { scheduleOnRN } from "react-native-worklets";
import colors from "styles/tailwindColors";
type ConfettiProps = PropsWithChildren<{
@@ -85,7 +85,7 @@ const Confetti = ( { count, duration = 5000 }: ConfettiProps ) => {
},
finished => {
if ( finished ) {
- runOnJS( setAutoDestroy )( true );
+ scheduleOnRN( setAutoDestroy, true );
}
},
) );
diff --git a/tests/jest.setup.js b/tests/jest.setup.js
index 3726b273e..39fa0eccd 100644
--- a/tests/jest.setup.js
+++ b/tests/jest.setup.js
@@ -55,6 +55,11 @@ jest.mock( "@react-native-community/netinfo", () => mockRNCNetInfo );
jest.mock( "react-native-device-info", () => mockRNDeviceInfo );
jest.mock( "react-native-safe-area-context", () => mockSafeAreaContext );
+// Reanimated 4.2 + Worklets 0.7: Jest loads native worklets which fails in Node. See:
+// https://github.com/software-mansion/react-native-reanimated/discussions/8806
+// we can remove this once the fix is released
+jest.mock( "react-native-worklets", () => require( "react-native-worklets/src/mock" ) );
+
require( "react-native-reanimated" ).setUpTests();
// Some test environments may need a little more time
diff --git a/tests/unit/components/Camera/__snapshots__/PhotoCarousel.test.js.snap b/tests/unit/components/Camera/__snapshots__/PhotoCarousel.test.js.snap
index 492f22f45..b86cad55d 100644
--- a/tests/unit/components/Camera/__snapshots__/PhotoCarousel.test.js.snap
+++ b/tests/unit/components/Camera/__snapshots__/PhotoCarousel.test.js.snap
@@ -70,7 +70,6 @@ exports[`PhotoCarousel renders correctly 1`] = `
}
}
jestInlineStyle={{}}
- nativeID="0"
style={
[
{
@@ -248,7 +247,6 @@ exports[`PhotoCarousel renders correctly 1`] = `
}
}
jestInlineStyle={{}}
- nativeID="1"
style={
[
{
@@ -426,7 +424,6 @@ exports[`PhotoCarousel renders correctly 1`] = `
}
}
jestInlineStyle={{}}
- nativeID="2"
style={
[
{
@@ -648,7 +645,6 @@ exports[`PhotoCarousel renders correctly for large screen 1`] = `
}
}
jestInlineStyle={{}}
- nativeID="3"
style={
[
{
@@ -831,7 +827,6 @@ exports[`PhotoCarousel renders correctly for large screen 1`] = `
}
}
jestInlineStyle={{}}
- nativeID="4"
style={
[
{
@@ -1014,7 +1009,6 @@ exports[`PhotoCarousel renders correctly for large screen 1`] = `
}
}
jestInlineStyle={{}}
- nativeID="5"
style={
[
{
diff --git a/tests/unit/components/SharedComponents/UploadStatus/__snapshots__/UploadStatus.test.js.snap b/tests/unit/components/SharedComponents/UploadStatus/__snapshots__/UploadStatus.test.js.snap
index c944b9d0f..7cab72481 100644
--- a/tests/unit/components/SharedComponents/UploadStatus/__snapshots__/UploadStatus.test.js.snap
+++ b/tests/unit/components/SharedComponents/UploadStatus/__snapshots__/UploadStatus.test.js.snap
@@ -48,7 +48,6 @@ exports[`UploadStatus displays complete icon when progress is 1 1`] = `
"value": {},
}
}
- nativeID="2"
testID="UploadIcon.complete.undefined"
>