요약
ElementaryUI는 SwiftUI와 비슷한 문법으로 쓴 Swift 앱을 브라우저에서 실행하는 프레임워크입니다.
ElementaryUI는 WebAssembly(브라우저에서 실행되는 바이너리 형식)로 Swift 코드를 돌리는 오픈소스 웹 UI 프레임워크입니다. 작성자는 HN 댓글에서 Swift로 웹사이트를 만들 수 있는지 시험해 보려고 시작했다고 밝혔습니다.
왜 중요한가
- 웹 앱까지 Swift 언어와 도구 하나로 만들려는 개발자에게 생태계 안의 선택지가 생깁니다.
- kB 규모 번들을 내세우지만, 작성자도 번들 크기와 wasm 모듈 분할을 아직 풀 과제로 꼽았습니다.
핵심 내용
- SwiftUI와 비슷한 API로 화면을 선언하고,
@State,@Environment,@Reactive로 상태를 자동 관리합니다. - Embedded Swift(작은 환경용 경량 Swift)를 지원해 wasm 번들이 MB가 아닌 kB 규모라고 설명합니다.
- CSS 기반 애니메이션 시스템에 자동 FLIP 전환(요소 위치 변화를 부드럽게 잇는 기법)을 갖췄습니다.
- Vite 기반 개발 서버로 핫 리로드(코드를 고치면 화면에 바로 반영)를 지원합니다.
- 애플과 제휴하거나 애플의 승인을 받은 프로젝트는 아니라고 밝혔습니다.
HN 반응
- TypeScript가 있는데 왜 필요하냐는 물음에 앱과 로직을 공유할 수 있다는 답과 언어를 통일할 수 있다는 답이 나왔습니다.
- 애플 의존을 걱정하는 의견이 있었고, 작성자는 애플이 언어 개발을 공개적으로 지원해 왔다며 괜찮을 것이라고 답했습니다.
이제 18년 된 Cappuccino 프로젝트가 떠오르네요 https://www.cappuccino.dev/
놀랍게도 아직 살아 있는 프로젝트예요.
마지막 릴리스와 블로그 글이 2018년인데, 정말 살아 있는 건가요?
네! GitHub 저장소를 보면 최근 5일 안에 올라온 커밋이 있어요.
https://github.com/cappuccino/cappuccino/commits/main/
v2를 준비하느라 지금도 작업이 아주 많이 진행되고 있어요.
그걸로 만든 Keynote 웹 버전은 정말 대단했어요.
저는 인터페이스 빌더에 20달러를 냈는데 끝내 받지 못했어요.
브라우저에서 Swift를 쓰면 어떤 이점이 있는지 알 수 있게 벤치마크나 비교 자료가 있으면 흥미로울 것 같습니다. 더 빠른가요? 유지보수가 더 쉬운가요? 아니면 이 프로그래밍 언어에 대한 호감이 더 큰 이유인가요?
어쨌든 정말 멋진 작업입니다!
ElementaryUI 제작자입니다.
js framework benchmark에 elementaryui라는 이름으로 올라가 있으니, 현재 성능이 어느 정도인지 직접 확인하실 수 있습니다. https://krausest.github.io/js-framework-benchmark/current.html
저는 대부분의 용도에 "충분히 빠르게" 유지할 수 있다고 확신합니다. 번들 크기는 여전히 약점이고, wasm 모듈을 제대로 번들링하고 분할하는 일은 의지를 갖고 만들어 내야 하지만, 꽤 매끄러운 경험을 가로막을 장애물은 보이지 않습니다.
솔직히 처음엔 "나는 Swift가 좋은데, 이걸 어디에서나 쓸 수 있을까?" 하는 도전에 가까웠습니다. 하지만 최신 언어와 개발 환경 안에 온전히 머무를 수 있다는 실질적인 이점도 있습니다. 제 생각에 Swift는 아주 깔끔하고 강력한 언어라 이 분야에 잘 맞으니, 웹 프로젝트에서도 편하게 쓸 방법을 만들어 볼 만하다고 봤습니다.
좋네요, 자세한 설명과 답변 감사합니다! JS/TS를 좋아하는 사람들에게 Swift를 써 보라고 설득하기는 어렵겠지만, 해볼 만한 시도라고 생각해요 :D
재미있는 프로젝트네요. 곁가지 얘기지만, 애플은 Swift 컴파일러 좀 고쳐 주세요. 너무 느려요. 정말정말 느리다고요.
컴파일러 탓만은 아닌 것 같습니다. 타입 추론이 극도로 유연하다 보니 컴파일러가 해야 할 일이 많아집니다.
(예시는 https://www.swiftbysundell.com/basics/type-inference/ 에 있습니다)
조금씩, 적어도 일부 사람들에게는 그리운 브라우저 플러그인이 돌아오고 있네요.
언젠가는 이런 일이 일어날 줄 알았어요. Swift는 Haskell 같은데, 더 근사하고 프로그래머 친화적이에요.
선택권이 있다면 저는 애플에 그렇게 가까이 다가가지 않겠어요. 애플은 언제든 방향을 틀 수 있잖아요. "Swift 새 버전은 99.99달러부터 시작합니다" 이런 식으로요. /s
ElementaryUI 제작자입니다(그래서 편향되어 있습니다).
그게 현실적인 위험이라는 데는 동의합니다. 다만 제 생각에 지금까지의 행보를 보면 "애플"다운 애플과 오픈소스를 하는 애플이 둘 다 공존할 수 있고, 아마 별문제 없을 겁니다.
긍정적인 면을 말하자면, 애플은 수많은 실제 인력을 투입해 이 언어와 도구를 발전시키고 있고, 대부분 탄탄한 커뮤니티 작업과 함께 공개적으로 진행합니다.
경제적 맥락을 무시하고 계시네요. 언어는 진공 속에 존재하지 않아요.
무료 대안이 늘 있으니 애플은 절대 그러지 않을 거예요. Scala와 Kotlin이 둘 다 아주 가까이 있잖아요.
Swift 새 버전은 진정한 크로스 플랫폼입니다. iOS, iPadOS, MacOS, HomeOS, VisionOS, WatchOS는 물론 BodyOS, BrainOS, iThinkOS까지 지원합니다.
개발자가 미래에 집중할 수 있도록 Swift 9부터는 리눅스, 윈도, 웹 같은 구식 플랫폼 지원을 중단합니다.
/s
사실 저는 Swift 개발자예요. 훌륭한 언어이긴 하지만 저도 애플 생태계에 푹 빠져 사는 사람이라, 그 바깥에서는 선택하지 않을 거예요.
jQuery에 jsx와 ember나 angular를 섞어 놓은 것 같아 보이네요.
데모가 불안정해서, 최신 Firefox에서는 가끔 하이드레이션(hydration)에 실패해요.
왜 만들었는지 이유나 동기가 있나요?
ElementaryUI 제작자입니다.
솔직한 처음 동기는 대부분 "웹사이트를 Swift로 만들 수 있을까?"였습니다. 하지만 그 밑바닥에는 제 개발 작업 전부를 유능하고 현대적인 하나의 언어(그리고 그 생태계와 도구)로 해결하고 싶다는 마음이 있습니다. 어떤 종류의 웹 앱이든 만들 수 있는, 생태계 안의 네이티브 해법도 거기에 포함됩니다. 누군가는 만들어야 하니까요...
최근 이 내용을 swift.org 블로그에 조금 썼습니다. https://www.swift.org/blog/whats-new-in-swift-august-2026/
멋져요!
이미 TypeScript가 있는데, 이게 무슨 쓸모가 있는지 모르겠어요.
Swift가 훌륭하니까요, 아마도요! 좀 더 진지하게 말하면, iOS·안드로이드 앱과 로직을 공유하려는 목적이 아닐까 싶어요.
그 사람들이 Swift를 Rust로 다시 쓰는 날을 기다려 보세요.
Rust보다는 Swift를 Swift로 다시 쓸 가능성이 더 커요(사실 이미 조금은 그렇게 했어요).
Swift는 그다지 좋지 않아요. 한 세대의 개발자들이 LLM에게 자기 앱을 ObjC와 UIKit으로 다시 쓰게 한 뒤, 최적화를 그리 깊게 파고들지도 않았는데 성능이 3배 좋아지는 걸 보면서 이 사실을 서서히 깨닫고 있어요.
제대로 작성하면 Swift가 Rust를 이길 수 있어요[1]. (물론 Rust 프로젝트도 Swift 프로젝트가 쓴 것과 같은 최적화 기법을 쓰면 따라잡을 수 있겠지만, 제 요점은 성능 면에서 Swift가 Rust에 꿇릴 게 없다는 거예요.)
Swift의 철학은 "먼저 쓰기 쉽게 하되, 성능이 필요하면 더 낮은 수준으로 내려갈 수 있다"예요. Rust의 철학은 그 반대에 가깝고요. 저는 Swift의 철학도 타당하고 Rust의 철학보다 더 흥미롭다고 생각하지만, 취향은 각자 다른 법이죠.
ObjC/UIKit으로 옮겼다는 얘기는, 이런 주장을 하실 거면 근거 자료를 올려 주세요. SwiftUI에서 UIKit으로 옮기면 성능이 좋아질 수는 있겠지만, 그건 Swift 자체와는 아무 상관이 없어요. 제가 알기로 SwiftUI는 사실 대부분 C++로 작성되어 있고요.
[1] https://news.ycombinator.com/item?id=50178103