자바스크립트(JavaScript) 개발자들이 데스크톱 애플리케이션을 만들 때 겪는 가장 큰 고민 중 하나는 바로 앱의 크기입니다. 기존의 대표적인 프레임워크인 일렉트론(Electron)은 개발 편의성이 높지만, 크로미움(Chromium) 엔진과 노드(Node.js) 런타임을 포함하기 때문에 앱 용량이 수십에서 수백 메가바이트에 달하는 경우가 많았습니다. 이러한 문제를 해결하고자, 배포 크기를 약 6MB 수준으로 획기적으로 줄인 경량 데스크톱 앱 프레임워크 'tinyjs'가 새롭게 등장했습니다.
tinyjs는 일렉트론처럼 크로미움이나 노드(Node.js)를 앱에 직접 포함하지 않는 것이 특징입니다. 대신, 백엔드로는 경량 자바스크립트 런타임인 txiki.js를 사용하고, 프런트엔드 화면은 각 운영체제(OS)가 제공하는 웹뷰(WebView)를 활용합니다. 예를 들어, macOS에서는 웹킷(WebKit), 윈도우(Windows)에서는 웹뷰2(WebView2), 리눅스(Linux)에서는 웹킷GTK(WebKitGTK)를 사용하는 방식입니다. 이를 통해 개발자는 HTML, CSS, 자바스크립트로 UI를 만들 수 있으며, 리액트(React), 뷰(Vue), 스벨트(Svelte) 등 인기 프런트엔드 프레임워크와 타입스크립트(TypeScript) 템플릿도 지원합니다. 백엔드에서는 파일, 소켓, 프로세스 접근 및 FFI(Foreign Function Interface)를 통해 네이티브 기능과 연동할 수 있고, 내장 SQLite로 로컬 데이터 저장도 가능합니다. 또한, 네이티브 메뉴, 파일 대화상자, 알림, 드래그 앤 드롭 등 데스크톱 앱에 필요한 다양한 기능을 지원하며, HTTP 서버 없이 로컬 소켓으로 프런트엔드와 백엔드가 통신하는 구조를 가집니다.
tinyjs의 등장은 데스크톱 앱 개발 생태계에 중요한 변화를 가져올 것으로 보입니다. 특히, 앱 용량과 리소스 사용량에 민감한 사용자들에게 더 빠르고 가벼운 경험을 제공할 수 있게 됩니다. 이는 기존 일렉트론(Electron)이나 최근 주목받는 타우리(Tauri)와 같은 프레임워크들과 경쟁하며, 개발자들이 프로젝트 특성에 맞춰 더욱 다양한 선택지를 가질 수 있도록 할 것입니다. 현재 macOS 지원에 중점을 두고 있으며 윈도우와 리눅스 지원은 베타 단계이지만, 경량화된 데스크톱 앱 개발의 새로운 대안으로서 많은 개발자들의 관심을 끌 것으로 예상됩니다. MIT 라이선스로 제공되어 오픈소스 생태계에도 기여할 것으로 기대됩니다.