브라우저가 새 캔버스가 된다: WASM·AI·렌더링 수학이 프론트엔드 경험을 다시 쓰는 법

브라우저가 새 캔버스가 된다: WASM·AI·렌더링 수학이 프론트엔드 경험을 다시 쓰는 법

Liquid Glass 물리 엔진과 AI 피드백 분류—두 실험이 동시에 가리키는 건 브라우저가 이미 새로운 창작 플랫폼이 됐다는 사실이다.

WebAssembly Liquid Glass AI 피드백 분류 pgvector 프론트엔드 렌더링 임베딩 React WASM 사용자 경험
광고

프론트엔드 개발자에게 브라우저는 오랫동안 '제약의 공간'이었다. CSS로 흉내 낼 수 있는 시각 효과에는 한계가 있었고, 백엔드 로직은 서버 몫이었으며, 사용자 데이터 분석은 별도 팀의 영역이었다. 그런데 최근 dev.to에 올라온 두 편의 글을 나란히 읽고 나서 그 전제가 빠르게 무너지고 있다는 걸 실감했다. 하나는 Rust로 짠 WASM 광학 엔진을 React 컴포넌트에 집어넣은 이야기고, 다른 하나는 188줄의 TypeScript로 사용자 피드백 자동 분류 파이프라인을 만든 이야기다. 기술 스택은 전혀 다르지만 두 사례가 가리키는 방향은 같다. 브라우저와 그 주변 생태계가 이미 새로운 창작·자동화 플랫폼으로 진화했다는 것.

렌더링의 물리학: CSS blur를 넘어선 굴절 효과

react-flexi-window v2.0이 흥미로운 건 단순히 '예쁜 유리 효과'를 구현해서가 아니다. 이 프로젝트가 택한 접근 방식 자체가 프론트엔드 렌더링의 가능성을 다시 그린다. 개발자 Nathraktim은 backdrop-filter: blur()가 픽셀을 '흐리게' 만들 뿐 실제로 '굴절'시키지 않는다는 문제 인식에서 출발했다. 진짜 유리처럼 빛이 꺾이는 효과를 내려면 픽셀 단위의 변위 맵이 필요하고, 그 계산을 자바스크립트로 돌리기엔 성능이 너무 아깝다.

