AI Slop Code Risk Monitor

Expensify/App

SlopCodeMonitor badge for Expensify/App Adjusted legacy signal; badge bands: 25 / 50 / 75 (different from dashboard bands).

Welcome to New Expensify: a complete re-imagination of financial collaboration, centered around chat. Help us build the next generation of Expensify by sharing feedback and contributing to the code.

3.8 Low pattern signal View on GitHub

Open-Source Code Quality, Security and Technical Debt Review

This report summarizes scanner evidence for Expensify/App, a TypeScript project with 5,086 GitHub stars. SynthScan examined 2,141,296 lines of code across 12840 source files, recording 7789 pattern matches distributed across 14 syntactic categories. The legacy adjusted pattern signal is 3.8 (Low pattern signal); it is not an authorship estimate.

Use the findings to ask whether maintainers can explain intent, verify dependencies, simplify unnecessary scaffolding, and focus review effort. Risk Payload v1 adds ownership, supply-chain, over-engineering, and review-effort vectors when available. These are prompts for human verification, not probabilities, security findings, or measured maintenance costs.

3.8
Adjusted Signal
3.8
Raw Pattern Score
100%
Time Factor
2026-10-31
Last Push
5.1K
Stars
TypeScript
Language
2.1M
Lines of Code
12.8K
Files
7.8K
Pattern Hits
2026-10-31
Scan Date
0.00
HC Hit Rate

Risk Review · Payload v1

Use each vector to guide manual verification of the underlying findings.

Payload schema: 1.0.0 · Engine: 2.0.0 · Scoring: heuristic-density-v1 · Scan date: 2026-10-31.

Cognitive Ownership Risk 14.6/100 · LOW

Can maintainers explain intent, assumptions, and trade-offs? 6558 finding(s).

Hallucinated Dependency & Supply Chain Risk 2.5/100 · LOW

Are imports declared and package/API names verified? 1166 finding(s).

Agent Over-Engineering Ratio 13.2/100 · LOW

Are wrappers, guards, and repeated structures necessary? 6045 finding(s).

PR Review Velocity Impact 17.0/100 · LOW

Which changes need focused human review? 7789 finding(s).

What These Metrics Mean

Adjusted Signal
Legacy pattern score normalized per 1,000 scanned lines and multiplied by the repository-level time factor. It is not an estimate of AI authorship.
Raw Pattern Score
Sum of severity- and context-weighted pattern findings before applying the time factor.
Time Factor
A coarse multiplier based on repository last-push metadata. It does not identify when individual code was written.
Pattern Hits
Count of configured pattern findings. Review each location and surrounding code before acting.
HC Hit Rate
High- and critical-severity findings per scanned file. Severity is a configured detector weight, not proof of a vulnerability or authorship.
Lines / Files
Scan coverage denominators used by the legacy normalized score.

Pattern-Signal History

This chart tracks the legacy adjusted pattern score across scan runs. Changes can reflect source changes, scan coverage, or detector/scoring versions; they do not measure AI adoption or prove that a team refactored code. Compare runs only when their scoring versions are compatible. The dashed line tracks the raw pattern-hit count.

Severity Breakdown

Groups findings by configured severity weight. Severity is not a confidence estimate, security rating, or proof that a package is missing. Verify imports against the project's manifests and inspect each finding in its local design context.

CRITICAL 1HIGH 6MEDIUM 80LOW 7702

Directory Score Breakdown

This horizontal bar chart shows where configured pattern scores accumulate across directories. Treat the bars as locations to inspect, not as evidence of authorship or code quality. Use the file-level findings to decide whether a directory needs a focused ownership, dependency, complexity, or review check.

Pattern Findings

The scanner identified 7789 distinct pattern matches across 14 syntactic categories. Each entry below represents a discrete location in the source code where the engine recorded a detector match to inspect in context. Expand any category row to inspect the individual file paths, line numbers, code snippets, and the lexical context (CODE, COMMENT, or STRING) in which each match was detected.

Reading the findings table: The Severity column indicates the configured finding weight (CRITICAL / HIGH / MEDIUM / LOW). The Context column identifies whether the match occurred inside executable code, an inline comment, or a string literal — legacy comment-context matches receive a ×1.5 score weight. The ⚡ bolt icon marks clustered matches: three or more patterns within a 10-line window, each receiving an additional ×1.5 density multiplier under the legacy scoring model.

