diff --git a/.github/workflows/build-submit-ios.yml b/.github/workflows/build-submit-ios.yml
index b816a5dc70..6e5692a9d9 100644
--- a/.github/workflows/build-submit-ios.yml
+++ b/.github/workflows/build-submit-ios.yml
@@ -98,10 +98,29 @@ jobs:
yarn use-build-number-with-bump
eas build -p ios
--profile ${{ inputs.profile || 'testflight' }}
- --local --output build.ipa --non-interactive
+ --local --output build.tar.gz --non-interactive
+
+ - name: 📂 Extract build artifact
+ run: |
+ if [ -f "build.tar.gz" ]; then
+ echo "Extracting build.tar.gz..."
+ mkdir ios-build
+ tar -xzf build.tar.gz -C ios-build
+ echo "Extraction completed successfully"
+ else
+ echo "Archive file not found!"
+ exit 1
+ fi
- name: 🚀 Deploy
- run: eas submit -p ios --non-interactive --path build.ipa
+ run: eas submit -p ios --non-interactive --path ios-build/ios/build/Bluesky.ipa
+
+ - name: 🪲 Upload dSYM to Sentry
+ run: >
+ SENTRY_ORG=blueskyweb
+ SENTRY_PROJECT=app
+ SENTRY_AUTH_TOKEN=${{ secrets.SENTRY_AUTH_TOKEN }}
+ yarn sentry-cli debug-files upload ios-build/ios/build/Bluesky.app.dSYM.zip --include-sources
- name: 📚 Get version from package.json
id: get-build-info
diff --git a/app.config.js b/app.config.js
index 46f2c8be78..5cba79ad0c 100644
--- a/app.config.js
+++ b/app.config.js
@@ -112,6 +112,34 @@ module.exports = function (_config) {
'com.apple.security.application-groups': 'group.app.bsky',
},
privacyManifests: {
+ NSPrivacyCollectedDataTypes: [
+ {
+ NSPrivacyCollectedDataType: 'NSPrivacyCollectedDataTypeCrashData',
+ NSPrivacyCollectedDataTypeLinked: false,
+ NSPrivacyCollectedDataTypeTracking: false,
+ NSPrivacyCollectedDataTypePurposes: [
+ 'NSPrivacyCollectedDataTypePurposeAppFunctionality',
+ ],
+ },
+ {
+ NSPrivacyCollectedDataType:
+ 'NSPrivacyCollectedDataTypePerformanceData',
+ NSPrivacyCollectedDataTypeLinked: false,
+ NSPrivacyCollectedDataTypeTracking: false,
+ NSPrivacyCollectedDataTypePurposes: [
+ 'NSPrivacyCollectedDataTypePurposeAppFunctionality',
+ ],
+ },
+ {
+ NSPrivacyCollectedDataType:
+ 'NSPrivacyCollectedDataTypeOtherDiagnosticData',
+ NSPrivacyCollectedDataTypeLinked: false,
+ NSPrivacyCollectedDataTypeTracking: false,
+ NSPrivacyCollectedDataTypePurposes: [
+ 'NSPrivacyCollectedDataTypePurposeAppFunctionality',
+ ],
+ },
+ ],
NSPrivacyAccessedAPITypes: [
{
NSPrivacyAccessedAPIType:
diff --git a/eas.json b/eas.json
index c8b1e47f14..41084449ad 100644
--- a/eas.json
+++ b/eas.json
@@ -36,7 +36,8 @@
"extends": "base",
"ios": {
"resourceClass": "large",
- "autoIncrement": true
+ "autoIncrement": true,
+ "buildArtifactPaths": ["ios/build/*"]
},
"android": {
"autoIncrement": true
@@ -50,7 +51,8 @@
"extends": "base",
"distribution": "internal",
"ios": {
- "autoIncrement": false
+ "autoIncrement": false,
+ "buildArtifactPaths": ["ios/build/*"]
},
"android": {
"autoIncrement": false
@@ -63,7 +65,8 @@
"testflight": {
"extends": "base",
"ios": {
- "autoIncrement": true
+ "autoIncrement": true,
+ "buildArtifactPaths": ["ios/build/*"]
},
"android": {
"autoIncrement": true
@@ -77,7 +80,8 @@
"extends": "base",
"distribution": "internal",
"ios": {
- "autoIncrement": true
+ "autoIncrement": true,
+ "buildArtifactPaths": ["ios/build/*"]
},
"android": {
"autoIncrement": true
diff --git a/src/view/screens/Storybook/index.tsx b/src/view/screens/Storybook/index.tsx
index 8706547610..f7eee5fee9 100644
--- a/src/view/screens/Storybook/index.tsx
+++ b/src/view/screens/Storybook/index.tsx
@@ -3,6 +3,7 @@ import {View} from 'react-native'
import {useNavigation} from '@react-navigation/native'
import {type NavigationProp} from '#/lib/routes/types'
+import {Sentry} from '#/logger/sentry/lib'
import {useSetThemePrefs} from '#/state/shell'
import {ListContained} from '#/view/screens/Storybook/ListContained'
import {atoms as a, ThemeProvider} from '#/alf'
@@ -95,6 +96,13 @@ function StorybookInner() {
testID="sharedPrefsTestOpenBtn">
Open Shared Prefs Tester
+