스벨트(Svelte)의 공식 애플리케이션 프레임워크인 스벨트킷(SvelteKit)이 3.0 버전을 내놓았다. 메이저 버전이 올라갔지만 이전 버전을 써 본 개발자라면 큰 이질감을 느끼지 않을 만한 변화다. 스벨트킷 팀은 이번 릴리스를 "같은 프레임워크에 약간의 완성도와 타입 안전성을 더하고, 군더더기를 덜어낸 것"이라고 설명한다. 다시 말해 패러다임을 뒤집는 개편이라기보다, 기존 사용 경험을 유지하면서 세부를 다듬은 성격의 업데이트에 가깝다.
실무 관점에서 가장 먼저 눈여겨볼 지점은 마이그레이션 방식이다. 스벨트킷 3은 sv migrate 명령을 통해 코드베이스를 가능한 한 자동으로 이전해 주고, 자동 처리가 불가능한 부분은 별도의 TODO 목록으로 뽑아 준다. 즉 기계적으로 바꿀 수 있는 변경은 도구가 처리하고, 판단이 필요한 잔여 작업만 개발자에게 넘기는 구조다. 스벨트킷 측은 이 남은 작업을 코딩 에이전트에게 맡겨 빠르게 처리할 수도 있다고 덧붙였는데, 이는 최근 프레임워크들이 업그레이드 과정 자체를 도구와 AI로 보조하려는 흐름과 맞닿아 있다.
원격 함수라는 새 카드
이번 버전에서 기능적으로 가장 주목할 만한 것은 '원격 함수(remote functions)'다. 이는 클라이언트와 서버 사이의 통신을 안전하고 효율적이며 타입 안전하게 처리하기 위한 유틸리티 모음이다. 서버에서만 실행돼야 할 로직과 데이터 접근을, 클라이언트 코드에서 타입이 보장된 함수 호출처럼 다룰 수 있게 해 주는 접근으로 이해할 수 있다. 스벨트킷 팀도 인정하듯 이 아이디어 자체는 새롭지 않다. 다른 여러 프레임워크에서 유사한 형태를 이미 선보여 왔고, 스벨트킷은 그중에서도 자신들의 구현이 더 나은 선택이 될 것이라고 자신하는 쪽이다.
다만 여기에는 분명한 전제 조건이 따른다. 원격 함수를 쓰려면 'Async Svelte'가 필요하고, 이 Async Svelte는 현재로서는 실험적 플래그를 켜야만 활성화된다. 즉 원격 함수는 3.0의 간판 기능이면서도, 당장 프로덕션에서 안심하고 쓰라고 권하기에는 아직 실험 단계의 토대 위에 서 있는 셈이다. 기능의 매력과 실제 도입 가능성을 분리해서 판단할 필요가 있다는 뜻이다.
도입을 검토한다면
메이저 버전 업답게 몇 가지 호환성 깨짐(breaking changes)도 존재한다. 구체적인 항목은 공식 마이그레이션 가이드와, 앞서 공개된 릴리스 후보(RC) 공지에 정리돼 있다. 따라서 기존 서비스를 운영 중인 팀이라면 sv migrate를 돌리기 전에 이 문서들을 먼저 확인하고, 자동 마이그레이션이 남기는 TODO 목록을 실제 코드와 대조해 검증하는 과정이 필요하다. 자동화 도구가 많은 작업을 덜어 주더라도, 깨지는 변경에 대한 최종 책임은 결국 개발자에게 있기 때문이다.
정리하면 스벨트킷 3은 기존 사용자에게 큰 학습 비용을 요구하지 않으면서, 타입 안전성과 정돈된 구조라는 실질적 개선을 제공하는 업데이트다. 새 프로젝트를 시작하는 팀이라면 비교적 부담 없이 3.0을 선택할 만하고, 운영 중인 서비스를 옮기는 경우에도 마이그레이션 도구 덕분에 전환 부담이 과거보다 낮아졌다. 반면 원격 함수에 끌려 도입을 고민한다면, 실험적 플래그 의존성과 그에 따른 안정성 리스크를 함께 저울질해야 한다.
한편 스벨트 진영은 11월 19~20일 슬로베니아 류블랴나에서 대면 행사인 스벨트 서밋(Svelte Summit)을 연다. 이 행사는 스벨트 탄생 10주년을 기념하는 자리이기도 하다. 프레임워크가 10년을 이어오며 메이저 버전을 쌓아 올렸다는 사실 자체가, 스벨트 생태계가 일시적 유행을 넘어 장기적으로 유지될 기반을 다져 왔음을 보여 준다.