The Bluesky Social application for Web, iOS, and Android
This report summarizes scanner evidence for bluesky-social/social-app, a TypeScript project with 18,358 GitHub stars. SynthScan examined 414,550 lines of code across 2887 source files, recording 647 pattern matches distributed across 11 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.
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.
Can maintainers explain intent, assumptions, and trade-offs? 545 finding(s).
Are imports declared and package/API names verified? 102 finding(s).
Are wrappers, guards, and repeated structures necessary? 509 finding(s).
Which changes need focused human review? 647 finding(s).
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.
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.
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.
The scanner identified 647 distinct pattern matches across 11 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.
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| CRITICAL⚡ | dev-env/mock-server.ts | 56 | await server.mocker.users.alice.agent.upsertProfile(() => ({ | CODE |
| CRITICAL⚡ | dev-env/mock-server.ts | 60 | await server.mocker.users.bob.agent.upsertProfile(() => ({ | CODE |
| CRITICAL⚡ | dev-env/mock-server.ts | 64 | await server.mocker.users.carla.agent.upsertProfile(() => ({ | CODE |
| CRITICAL | dev-env/mock-server.ts | 93 | const res = await server.mocker.users.bob.agent.post({ | CODE |
| CRITICAL | dev-env/mock-server.ts | 96 | await server.mocker.users.carla.agent.post({ | CODE |
| CRITICAL⚡ | dev-env/mock-server.ts | 110 | await server.mocker.users.alice.agent.upsertProfile(() => ({ | CODE |
| CRITICAL⚡ | dev-env/mock-server.ts | 114 | await server.mocker.users.bob.agent.upsertProfile(() => ({ | CODE |
| CRITICAL⚡ | dev-env/mock-server.ts | 118 | await server.mocker.users.carla.agent.upsertProfile(() => ({ | CODE |
| CRITICAL⚡ | dev-env/mock-server.ts | 122 | await server.mocker.users.dan.agent.upsertProfile(() => ({ | CODE |
| CRITICAL | dev-env/mock-server.ts | 413 | await server.mocker.users.alice.agent.mute('muted-account.test') | CODE |
| CRITICAL | dev-env/mock-server.ts | 455 | await server.mocker.users.alice.agent.app.bsky.graph.block.create( | CODE |
| CRITICAL | dev-env/mock-server.ts | 478 | ].agent.app.bsky.graph.block.create( | CODE |
| CRITICAL | dev-env/mock-server.ts | 499 | await server.mocker.users.alice.agent.app.bsky.graph.block.create( | CODE |
| CRITICAL | dev-env/mock-server.ts | 510 | ].agent.app.bsky.graph.block.create( | CODE |
| CRITICAL | dev-env/test-pds.ts | 104 | // await agent.app.bsky.actor.profile.create( | COMMENT |
| CRITICAL | dev-env/test-pds.ts | 112 | // await agent.app.bsky.labeler.service.create( | COMMENT |
| CRITICAL | dev-env/test-pds.ts | 340 | return await agent.app.bsky.feed.generator.create( | CODE |
| CRITICAL | dev-env/test-pds.ts | 386 | const profile = await agent.app.bsky.actor.profile.get({ | CODE |
| CRITICAL | dev-env/test-pds.ts | 415 | const res = await this.users[user]?.agent.app.bsky.graph.list.create( | CODE |
| CRITICAL | dev-env/test-pds.ts | 430 | await this.users[owner]?.agent.app.bsky.graph.listitem.create( | CODE |
| CRITICAL | bskyogcard/src/routes/starter-pack.tsx | 33 | const result = await ctx.appviewAgent.app.bsky.graph.getStarterPack({ | CODE |
| CRITICAL | bskyogcard/src/routes/chat-invite.tsx | 31 | const result = await ctx.chatAgent.chat.bsky.group.getJoinLinkPreviews({ | CODE |
| CRITICAL | bskyogcard/src/routes/avatar-bubbles.tsx | 33 | const result = await ctx.appviewAgent.api.app.bsky.actor.getProfiles({ | CODE |
| CRITICAL⚡ | bskyembed/src/components/embed.tsx | 31 | if (app.bsky.embed.images.view.isTypeOf(content)) { | CODE |
| CRITICAL⚡ | bskyembed/src/components/embed.tsx | 36 | if (app.bsky.embed.gallery.view.isTypeOf(content)) { | CODE |
| CRITICAL⚡ | bskyembed/src/components/embed.tsx | 41 | if (app.bsky.embed.external.view.isTypeOf(content)) { | CODE |
| CRITICAL⚡ | bskyembed/src/components/embed.tsx | 46 | if (app.bsky.embed.record.view.isTypeOf(content)) { | CODE |
| CRITICAL⚡ | bskyembed/src/components/embed.tsx | 54 | if (app.bsky.embed.record.viewRecord.isTypeOf(record)) { | CODE |
| CRITICAL | bskyembed/src/components/embed.tsx | 120 | if (app.bsky.graph.defs.listView.isTypeOf(record)) { | CODE |
| CRITICAL | bskyembed/src/components/embed.tsx | 140 | if (app.bsky.feed.defs.generatorView.isTypeOf(record)) { | CODE |
| CRITICAL⚡ | bskyembed/src/components/embed.tsx | 156 | if (app.bsky.labeler.defs.labelerView.isTypeOf(record)) { | CODE |
| CRITICAL⚡ | bskyembed/src/components/embed.tsx | 162 | if (app.bsky.graph.defs.starterPackViewBasic.isTypeOf(record)) { | CODE |
| CRITICAL⚡ | bskyembed/src/components/embed.tsx | 167 | if (app.bsky.embed.record.viewNotFound.isTypeOf(record)) { | CODE |
| CRITICAL⚡ | bskyembed/src/components/embed.tsx | 172 | if (app.bsky.embed.record.viewBlocked.isTypeOf(record)) { | CODE |
| CRITICAL⚡ | bskyembed/src/components/embed.tsx | 177 | if (app.bsky.embed.record.viewDetached.isTypeOf(record)) { | CODE |
| CRITICAL⚡ | bskyembed/src/components/embed.tsx | 187 | if (app.bsky.embed.video.view.isTypeOf(content)) { | CODE |
| CRITICAL⚡ | bskyembed/src/components/embed.tsx | 193 | app.bsky.embed.recordWithMedia.view.isTypeOf(content) && | CODE |
| CRITICAL⚡ | bskyembed/src/components/embed.tsx | 194 | app.bsky.embed.record.viewRecord.isTypeOf(content.record.record) | CODE |
| CRITICAL | bskyembed/src/components/embed.tsx | 263 | .filter(i => app.bsky.embed.gallery.viewImage.isTypeOf(i)) | CODE |
| CRITICAL | src/types/bsky/starterPack.ts | 38 | return isView(v) || app.bsky.graph.defs.starterPackView.matches(v) | CODE |
| CRITICAL | src/types/bsky/__tests__/index.test.ts | 95 | expect(app.bsky.feed.defs.postView.isTypeOf({})).toBe(true) | CODE |
| CRITICAL | src/types/bsky/__tests__/index.test.ts | 97 | app.bsky.feed.post.main.isTypeOf( | CODE |
| CRITICAL | src/types/bsky/__tests__/starterPack.test.ts | 108 | app.bsky.graph.defs.starterPackView.matches(syntheticFullView), | CODE |
| CRITICAL | src/features/followingV2/home/queries/postFeed.test.tsx | 1366 | expect(offline.hook.result.current.prepend.isOwed()).toBe(false) | CODE |
| CRITICAL | …/screens/Atmosphere/data/__tests__/exploreData.test.ts | 125 | expect(app.bsky.embed.external.viewGalleryImage.parse(image)).toMatchObject( | CODE |
| CRITICAL | …/screens/Atmosphere/data/__tests__/exploreData.test.ts | 129 | app.bsky.embed.external.viewGalleryImage.parse({ | CODE |
| CRITICAL | src/view/com/composer/state/composer.ts | 276 | postToRemove.embed.media.video.abortController.abort() | CODE |
| CRITICAL | src/ageAssurance/const.ts | 48 | app.bsky.ageassurance.defs.configRegionRuleIfDeclaredOverAge.build({ | CODE |
| CRITICAL | src/ageAssurance/const.ts | 52 | app.bsky.ageassurance.defs.configRegionRuleDefault.build({ | CODE |
| CRITICAL⚡ | src/ageAssurance/debug.ts | 67 | app.bsky.ageassurance.defs.configRegionRuleIfAssuredOverAge.build({ | CODE |
| CRITICAL⚡ | src/ageAssurance/debug.ts | 71 | app.bsky.ageassurance.defs.configRegionRuleDefault.build({ | CODE |
| CRITICAL⚡ | src/ageAssurance/debug.ts | 80 | app.bsky.ageassurance.defs.configRegionRuleIfAssuredOverAge.build({ | CODE |
| CRITICAL⚡ | src/ageAssurance/debug.ts | 84 | app.bsky.ageassurance.defs.configRegionRuleIfDeclaredOverAge.build({ | CODE |
| CRITICAL⚡ | src/ageAssurance/debug.ts | 88 | app.bsky.ageassurance.defs.configRegionRuleDefault.build({ | CODE |
| CRITICAL⚡ | src/ageAssurance/debug.ts | 97 | app.bsky.ageassurance.defs.configRegionRuleIfAccountNewerThan.build({ | CODE |
| CRITICAL⚡ | src/ageAssurance/debug.ts | 101 | app.bsky.ageassurance.defs.configRegionRuleIfAssuredOverAge.build({ | CODE |
| CRITICAL⚡ | src/ageAssurance/debug.ts | 105 | app.bsky.ageassurance.defs.configRegionRuleIfAssuredOverAge.build({ | CODE |
| CRITICAL⚡ | src/ageAssurance/debug.ts | 109 | app.bsky.ageassurance.defs.configRegionRuleIfDeclaredOverAge.build({ | CODE |
| CRITICAL⚡ | src/ageAssurance/debug.ts | 113 | app.bsky.ageassurance.defs.configRegionRuleDefault.build({ | CODE |
| CRITICAL⚡ | src/ageAssurance/debug.ts | 123 | app.bsky.ageassurance.defs.configRegionRuleIfAssuredOverAge.build({ | CODE |
| 21 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | plugins/withGradleJVMHeapSizeIncrease.js | 26 | module.exports = function withGradleJVMHeapSizeIncrease(config) { | CODE |
| LOW | plugins/withAndroidPreparedTextLayoutPlugin.js | 41 | module.exports = function withAndroidPreparedTextLayoutPlugin(config) { | CODE |
| LOW | plugins/withAndroidManifestOptionalCameraPlugin.js | 14 | module.exports = function withAndroidManifestOptionalCameraPlugin(appConfig) { | CODE |
| LOW | plugins/withAndroidComposeVersion.js | 33 | module.exports = function withAndroidComposeVersion(config) { | CODE |
| LOW | plugins/withAndroidManifestLargeHeapPlugin.js | 3 | module.exports = function withAndroidManifestPlugin(appConfig) { | CODE |
| LOW | plugins/withAndroidStylesAccentColorPlugin.js | 8 | module.exports = function withAndroidStylesAccentColorPlugin(appConfig) { | CODE |
| LOW | plugins/withAndroidNoJitpackPlugin.js | 5 | module.exports = function withAndroidNoJitpackPlugin(config) { | CODE |
| LOW | plugins/withAndroidManifestFCMIconPlugin.js | 3 | module.exports = function withAndroidManifestFCMIconPlugin(appConfig) { | CODE |
| LOW | …-handler/src/BackgroundNotificationHandlerProvider.tsx | 19 | export function BackgroundNotificationPreferencesProvider({ | CODE |
| LOW | modules/bottom-sheet/src/BottomSheetPortal.tsx | 12 | export function BottomSheetPortalProvider({ | CODE |
| LOW | modules/bottom-sheet/src/BottomSheetNativeComponent.tsx | 107 | function BottomSheetNativeComponentInner({ | CODE |
| LOW | …po-bluesky-swiss-army/src/PlatformInfo/index.native.ts | 8 | export function getIsReducedMotionEnabled(): boolean { | CODE |
| LOW | …ules/expo-bluesky-swiss-army/src/PlatformInfo/index.ts | 4 | export function getIsReducedMotionEnabled(): boolean { | CODE |
| LOW | …/expo-bluesky-swiss-army/src/PlatformInfo/index.web.ts | 4 | export function getIsReducedMotionEnabled(): boolean { | CODE |
| LOW | modules/expo-bluesky-swiss-army/src/Referrer/index.ts | 4 | export function getGooglePlayReferrerInfoAsync(): Promise<GooglePlayReferrerInfo> { | CODE |
| LOW | …ules/expo-bluesky-swiss-army/src/Referrer/index.web.ts | 6 | export function getGooglePlayReferrerInfoAsync(): Promise<GooglePlayReferrerInfo> { | CODE |
| LOW | …ules/expo-bluesky-swiss-army/src/Referrer/index.ios.ts | 5 | export function getGooglePlayReferrerInfoAsync(): Promise<GooglePlayReferrerInfo> { | CODE |
| LOW | …/expo-bluesky-swiss-army/src/Referrer/index.android.ts | 7 | export function getGooglePlayReferrerInfoAsync(): Promise<GooglePlayReferrerInfo | null> { | CODE |
| LOW | src/Navigation.tsx | 848 | function NotificationsTabNavigator() { | CODE |
| LOW | src/Navigation.tsx | 1006 | function handlePushNotificationEntry() { | CODE |
| LOW | src/locale/helpers.ts | 160 | export function sanitizeAppLanguageSetting(appLanguage: string): AppLanguage { | CODE |
| LOW | src/logger/sentry/featureFlags.ts | 9 | export function recordFeatureFlagEvaluation(name: string, value: unknown) { | CODE |
| LOW | src/logger/sentry/network-errors.ts | 35 | export function isExpectedSentryNetworkError(value: unknown): boolean { | CODE |
| LOW | src/logger/sentry/network-errors.ts | 61 | export function dropExpectedNetworkErrors( | CODE |
| LOW | …ures/inviteFriends/hooks/useFollowersPromoDismissed.ts | 7 | export function useFollowersPromoDismissed() { | CODE |
| LOW | src/features/liveEvents/preferences.ts | 40 | function useWebOnlyDebugLiveEventPreferences() { | CODE |
| LOW | src/features/liveEvents/preferences.ts | 60 | export function useUpdateLiveEventPreferences(props: { | CODE |
| LOW | src/features/liveEvents/context.tsx | 106 | export function useUserPreferencedLiveEvents() { | CODE |
| LOW | src/features/liveEvents/context.tsx | 122 | export function useActiveLiveEventFeedUris() { | CODE |
| LOW | …onents/DiscoverFeedLiveEventFeedsAndTrendingBanner.tsx | 15 | export function DiscoverFeedLiveEventFeedsAndTrendingBanner() { | CODE |
| LOW | …vents/components/ExploreScreenLiveEventFeedsBanner.tsx | 7 | export function ExploreScreenLiveEventFeedsBanner() { | CODE |
| LOW | …/liveEvents/components/SidebarLiveEventFeedsBanner.tsx | 15 | export function SidebarLiveEventFeedsBanner() { | CODE |
| LOW | src/features/trendingWidget/Snapshot.ts | 11 | export function updateTrendingWidgetSnapshot( | CODE |
| LOW⚡ | src/features/trendingWidget/BackgroundTask.native.ts | 70 | export async function registerTrendingWidgetBackgroundTask() { | CODE |
| LOW⚡ | src/features/trendingWidget/BackgroundTask.native.ts | 76 | export async function unregisterTrendingWidgetBackgroundTask() { | CODE |
| LOW⚡ | src/features/trendingWidget/BackgroundTask.native.ts | 80 | export async function saveTrendingWidgetBackgroundConfig( | CODE |
| LOW⚡ | src/features/trendingWidget/BackgroundTask.native.ts | 86 | export async function clearTrendingWidgetBackgroundConfig() { | CODE |
| LOW | src/features/trendingWidget/Snapshot.native.ts | 13 | export function updateTrendingWidgetSnapshot( | CODE |
| LOW⚡ | src/features/trendingWidget/BackgroundTask.ts | 11 | export async function registerTrendingWidgetBackgroundTask() {} | CODE |
| LOW⚡ | src/features/trendingWidget/BackgroundTask.ts | 13 | export async function unregisterTrendingWidgetBackgroundTask() {} | CODE |
| LOW⚡ | src/features/trendingWidget/BackgroundTask.ts | 15 | export async function saveTrendingWidgetBackgroundConfig( | CODE |
| LOW⚡ | src/features/trendingWidget/BackgroundTask.ts | 19 | export async function clearTrendingWidgetBackgroundConfig() {} | CODE |
| LOW | src/features/liveNow/index.tsx | 209 | export function useUpsertLiveStatusMutation( | CODE |
| LOW | src/features/liveNow/index.tsx | 353 | export function useRemoveLiveStatusMutation() { | CODE |
| LOW | src/features/liveNow/utils.ts | 23 | export function getLiveLinkFromStatusRecord(statusRecord: unknown): string { | CODE |
| LOW | src/features/profileLinks/state.ts | 184 | export function useSetOwnProfileLinksCache() { | CODE |
| LOW | …/features/profileLinks/components/ReportLinkDialog.tsx | 29 | export function useReportableProfileLinks( | CODE |
| LOW | …/followingV2/home/useAnchorCorrectionScrollHandlers.ts | 24 | export function useAnchorCorrectionScrollHandlers( | CODE |
| LOW | src/features/followingV2/home/queries/postFeed.ts | 1234 | function assertSomePostsPassModeration( | CODE |
| LOW | src/features/followingV2/home/api/custom.ts | 135 | function getLoggedOutAppviewClient(): Client { | CODE |
| LOW | src/state/feed-feedback.tsx | 315 | function sendOrAggregateInteractionsForStats( | CODE |
| LOW⚡ | src/state/birthdate.ts | 22 | export function snoozeBirthdateUpdateAllowedForDid(did: string) { | CODE |
| LOW⚡ | src/state/birthdate.ts | 31 | export function hasSnoozedBirthdateUpdateForDid(did: string) { | CODE |
| LOW⚡ | src/state/birthdate.ts | 39 | export function useIsBirthdateUpdateAllowed() { | CODE |
| LOW | src/state/events.ts | 20 | export function emitPushNotificationOpened() { | CODE |
| LOW | src/state/events.ts | 23 | export function listenPushNotificationOpened(fn: () => void): UnlistenFn { | CODE |
| LOW | src/state/util.ts | 35 | export function useCloseAllActiveElements() { | CODE |
| LOW⚡ | src/state/threadgate-hidden-replies.tsx | 67 | export function useThreadgateHiddenReplyUris() { | CODE |
| LOW⚡ | src/state/threadgate-hidden-replies.tsx | 71 | export function useThreadgateHiddenReplyUrisAPI() { | CODE |
| LOW⚡ | src/state/threadgate-hidden-replies.tsx | 75 | export function useMergedThreadgateHiddenReplies({ | CODE |
| 449 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | __e2e__/perf-test.yml | 1 | # flow.yaml | COMMENT |
| LOW | __e2e__/flows/thread-muting.yml | 81 | id: "bottomBarProfileBtn" | COMMENT |
| LOW | bskyweb/embedr-static/robots.txt | 1 | # Hello Friends! | COMMENT |
| LOW | dev-env/test-pds.ts | 101 | // password: 'hunter2', | COMMENT |
| LOW | .github/dependabot.yml | 1 | version: 2 | COMMENT |
| LOW | .github/workflows/nightly-e2e.yml | 261 | # The default 2560MB RAM led to silent qemu crashes mid-flow. | COMMENT |
| LOW | .github/workflows/pull-request-commit.yml | 301 | # with write access pushed it, so an outside contributor (who can only open a | COMMENT |
| LOW | .github/workflows/claude-mention.yml | 1 | name: claude-mention | COMMENT |
| LOW | modules/BlueskyNSE/NotificationService.swift | 1 | import Intents | COMMENT |
| LOW | …act-native-scroll-forwarder/ios/ScrollForwarderView.mm | 1 | #import "ScrollForwarderView.h" | COMMENT |
| LOW | modules/bottom-sheet/ios/SurfaceTouchHandler.h | 1 | #if __has_include(<React/RCTSurfaceTouchHandler.h>) | COMMENT |
| LOW | …/main/java/expo/modules/bottomsheet/BottomSheetView.kt | 161 | // already accounts for the window's horizontal insets, Material's max-width cap on | COMMENT |
| LOW | src/platform/crypto.ts | 1 | // HACK | COMMENT |
| LOW | src/state/queries/nuxs/index.ts | 41 | } | COMMENT |
| LOW | src/screens/Messages/components/MessageComposer.tsx | 161 | COMMENT | |
| LOW | …eens/Messages/components/splitView/leftColumnScroll.ts | 1 | // Holds the splitview left column's scroll offset across re-mounts caused | COMMENT |
| LOW | src/screens/Search/modules/ExploreTrendingVideos.tsx | 61 | // (e: any) => { | COMMENT |
| LOW | src/view/com/util/Link.tsx | 361 | ) | COMMENT |
| LOW | src/lib/demo.ts | 41 | }, | COMMENT |
| LOW | src/lib/demo.ts | 121 | // aspectRatio: { | COMMENT |
| LOW | src/lib/react-query.tsx | 121 | COMMENT | |
| LOW | src/lib/international-telephone-codes.ts | 1241 | unicodeFlag: '🇲🇵', | COMMENT |
| LOW | src/lib/media/video/constants.ts | 1 | // Shared compression knobs. Mirrored between native (compress.ts) and web | COMMENT |
| LOW | src/analytics/PassiveAnalytics.tsx | 21 | // const feats = Object.values(Features).reduce( | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | .jscodeshift/file/lingui-v5.js | 8 | * _(msg`Lorem ipsum`) | COMMENT |
| LOW | .jscodeshift/file/lingui-v5.js | 13 | * l`Lorem ipsum` | COMMENT |
| LOW | src/screens/Messages/components/MessageComposer.tsx | 271 | ? l({message: 'Loading chat…', context: 'placeholder'}) | CODE |
| LOW | …/screens/ModerationInbox/components/SubjectPreview.tsx | 16 | const post = '@deleteme01.bsky.social lorem ipsum dolor sit amet…' | CODE |
| LOW | …/screens/ModerationInbox/components/SubjectPreview.tsx | 16 | const post = '@deleteme01.bsky.social lorem ipsum dolor sit amet…' | CODE |
| LOW | src/components/forms/TextField.tsx | 156 | 'value' | 'onChangeText' | 'placeholder' | CODE |
| LOW | src/components/ProgressGuide/FollowDialog.tsx | 49 | type: 'placeholder' | CODE |
| LOW | src/components/ProgressGuide/FollowDialog.tsx | 181 | type: 'placeholder', | CODE |
| LOW | src/components/ProgressGuide/FollowDialog.tsx | 257 | case 'placeholder': { | CODE |
| LOW | src/components/dialogs/SearchablePeopleList.tsx | 59 | type: 'placeholder' | CODE |
| LOW | src/components/dialogs/SearchablePeopleList.tsx | 148 | type: 'placeholder', | CODE |
| LOW | src/components/dialogs/SearchablePeopleList.tsx | 281 | case 'placeholder': { | CODE |
| LOW | src/components/dms/AddMembersFlow.tsx | 55 | type: 'placeholder' | CODE |
| LOW | src/components/dms/AddMembersFlow.tsx | 234 | _items.push({type: 'placeholder', key: i + ''}) | CODE |
| LOW | src/components/dms/AddMembersFlow.tsx | 296 | case 'placeholder': { | CODE |
| LOW | src/components/dms/InitiateChatFlow.tsx | 88 | type: 'placeholder' | CODE |
| LOW | src/components/dms/InitiateChatFlow.tsx | 353 | type: 'placeholder', | CODE |
| LOW | src/components/dms/InitiateChatFlow.tsx | 564 | case 'placeholder': { | CODE |
| LOW | src/view/screens/Storybook/Forms.tsx | 65 | defaultValue="Lorem ipsum dolor sit amet, consectetur adipiscing elit. Donec auctor, nisl eget ultricies lacin | CODE |
| LOW | src/view/screens/Storybook/Forms.tsx | 65 | defaultValue="Lorem ipsum dolor sit amet, consectetur adipiscing elit. Donec auctor, nisl eget ultricies lacin | CODE |
| LOW | src/view/com/composer/text-input/TextInput.types.ts | 35 | | 'placeholder' | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | src/components/intents/GroupChatJoinDialog.tsx | 108 | // Optimistically mark the link as requested so any invite cards | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | bskylink/tests/infra/with-test-db.sh | 3 | # Example usage: | COMMENT |
| LOW | dev-env/dev-infra/with-test-db.sh | 3 | # Example usage: | COMMENT |
| LOW | dev-env/dev-infra/with-test-redis-and-db.sh | 3 | # Example usage: | COMMENT |
| LOW | scripts/push-notification/send.sh | 7 | # Usage: | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | public/index.html | 145 | Feel free to customize this however you'd like. | CODE |
| LOW | src/view/com/util/Views.tsx | 14 | // If you explode these into functions, don't forget to forwardRef! | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | scripts/release/create.sh | 34 | # Create the branch directly at the prepared commit; never advance or force a ref. | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | src/features/followingV2/home/queries/postFeed.ts | 442 | * If this is a public view, we need to check if posts fail moderation. | COMMENT |
| LOW | src/state/queries/post-feed.ts | 216 | * If this is a public view, we need to check if posts fail moderation. | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | src/view/com/composer/drafts/state/api.ts | 518 | // legacy `images`, >4 promotes to `gallery`). This keeps restore robust | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | src/screens/VideoFeed/index.tsx | 1241 | // TODO: implement viaRepost -sfn | COMMENT |