모바일 앱 개발자들이 리액트 네이티브(React Native)를 이용해 대규모 언어모델(LLM) 기반의 채팅 애플리케이션을 만들 때, LLM 토큰(token)이 실시간으로 스트리밍되면서 UI가 버벅거리는 현상, 즉 '쟁크(jank)'를 겪는 경우가 많습니다. 이는 사용자 경험을 크게 저해하는 요소로, 개발자들이 직접 복잡한 UI 로직을 구현하는 데 많은 시간을 소모하게 만들었습니다.
이 문제를 해결하기 위해, 서버 전송 이벤트(Server-Sent Events, SSE)를 활용한 효율적인 데이터 전송 방식과 리액트 네이티브의 플랫리스트(FlatList) 컴포넌트를 최적화하는 방법이 제안되었습니다. SSE는 서버에서 클라이언트로 단방향 스트리밍을 지원하여 LLM 응답 토큰을 실시간으로 전달하는 데 적합하며, 플랫리스트는 가상화(virtualization)를 통해 대량의 데이터를 효율적으로 렌더링하여 UI 끊김을 최소화합니다. 특히, `onEndReached`와 같은 플랫리스트의 기능을 활용해 새로운 메시지가 추가될 때마다 스크롤 위치를 자동으로 조정하여 사용자에게 자연스러운 채팅 경험을 제공할 수 있습니다.
이러한 접근 방식은 개발자들이 LLM 기반 앱의 핵심 기능 구현에 더 집중할 수 있도록 돕고, 사용자들은 더욱 부드럽고 반응성 높은 AI 채팅 경험을 누릴 수 있게 합니다. 수작업으로 복잡한 채팅 UI를 구현하는 대신, 검증된 패턴을 활용함으로써 개발 시간과 비용을 절감하고 앱의 품질을 향상시킬 수 있다는 점에서 중요한 의미를 가집니다. 이는 모바일 AI 앱 시장의 성장과 함께 더욱 중요해질 개발 효율성 문제를 해결하는 데 기여할 것입니다.