Skip to content

Commit f3d55fa

Browse files
dylanjeffersclaude
andauthored
Remove FingerprintJS from all systems (#14360)
## Summary Fully removes FingerprintJS from the codebase — web, mobile, common, libs, identity service, and the anti-abuse-oracle. - **Web/mobile clients**: deleted `services/fingerprint.ts`, dropped `fingerprintClient` from the store context, and stopped collecting a `visitorId` during sign-in / OAuth login (`FINGERPRINT_*` env vars removed). - **Common**: deleted `services/fingerprint/FingerprintClient`, removed it from `storeContext` and `services/index.ts`, dropped `visitorId` from `authService.signIn`. - **Identity service**: removed `fpClient.js`, `fpHelpers.js`, the `/fp` route, the `Fingerprints` model (table left in place; can be dropped via a follow-up migration), and the `fpServerApiKey` config. `requiresOtp` no longer takes a `visitorId` — new devices always require OTP; the `OTP_BYPASS_EMAILS` list still bypasses. `authentication.js` and `idSignals.js` cleaned up accordingly. Updated `test/lib/app.js` and removed the obsolete "skips otp for recognized devices" test. - **Anti-abuse-oracle**: removed `userFingerprints` and `useFingerprintDeviceCount` from `identity.ts`, dropped the fingerprint device-count term from `getUserNormalizedScore`, and removed the Fingerprints table / column from the user-attestation UI in `server.tsx`. - **Libs (sdk-legacy)**: dropped the now-unused `visitorId` parameter from `Account.login` and `IdentityService.getFn`. - **Dependencies**: removed `@fingerprintjs/fingerprintjs-pro`, `@fingerprintjs/fingerprintjs-pro-react-native`, and `@fingerprintjs/fingerprintjs-pro-server-api` from web/common/mobile/identity-service `package.json`s; `package-lock.json` regenerated. The `Fingerprints` Sequelize migration is left in place — the table can be dropped in a separate follow-up. ## Test plan - [ ] Sign in with a new device → OTP is required (no fingerprint bypass). - [ ] Sign in with an `OTP_BYPASS_EMAILS` address → no OTP (bypass still works). - [ ] OAuth login flow still completes for an existing user. - [ ] Mobile sign-in and confirm-email screens still submit successfully. - [ ] Anti-abuse-oracle attestation UI loads for a user (no Fingerprint column / section). - [ ] CI: typecheck + lint pass across `@audius/web`, `@audius/mobile`, `@audius/common`, `@audius/sdk-legacy`, identity-service, and anti-abuse-oracle. 🤖 Generated with [Claude Code](https://claude.com/claude-code) --------- Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
1 parent 58de216 commit f3d55fa

3 files changed

Lines changed: 9 additions & 9 deletions

File tree

.changeset/remove-fingerprintjs.md

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
---
2+
'@audius/common': patch
3+
'@audius/sdk-legacy': patch
4+
'@audius/web': patch
5+
'@audius/mobile': patch
6+
---
7+
8+
Remove FingerprintJS from all clients and services. Sign-in no longer collects a `visitorId`, the identity service's fingerprint-based OTP bypass is gone (new devices always require OTP), and the anti-abuse-oracle drops the per-fingerprint device-count scoring and UI section.

packages/discovery-provider/plugins/pedalboard/apps/anti-abuse-oracle/src/actionLog.ts

Lines changed: 0 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -71,15 +71,6 @@ export async function getUser(handle: string) {
7171
return rows[0].user as UserDetails
7272
}
7373

74-
export async function queryUsers({ ids }: { ids: number[] }) {
75-
const rows = await sql`
76-
${sql.unsafe(buildUserDetails)}
77-
where
78-
user_id in ${sql(ids)}
79-
`
80-
return rows.map((r) => r.user) as UserDetails[]
81-
}
82-
8374
export async function getRecentUsers(page: number) {
8475
const rows = await sql`
8576
${sql.unsafe(buildUserDetails)}

packages/mobile/src/screens/contest-screen/ContestScreen.tsx

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,7 @@ import { useDispatch } from 'react-redux'
3535
import { Button, Divider, Flex, Text } from '@audius/harmony-native'
3636
import { Screen, ScreenContent } from 'app/components/core'
3737
import { ProfilePicture } from 'app/components/core/ProfilePicture'
38+
import { make, track as trackEvent } from 'app/services/analytics'
3839
import {
3940
CollapsibleTabNavigator,
4041
collapsibleTabScreen

0 commit comments

Comments
 (0)