Hyper-Verbose Identifiers5980 hits · 5874 pts
SeverityFileLineSnippetContext
LOW__mocks__/react-native-safe-area-context.tsx35 function WithSafeAreaInsetsWithRef(props: WithSafeAreaInsetsProps & {ref: ForwardedRef<unknown>}) {CODE
LOW__mocks__/react-native-onyx.ts11function addDelayToConnectCallback(delay: number) {CODE
LOWcontributingGuides/NAVIGATION.md1485function useCustomRootStackNavigatorState({state}: CustomStateHookProps) {CODE
LOWcontributingGuides/NAVIGATION.md1520function useCustomSplitNavigatorState({state}: CustomStateHookProps) {CODE
LOWcontributingGuides/STYLE.md1172 function WithCurrentUserPersonalDetails(props: Omit<TProps, keyof HOCProps>) {CODE
LOWconfig/rsbuild/ModuleInitTimingPlugin.ts13function createTimingRuntimeModule(): InstanceType<typeof rspack.RuntimeModule> {CODE
LOWconfig/rsbuild/rsbuild.common.ts123function mapEnvironmentToLogoSuffix(environmentFile: string): string {CODE
LOWconfig/babel/oxcJestTransformer.js130function processWithOxcForCoverage(sourceText, sourcePath, transformOptions) {CODE
LOWweb/cloudflare-worker/tests/worker.test.ts16function assertTemplateInlineScriptsAllowed(csp: string) {CODE
LOWeslint-plugin-local-rules/no-onyx-get-snapshot-key.js104function unwrapAwaitAndTypeOnlyExpressions(node) {CODE
LOWeslint-plugin-local-rules/no-onyx-get-snapshot-key.js188 function tupleElementIsConciergeReportID(call, elementIndex) {CODE
LOWeslint-plugin-local-rules/no-onyx-get-snapshot-key.js212 function isConciergeReportIDExpression(node) {CODE
LOWeslint-plugin-local-rules/no-raw-typography.js73function isVariablesTypographyReference(node) {CODE
LOWeslint-plugin-local-rules/no-unsafe-onyx-read.js195function getRenderTimeArgumentIndices(callee) {CODE
LOWeslint-plugin-local-rules/no-unsafe-onyx-read.js201function getOutermostTypeOnlyWrapper(node) {CODE
LOWeslint-plugin-local-rules/no-unsafe-onyx-read.js423function isEffectHookCallbackArgument(call, argument) {CODE
LOWeslint-plugin-local-rules/no-unsafe-onyx-read.js453function getMemoizedFunctionBinding(functionNode, parent) {CODE
LOWeslint-plugin-local-rules/no-unsafe-onyx-read.js502 function isHandlerInvokedFromEffect(binding) {CODE
LOWeslint-plugin-local-rules/no-unsafe-onyx-read.js582function requiresComponentOrHookScope(filename) {CODE
LOW…-local-rules/require-live-region-for-status-updates.js43function getConstRoleValueFromExpression(expression) {CODE
LOW…-local-rules/require-live-region-for-status-updates.js70function getResolvedRolesFromExpression(expression) {CODE
LOW…cal-rules/no-direct-pre-insert-fullscreen-under-rhp.js25function isStaticPreInsertProperty(property, computed) {CODE
LOW⚡…cal-rules/no-direct-pre-insert-fullscreen-under-rhp.js60function isNavigationPreInsertMemberExpression(node, scope, navigationImportBindings) {CODE
LOW⚡…cal-rules/no-direct-pre-insert-fullscreen-under-rhp.js69function isPreInsertFullscreenUnderRHPCall(node, scope, navigationImportBindings) {CODE
LOW⚡…cal-rules/no-direct-pre-insert-fullscreen-under-rhp.js73function getPreInsertAliasFromObjectPatternProperty(property) {CODE
LOWeslint-plugin-local-rules/utils/onyxReadUtils.js51function unwrapTypeOnlyExpressions(node) {CODE
LOWeslint-plugin-local-rules/utils/onyxReadUtils.js103function getSingleVariableDefinition(variable, constOnly) {CODE
LOWtests/ui/SearchRouterContextualSuggestionTest.tsx91function getContextualSuggestionText(reportName: string) {CODE
LOWtests/ui/SpendRuleCategoryBaseTest.tsx83function renderSpendRuleCategoryBase(categories: SpendRuleCategory[] = []) {CODE
LOWtests/ui/TableTest.tsx389 function MockGenericEmptyStateComponent({title, subtitle, minModalHeight = 400}: {title?: string; subtitle?: string;CODE
LOWtests/ui/TableTest.tsx610function activateStickyHeadersAfterListLoad() {CODE
LOWtests/ui/TableTest.tsx3237 function ControlledSelectableTable({data = mockData, initialSelected = [], showSearch = false}: {data?: TestItemCODE
LOWtests/ui/TotalCellTest.tsx86 function mockPressableWithFeedback({CODE
LOWtests/ui/ReportActionComposeTest.tsx88function ReportActionEditMessageContextProviderForReport({children}: PropsWithChildren) {CODE
LOWtests/ui/DomainGroupPreferredWorkspacePageTest.tsx64async function setUpDomainAdminWithPolicies(policyCount: number) {CODE
LOWtests/ui/DomainGroupPreferredWorkspacePageTest.tsx136function renderCreatePreferredWorkspacePage() {CODE
LOWtests/ui/DomainGroupPreferredWorkspacePageTest.tsx140function renderEditPreferredWorkspacePage(groupID = GROUP_ID) {CODE
LOWtests/ui/GLCodeCellTest.tsx44 function mockPressableWithFeedback({CODE
LOWtests/ui/DynamicBetaOverridesPageTest.tsx66function renderDynamicBetaOverridesPage() {CODE
LOWtests/ui/ConciergePromptBoxTest.tsx187function ConciergePromptBoxWrapper({isCopyLoading = false}: {isCopyLoading?: boolean} = {}) {CODE
LOWtests/ui/ConciergePromptBoxTest.tsx260function settleLayoutTriggeredScroll() {CODE
LOWtests/ui/ConciergePromptBoxTest.tsx278function getLastMentionSuggestionsProps(): MentionSuggestionsProps {CODE
LOWtests/ui/ConciergePromptBoxTest.tsx286function getLastEmojiSuggestionsProps(): EmojiSuggestionsProps {CODE
LOWtests/ui/ClearReportActionErrorsUITest.tsx95 function ReportActionItemWithHierarchy({action, report}: {action: ReportAction; report: Report}) {CODE
LOWtests/ui/WorkspaceCompanyCardsPageSelectionModeTest.tsx186function getWorkspaceCompanyCardsPage() {CODE
LOW…sts/ui/IOURequestStepDistanceOdometerSflResumeTest.tsx163function createOdometerTransaction(withImage: boolean): Transaction {CODE
LOW…sts/ui/IOURequestStepDistanceOdometerSflResumeTest.tsx182function createDistanceCreateRoute(): DistanceCreateRoute {CODE
LOW…sts/ui/IOURequestStepDistanceOdometerSflResumeTest.tsx207function getKeyboardAvoidingViewEnabled(): boolean | undefined {CODE
LOWtests/ui/ChatTransactionPreviewTest.tsx61function SearchSnapshotQueryProvider({children}: ChildrenProps) {CODE
LOW⚡tests/ui/ReportActionMessageEditLayoutTest.tsx170function ReportActionEditMessageContextProviderForReport({children}: PropsWithChildren) {CODE
LOW⚡tests/ui/ReportActionMessageEditLayoutTest.tsx174function ReportActionEditMessageContextProviderForNestedThread({children}: PropsWithChildren) {CODE
LOW⚡tests/ui/ReportActionMessageEditLayoutTest.tsx178function ReportActionEditMessageContextProviderForThread({children}: PropsWithChildren) {CODE
LOW⚡tests/ui/ReportActionMessageEditLayoutTest.tsx216async function setReportActionDraftWithMessage(message: string) {CODE
LOW⚡tests/ui/ReportActionMessageEditLayoutTest.tsx226async function clearReportActionDraftsForReport() {CODE
LOW⚡tests/ui/ReportActionMessageEditLayoutTest.tsx232function renderNarrowMessageCompose() {CODE
LOW⚡tests/ui/ReportActionMessageEditLayoutTest.tsx241async function seedNestedThreadHierarchyWithAncestorEditDraft(draftMessage: string) {CODE
LOWtests/ui/ReportActionMessageEditLayoutTest.tsx268async function getReportActionDraftMessage(reportID: string, reportActionID: string) {CODE
LOWtests/ui/ReportActionMessageEditLayoutTest.tsx279function renderNestedThreadNarrowMessageCompose() {CODE
LOWtests/ui/ReportActionMessageEditLayoutTest.tsx289function renderThreadNarrowMessageCompose() {CODE
LOWtests/ui/IOURequestStepHoursTest.tsx65function createPolicyWithTimeTracking(): Policy {CODE
5920 more matches not shown…
Fake / Example Data1165 hits · 1080 pts
SeverityFileLineSnippetContext
LOW__mocks__/reportData/personalDetails.ts56 displayName: 'Jane Doe',CODE
LOWtests/ui/LeaveWorkspaceFlowTest.tsx39const USER_EMAIL = 'user@example.com';CODE
LOWtests/ui/ReportAttachments.tsx78const TEST_USER_LOGIN = 'test@test.com';CODE
LOWtests/ui/ProfilePageTest.tsx136 const email = 'user@example.com';CODE
LOWtests/ui/ProfilePageTest.tsx173 const defaultEmail = 'user@example.com';CODE
LOWtests/ui/ProfilePageTest.tsx788 const customDisplayName = 'John Doe';CODE
LOWtests/ui/ReportActionComposeTest.tsx328 await Onyx.merge(ONYXKEYS.SESSION, {accountID: currentUserAccountID, email: 'test@test.com'});CODE
LOWtests/ui/ReportActionComposeTest.tsx335 owner: 'test@test.com',CODE
LOWtests/ui/DomainMemberVacationDelegateFormPageTest.tsx40jest.mock('@hooks/useCurrentUserPersonalDetails', () => jest.fn(() => ({login: 'admin@example.com', timezone: {selected:CODE
LOWtests/ui/DomainMemberVacationDelegateFormPageTest.tsx70 mockVacationDelegate = {creator: 'admin@example.com', delegate: 'delegate@example.com'};CODE
LOWtests/ui/DomainMemberVacationDelegateFormPageTest.tsx86 mockVacationDelegate = {creator: 'admin@example.com', delegate: 'delegate@example.com', delegatorFor: ['other@exCODE
LOWtests/ui/ConciergePromptBoxTest.tsx796 describe('placeholder', () => {CODE
LOW⚡tests/ui/ConciergePromptBoxTest.tsx831 expect(getInput()).toHaveProp('placeholder', '');CODE
LOW⚡tests/ui/ConciergePromptBoxTest.tsx837 expect(getInput()).toHaveProp('placeholder', LONG_PLACEHOLDER);CODE
LOW⚡tests/ui/ConciergePromptBoxTest.tsx845 expect(getInput()).toHaveProp('placeholder', '');CODE
LOWtests/ui/ConciergePromptBoxTest.tsx857 expect(getInput()).toHaveProp('placeholder', SHORT_PLACEHOLDER);CODE
LOWtests/ui/ConciergePromptBoxTest.tsx872 expect(getInput()).toHaveProp('placeholder', '');CODE
LOWtests/ui/ConciergePromptBoxTest.tsx882 expect(getInput()).toHaveProp('placeholder', LONG_PLACEHOLDER);CODE
LOWtests/ui/ClearReportActionErrorsUITest.tsx35const ACTOR_EMAIL = 'test@test.com';CODE
LOWtests/ui/WorkspaceCompanyCardsPageSelectionModeTest.tsx76 default: () => ({login: 'admin@example.com'}),CODE
LOWtests/ui/WorkspaceInviteMessageApproverPageTest.tsx61 const adminEmail = 'admin@example.com';CODE
LOWtests/ui/WorkspaceInviteMessageApproverPageTest.tsx63 const userEmail = 'user@example.com';CODE
LOW…micWorkspaceWorkflowsApprovalsExpensesFromPageTest.tsx31const ADMIN_EMAIL = 'admin@example.com';CODE
LOWtests/ui/WorkspaceExpensifyCardListPageWaitlistTest.tsx22const memberLogin = 'admin@example.com';CODE
LOW…ts/ui/WorkspaceMembersChangeOfficeLocationPageTest.tsx36jest.mock('@hooks/useCurrentUserPersonalDetails', () => jest.fn(() => ({login: 'admin@example.com'})));CODE
LOWtests/ui/UnshareBankAccountTest.tsx59const OTHER_ADMIN_EMAIL = 'admin@example.com';CODE
LOWtests/ui/ProductMarketingWindowNavigationTest.tsx24const USER_EMAIL = 'user@example.com';CODE
LOWtests/ui/MoneyRequestViewReceiptTest.tsx116const currentUserEmail = 'test@test.com';CODE
LOWtests/ui/WorkspaceInviteMessageDEWApproverRowTest.tsx26const ADMIN_EMAIL = 'admin@example.com';CODE
LOWtests/ui/WorkspaceCompanyCardFeedSelectorPageTest.tsx42let mockPrimaryContactMethod = 'admin@example.com';CODE
LOWtests/ui/WorkspaceCompanyCardFeedSelectorPageTest.tsx213 mockPrimaryContactMethod = 'admin@example.com';CODE
LOWtests/ui/BottomTabBarTest.tsx165 email: 'foo@bar.com',CODE
LOWtests/ui/BottomTabBarTest.tsx188 partnerUserID: 'foo@bar.com',CODE
LOWtests/ui/BottomTabBarTest.tsx223 partnerUserID: 'foo@bar.com',CODE
LOWtests/ui/ReportActionsListTest.tsx327 login: 'test@test.com',CODE
LOWtests/ui/AgentsPromoBannersTest.tsx25const USER_EMAIL = 'admin@example.com';CODE
LOW⚡tests/ui/AuthScreensInitHandlerTest.tsx174 await Onyx.merge(ONYXKEYS.SESSION, {accountID: TEST_ACCOUNT_ID, email: 'test@test.com'});CODE
LOW⚡tests/ui/AuthScreensInitHandlerTest.tsx181 expect(subscribeToUserEvents).toHaveBeenCalledWith(TEST_ACCOUNT_ID, 'test@test.com', expect.any(Function), expecCODE
LOW⚡tests/ui/AuthScreensInitHandlerTest.tsx187 await Onyx.merge(ONYXKEYS.SESSION, {accountID: TEST_ACCOUNT_ID, email: 'test@test.com'});CODE
LOW⚡tests/ui/AuthScreensInitHandlerTest.tsx195 expect(subscribeToUserEvents).toHaveBeenCalledWith(TEST_ACCOUNT_ID, 'test@test.com', expect.any(Function), expecCODE
LOW⚡tests/ui/AuthScreensInitHandlerTest.tsx201 await Onyx.merge(ONYXKEYS.SESSION, {accountID: TEST_ACCOUNT_ID, email: 'test@test.com'});CODE
LOWtests/ui/AuthScreensInitHandlerTest.tsx220 await Onyx.merge(ONYXKEYS.SESSION, {accountID: TEST_ACCOUNT_ID, email: 'test@test.com'});CODE
LOWtests/ui/AuthScreensInitHandlerTest.tsx246 await Onyx.merge(ONYXKEYS.SESSION, {accountID: TEST_ACCOUNT_ID, email: 'test@test.com'});CODE
LOWtests/ui/AuthScreensInitHandlerTest.tsx259 await Onyx.merge(ONYXKEYS.SESSION, {accountID: TEST_ACCOUNT_ID, email: 'test@test.com'});CODE
LOWtests/ui/AuthScreensInitHandlerTest.tsx273 await Onyx.merge(ONYXKEYS.SESSION, {accountID: TEST_ACCOUNT_ID, email: 'test@test.com'});CODE
LOWtests/ui/AuthScreensInitHandlerTest.tsx285 await Onyx.merge(ONYXKEYS.SESSION, {accountID: TEST_ACCOUNT_ID, email: 'test@test.com'});CODE
LOWtests/ui/AuthScreensInitHandlerTest.tsx298 await Onyx.merge(ONYXKEYS.SESSION, {accountID: TEST_ACCOUNT_ID, email: 'test@test.com'});CODE
LOWtests/ui/ChatActionableButtonsTest.tsx63 await Onyx.merge(ONYXKEYS.SESSION, {accountID: CURRENT_USER_ACCOUNT_ID, email: 'test@test.com'});CODE
LOWtests/ui/ChatActionableButtonsTest.tsx67 login: 'test@test.com',CODE
LOWtests/ui/WorkspaceMemberOfficeLocationPageTest.tsx33jest.mock('@hooks/useCurrentUserPersonalDetails', () => jest.fn(() => ({login: 'admin@example.com'})));CODE
LOWtests/ui/DomainMemberDetailsPageTest.tsx119 mockDomain = {[`${CONST.DOMAIN.PRIVATE_VACATION_DELEGATE_PREFIX}${MEMBER_ACCOUNT_ID}`]: {creator: 'admin@exampleCODE
LOWtests/ui/VacationDelegateMissingWorkspacesPageTest.tsx278 const DELEGATE_DISPLAY_NAME = 'Jane Doe';CODE
LOW…sts/ui/WorkspaceWorkflowsApprovalsApproverPageTest.tsx36const ADMIN_EMAIL = 'admin@example.com';CODE
LOWtests/ui/IOURequestStepDistanceTest.tsx245 waypoint0: {address: '123 Main St', lat: 40.7128, lng: -74.006, keyForList: 'start_waypoint'},CODE
LOWtests/ui/SessionTest.tsx35const TEST_USER_LOGIN_1 = 'test@test.com';CODE
LOWtests/ui/IOURequestEditReportCommonTest.tsx268 await Onyx.set(ONYXKEYS.PRIVATE_PERSONAL_DETAILS, {addresses: [{street: '123 Main St', city: 'San FranciCODE
LOWtests/ui/MoneyRequestViewTest.tsx137const currentUserEmail = 'test@test.com';CODE
LOWtests/ui/ReportActionItemTest.tsx98const actorEmail = 'test@test.com';CODE
LOWtests/ui/ReportActionItemTest.tsx502 const action = createReportAction(CONST.REPORT.ACTIONS.TYPE.POLICY_CHANGE_LOG.ASSIGN_COMPANY_CARD, {email: 'CODE
LOWtests/ui/ReportActionItemTest.tsx511 const action = createReportAction(CONST.REPORT.ACTIONS.TYPE.POLICY_CHANGE_LOG.UNASSIGN_COMPANY_CARD, {email:CODE
1105 more matches not shown…
Structural Annotation Overuse268 hits · 454 pts
SeverityFileLineSnippetContext
LOWcontributingGuides/HOW_TO_CREATE_A_PLAN.md11## Step 1: Define the problemCOMMENT
LOWcontributingGuides/HOW_TO_CREATE_A_PLAN.md27## Step 2: Workshop the solutionsCOMMENT
LOWcontributingGuides/HOW_TO_CREATE_A_PLAN.md39## Step 3: Write out each problem and solution (P/S statement)COMMENT
LOWcontributingGuides/HOW_TO_CREATE_A_PLAN.md42## Step 4: Propose itCOMMENT
LOW⚡tests/unit/FraudProtectionTest.ts85 // Step 1: BeginSignIn returns account data (no session yet)COMMENT
LOW⚡tests/unit/FraudProtectionTest.ts91 // Step 2: Validate code verified, session is createdCOMMENT
LOW⚡tests/unit/SubscriptionVisibilityTest.ts112 // Step 1: User has a paid workspace — subscriptionPlan is TEAMCOMMENT
LOW⚡tests/unit/SubscriptionVisibilityTest.ts122 // Step 2: User deletes the workspace — subscriptionPlan becomes nullCOMMENT
LOW⚡tests/unit/SubscriptionVisibilityTest.ts129 // Step 3: amountOwed > 0 keeps subscription visibleCOMMENT
LOW⚡tests/actions/IOUTest/SplitTest.ts5067 // Step 6: Verify the new transaction thread report existsCOMMENT
LOW⚡tests/actions/IOUTest/SplitTest.ts5072 // Step 7: Verify the comment was migrated to the new threadCOMMENT
LOWtests/actions/IOUTest/SplitTest.ts2782 // Step 1: Split into 2 (creates child transactions via creation path)COMMENT
LOWtests/actions/IOUTest/SplitTest.ts2862 // Step 2: Revert to 1 split expense, moving it to a different reportCOMMENT
LOWtests/actions/IOUTest/SplitTest.ts3253 // Step 1: Split the original expense into 2 (creation path). One split stays in the workspaceCOMMENT
LOWtests/actions/IOUTest/SplitTest.ts3325 // Step 2: Revert - remove the selfDM split (opened from within selfDM, per the repro), leaving theCOMMENT
LOWtests/actions/IOUTest/SplitTest.ts3378 // Step 3: Split the now-reverted original transaction into 2 again, initiated from "Spend > Expenses".COMMENT
LOWtests/actions/IOUTest/SplitTest.ts3477 // Step 4: Revert a second time - remove one of the second-round splits, leaving the other as the soleCOMMENT
LOWtests/actions/IOUTest/SplitTest.ts4827 // Step 1: Split into 2 child transactionsCOMMENT
LOWtests/actions/IOUTest/SplitTest.ts4914 // Step 2: Find the split's transaction thread and add a comment to itCOMMENT
LOWtests/actions/IOUTest/SplitTest.ts4955 // Step 3: Revert to 1 split (triggers isReverseSplitOperation)COMMENT
LOWtests/actions/IOUTest/SplitTest.ts5020 // Step 4: Verify the original transaction is restored with correct dataCOMMENT
LOWtests/actions/IOUTest/SplitTest.ts5035 // Step 5: Verify the new IOU action for the restored original transactionCOMMENT
LOWtests/actions/IOUTest/SplitSelfDMTest.ts471 // Step 1: Create the splitsCOMMENT
LOW⚡tests/actions/IOUTest/SplitSelfDMTest.ts528 // Step 2: Re-fetch allTransactions (now contains the created children)COMMENT
LOW⚡tests/actions/IOUTest/SplitSelfDMTest.ts536 // Step 3: Edit the splits (change amounts)COMMENT
LOW.claude/agents/deploy-blocker-investigator.md47### Step 1: Read the issueCOMMENT
LOW.claude/agents/deploy-blocker-investigator.md60### Step 2: Check StagingDeployCashCOMMENT
LOW.claude/agents/deploy-blocker-investigator.md69### Step 3: Find the causing PRCOMMENT
LOW.claude/agents/deploy-blocker-investigator.md81### Step 4: Verify the causing PRCOMMENT
LOW⚡.claude/agents/deploy-blocker-investigator.md104### Step 5: Determine fix locationCOMMENT
LOW⚡.claude/agents/deploy-blocker-investigator.md111### Step 6: Apply the decision treeCOMMENT
LOW⚡.claude/agents/deploy-blocker-investigator.md115### Step 7: Post comment and update labelsCOMMENT
LOW.claude/agents/deploy-blocker-investigator.md130### Step 8: Assign contributorsCOMMENT
LOW.claude/commands/review-helpdot-pr.md12## Step 1: Inline ReviewCOMMENT
LOW.claude/commands/review-helpdot-pr.md18## Step 2: Summary ReviewCOMMENT
LOWdocs/Hidden/Global-Reimbursement-Singapore.md28# Step 1: Connect Your Singaporean Bank AccountCOMMENT
LOWdocs/Hidden/Global-Reimbursement-Singapore.md39# Step 2: Complete the DocuSign Form and Upload DocumentsCOMMENT
LOWdocs/Hidden/Global-Reimbursement-Singapore.md51# Step 3: Confirm Test PaymentCOMMENT
LOWdocs/Hidden/Global-Reimbursement-Singapore.md57# Step 4: Start Reimbursing InternationallyCOMMENT
LOW⚡docs/Hidden/Greenhouse.md24## Step 1: Establish the ConnectionCOMMENT
LOW⚡docs/Hidden/Greenhouse.md31## Step 2: Create the WebHookCOMMENT
LOW⚡docs/Hidden/Greenhouse.md38## Step 3: Create the Custom Candidate FieldCOMMENT
LOW…ensify-card/Set-Up-and-Manage-the-Expensify-Card-US.md29# Step 1: Enable the Expensify CardCOMMENT
LOW…ensify-card/Set-Up-and-Manage-the-Expensify-Card-US.md40# Step 2: Select a Bank AccountCOMMENT
LOW…ensify-card/Set-Up-and-Manage-the-Expensify-Card-US.md54# Step 3: Issue Expensify CardsCOMMENT
LOW…rticles/new-expensify/connections/Uber-for-Business.md13## Step 1: Enable Receipt Partners in your WorkspaceCOMMENT
LOW…rticles/new-expensify/connections/Uber-for-Business.md20## Step 2: Connect Uber for BusinessCOMMENT
LOW…ons/quickbooks-desktop/Configure-QuickBooks-Desktop.md13# Step 1: Initial ConnectionCOMMENT
LOW…ons/quickbooks-desktop/Configure-QuickBooks-Desktop.md23# Step 2: Configure Import SettingsCOMMENT
LOW…ons/quickbooks-desktop/Configure-QuickBooks-Desktop.md53# Step 3: Configure Export SettingsCOMMENT
LOW…ons/quickbooks-desktop/Configure-QuickBooks-Desktop.md103# Step 4: Configure Advanced SettingsCOMMENT
LOW…ons/quickbooks-desktop/Configure-QuickBooks-Desktop.md123# Step 5: Export ProcessCOMMENT
LOW…sktop/Troubleshooting/Sync-Errors/DESK66-Sync-Error.md91### Step 1: Remove Web ConnectorCOMMENT
LOW…sktop/Troubleshooting/Sync-Errors/DESK66-Sync-Error.md100### Step 2: Disconnect QuickBooks Desktop in the WorkspaceCOMMENT
LOW…sktop/Troubleshooting/Sync-Errors/DESK66-Sync-Error.md111### Step 3: Reboot and Reinstall Web ConnectorCOMMENT
LOW…Troubleshooting/Connection-errors/DESK66-Sync-Error.md91### Step 1: Remove Web ConnectorCOMMENT
LOW…Troubleshooting/Connection-errors/DESK66-Sync-Error.md100### Step 2: Disconnect QuickBooks Desktop in the WorkspaceCOMMENT
LOW…Troubleshooting/Connection-errors/DESK66-Sync-Error.md111### Step 3: Reboot and Reinstall Web ConnectorCOMMENT
LOW…icles/new-expensify/connections/xero/Configure-Xero.md28# Step 1: Set Up Import SettingsCOMMENT
LOW…icles/new-expensify/connections/xero/Configure-Xero.md43# Step 2: Set Up Export SettingsCOMMENT
208 more matches not shown…
Decorative Section Separators65 hits · 213 pts
SeverityFileLineSnippetContext
MEDIUMtests/ui/components/Button.tsx73 // ── Rendering ──────────────────────────────────────────────────────────────COMMENT
MEDIUMtests/ui/components/Button.tsx119 // ── ButtonStateContext ──────────────────────────────────────────────────────COMMENT
MEDIUMtests/ui/components/Button.tsx184 // ── Press handling ─────────────────────────────────────────────────────────COMMENT
MEDIUMtests/ui/components/Button.tsx350 // ── Disabled-state styles ──────────────────────────────────────────────────COMMENT
MEDIUMtests/ui/components/Button.tsx379 // ── Variant styles ────────────────────────────────────────────────────────COMMENT
MEDIUMtests/ui/components/Button.tsx408 // ── Size styles ───────────────────────────────────────────────────────────COMMENT
MEDIUMtests/ui/components/Button.tsx440 // ── removeBorderRadius ──────────────────────────────────────────────COMMENT
MEDIUMtests/ui/components/Button.tsx474 // ── Hover styles ──────────────────────────────────────────────────────────COMMENT
MEDIUMtests/ui/components/Button.tsx507 // ── Accessibility ──────────────────────────────────────────────────────────COMMENT
MEDIUMtests/ui/components/Button.tsx572 // ── Event handlers ────────────────────────────────────────────────────────COMMENT
MEDIUMtests/ui/components/Button.tsx602 // ── Haptic feedback ───────────────────────────────────────────────────────COMMENT
MEDIUMtests/ui/components/Button.tsx641 // ── Layout and composition ────────────────────────────────────────────────COMMENT
MEDIUMtests/ui/components/ButtonKeyboardShortcut.tsx10// ── Keyboard-shortcut wiring ───────────────────────────────────────────────────COMMENT
MEDIUMtests/ui/components/ButtonKeyboardShortcut.tsx30// ──────────────────────────────────────────────────────────────────────────────COMMENT
MEDIUMtests/ui/components/ButtonKeyboardShortcut.tsx64 // ── Registration ───────────────────────────────────────────────────────────COMMENT
MEDIUMtests/ui/components/ButtonKeyboardShortcut.tsx76 // ── onPress invocation ─────────────────────────────────────────────────────COMMENT
MEDIUMtests/ui/components/ButtonKeyboardShortcut.tsx116 // ── Shortcut config ────────────────────────────────────────────────────────COMMENT
MEDIUMtests/ui/components/ButtonKeyboardShortcut.tsx151 // ── Rendering ──────────────────────────────────────────────────────────────COMMENT
MEDIUMtests/unit/useCreateReportTest.tsx18// ── Mocks ──────────────────────────────────────────────────────────────────────COMMENT
MEDIUMtests/unit/useCreateReportTest.tsx85// ── Helpers ────────────────────────────────────────────────────────────────────COMMENT
MEDIUMtests/unit/useCreateReportTest.tsx177// ── Tests ──────────────────────────────────────────────────────────────────────COMMENT
MEDIUM⚡tests/unit/LHNAvatarPipelineTest.ts269 // ── Case 1: 1:1 DM ─────────────────────────────────────────────────COMMENT
MEDIUM⚡tests/unit/LHNAvatarPipelineTest.ts279 // ── Case 2: Group Chat ──────────────────────────────────────────────COMMENT
MEDIUM⚡tests/unit/LHNAvatarPipelineTest.ts289 // ── Case 3: Policy Expense Chat (not own) ───────────────────────────COMMENT
MEDIUMtests/unit/LHNAvatarPipelineTest.ts31// ─── Test Constants ──────────────────────────────────────────────────────────COMMENT
MEDIUMtests/unit/LHNAvatarPipelineTest.ts66// ─── Pipeline Helper ─────────────────────────────────────────────────────────COMMENT
MEDIUMtests/unit/LHNAvatarPipelineTest.ts148// ─── Tests ───────────────────────────────────────────────────────────────────COMMENT
MEDIUMtests/unit/LHNAvatarPipelineTest.ts318 // ── Case 5: Expense Request ─────────────────────────────────────────COMMENT
MEDIUMtests/unit/LHNAvatarPipelineTest.ts335 // ── Case 6: Expense Report ──────────────────────────────────────────COMMENT
MEDIUMtests/unit/LHNAvatarPipelineTest.ts349 // ── Case 7: IOU (multi-sender) ─────────────────────────────────────COMMENT
MEDIUMtests/unit/LHNAvatarPipelineTest.ts359 // ── Case 8: IOU (single sender, request) ───────────────────────────COMMENT
MEDIUMtests/unit/LHNAvatarPipelineTest.ts370 // ── Case 9: IOU (single sender, send money) ────────────────────────COMMENT
MEDIUMtests/unit/LHNAvatarPipelineTest.ts381 // ── Case 10: Workspace Thread ───────────────────────────────────────COMMENT
MEDIUMtests/unit/LHNAvatarPipelineTest.ts396 // ── Case 11: Expense Request Thread (with policy) ───────────────────COMMENT
MEDIUMtests/unit/LHNAvatarPipelineTest.ts435 // ── Case 13: Trip Room ──────────────────────────────────────────────COMMENT
MEDIUMtests/unit/LHNAvatarPipelineTest.ts450 // ── Case 14: Invoice Room ───────────────────────────────────────────COMMENT
MEDIUMtests/unit/LHNAvatarPipelineTest.ts464 // ── Case 15: Invoice Report (non-B2B) ───────────────────────────────COMMENT
MEDIUMtests/unit/LHNAvatarPipelineTest.ts494 // ── Case 16: Archived Expense Report ────────────────────────────────COMMENT
MEDIUMtests/unit/LHNAvatarPipelineTest.ts508 // ── Case 17: Archived Non-Expense Chat ──────────────────────────────COMMENT
MEDIUMtests/unit/LHNAvatarPipelineTest.ts518 // ── Case 18: With delegate ──────────────────────────────────────────COMMENT
MEDIUMtests/unit/LHNAvatarPipelineTest.ts537 // ── Case 19: Policy Expense Chat + Task (no parent PEC in Onyx) ─────COMMENT
MEDIUMtests/unit/LHNAvatarPipelineTest.ts567 // ── Case 12c: Personal task (parent is DM) → SINGLE ──────────────COMMENT
MEDIUMtests/unit/LHNAvatarPipelineTest.ts608 // ── Case 22: Delegate applied for task WITH chatReportID ─────────COMMENT
MEDIUMtests/unit/LHNAvatarPipelineTest.ts622 // ── Case 23: Delegate skipped for invoice report ─────────────────COMMENT
MEDIUMtests/unit/LHNAvatarPipelineTest.ts635 // ── Case 24: Delegate applied for chat reports ──────────────────COMMENT
MEDIUMtests/unit/LHNAvatarPipelineTest.ts645 // ── Case 24b: Delegate skipped for a Concierge thread ────────────COMMENT
MEDIUMtests/unit/hooks/useOdometerReceiptStitcherTest.tsx18// ─── Mocks ──────────────────────────────────────────────────────────────────COMMENT
MEDIUMtests/unit/hooks/useOdometerReceiptStitcherTest.tsx95// ─── Test helpers ──────────────────────────────────────────────────────────COMMENT
MEDIUMtests/unit/hooks/useOdometerReceiptStitcherTest.tsx136// ─── Tests ──────────────────────────────────────────────────────────────────COMMENT
MEDIUMscripts/select-device.sh4# ============================================COMMENT
MEDIUMscripts/select-device.sh11# ----------------------COMMENT
MEDIUM⚡scripts/setup-newdot-web-emulators.sh4# =============================================================COMMENT
MEDIUM⚡scripts/setup-newdot-web-emulators.sh12# -----------COMMENT
MEDIUM⚡scripts/setup-newdot-web-emulators.sh20# ----------------------COMMENT
MEDIUM⚡scripts/setup-mapbox-sdk-walkthrough.sh4# ==================================COMMENT
MEDIUM⚡scripts/setup-mapbox-sdk-walkthrough.sh14# -----------COMMENT
MEDIUM⚡scripts/setup-mapbox-sdk.sh4# ===================================================COMMENT
MEDIUM⚡scripts/setup-mapbox-sdk.sh13# -----------COMMENT
MEDIUM⚡scripts/setup-mapbox-sdk.sh19# ----------------------------------------COMMENT
MEDIUM⚡scripts/setup-mapbox-sdk.sh24# -------------------------------------------------------COMMENT
5 more matches not shown…
Over-Commented Block209 hits · 188 pts
SeverityFileLineSnippetContext
LOWbabel.config.js101 bundleMode: true,COMMENT
LOWtsconfig.json1{COMMENT
LOWconfig/rsbuild/rsbuild.common.ts241 // same fixed-value behavior without the warning. This also matters for Storybook'sCOMMENT
LOWconfig/rsbuild/rsbuild.common.ts321 ],COMMENT
LOWconfig/rsbuild/rsbuild.common.ts521 ...(isDevelopmentCOMMENT
LOWpatches/react-navigation/details.md1# `@react-navigation` patchesCOMMENT
LOWtests/ui/IOURequestStepDistanceOdometerBackupTest.tsx261});COMMENT
LOWtests/unit/PolicyUtilsTest.ts1621 // Given a policy viewed by an admin, holding a regular member in its employee listCOMMENT
LOWtests/unit/CardUtilsTest.ts941 // Direct feed with oAuthAccountDetails and no cards — shownCOMMENT
LOWtests/unit/NoUnsafeOnyxReadRuleTest.ts161 // Then it is an event handler, so the read is allowedCOMMENT
LOWtests/unit/NoUnsafeOnyxReadRuleTest.ts881});COMMENT
LOWtests/unit/NoUnsafeOnyxReadRuleTest.ts1061 // When the rule checks the Onyx referenceCOMMENT
LOWtests/unit/NoUnsafeOnyxReadRuleTest.ts1261 // When the rule checks the referenceCOMMENT
LOWtests/unit/PersistedRequests.ts141 expect(PersistedRequests.getAll().length).toBe(0);COMMENT
LOWtests/unit/CardFeedErrorsDerivedValueTest.ts501COMMENT
LOWtests/unit/CardFeedErrorsDerivedValueTest.ts521 // [cardFeed.feedName]: {COMMENT
LOWtests/unit/OnyxUpdateManagerTest.ts101 // After all missing and deferred updates have been applied, the lastUpdateIDAppliedToClient should be 6.COMMENT
LOWtests/unit/OnyxUpdateManagerTest.ts221 // - once for the first fetched missing update (2)COMMENT
LOWtests/unit/OnyxUpdateManagerTest.ts321COMMENT
LOWtests/tooling/generateTranslations.test.ts2421 // 3: const strings = {COMMENT
LOWios/RCTShareActionHandlerModule.h1//COMMENT
LOWios/NewExpensify-Bridging-Header.h1//COMMENT
LOWios/BridgingFile.swift1//COMMENT
LOWios/SentryNativeSDKManager.m1//COMMENT
LOWios/CertificatePinning.swift1//COMMENT
LOWios/CertificatePinning.swift41 // which have already broken leaf/intermediate pins in production (2026-07-07COMMENT
LOWios/SceneDelegate.swift1//COMMENT
LOWios/NewExpensify/OriginImageRequestHandler.mm1//COMMENT
LOWios/NewExpensify/RCTBootSplash.mm1#import "RCTBootSplash.h"COMMENT
LOWios/NewExpensify/OriginImageRequestHandler.h1//COMMENT
LOWscripts/android-repackage-app-bundle-and-sign.sh1#!/bin/bashCOMMENT
LOWscripts/stubReactNative.js1// Comprehensive React Native module interceptor for Bun script preload.COMMENT
LOWscripts/select-device.sh1#!/bin/bashCOMMENT
LOWscripts/validateMobileExpensifySubmodule.sh1#!/bin/bashCOMMENT
LOWscripts/setup-newdot-web-emulators.sh1#!/bin/bashCOMMENT
LOWscripts/setup-newdot-web-emulators.sh21# This script streamlines the process of adding the certificates to both android andCOMMENT
LOWscripts/setup-mapbox-sdk-walkthrough.sh1#!/bin/bashCOMMENT
LOWscripts/generateCertificatePins.sh1#!/bin/bashCOMMENT
LOWscripts/generateCertificatePins.sh21# pinned domain's live chain actually builds up to one of its pinned roots.COMMENT
LOWscripts/generateCertificatePins.sh41# staying in sync with the manifest.COMMENT
LOWscripts/generateCertificatePins.sh101# requests once enforce mode is on.COMMENT
LOWscripts/setup-mapbox-sdk.sh1#!/bin/bashCOMMENT
LOWscripts/setup-mapbox-sdk.sh21# This file is used in Unix-like systems to store credentials for remote machine access.COMMENT
LOWscripts/artifacts-utils/ios/sync-prebuilt-rncore.sh1#!/bin/bashCOMMENT
LOW.github/workflows/resolveBuildRefs.yml1name: Resolve build refsCOMMENT
LOW.github/workflows/lint.yml41 # Only use the elevated OSBotify token on the post-merge `workflow_call` runCOMMENT
LOW.github/workflows/deploy.yml121 // push trigger: all pushed commits are in the payloadCOMMENT
LOW.github/scripts/enforceVideoFormats.sh1#!/bin/bashCOMMENT
LOW.github/scripts/enforceVideoFormats.sh21# Non-capturing groups are part of the matching pattern, but not returned in matches.COMMENT
LOW.github/scripts/enforceVideoFormats.sh41 while IFS= read -r MATCH; doCOMMENT
LOW.github/scripts/inject-ci-data.sh1#!/bin/bashCOMMENT
LOW.github/scripts/syncVersions.sh1#!/bin/bashCOMMENT
LOW.github/scripts/syncVersions.sh21# is rejected before the sync writes or pushes. Empty means "use the Mobile-Expensify version".COMMENT
LOW.github/scripts/verifyRedirect.sh1#!/bin/bashCOMMENT
LOW…hub/actions/javascript/validateReassureOutput/index.js12921 // undici implementation note: headersList is cloned in makeRequestCOMMENT
LOW.github/actions/javascript/bumpVersion/index.js13381 // being handled by a service worker. In this scenario a request can have an origin that is differentCOMMENT
LOWmodules/group-ib-fp/ios/ModuleFhpIos-Bridging-Header.h1#import <React/RCTBridgeModule.h>COMMENT
LOW…ulator/GIBMobileSdk.framework/Headers/GIBLogsHandler.h1//COMMENT
LOW…/GIBMobileSdk.framework/Headers/GIBAttributeTitleKey.h1//COMMENT
LOW…/GIBMobileSdk.framework/Headers/GIBAttributeTitleKey.h21/// Operation identifierCOMMENT
149 more matches not shown…
Verbosity Indicators55 hits · 101 pts
SeverityFileLineSnippetContext
LOW⚡tests/unit/FraudProtectionTest.ts85 // Step 1: BeginSignIn returns account data (no session yet)COMMENT
LOW⚡tests/unit/FraudProtectionTest.ts91 // Step 2: Validate code verified, session is createdCOMMENT
LOW⚡tests/unit/SubscriptionVisibilityTest.ts112 // Step 1: User has a paid workspace — subscriptionPlan is TEAMCOMMENT
LOW⚡tests/unit/SubscriptionVisibilityTest.ts122 // Step 2: User deletes the workspace — subscriptionPlan becomes nullCOMMENT
LOW⚡tests/unit/SubscriptionVisibilityTest.ts129 // Step 3: amountOwed > 0 keeps subscription visibleCOMMENT
LOW⚡tests/actions/IOUTest/SplitTest.ts5067 // Step 6: Verify the new transaction thread report existsCOMMENT
LOW⚡tests/actions/IOUTest/SplitTest.ts5072 // Step 7: Verify the comment was migrated to the new threadCOMMENT
LOWtests/actions/IOUTest/SplitTest.ts2782 // Step 1: Split into 2 (creates child transactions via creation path)COMMENT
LOWtests/actions/IOUTest/SplitTest.ts2862 // Step 2: Revert to 1 split expense, moving it to a different reportCOMMENT
LOWtests/actions/IOUTest/SplitTest.ts3253 // Step 1: Split the original expense into 2 (creation path). One split stays in the workspaceCOMMENT
LOWtests/actions/IOUTest/SplitTest.ts3325 // Step 2: Revert - remove the selfDM split (opened from within selfDM, per the repro), leaving theCOMMENT
LOWtests/actions/IOUTest/SplitTest.ts3378 // Step 3: Split the now-reverted original transaction into 2 again, initiated from "Spend > Expenses".COMMENT
LOWtests/actions/IOUTest/SplitTest.ts3477 // Step 4: Revert a second time - remove one of the second-round splits, leaving the other as the soleCOMMENT
LOWtests/actions/IOUTest/SplitTest.ts4827 // Step 1: Split into 2 child transactionsCOMMENT
LOWtests/actions/IOUTest/SplitTest.ts4914 // Step 2: Find the split's transaction thread and add a comment to itCOMMENT
LOWtests/actions/IOUTest/SplitTest.ts4955 // Step 3: Revert to 1 split (triggers isReverseSplitOperation)COMMENT
LOWtests/actions/IOUTest/SplitTest.ts5020 // Step 4: Verify the original transaction is restored with correct dataCOMMENT
LOWtests/actions/IOUTest/SplitTest.ts5035 // Step 5: Verify the new IOU action for the restored original transactionCOMMENT
LOWtests/actions/IOUTest/SplitSelfDMTest.ts471 // Step 1: Create the splitsCOMMENT
LOW⚡tests/actions/IOUTest/SplitSelfDMTest.ts528 // Step 2: Re-fetch allTransactions (now contains the created children)COMMENT
LOW⚡tests/actions/IOUTest/SplitSelfDMTest.ts536 // Step 3: Edit the splits (change amounts)COMMENT
LOWsrc/libs/SearchUIUtils.ts5830 // Date presets come with the equals operator, so we need to check if the value is a date presetCOMMENT
LOWsrc/libs/ValidationUtils.ts363 // so we need to check if it is a valid phone.COMMENT
LOW⚡src/libs/SidebarUtils.ts651 // Step 1: Categorize reportsCOMMENT
LOW⚡src/libs/SidebarUtils.ts654 // Step 2: Sort each categoryCOMMENT
LOW⚡src/libs/SidebarUtils.ts657 // Step 3: Combine and extract IDsCOMMENT
LOW⚡src/libs/CategoryOptionListUtils.ts146 // Step 1: Combine selected and enabled categories for searchingCOMMENT
LOW⚡src/libs/CategoryOptionListUtils.ts149 // Step 2: Get search results using tokenizedSearchCOMMENT
LOW⚡src/libs/CategoryOptionListUtils.ts158 // Step 3: Deduplicate by name (keep first occurrence, which is likely the selected one if present)COMMENT
LOW⚡src/libs/CategoryOptionListUtils.ts168 // Step 4: Re-sort to restore hierarchical groupingCOMMENT
LOW⚡src/libs/CategoryOptionListUtils.ts176 // Step 5: Re-apply the isSelected flag and GL code (lost during sortCategories)COMMENT
LOW⚡src/libs/CategoryOptionListUtils.ts182 // Step 6: Generate the option tree and push the sectionCOMMENT
LOW⚡src/libs/OptionsListUtils/index.ts1312 // Step 1: Pre-filter reports to avoid processing thousandsCOMMENT
LOW⚡src/libs/OptionsListUtils/index.ts1318 // Step 2: Select the top N reports by priority (self-DM and default workspace chat, then non-archived, then most reCOMMENT
LOW⚡src/libs/OptionsListUtils/index.ts1324 // Step 3: If search term is present, build report map with ONLY 1:1 DM reportsCOMMENT
LOWsrc/libs/OptionsListUtils/index.ts1350 // Step 4: Process the limited set of reports (performance optimization)COMMENT
LOWsrc/libs/Navigation/helpers/useIsSidebarRouteActive.ts29 // To check if the sidebar is active on a narrow layout, we need to check if the focused route is the sidebar routeCOMMENT
LOW⚡src/libs/PolicyUtils/workflows.ts29 * This gets a "corrected" value for autoReportingFrequency. The purpose of this function is to encapsulate some logic aCOMMENT
LOWsrc/libs/actions/OnyxUpdateManager/utils/index.ts14 * we need to check if there are any gaps between deferred updates.COMMENT
LOWsrc/libs/actions/OnyxUpdateManager/utils/index.ts53 // For any other updates, we need to check if the previousUpdateID of the current update is found in the deferreCOMMENT
LOW⚡src/libs/actions/IOU/UpdateMoneyRequest.ts1925 // Step 1: Get the transaction being updatedCOMMENT
LOW⚡src/libs/actions/IOU/UpdateMoneyRequest.ts1935 // Step 2: Set any "pending fields" (ones updated while the user was offline) to have error messages in the failureDCOMMENT
LOW⚡src/libs/actions/IOU/UpdateMoneyRequest.ts2594 // Step 1: Set any "pending fields" (ones updated while the user was offline) to have error messages in the failureDCOMMENT
LOW⚡src/libs/actions/IOU/UpdateMoneyRequest.ts2599 // Step 2: Get all the collections being updatedCOMMENT
LOWsrc/libs/actions/IOU/UpdateMoneyRequest.ts2064 // Step 3: Build the modified expense report actionsCOMMENT
LOWsrc/libs/actions/IOU/UpdateMoneyRequest.ts2139 // Step 4: Compute the IOU total and update the report preview message (and report header) so LHN amount owed is corCOMMENT
LOWsrc/libs/actions/IOU/UpdateMoneyRequest.ts2685 // Step 3: Build the modified expense report actionsCOMMENT
LOWsrc/libs/actions/IOU/UpdateMoneyRequest.ts2725 // Step 4: Update the report preview message (and report header) so LHN amount tracked is correct.COMMENT
LOWsrc/libs/actions/Policy/CopyPolicySettings.ts492 // Step 3: collection keys (categories / tags) — SET-level overwrite with snapshot rollbackCOMMENT
LOWsrc/libs/actions/Policy/CopyPolicySettings.ts562 // Step 4: drive currentStep on the COPY_POLICY_SETTINGS key itself.COMMENT
LOW…/MoneyRequestConfirmationList/sections/ReportField.tsx73 * We need to check if the transaction report exists first in order to prevent the outstanding reports from being usCOMMENT
LOW…/MoneyRequestConfirmationList/sections/ReportField.tsx74 * Also we need to check if transaction report exists in outstanding reports in order to show a correct report name.COMMENT
LOW⚡…components/Search/hooks/useOptimisticSearchTracking.ts109 // Step 1: resolve watch key if not yet available.COMMENT
LOW⚡…components/Search/hooks/useOptimisticSearchTracking.ts118 // Step 2: if the watched transaction is a split parent, swap to child.COMMENT
LOWsrc/hooks/useOriginalReportID.ts76 // In that case, we need to check if the reportActionID belongs to the transaction thread.COMMENT
Redundant / Tautological Comments19 hits · 37 pts
SeverityFileLineSnippetContext
LOWdocs/_plugins/cache_bust_filter.rb15 # Check if the asset type is supportedCOMMENT
LOWscripts/import-cloudflare-certs-into-jdk.sh105 # Check if certificate already existsCOMMENT
LOW⚡scripts/shellUtils.sh3# Check if GREEN has already been definedCOMMENT
LOW⚡scripts/shellUtils.sh8# Check if RED has already been definedCOMMENT
LOW⚡scripts/shellUtils.sh13# Check if BLUE has already been definedCOMMENT
LOW⚡scripts/shellUtils.sh18# Check if TITLE has already been definedCOMMENT
LOW⚡scripts/shellUtils.sh23# Check if RESET has already been definedCOMMENT
LOW⚡scripts/setup-mapbox-sdk.sh70# Check if the token was providedCOMMENT
LOW⚡scripts/setup-mapbox-sdk.sh120# Check if gradle.properties exists. If not, create one.COMMENT
LOW⚡scripts/setup-mapbox-sdk.sh125# Check if MAPBOX_DOWNLOADS_TOKEN already exists in the fileCOMMENT
LOWscripts/is-hybrid-app.sh5# Check if jq is installedCOMMENT
LOWscripts/is-hybrid-app.sh18# Check if 'package.json' existsCOMMENT
LOWscripts/is-hybrid-app.sh23 # Check if the 'name' field is 'mobile-expensify'COMMENT
LOWscripts/run-build.sh65# Check if the argument is one of the desired valuesCOMMENT
LOWscripts/run-build.sh77 # Check if this is an Expensify developer with WARP (only they need cert import)COMMENT
LOW⚡scripts/pod-install.sh28# Check if bundle is installedCOMMENT
LOW⚡scripts/pod-install.sh34# Check if jq is installedCOMMENT
LOW⚡scripts/pod-install.sh40# Check if yq is installedCOMMENT
LOW.github/workflows/deploy.yml1026 # Check if the release already existsCOMMENT
Synthetic Comment Markers4 hits · 30 pts
SeverityFileLineSnippetContext
HIGH…-coding-standards/rules/consistency-16-no-ai-jargon.md6## [CONSISTENCY-16] No AI-generated jargon in code or commentsCOMMENT
HIGHsrc/types/onyx/OriginalMessage.ts1046 /** Whether the updated description was generated by AI */COMMENT
HIGHsrc/libs/ModifiedExpenseMessage.ts367 // Add attribution suffix based on AI-generated descriptionsCOMMENT
HIGHsrc/libs/ModifiedExpenseMessage.ts567 // know the change was AI-generated, fall back to an AI-attributed generic summary soCOMMENT
AI Slop Vocabulary8 hits · 26 pts
SeverityFileLineSnippetContext
MEDIUM…routerExtensions/addRootHistoryRouterExtension.test.ts513 // which was incomplete and caused leak-or-misfire. Key-based pairing is robust to non-RHPCOMMENT
MEDIUMios/SceneDelegate.swift50 // mounting. Both use the `BootSplash` storyboard, so the handoff is seamless.COMMENT
MEDIUM⚡scripts/setup-mapbox-sdk-walkthrough.sh8# This script assists users in setting up the necessary credentials to utilizeCOMMENT
MEDIUM.github/workflows/reassurePerformanceTests.yml44 # Tests: only the perf harness feeds the measurement.COMMENT
MEDIUMsrc/components/Table/TableBody.tsx485 // Absolutely positioned rows don't widen the scroller's content, so hold the scroll extent open.COMMENT
MEDIUMsrc/components/MapView/MapViewImpl.web.tsx29// we utilize a different Mapbox library @rnmapbox/maps tailored for mobile development.COMMENT
MEDIUMsrc/components/MapView/Direction.web.tsx8// we utilize a different Mapbox library @rnmapbox/maps tailored for mobile development.COMMENT
MEDIUMsrc/pages/inbox/report/ReportActionItem.tsx543 // The long term solution will leverage end-to-end encryption and only targeted users will be able to decrypt.COMMENT
Self-Referential Comments6 hits · 18 pts
SeverityFileLineSnippetContext
MEDIUMdocs/_plugins/cache_bust_filter.rb12 # Define a list of supported asset typesCOMMENT
MEDIUM⚡scripts/setup-mapbox-sdk.sh21# This file is used in Unix-like systems to store credentials for remote machine access.COMMENT
MEDIUMscripts/setup-mapbox-sdk.sh45# This function provides a user-friendly error message when the script encounters an error.COMMENT
MEDIUM.github/workflows/finishReleaseCycle.yml118 # Create a new patch version to prep for next release cycleCOMMENT
MEDIUM.github/scripts/createDocsRoutes.ts54const disclaimer = '# This file is auto-generated. Do not edit it directly. Use npm run createDocsRoutes instead.\n';CODE
MEDIUM.github/scripts/printPodspec.rb3# This file is a lightweight port of the `pod ipc spec` command.COMMENT
AI Response Leakage2 hits · 15 pts
SeverityFileLineSnippetContext
HIGHsrc/libs/actions/IOU/MoneyRequestBuilder.ts1610 // I want to clean this up at some point, but it's possible this will live in the code for a while so I've created hCOMMENT
HIGHsrc/libs/actions/IOU/TrackExpense.ts1181 // I want to clean this up at some point, but it's possible this will live in the code for a while so I've created hCOMMENT
Example Usage Blocks6 hits · 11 pts
SeverityFileLineSnippetContext
LOW⚡scripts/setup-newdot-web-emulators.sh24# Usage:COMMENT
LOW⚡scripts/setup-mapbox-sdk-walkthrough.sh19# Usage:COMMENT
LOWscripts/generateCertificatePins.sh23# Usage:COMMENT
LOWscripts/shellUtils.sh172# Usage:COMMENT
LOW⚡scripts/setup-mapbox-sdk.sh34# Usage:COMMENT
LOWsrc/libs/mapChildrenFlat.ts11 * // Usage example:COMMENT
Hallucination Indicators1 hit · 10 pts
SeverityFileLineSnippetContext
CRITICALpatches/expo-location/details.md26 at com.google.android.gms.tasks.zzw.getResult(...)CODE
Slop Phrases1 hit · 2 pts
SeverityFileLineSnippetContext
MEDIUMtests/tooling/artifactsResolver.test.ts113 it('falls back to source build when the gh CLI cannot provide credentials', async () => {CODE