Repository Analysis

tamagui/tamagui

Style React fast with 100% parity on React Native, an optional UI kit, and optimizing compiler.

1.1 Likely human-written View on GitHub
1.1
Adjusted Score
1.1
Raw Score
100%
Time Factor
2026-05-30
Last Push
13,999
Stars
TypeScript
Language
514,801
Lines of Code
7963
Files
467
Pattern Hits
2026-05-31
Scan Date

Score History

Severity Breakdown

CRITICAL 6HIGH 1MEDIUM 7LOW 453

Pattern Findings

467 matches across 10 categories. Click a row to expand file-level details.

Hyper-Verbose Identifiers249 hits · 255 pts
SeverityFileLineSnippet
LOWcode/ui/popper/src/Popper.tsx219function getSideAndAlignFromPlacement(placement: Placement) {
LOWcode/ui/toast/types/createNativeToast.native.d.ts4export declare function requestNotificationPermission(): Promise<null>;
LOWcode/ui/toast/types/createNativeToast.d.ts8export declare function requestNotificationPermission(): Promise<NotificationPermission | null>;
LOWcode/ui/toast/src/createNativeToast.native.tsx31export async function requestNotificationPermission(): Promise<null> {
LOWcode/ui/toast/src/createNativeToast.tsx37export async function requestNotificationPermission(): Promise<NotificationPermission | null> {
LOWcode/ui/linear-gradient/src/linear-gradient.tsx117function getLinearGradientBackgroundImage(
LOWcode/ui/slider/src/Slider.tsx160function useOnDebouncedWindowResize(callback: Function, amt = 200) {
LOW…/ui/context-menu/types/createNonNativeContextMenu.d.ts45export declare function createNonNativeContextMenu(params: CreateBaseMenuProps): {
LOWcode/ui/context-menu/src/createNonNativeContextMenu.tsx93export function createNonNativeContextMenu(params: CreateBaseMenuProps) {
LOWcode/ui/popover/src/Popover.tsx613function RepropagateParentContexts({
LOWcode/ui/dismissable/types/Dismissable.d.ts29export declare function useDismissableLayersAbove(ref: React.RefObject<HTMLElement | null>): number;
LOWcode/ui/dismissable/types/Dismissable.native.d.ts7export declare function useDismissableLayersAbove(_ref: React.RefObject<HTMLElement | null>): number;
LOWcode/ui/dismissable/src/Dismissable.tsx123export function useDismissableLayersAbove(ref: React.RefObject<HTMLElement | null>) {
LOWcode/ui/dismissable/src/Dismissable.tsx390 function handleAndDispatchPointerDownOutsideEvent() {
LOWcode/ui/dismissable/src/Dismissable.tsx390 function handleAndDispatchPointerDownOutsideEvent() {
LOWcode/ui/dismissable/src/Dismissable.tsx488function handleAndDispatchCustomEvent<E extends CustomEvent, OriginalEvent extends Event>(
LOWcode/ui/dismissable/src/Dismissable.native.tsx25export function useDismissableLayersAbove(
LOWcode/ui/radio-headless/types/useRadioGroup.d.ts94export declare function useRadioGroupItemIndicator(params: UseRadioGroupItemIndicatorParams): {
LOWcode/ui/radio-headless/src/useRadioGroup.tsx250export function useRadioGroupItemIndicator(params: UseRadioGroupItemIndicatorParams) {
LOWcode/ui/sheet/types/keyboardAvoidance.d.ts1export declare function getKeyboardOccludedHeight({ frameSize, isKeyboardVisible, keyboardHeight, screenSize, sheetY, }:
LOW…/ui/sheet/types/useSheetScrollViewGestures.native.d.ts14export declare function useSheetScrollViewGestures({ scrollBridge, hasScrollableContent, scrollEnabled, setScrollEnabled
LOWcode/ui/sheet/types/useKeyboardControllerSheet.d.ts17export declare function useKeyboardControllerSheet(options: KeyboardControllerSheetOptions): KeyboardControllerSheetResu
LOW…/ui/sheet/types/useKeyboardControllerSheet.native.d.ts12export declare function useKeyboardControllerSheet(options: KeyboardControllerSheetOptions): KeyboardControllerSheetResu
LOWcode/ui/sheet/types/useSheetScrollViewGestures.d.ts10export declare function useSheetScrollViewGestures({ scrollRef, scrollBridge, hasScrollableContent, }: UseSheetScrollVie
LOWcode/ui/sheet/types/webViewport.d.ts24export declare function getStableLayoutViewportHeight(): number;
LOWcode/ui/sheet/src/keyboardAvoidance.ts1export function getKeyboardOccludedHeight({
LOWcode/ui/sheet/src/useSheetScrollViewGestures.native.ts29export function useSheetScrollViewGestures({
LOWcode/ui/sheet/src/useKeyboardControllerSheet.native.ts31export function useKeyboardControllerSheet(
LOWcode/ui/sheet/src/useSheetScrollViewGestures.ts24export function useSheetScrollViewGestures({
LOWcode/ui/sheet/src/SheetImplementationCustom.tsx79 function SheetImplementationCustom(props, forwardedRef) {
LOWcode/ui/sheet/src/webViewport.ts35export function getStableLayoutViewportHeight(): number {
LOWcode/ui/sheet/src/useKeyboardControllerSheet.ts29export function useKeyboardControllerSheet(
LOWcode/core/theme-builder/src/createThemes.ts502function coerceSimplePaletteToSchemePalette(def: Palette) {
LOWcode/core/core-test/buttonDisabledHooks.native.test.tsx73function resetGestureHandlerFreeze() {
LOW…de/core/core-test/gestureHandlerFreeze.native.test.tsx13function resetGestureHandlerFreeze() {
LOWcode/core/core/types/createOptimizedView.native.d.ts14export declare function getAccessibilityRoleFromRole(role: any): "alert" | "button" | "checkbox" | "combobox" | "grid" |
LOWcode/core/core/src/index.tsx46function freezeGestureHandlerEnabledMode() {
LOWcode/core/core/src/createOptimizedView.native.tsx146export function getAccessibilityRoleFromRole(role) {
LOWcode/core/native/types/keyboardControllerState.d.ts3export declare function isKeyboardControllerEnabled(): boolean;
LOWcode/core/native/types/keyboardControllerState.d.ts4export declare function getKeyboardControllerState(): KeyboardControllerState;
LOWcode/core/native/types/keyboardControllerState.d.ts5export declare function setKeyboardControllerState(updates: Partial<KeyboardControllerState>): void;
LOWcode/core/native/types/gestureState.d.ts2export declare function canChangeGestureHandlerEnabled(nextEnabled: boolean, source: string): boolean;
LOWcode/core/native/types/gestureState.d.ts26export declare function claimExternalPressOwnership(debugName?: string | null): ExternalPressOwnershipToken;
LOWcode/core/native/types/gestureState.d.ts27export declare function releaseExternalPressOwnership(token: ExternalPressOwnershipToken | null | undefined, debugName?:
LOWcode/core/native/src/keyboardControllerState.ts17export function isKeyboardControllerEnabled(): boolean {
LOWcode/core/native/src/keyboardControllerState.ts21export function getKeyboardControllerState(): KeyboardControllerState {
LOWcode/core/native/src/keyboardControllerState.ts25export function setKeyboardControllerState(
LOWcode/core/native/src/gestureState.ts20function getGestureEnabledFreezeState(): GestureEnabledFreezeState {
LOWcode/core/native/src/gestureState.ts36function warnGestureEnabledMutationIgnored(source: string) {
LOWcode/core/native/src/gestureState.ts52export function canChangeGestureHandlerEnabled(
LOWcode/core/native/src/gestureState.ts167export function claimExternalPressOwnership(
LOWcode/core/native/src/gestureState.ts184export function releaseExternalPressOwnership(
LOW…de/core/web/types/hooks/doesRootSchemeMatchSystem.d.ts1export declare function doesRootSchemeMatchSystem(): boolean;
LOW…/web/types/hooks/doesRootSchemeMatchSystem.native.d.ts1export declare function doesRootSchemeMatchSystem(): boolean;
LOWcode/core/web/types/helpers/createDesignSystem.d.ts6declare function getFontPropertyDeclarations(fontParsed: any, tokenKey?: string): string[];
LOWcode/core/web/types/helpers/pseudoTransitions.d.ts24export declare function resolveEffectivePseudoTransition(prev: PseudoState | undefined, next: TamaguiComponentState, pse
LOWcode/core/web/types/helpers/propMapper.d.ts4export declare function getFontFamilyFromNameOrVariable(input: any, conf: TamaguiInternalConfig): string | undefined;
LOWcode/core/web/types/helpers/isActivePlatform.d.ts14export declare function getPlatformSpecificityBump(mediaKeyShort: string): number;
LOW…core/web/types/helpers/normalizeValueWithProperty.d.ts5export declare function normalizeValueWithProperty(value: any, property?: string): any;
LOWcode/core/web/src/createTamagui.ts39function shouldTokenCategoryHaveUnits(category: string): boolean {
189 more matches not shown…
Over-Commented Block169 hits · 169 pts
SeverityFileLineSnippet
LOWcode/ui/popper/src/Popper.tsx701 // ref callback: call refs.setFloating directly (no startTransition) so floating-ui's
LOWcode/ui/input/types/InputNativeProps.d.ts341//# sourceMappingURL=InputNativeProps.d.ts.map
LOWcode/ui/input/types/v1/TextArea.d.ts41//# sourceMappingURL=TextArea.d.ts.map
LOWcode/ui/toast/types/types.d.ts61//# sourceMappingURL=types.d.ts.map
LOWcode/ui/slider/src/Slider.tsx741// // Bubble value change to parents (e.g form change event)
LOWcode/ui/popover/src/useFloatingContext.tsx21// reference when the cursor enters a new trigger — but useEffect hasn't
LOWcode/ui/switch/types/createSwitch.d.ts141//# sourceMappingURL=createSwitch.d.ts.map
LOWcode/ui/select/src/BubbleSelect.tsx41 * won't work otherwise.
LOW…/ui/sheet/types/useSheetScrollViewGestures.native.d.ts21//# sourceMappingURL=useSheetScrollViewGestures.native.d.ts.map
LOWcode/ui/sheet/src/SheetImplementationCustom.tsx181 if (open && frameSize) {
LOWcode/ui/sheet/src/SheetImplementationCustom.tsx221 screenSize > 0
LOWcode/ui/sheet/src/SheetImplementationCustom.tsx281 },
LOWcode/ui/sheet/src/SheetImplementationCustom.tsx841 pauseKeyboardHandler,
LOWcode/ui/sheet/src/types.tsx121 isScrollablePositionLocked?: boolean
LOWcode/ui/sheet/src/helpers.tsx21
LOWcode/core/theme-builder/types/createThemes.d.ts141//# sourceMappingURL=createThemes.d.ts.map
LOWcode/core/theme-builder/src/ThemeBuilder.ts481// .addMasks({
LOWcode/core/theme-builder/src/ThemeBuilder.ts501// },
LOWcode/core/core-test/styledContextTokens.web.test.tsx161 // Pseudo style context override tests can be added when needed with proper
LOWcode/core/core-test/getSplitStyles.web.test.tsx461
LOWcode/core/core-test/getSplitStyles.web.test.tsx481 // let y: any[] = []
LOWcode/core/core-test/getSplitStyles.web.test.tsx501 // timed(
LOWcode/core/core-test/getSplitStyles.web.test.tsx521 // }
LOWcode/core/core-test/getSplitStyles.web.test.tsx541 // }
LOWcode/core/core-test/getSplitStyles.web.test.tsx561 // CustomText,
LOWcode/core/core-test/getSplitStyles.web.test.tsx581 // getSplitStylesStack(
LOWcode/core/core-test/View.web.test.tsx41 // expect(renderCount.current).toBe(1)
LOWcode/core/core-test/View.web.test.tsx61 // expect(renderCount.current).toBe(1)
LOWcode/core/core-test/getStylesAtomic.web.test.tsx141 }
LOWcode/core/core-test/getStylesAtomic.web.test.tsx161// console.log('end0', end0)
LOWcode/core/core-test/getStylesAtomic.web.test.tsx181// }
LOWcode/core/core/src/index.tsx221 },
LOWcode/core/core/src/index.tsx241// variants: {
LOWcode/core/core/src/index.tsx261
LOWcode/core/core/src/index.tsx281// name: 'Input',
LOWcode/core/core/src/index.tsx301// },
LOWcode/core/core/src/index.tsx321// borderWidth: 2,
LOWcode/core/core/src/index.tsx341// {
LOWcode/core/core/src/index.tsx361// },
LOWcode/core/native/src/gestureState.ts301 flags.pressInTimer = setTimeout(() => {
LOWcode/core/config-base/types/index.d.ts1//# sourceMappingURL=index.d.ts.map
LOWcode/core/config/types/animationsMotion.d.ts121//# sourceMappingURL=animationsMotion.d.ts.map
LOWcode/core/web/types/hooks/useProps.d.ts41//# sourceMappingURL=useProps.d.ts.map
LOWcode/core/web/src/styled.tsx421
LOWcode/core/web/src/styled.tsx441// pointerEvents: 'none',
LOWcode/core/web/src/styled.tsx461// name: 'SizableText',
LOWcode/core/web/src/styled.tsx481// userSelect: 'auto',
LOWcode/core/web/src/styled.tsx501// })
LOWcode/core/web/src/styled.tsx521// })
LOWcode/core/web/src/styled.tsx541
LOWcode/core/web/src/types.tsx2501
LOWcode/core/web/src/eventHandling.native.ts101 // inputs don't use gesture handler
LOWcode/core/web/src/eventHandling.native.ts281 // does not conflict with RNGH because the responder path goes through
LOWcode/core/web/src/helpers/getSplitStyles.tsx121 return key.replace('$group-', '$group-true-')
LOWcode/core/web/src/helpers/getSplitStyles.tsx521
LOWcode/core/web/src/helpers/getSplitStyles.tsx1181 }
LOWcode/core/web/src/helpers/getSplitStyles.tsx1801 )
LOWcode/core/theme-base/types/index.d.ts1//# sourceMappingURL=index.d.ts.map
LOWcode/core/animations-motion/src/createAnimations.tsx561 // animate(node, ...) that cancels the previous one — the DOM
LOWcode/core/cli/types/index.d.ts1#!/usr/bin/env node
109 more matches not shown…
Hallucination Indicators6 hits · 90 pts
SeverityFileLineSnippet
CRITICALcode/tamagui.dev/app/api/theme/open-graph+api.tsx52 const baseColors = theme.theme.palettes.base.anchors.map((c) =>
CRITICALcode/tamagui.dev/app/api/theme/open-graph+api.tsx55 const accentColors = theme.theme.palettes.accent.anchors.map((c) =>
CRITICALcode/tamagui.dev/app/api/theme/open-graph+api.tsx59 const baseColorsLight = theme.theme.palettes.base.anchors.map((c) =>
CRITICALcode/tamagui.dev/app/api/theme/open-graph+api.tsx62 const accentColorsLight = theme.theme.palettes.accent.anchors.map((c) =>
CRITICALcode/tamagui.dev/app/api/theme/open-graph+api.tsx65 const baseColorsDark = theme.theme.palettes.base.anchors.map((c) =>
CRITICALcode/tamagui.dev/app/api/theme/open-graph+api.tsx68 const accentColorsDark = theme.theme.palettes.accent.anchors.map((c) =>
Fake / Example Data28 hits · 28 pts
SeverityFileLineSnippet
LOWcode/tamagui.dev/features/mdx/codeExamples.tsx83 <Heading size={props.big ? 'large' : 'small'}>Lorem ipsum.</Heading>
LOWcode/tamagui.dev/features/mdx/codeExamples.tsx114 Lorem ipsum.
LOWcode/tamagui.dev/features/mdx/codeExamples.tsx180 Lorem ipsum.
LOWcode/tamagui.dev/features/mdx/codeExamples.tsx203 Lorem ipsum.
LOW…tamagui.dev/features/studio/theme/preview/AllTasks.tsx34 Lorem ipsum dolor sit amet consectetur adipisicing elit. Illum amet
LOW…tamagui.dev/features/studio/theme/preview/AllTasks.tsx34 Lorem ipsum dolor sit amet consectetur adipisicing elit. Illum amet
LOW…tamagui.dev/features/studio/theme/preview/AllTasks.tsx47 Lorem ipsum dolor sit amet consectetur adipisicing elit. Illum amet
LOW…tamagui.dev/features/studio/theme/preview/AllTasks.tsx47 Lorem ipsum dolor sit amet consectetur adipisicing elit. Illum amet
LOW…tamagui.dev/features/studio/theme/preview/AllTasks.tsx60 Lorem ipsum dolor sit amet consectetur adipisicing elit. Illum amet
LOW…tamagui.dev/features/studio/theme/preview/AllTasks.tsx60 Lorem ipsum dolor sit amet consectetur adipisicing elit. Illum amet
LOWcode/kitchen-sink/src/Sandbox.tsx17 'Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed do eiusmod tempor incididunt ut labore et dolore magna a
LOWcode/kitchen-sink/src/Sandbox.tsx17 'Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed do eiusmod tempor incididunt ut labore et dolore magna a
LOWcode/kitchen-sink/src/usecases/RemoveScrollCase.tsx25 Filler paragraph {i + 1}. Lorem ipsum dolor sit amet, consectetur adipiscing
LOWcode/kitchen-sink/src/usecases/RemoveScrollCase.tsx25 Filler paragraph {i + 1}. Lorem ipsum dolor sit amet, consectetur adipiscing
LOWcode/kitchen-sink/src/usecases/SheetScrollLockCase.tsx27 Scroll down to find the sheet buttons. Lorem ipsum dolor sit amet, consectetur
LOWcode/kitchen-sink/src/usecases/SheetScrollLockCase.tsx27 Scroll down to find the sheet buttons. Lorem ipsum dolor sit amet, consectetur
LOWcode/kitchen-sink/src/usecases/SheetScrollLockCase.tsx39 Body content paragraph {i + 1}. Lorem ipsum dolor sit amet, consectetur
LOWcode/kitchen-sink/src/usecases/SheetScrollLockCase.tsx39 Body content paragraph {i + 1}. Lorem ipsum dolor sit amet, consectetur
LOWcode/kitchen-sink/src/usecases/SheetScrollLockCase.tsx152 ScrollView paragraph {i + 1}. Lorem ipsum dolor sit amet, consectetur
LOWcode/kitchen-sink/src/usecases/SheetScrollLockCase.tsx152 ScrollView paragraph {i + 1}. Lorem ipsum dolor sit amet, consectetur
LOW…e/kitchen-sink/src/usecases/SheetSnapPointsFitCase.tsx402 <Paragraph>Row {i + 1} — Lorem ipsum dolor sit amet.</Paragraph>
LOW…e/kitchen-sink/src/usecases/SheetSnapPointsFitCase.tsx402 <Paragraph>Row {i + 1} — Lorem ipsum dolor sit amet.</Paragraph>
LOWcode/kitchen-sink/src/usecases/OverlayStyled.tsx38 <MyAlert.Description>Lorem ipsum dolor sit amet</MyAlert.Description>
LOWcode/kitchen-sink/src/usecases/OverlayStyled.tsx38 <MyAlert.Description>Lorem ipsum dolor sit amet</MyAlert.Description>
LOWcode/kitchen-sink/src/usecases/OverlayStyled.tsx58 <MyAlert.Description>Lorem ipsum dolor sit amet</MyAlert.Description>
LOWcode/kitchen-sink/src/usecases/OverlayStyled.tsx58 <MyAlert.Description>Lorem ipsum dolor sit amet</MyAlert.Description>
LOWcode/kitchen-sink/src/usecases/Example.tsx8 {/* <Heading size={props.big ? 'large' : 'small'}>Lorem ipsum dolor.</Heading> */}
LOWcode/kitchen-sink/src/usecases/CodeExamplesInput.tsx6 Lorem ipsum dolor.
Decorative Section Separators4 hits · 12 pts
SeverityFileLineSnippet
MEDIUM.github/workflows/test-native.yml23 # ─────────────────────────────────────────────────────────────────────────────
MEDIUM.github/workflows/test-native.yml25 # ─────────────────────────────────────────────────────────────────────────────
MEDIUM.github/workflows/test-native.yml234 # ─────────────────────────────────────────────────────────────────────────────
MEDIUM.github/workflows/test-native.yml236 # ─────────────────────────────────────────────────────────────────────────────
AI Slop Vocabulary3 hits · 9 pts
SeverityFileLineSnippet
MEDIUMcode/ui/sheet/src/useGestureHandlerPan.tsx199 // This allows seamless handoffs between pan and scroll
MEDIUM.github/workflows/test-native.yml606 # More robust screen unlock and focus sequence
MEDIUM.github/scripts/run-maestro-flows.sh4# fails. the previous harness re-ran the WHOLE suite on any failure and only
Verbosity Indicators5 hits · 8 pts
SeverityFileLineSnippet
LOWcode/ui/create-menu/src/createBaseMenu.tsx569 // For submenus, we need to check if the root menu is still open
LOWcode/packages/native-ci/src/runner.ts42 // Step 1: Generate fingerprint
LOWcode/packages/native-ci/src/runner.ts51 // Step 2: Check cache
LOWcode/packages/native-ci/src/runner.ts67 // Step 3: Run build
LOWcode/packages/native-ci/src/runner.ts81 // Step 4: Save cache
Synthetic Comment Markers1 hit · 8 pts
SeverityFileLineSnippet
HIGHcode/tamagui.dev/app/api/projects+api.ts97 // Basic validation (loose as requested)
Example Usage Blocks1 hit · 2 pts
SeverityFileLineSnippet
LOWcode/kitchen-sink/run-detox.sh5# Usage:
Overly Generic Function Names1 hit · 1 pts
SeverityFileLineSnippet
LOWcode/starters/remix/app/entry.server.tsx6export default function handleRequest(