해법은 Rust로 스넬의 법칙(Snell's Law) 굴절 연산을 구현하고, 이를 no_std + 무할당 WASM 바이너리로 컴파일해 base64로 JS 번들에 인라인한 것이다. 컴파일 결과물은 고작 6KB. 이 바이너리가 변위 맵과 스페큘러 맵을 계산하면, 9-슬라이스 렌더링으로 분할된 결과가 SVG 필터 파이프라인을 통해 배경 픽셀을 실시간으로 왜곡한다. 전체 패키지 크기는 gzip 기준 14KB, 외부 의존성은 0이다. useLayoutEffect 내부에서 브라우저 API를 호출하기 때문에 Next.js SSR 환경에서도 하이드레이션 오류 없이 작동한다.

프로덕트 관점에서 이 접근이 의미 있는 이유는 하나다. 지금까지 '물리 기반 렌더링'은 게임 엔진이나 네이티브 앱의 영역이었다. WASM이 그 경계를 무너뜨리고 있다. 앞으로 Frosted Glass, Chromatic Aberration, Acrylic 같은 재질 시스템이 확장될수록, 프론트엔드 개발자는 디자이너가 시스템 UI에서만 쓸 수 있던 시각 언어를 웹에서 직접 구현하는 주체가 된다. 디자인-개발 협업의 문법이 바뀌는 지점이다.

AI가 피드백 더미에서 신호를 찾는 법

두 번째 사례는 렌더링이 아닌 데이터 파이프라인이지만, 프론트엔드 개발자가 직접 운영하는 프로덕트에서 AI를 어떻게 '사용자 경험 개선 루프'에 연결하는지를 보여준다는 점에서 함께 읽어야 한다. 'Lazy Developer EP.05'라는 시리즈로 공개된 이 글에서 개발자는 FeedMission이라는 서비스에 쌓이기 시작한 피드백을 손으로 분류하다 지쳐서 직접 파이프라인을 짰다.

핵심 설계는 세 층으로 이루어진다. Voyage AI로 피드백 텍스트를 1024차원 임베딩 벡터로 변환하고, Claude Haiku로 감성 점수를 병렬 산출한 뒤, pgvector 확장을 붙인 Supabase PostgreSQL에 저장한다. 코사인 유사도 0.85 이상이면 같은 클러스터로 묶고, 그 이하면 새 클러스터를 생성한다. 임계값 선정은 20개의 테스트 피드백으로 직접 실험해 도출했다. "Please add dark mode"와 "It hurts my eyes at night"는 단어를 전혀 공유하지 않지만 0.85 기준에서 같은 그룹으로 묶힌다.

구현 디테일 중 가장 인상적인 부분은 두 가지다. 첫째, after() 패턴을 활용해 피드백 제출 직후 사용자에게 응답을 먼저 반환하고 임베딩·클러스터링은 백그라운드에서 비동기 처리한다. 2초짜리 대기를 0으로 만드는 UX 선택이다. 둘째, 클러스터 우선순위를 투표 50% + 피드백 수 30% + 최신성 20% 공식으로 산출해 0~100 점수로 시각화한다. 어떤 피드백을 먼저 처리해야 하는지 의사결정 비용을 줄이는 프로덕트 설계다. 188줄의 clustering.ts 한 파일로 이 전체 파이프라인이 돌아간다.

두 사례가 공유하는 프레임

이 두 프로젝트는 표면적으로 전혀 다르다. 하나는 픽셀을 굴절시키는 물리 엔진이고, 다른 하나는 텍스트를 벡터로 변환하는 AI 파이프라인이다. 그러나 둘 다 같은 질문에서 출발한다. '지금 사용할 수 있는 브라우저·서버 기술의 최전선에서, 사용자가 느끼는 마찰을 어떻게 줄일 수 있는가?' WASM은 '유리 효과를 흉내 내야 하는' 렌더링 마찰을 없앴고, AI 임베딩은 '피드백을 손으로 읽어야 하는' 운영 마찰을 없앴다.

또 하나 공통점이 있다. 둘 다 AI 코딩 에이전트와 함께라면 훨씬 빠르게 프로토타입을 만들 수 있는 영역이라는 점이다. Rust WASM 모듈 스캐폴딩, SVG 필터 파이프라인 초안, pgvector 쿼리 템플릿, Claude 응답 파싱 방어 코드—이 모든 것이 Cursor나 Claude Code와 함께라면 탐색 비용이 극적으로 낮아진다. 복잡한 수학과 AI API 연동이 진입 장벽이 아니라 실험 재료가 되는 흐름이다.

프론트엔드 개발자가 쥐게 되는 새 레버

두 사례를 종합하면 지금 프론트엔드 개발자 앞에 놓인 레버는 세 가지다. 첫째, 렌더링 수학—WASM으로 브라우저에서 물리 기반 시각 효과를 14KB 안에 구현하는 능력. 둘째, AI 자동화 파이프라인—임베딩·벡터 DB·LLM을 조합해 반복적 운영 업무를 코드로 대체하는 능력. 셋째, 캡처 정확도—Playwright + Porter-Duff 배경 차감처럼, 브라우저가 '올바르게 렌더링하고 있는' 데이터를 정확하게 추출하는 능력(이건 별도 기사에서 다룬 투명 비디오 알파 문제가 보여준 교훈이다).

이 세 레버의 공통 전제는 하나다. 브라우저를 '화면을 그리는 곳'이 아니라 '물리 연산, AI 추론, 고품질 미디어 캡처가 가능한 런타임'으로 바라보는 시각 전환. AI 코딩 에이전트가 구현 속도를 높여주는 지금, 남은 차별점은 '무엇을 만들지'에 대한 프로덕트 감각과 '어떤 기술 조합이 가능한지'에 대한 가능성 지도다. 브라우저라는 캔버스는 이미 충분히 넓어졌다. 이제 그 위에 무엇을 그릴지 결정하는 게 진짜 질문이다.

출처

더 많은 AI 트렌드를 Seedora 앱에서 확인하세요