피드로 돌아가기
InfoQInfoQ
Frontend

First-Class Async 도입 및 Deterministic Batching 기반의 반응형 모델 혁신

SolidJS 2.0 Beta: First-Class Async, Reworked Suspense and Deterministic Batching

Daniel Curtis2026년 5월 15일4advanced

Context

Virtual DOM 없는 Fine-grained Reactivity 모델을 지향하나, 비동기 처리 시 수동 오케스트레이션 필요로 인한 개발 복잡도 증가. 기존 Suspense의 UI 제거 방식이 사용자 경험의 불연속성을 초래하는 아키텍처적 한계 존재.

Technical Solution

  • Promise를 직접 처리하는 First-class Async 체계 구축을 통한 Reactive Graph의 자동 중단 및 재개 설계
  • initial readiness 전용 Loading과 isPending() 함수 분리를 통한 UI 안정성 확보 및 상태 표현 방식 개선
  • action()과 createOptimisticStore 결합으로 Optimistic Update 및 Server Write의 단일 흐름 통합
  • Microtask-batching 기반의 Deterministic Scheduling 도입으로 flush() 호출 전까지 Read 업데이트를 지연시키는 일관된 상태 전이 구현
  • createEffect의 Compute 및 Apply 단계 분리를 통한 반응형 로직의 경계 명확화 및 라이브러리 내부 복잡도 흡수

- 비동기 상태 관리 시 UI를 완전히 제거하는 대신 Pending 상태를 별도 primitive로 분리하여 UX 저하 방지 - 상태 업데이트의 일관성을 위해 즉각적 반영보다 Deterministic Batching과 같은 스케줄링 모델 검토 - 복잡한 Side Effect를 줄이기 위해 자동 의존성 추적보다 명시적인 단계 분리 API 도입 고려

원문 읽기