appbaseio / appbaseio/reactivesearch
refactor: SearchBox.js is 2692 lines — extract subcomponents for maintainability
- Lenguaje dominante
- JavaScript
- Estrellas
- 4.9k
- Forks
- 478
- Métricas de merge de PR
- Sin PR fusionados en 30 d
Descripción
## Problem
`packages/web/src/components/search/SearchBox.js` is **2,692 lines** handling at least 6 distinct responsibilities:
1. Search input management (value, focus, blur, keyboard)
2. Suggestion rendering (8+ types: popular, recent, FAQ, featured, document, index, endpoint, predictive)
3. AI Answer mode (full chat UI with session management)
4. Voice/mic input
5. Image search with camera
6. URL param sync
The render method alone spans hundreds of lines with deeply nested ternaries.
## Suggested Fix
Extract these as additive subcomponents (non-breaking, each can be a separate PR):
1. **`AISection.js`** — The entire AI answer screen (~L1870-1988)
2. **`SuggestionsSection.js`** — All 8 suggestion types rendering (~L1990-2180)
3. **`SearchInput.js`** — The input element with mic, camera, and autofill addons
Each extraction is verifiable by existing snapshot tests since the composite output is unchanged.
## Severity
High — maintainability bottleneck
Guía de contribución
Línea de trabajo
Start by reading packages/web/src/components/search/SearchBox.js and reviewing the existing snapshot tests. Work on one suggested extraction at a time—AISection.js, SuggestionsSection.js, or SearchInput.js—using the indicated responsibilities and line ranges as boundaries. Done means the composite output remains unchanged and the snapshot tests still pass.
Escrito por el modelo de indexación a partir del texto del issue.
Evaluación
- Stack tecnológico
- javascript, react
- Área
- frontend, search
- Tipo de issue
- Refactorización
- Dificultad
- 4/5
- Tiempo estimado
- 3-5 días
- Estado de actividad
- Tranquilo
- Claridad
- Bastante claro
- Aptitud para principiantes
- 55/100