Skip to content

Commit f768dc5

Browse files
Merge remote-tracking branch 'origin/main' into callstack-internal/szymonzalarski/fix-seqquential-queue-issues-after-revert
2 parents e4a620b + 29910ea commit f768dc5

1,102 files changed

Lines changed: 36011 additions & 21721 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

.claude/settings.json

Lines changed: 15 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,21 @@
3838
"mcp__playwright__browser_wait_for",
3939
"mcp__playwright__browser_close",
4040
"mcp__playwright__browser_evaluate",
41-
"mcp__playwright__browser_handle_dialog"
41+
"mcp__playwright__browser_handle_dialog",
42+
"mcp__sentry__find_organizations",
43+
"mcp__sentry__find_projects",
44+
"mcp__sentry__find_releases",
45+
"mcp__sentry__find_teams",
46+
"mcp__sentry__get_doc",
47+
"mcp__sentry__get_event_attachment",
48+
"mcp__sentry__get_issue_details",
49+
"mcp__sentry__get_issue_tag_values",
50+
"mcp__sentry__get_trace_details",
51+
"mcp__sentry__search_docs",
52+
"mcp__sentry__search_events",
53+
"mcp__sentry__search_issue_events",
54+
"mcp__sentry__search_issues",
55+
"mcp__sentry__whoami"
4256
]
4357
},
4458
"enabledPlugins": {

.claude/skills/coding-standards/rules/clean-react-0-compiler.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -101,6 +101,8 @@ Before flagging, verify that the file actually compiles with React Compiler:
101101
check-compiler.sh <filepath>
102102
```
103103

104+
**IMPORTANT:** Run `check-compiler.sh` exactly as shown above - by name only, without an absolute path or `bash` prefix. The script is already on `$PATH`.
105+
104106
If the output contains **"Failed to compile"** for the file under review, the rule **does not apply** — the author may have no alternative to manual memoization until the compilation issue is resolved.
105107

106108
#### Condition

.claude/skills/sentry/SKILL.md

Lines changed: 48 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,48 @@
1+
---
2+
name: sentry
3+
description: Analyze Sentry issues, spans, crashes, and performance metrics. Use when user requests check in Sentry, asks about performance metrics and spans or asks about crash rates.
4+
---
5+
6+
# Sentry
7+
8+
## When to Use This Skill
9+
10+
Use Sentry skill when:
11+
- User requests any data from Sentry
12+
- User asks about performance metrics or span summary
13+
- User want to compare metrics between any date ranges
14+
- User asks about latest production crashes and issues
15+
- User want to investigate profiles or traces from production sessions
16+
17+
## Sentry MCP
18+
19+
The Sentry MCP server is configured in `.mcp.json` and gives Claude Code direct access to Sentry.
20+
21+
### Prerequisites
22+
23+
**Setup** (one-time per engineer): On first use, Claude Code will open a browser OAuth login to Sentry. Sign in and authorize — no manual token setup required.
24+
25+
### Available MCP Tools
26+
27+
Use these tools for data analysis:
28+
29+
| Tool | Purpose |
30+
|------|---------|
31+
| `mcp__sentry__find_releases` | Find release versions for scoping queries |
32+
| `mcp__sentry__search_issues` | Search for errors/crashes by query, project, date range |
33+
| `mcp__sentry__search_events` | Query raw events/spans (performance data, durations) |
34+
| `mcp__sentry__search_issue_events` | Get individual events for a known issue ID |
35+
| `mcp__sentry__get_issue_tag_values` | Inspect tag distributions (e.g. device, version) on an issue |
36+
| `mcp__sentry__get_sentry_resource` | Fetch a specific Sentry resource by URL/ID |
37+
38+
**Do not use** `mcp__sentry__analyze_issue_with_seer` — AI analysis is out of scope for this skill.
39+
40+
Always use:
41+
- **org slug**: `expensify`
42+
- **project slug**: `app`
43+
44+
## Example uses
45+
46+
- "Search Sentry for crashes in the last 24h related to expense creation"
47+
- "Get details on Sentry issue APP-123"
48+
- "Compare P90 of ManualAppStartup durations between last two weeks"

.env.example

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -44,5 +44,6 @@ FB_PROJECT_ID=YOUR_PROJECT_ID
4444
GITHUB_TOKEN=YOUR_TOKEN
4545
OPENAI_API_KEY=YOUR_TOKEN
4646

47+
SENTRY_DSN=https://7b463fb4d4402d342d1166d929a62f4e@o4510228013121536.ingest.us.sentry.io/4510228107427840
4748
SENTRY_AUTH_TOKEN=SENTRY_AUTH_TOKEN
4849
SENTRY_ALLOW_FAILURE=true

.env.production

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,6 @@ PUSHER_APP_KEY=268df511a204fbb60884
77
USE_WEB_PROXY=false
88
ENVIRONMENT=production
99
SEND_CRASH_REPORTS=true
10-
1110
FB_API_KEY=AIzaSyBrLKgCuo6Vem6Xi5RPokdumssW8HaWBow
1211
FB_APP_ID=1:1008697809946:web:08de4ecb7656b7235445a3
1312
FB_PROJECT_ID=expensify-mobile-app

.github/workflows/publishReactNativeAndroidArtifacts.yml

Lines changed: 15 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -126,7 +126,7 @@ jobs:
126126
name: Build and Publish React Native Artifacts
127127
runs-on: ${{ github.repository_owner == 'Expensify' && 'blacksmith-16vcpu-ubuntu-2404' || 'blacksmith-2vcpu-ubuntu-2404' }}
128128
needs: verifyPatches
129-
if: needs.verifyPatches.outputs.build_targets != ''
129+
if: needs.verifyPatches.outputs.build_targets != ''
130130
strategy:
131131
# Disable fail-fast to prevent cancelling both jobs when only one needs to be stopped due to concurrency limits
132132
fail-fast: false
@@ -160,7 +160,7 @@ jobs:
160160

161161
- name: Setup Gradle
162162
uses: gradle/actions/setup-gradle@06832c7b30a0129d7fb559bcc6e43d26f6374244
163-
163+
164164
- name: Determine new patched RN version
165165
id: getNewPatchedVersion
166166
run: echo "NEW_PATCHED_VERSION=$(./.github/scripts/getNewPatchedRNVersion.sh)" >> "$GITHUB_OUTPUT"
@@ -175,14 +175,26 @@ jobs:
175175
echo "Version: ${{ env.PATCHED_VERSION }}"
176176
echo "Patches hash: ${{ env.PATCHES_HASH }}"
177177
export ORG_GRADLE_PROJECT_reactNativeArchitectures="armeabi-v7a,arm64-v8a,x86,x86_64"
178-
./gradlew buildReactNativeArtifacts -PpatchedArtifacts.forceBuildFromSource=true -x lint -x test -x check
178+
179+
# Exclude ktfmt and test tasks from the included react-native build
180+
EXCLUDE_TASKS=(
181+
-x :react-native:packages:react-native:ReactAndroid:ktfmtCheck
182+
-x :react-native:packages:react-native:ReactAndroid:ktfmtCheckMain
183+
-x :react-native:packages:react-native:ReactAndroid:ktfmtCheckScripts
184+
-x :react-native:packages:react-native:ReactAndroid:testDebugOptimizedUnitTest
185+
-x :react-native:packages:react-native:ReactAndroid:testDebugUnitTest
186+
-x :react-native:packages:react-native:ReactAndroid:testReleaseUnitTest
187+
)
188+
189+
./gradlew buildReactNativeArtifacts -PpatchedArtifacts.forceBuildFromSource=true -x lint -x test -x check "${EXCLUDE_TASKS[@]}"
179190
./gradlew publishReactNativeArtifacts -PpatchedArtifacts.forceBuildFromSource=true
180191
env:
181192
GH_PUBLISH_ACTOR: ${{ github.actor }}
182193
GH_PUBLISH_TOKEN: ${{ github.token }}
183194
IS_HYBRID_BUILD: ${{ matrix.is_hybrid }}
184195
PATCHED_VERSION: ${{ steps.getNewPatchedVersion.outputs.NEW_PATCHED_VERSION }}
185196
PATCHES_HASH: ${{ matrix.is_hybrid == 'true' && needs.verifyPatches.outputs.hybrid_app_patches_hash || needs.verifyPatches.outputs.standalone_patches_hash }}
197+
CMAKE_VERSION: 3.31.6
186198

187199
- name: Announce failed workflow in Slack
188200
if: ${{ failure() }}

.mcp.json

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,10 @@
33
"playwright": {
44
"command": "npx",
55
"args": ["@playwright/mcp@latest", "--isolated", "--output-dir", ".playwright-output"]
6+
},
7+
"sentry": {
8+
"type": "http",
9+
"url": "https://mcp.sentry.dev/mcp"
610
}
711
}
812
}

CLAUDE.md

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -224,6 +224,10 @@ The skill provides guidance on:
224224

225225
## Development Setup Requirements
226226

227+
### Sentry analysis
228+
229+
Use Sentry skill whenever user wants to analyze any data from Sentry. It may be: spans, metrics, crashes, crash free rate etc.
230+
227231
## Command Reference
228232

229233
### Common Tasks

Mobile-Expensify

__mocks__/@react-navigation/native/index.ts

Lines changed: 13 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -17,21 +17,20 @@ const {triggerTransitionEnd, addListener} = isJestEnv
1717
addListener: () => {},
1818
};
1919

20-
const realOrMockedUseNavigation = isJestEnv ? realReactNavigation.useNavigation : {};
21-
const useNavigation = () => ({
22-
...realOrMockedUseNavigation,
23-
navigate: isJestEnv ? jest.fn() : () => {},
24-
getState: () => ({
25-
routes: [],
26-
}),
27-
addListener,
28-
});
20+
const useNavigation = isJestEnv
21+
? realReactNavigation.useNavigation
22+
: {
23+
navigate: isJestEnv ? jest.fn() : () => {},
24+
getState: () => ({
25+
routes: [],
26+
}),
27+
addListener,
28+
};
2929

3030
type NativeNavigationMock = typeof ReactNavigation & {
3131
triggerTransitionEnd: () => void;
3232
};
3333

34-
export * from '@react-navigation/core';
3534
const Link = isJestEnv ? realReactNavigation.Link : () => null;
3635
const LinkingContext = isJestEnv ? realReactNavigation.LinkingContext : () => null;
3736
const NavigationContainer = isJestEnv ? realReactNavigation.NavigationContainer : () => null;
@@ -46,14 +45,16 @@ const useScrollToTop = isJestEnv ? realReactNavigation.useScrollToTop : () => nu
4645
const useRoute = isJestEnv ? realReactNavigation.useRoute : () => ({params: {}});
4746
const useFocusEffect = isJestEnv ? realReactNavigation.useFocusEffect : (callback: () => void) => callback();
4847
const usePreventRemove = isJestEnv ? jest.fn() : () => {};
48+
const useNavigationState = isJestEnv ? realReactNavigation.useNavigationState : () => {};
4949

50+
export * from '@react-navigation/core';
5051
export {
5152
// Overridden modules
5253
useIsFocused,
5354
useTheme,
5455
useNavigation,
56+
useNavigationState,
5557
useLocale,
56-
triggerTransitionEnd,
5758

5859
// Theme modules are left alone
5960
Link,
@@ -63,6 +64,7 @@ export {
6364
DarkTheme,
6465
DefaultTheme,
6566
ThemeProvider,
67+
triggerTransitionEnd,
6668
useLinkBuilder,
6769
useLinkProps,
6870
useLinkTo,

0 commit comments

Comments
 (0)