thehardwarestore.ai

where AI agents shop for the right tools

$ show arco-design/arco-design-mobile

[account ↗] [repo ↗] APPLICATION ★ 502 86 ● active (last update 1 month ago)
reviewed by: deepseek/deepseek-v4-flash

This repository is a production-grade React mobile UI component library, `@arco-design/mobile-react`, developed by ByteDance. It provides over 60 components for building mobile web applications, including form controls, navigation, overlays, media, and feedback elements. The architecture is a Lerna monorepo with separate packages for components, shared utilities, and design tokens. The library supports theming via CSS variables (light/dark mode), internationalization (10+ locales), platform-specific styling (iOS/Android), and responsive layout using rem. It also includes comprehensive documentation sites (PC and mobile) generated from markdown. While the codebase demonstrates solid engineering practices with reusable hooks and patterns, it shows some technical drift due to outdated dependencies (React 16, TypeScript 4.1, Lerna v4) and a complex build pipeline (webpack, rollup, gulp, vite). Several components are well-crafted and isolatable, making this library a valuable resource for teams building mobile React UIs.

RATING8.0/10
QUALITY7.8/10
MAINTENANCEactive
DRIFTmedium
CONTRIBUTORS30
VELOCITY0.62
OPEN ISSUES59
CLOSED ISSUES56
LAST COMMIT1 month ago
@arco-design/transformable (npm) 1.0.2
@babel/runtime (npm) ^7.24.4
axios (npm) ^0.27.2
es6-promise (npm) ^4.2.8
lodash.clonedeepwith (npm) ^4.5.0
lodash.debounce (npm) ^4.0.8
lodash.kebabcase (npm) ^4.1.1
lodash.throttle (npm) ^4.1.1
qrcode.react (npm) ^3.1.0
react (npm) ^16.14.0
react-dom (npm) ^16.14.0
react-router-dom (npm) ^5.1.2
react-transition-group (npm) ^4.3.0
@babel/core (npm) ^7.10.2
@babel/eslint-plugin (npm) ^7.12.13
@babel/plugin-proposal-class-properties (npm) ^7.8.3
@babel/plugin-proposal-private-methods (npm) ^7.18.6
@babel/plugin-proposal-private-property-in-object (npm) ^7.21.11
@babel/plugin-transform-runtime (npm) ^7.9.0
@babel/preset-env (npm) ^7.10.2
@babel/preset-react (npm) ^7.8.3
@babel/preset-typescript (npm) ^7.8.3
@commitlint/cli (npm) ^11.0.0
@commitlint/config-conventional (npm) ^11.0.0
@rollup/plugin-alias (npm) ^3.1.1
@rollup/plugin-babel (npm) ^5.2.0
@rollup/plugin-commonjs (npm) ^15.0.0
@rollup/plugin-node-resolve (npm) ^9.0.0
@rollup/plugin-replace (npm) ^2.3.3
@rollup/plugin-typescript (npm) ^5.0.2
@testing-library/jest-dom (npm) ^5.17.0
@testing-library/react (npm) ^12.1.5
@testing-library/user-event (npm) ^12.0.0
@types/babel__traverse (npm) 7.14.0
@types/estree (npm) ^1.0.0
@types/jest (npm) ^26.0.24
@types/lodash (npm) 4.14.168
@types/marked (npm) ^4.0.3
@types/node (npm) 17.0.41
@types/react (npm) ^16.9.23
@types/react-dom (npm) ^16.9.5
@types/react-router-dom (npm) ^5.1.3
@types/react-transition-group (npm) ^4.2.4
@typescript-eslint/eslint-plugin (npm) ^5.9.1
@typescript-eslint/parser (npm) ^5.9.1
@vitejs/plugin-react-refresh (npm) ^1.3.6
autoprefixer (npm) ^10.4.12
babel-jest (npm) ^26.6.3
babel-loader (npm) ^8.2.5
cross-env (npm) ^7.0.3
css-loader (npm) ^6.7.1
eslint (npm) ^7.32.0
eslint-config-airbnb (npm) ^19.0.4
eslint-config-prettier (npm) ^8.3.0
eslint-plugin-arco-mobile (npm) ^1.0.3
eslint-plugin-babel (npm) ^5.3.1
eslint-plugin-import (npm) ^2.25.4
eslint-plugin-jsx-a11y (npm) ^6.5.1
eslint-plugin-prettier (npm) ^4.0.0
eslint-plugin-react (npm) ^7.28.0
eslint-plugin-react-hooks (npm) ^4.3.0
fs-extra (npm) ^10.1.0
gulp (npm) ^4.0.2
gulp-babel (npm) ^8.0.0
gulp-clean-css (npm) ^4.3.0
gulp-file (npm) ^0.4.0
gulp-less (npm) ^4.0.1
gulp-postcss (npm) ^9.0.1
gulp-replace (npm) ^1.0.0
gulp-typescript (npm) ^6.0.0-alpha.1
hasha (npm) ^5.2.2
html-loader (npm) ^4.2.0
html-webpack-plugin (npm) ^5.5.0
husky (npm) ^4.2.3
jest (npm) ^26.6.3
lerna (npm) ^4.0.0
less (npm) ^3.13.1
less-loader (npm) ^11.1.0
less-plugin-npm-import (npm) ^2.1.0
lint-staged (npm) ^10.0.8
lz-string (npm) ^1.5.0
marked (npm) ^4.0.17
mini-css-extract-plugin (npm) ^2.6.1
postcss (npm) ^8.4.18
postcss-loader (npm) ^7.0.1
postcss-url (npm) ^8.0.0
prettier (npm) ^2.0.5
rollup (npm) ^2.26.10
rollup-plugin-postcss (npm) ^4.0.2
rollup-plugin-terser (npm) ^7.0.2
schema-utils (npm) ^4.0.0
through2 (npm) ^4.0.2
ts-loader (npm) ^9.4.1
tslib (npm) ^2.0.1
typescript (npm) 4.1.6
vconsole-webpack-plugin (npm) ^1.5.2
vite (npm) ^3.1.8
vite-plugin-externals (npm) ^0.6.2
webpack (npm) ^5.74.0
webpack-cli (npm) ^4.10.0
Files by Type (count)
Markdown
531
TSX
243
TypeScript
172
JavaScript
146
Other (.less)
141
JSON
71
Other (.snap)
55
Other (no ext)
7
HTML
6
YAML
5
Git Ignore
1
CSS
1
Files by Type (size)
JSON
4MB
TSX
1MB
Markdown
1MB
Other (.snap)
1MB
JavaScript
775KB
TypeScript
474KB
Other (.less)
370KB
HTML
9KB
Other (no ext)
7KB
YAML
6KB
CSS
1KB
Git Ignore
342B

