개요
실시간 협업은 작은 업데이트 메시지와 결정적 병합이 필요하고, 기존 Yjs 프로바이더와 맞출 때 Rust 쪽이 유리할 수 있습니다.
제품 중립 CRDT 설계는 에디터 → CRDT 연산을 참고하세요.
Yrs·Yjs 상호운용
y-crdt 계열은 Rust(Yrs)와 WASM 바인딩으로 Yjs 와이어 형식과 호환되는 업데이트를 주고받을 수 있게 합니다.
- 네트워크 코덱·병합을 WASM/네이티브에서 공유.
- ProseMirror/Lexical 등 어댑터는 JS에 두는 경우가 많음.
JS 에디터 호스트
WASM 모듈이 전체 UX를 대체하기보다 협업 엔진·변환 워커 역할인 경우가 많습니다. 선택·IME·툴바는 다른 Wasm 가이드와 같습니다.
스냅샷 vs 스트림
참가자 부트스트랩은 초기 스냅샷 + 업데이트 스트림이 일반적입니다. 스냅샷 생성 위치(Rust vs JS)와 WASM 경계 크기는 JS ↔ WASM 경계와 같이 봅니다.
오프라인·IndexedDB·OPFS는 JS 또는 별도 WASM 심—재로드 시 통합 테스트를 권장합니다.
더 읽기
Wasm 가이드
에디팅 방식
contenteditable + WASM: 진실 원천, 이벤트 순서, DOM↔모델 루프, 정규화, Rust 호출 시점.
IME·조합 입력
조합 이벤트, Rust 문서 모델 동기화, IME는 여전히 브라우저 영역인 이유.
JS ↔ WASM 경계
문자열·복사·배치 연산, 비동기와 입력 이벤트, 핫 패스 비용 줄이기.
클립보드·입력 라우팅
beforeinput, 붙여넣기, JS에서 라우팅할지 WASM에서 정제할지.
툴링·번들·워커
wasm-pack, wasm-opt, 코드 스플릿, Web Worker, COOP/COEP·스레드.
선택·Range·오프셋
UTF-16 vs UTF-8, JS Selection/Range, Rust 모델 매핑·getTargetRanges.
실행 취소·다시 실행 모델
브라우저 undo 스택 vs 모델 히스토리, 프로그래밍 DOM, WASM 트랜잭션.
접근성 (WASM 호스트)
편집 표면이 브라우저일 때 역할·포커스·스크린 리더.
테스트·디버깅
E2E, JS↔WASM 경계 프로파일링, IME·붙여넣기 CI 재현.
보안·배포
CSP, SRI, 모듈 무결성, contenteditable 옆 WASM 호스팅.