---
title: "Hologram v0.8.0 — Elixir에서 JavaScript를 직접 호출할 수 있게 됨"
published: 2026-03-11T22:42:03.000Z
canonical: https://jeff.news/article/447
---
# Hologram v0.8.0 — Elixir에서 JavaScript를 직접 호출할 수 있게 됨

Elixir 풀스택 프레임워크 Hologram v0.8.0이 JS 인터롭을 추가. Elixir에서 JS 함수 호출, npm 패키지, Web API, Web Components를 직접 사용 가능. Promise는 Elixir Task로 변환됨.

- Elixir 풀스택 프레임워크 Hologram이 v0.8.0에서 프로젝트 시작 이래 가장 많이 요청된 기능인 **JS 인터롭**을 추가함
- Elixir 코드에서 JS 함수 호출, npm 패키지 사용, Web API 접근, Web Components 활용이 전부 가능해짐. 클라이언트 사이드에서 레이턴시 없이 즉시 실행됨
- API 구성: `JS.call`로 함수 호출, `JS.get/set/delete`로 프로퍼티 접근, `JS.new`로 클래스 인스턴스 생성, `JS.eval`이나 `~JS` 시길로 raw JS 실행 가능
- Elixir-JS 경계에서 값이 자동으로 박싱/언박싱됨. JS 네이티브 타입(객체 참조, 함수 등)은 `NativeValue` 구조체로 감싸져서 오파크하게 처리됨
- **JS Promise가 Elixir Task로 변환**돼서 `Task.await/1`으로 결과를 받을 수 있음. fetch API 같은 비동기 작업이 Elixir 시맨틱스에 자연스럽게 통합됨
- Web Components도 템플릿에서 바로 사용 가능. 커스텀 HTML 태그를 파서가 인식함
- 릴리스 규모: 270커밋, 162파일 변경. JS 인터롭 PR 하나가 150파일에 걸쳐 7,000줄 이상
- **Breaking change**: `~JS` 시길이 더 이상 자동 임포트되지 않으므로 `use Hologram.JS`를 명시적으로 추가해야 함
- 향후 계획으로 Elixir의 프로세스 모델을 클라이언트 사이드로 포팅할 예정. 이번 비동기 인프라가 그 첫 단계임

[원문 보기](https://hologram.page/blog/hologram-v0-8-0-javascript-interop)

## 핵심 포인트

- JS.call, JS.get/set, JS.new, ~JS 시길 등으로 Elixir에서 JS 직접 호출 가능
- 값 자동 박싱/언박싱, JS Promise가 Elixir Task로 변환
- Web Components 템플릿 지원 추가
- 270커밋, JS 인터롭 PR만 7000줄 이상
- Breaking change: ~JS 시길에 use Hologram.JS 명시 필요

## 인사이트

JS Promise를 Elixir Task로 매핑한 설계가 영리함. 궁극적으로 Elixir 프로세스 모델을 브라우저로 가져오겠다는 로드맵의 첫 걸음이라는 점에서 방향성이 명확함.