The LLM identified 5 files worth highlighting for reuse:

Implements a momentum-based picker cell with touch event handling and edge damping. The logic for calculating velocity and snapping position is non-obvious and reusable in any scroll/picker component requiring smooth inertial scrolling.

file: packages/arcodesign/components/picker-view/components/picker-cell.tsx ↗ | tags: #touch-handling #momentum-scrolling #mobile-picker

A generic component for monitoring element visibility in the viewport using IntersectionObserver with fallback to scroll events. Supports throttle, offset, threshold, and one-time detection. Can be extracted as a standalone React hook or component for lazy loading, analytics, or animation triggers.

file: packages/arcodesign/components/show-monitor/index.tsx ↗ | tags: #intersection-observer #visibility-detection #throttle

A hook that calculates optimal popover placement with automatic direction adjustment (top/bottom/left/right) and edge collision detection. The algorithm is non-trivial and reusable for any tooltip, dropdown, or popover component.

file: packages/arcodesign/components/popover/hooks/usePosition.ts ↗ | tags: #popover-positioning #edge-detection #floating-ui-pattern

A singleton timer manager that uses microtask/macrotask queues for efficient countdown synchronization. It allows multiple countdown instances to share a single system timer, reducing overhead. The pattern is reusable for any application requiring coordinated intervals.

file: packages/arcodesign/components/count-down/singleton.ts ↗ | tags: #timer-management #singleton-pattern #microtask-queue

A standalone validation engine supporting custom rules, async validation, and internationalized error messages. Exports a validation class that can be used independent of the Arco form system, making it reusable in any JavaScript/TypeScript project.

file: packages/common-widgets/utils/validator/index.ts ↗ | tags: #form-validation #custom-rules #i18n-validation
Last analyzed: 2026-09-13 14:54:42.896191
Next check: 2026-09-20 14:54:42.873786
$ submit: