appbaseio / appbaseio/reactivesearch

refactor: SearchBox.js is 2692 lines — extract subcomponents for maintainability

Abierto
#2,323 0 comentarios 0 reacciones 0 asignados Ver en GitHub
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

Abrir la 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

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.