State of JS 2025 설문 결과

State of JS 2025 설문 결과

매년 자바스크립트 개발자라면 한 번쯤 챙겨보게 되는 설문이 있는데요. 바로 State of JS입니다. 올해도 어김없이 결과가 공개됐고, 저는 이번에도 처음부터 끝까지 꼼꼼히 살펴봤습니다.

이 글에서는 설문 결과 중 지극히 개인적인 관점에서 흥미롭게 본 부분들을 골라서 제 나름의 방식으로 해석하여 공유드리겠습니다.

달레줄레 팟캐스트에서 State of JS 2025 설문 결과에 대한 에피소드도 올라왔으니 한번 들어보시면 재미있을 겁니다 😄

새 기능, 얼마나 쓰고 있나요?

State of JS 설문에는 자바스크립트에 새로 추가된 기능들을 개발자들이 얼마나 알고 있고 실제로 써봤는지를 묻는 섹션이 있습니다. 사실 이게 설문의 숨은 역할이기도 한데요. 새로운 기능을 홍보하는 효과가 있거든요. 아무래도 습관 때문에 새로운 기능이 나와도 예전에 쓰던 기능만 쓰는 경향이 있으니까요.

배열 쪽에서는 toSorted(), toReversed(), toSpliced() 같은 불변 배열 메서드들이 눈에 띕니다. 기존의 sort(), reverse(), splice()는 원본 배열을 직접 변경하기 때문에 의도치 않은 버그를 만들기 쉬운 함수들이었는데요. 이 새로운 함수들은 원본 배열을 건드리지 않고 결과를 반환하기 때문에 훨씬 안전하게 쓸 수 있습니다.

세트(Set)도 Map과 함께 자바스크립트에 추가된지 거의 10년이 다 되어가는데 아직도 과반수 이상의 응답자가 쓰지 않고 있다고 응답했는데요. Set이 잘 활용하면 배열 대비 성능 상의 이점이 있다는 것을 알면서도, 저 역시 아직도 배열에 더 쉽게 손이 가는 것 같습니다.

객체의 groupBy()도 이제는 대부분 브라우저에서 지원되는 API인데 예상보다 활용하시는 분들이 적더라고요. 예전에는 reduce() 복잡하게 작성했던 데이터 그룹화 작업을 이제는 한 줄로 해결할 수 있으니 이 기회에 사용법을 익혀두시면 좋을 거라 생각합니다.

개발자들의 가장 큰 고통

Pain Points

설문에서 제가 항상 관심 있게 보는 섹션이 “무엇이 가장 고통스러운가?”인데요. 올해도 역시 1위는 정적 타이핑이 언어 자체에서 지원되지 않는다는 것이었습니다.

이게 단순한 불편이 아니라 정말로 갈망에 가까운 수준인 게, 3위도 “타입스크립트 지원”이거든요. 결국 1위와 3위가 같은 맥락입니다. 언어 레벨에서 타이핑을 지원해달라, 그러면 굳이 타입스크립트로 코드를 작성하고 별도의 컴파일 단계를 거치지 않아도 바로 실행되지 않겠느냐는 거죠.

이와 관련해서 ECMAScript에 타입 힌트를 도입하자는 제안이 몇 년째 논의 중인 걸로 알고 있습니다. 파이썬이 취하고 있는 것과 동일한 접근인데, 강제가 아니라 옵션으로 타입 힌트를 달 수 있게 하고 별도의 도구가 해석하는 방식이죠. 통과되면 좋겠지만, 아직 몇 년이 더 걸릴지는 아무도 모릅니다.

2위는 날짜 처리였는데요. 자바스크립트의 Date 객체가 다른 언어의 내장 API에 비해 많이 부족한 건 잘 알려진 사실이죠. 그래서 기대를 한몸에 받고 있는 것이 바로 Temporal이라는 차세대 날짜 API입니다. 설문에서 “가장 기대하는 새 기능” 1위를 압도적으로 차지했는데요. Temporal이 안정적으로 들어오면 moment, day.js, date-fns 같은 날짜 라이브러리의 필요성이 크게 줄어들 겁니다. 다른 언어에서는 날짜 처리를 위해 외부 라이브러리를 깔아야 하는 일이 거의 없다는 걸 생각하면, 자바스크립트도 이제 그 수준으로 올라갈 때가 됐죠. 참고로 이미 Firefox와 Chrome에서 Temporal을 사용할 수 있는데요, 자세한 사용법은 자바스크립트 Temporal API 사용법을 참고해보세요.

5위에는 ESM과 CJS 호환성 문제가 있었는데, 아직도 이걸로 고통받는 사람들이 많다는 게 좀 놀라웠습니다. 서로 다른 문법을 가진 모듈 시스템이 충돌하는 이 고질적인 문제는 Bun을 쓰면 상당 부분 해소가 되니 참고하시면 좋을 것 같습니다.

라이브러리 트렌드: 왕좌가 흔들리다

State of JS 설문에서 제가 매년 가장 재미있게 보는 시각화가 있는데요. 바로 “Change Over Time”이라는 그래프입니다. 가로축은 만족도(오른쪽이 긍정), 세로축은 사용률(위로 갈수록 높음)을 나타내는데, 시간에 따른 궤적이 그려지기 때문에 어떤 도구가 뜨고 있고 어떤 도구가 지고 있는지 한눈에 보입니다.

frontend

프론트엔드 쪽에서는 예상했던 것처럼 React가 사용률이 최고지만, 만족도는 매년 꾸준히 나빠지고 있습니다. 2019년 정점을 찍은 뒤로 그래프가 왼쪽으로 계속 이동하고 있거든요. 반면 Svelte나 Vue는 사용률도 올라가면서 경험도 긍정적으로 유지하고 있어요. Angular는 항상 부정적인 경험 영역에서 벗어나지 못하고 있네요.

meta-framework

백엔드 쪽에서는 Express가 여전히 시장을 장악하고 있는 모습입니다. Express는 웹 표준을 따르지 않기 때문에 Hono와 같은 현대적인 프레임워크로 넘어가야할텐데 아직은 Express의 그늘에서 벗어나지 못하고 있는 것 같습니다. 그럼에도 불구하고 Java의 Spring 프레임워크라고 불리는 NestJS는 Express와는 다른 포지션을 잡고 꾸준히 성장하고 있습니다.

메타 프레임워크 쪽은 Next.js의 그래프가 가장 극적입니다. 2018년부터 2022년까지는 사용률도 늘고 경험도 좋아지는 바람직한 궤적이었는데, 2022년 이후로 경험이 절벽처럼 떨어지기 시작합니다. 올해는 거의 부정적인 영역까지 내려왔어요. 2022~2023년이면 RSC(React Server Components)가 본격적으로 도입된 시기와 겹치는데요. 오랫동안 클라이언트 단 렌더링을 위해 React를 사용했던 개발자들에게 학습 곡선이 상당히 높았고, 초반에는 Next.js에서만 사용가능한 기술이어서 오픈소스 생태계에서 오랫동안 반감도 쌓여온 결과라고 생각합니다.

Next.js 바로 아래에는 Astro가 우수한 사용자 경험을 유지하면서 사용률이이 하늘로 솟구치고 있습니다. Astro는 React, Vue, Svelte 등 어떤 프론트엔드 프레임워크든 다 지원하고, 심지어 하나의 프로젝트에서 섞어 쓸 수도 있거든요. 이런 유연함이 인기의 비결이 아닌가 싶습니다. 참고로 제 블로그도 Gatsby를 쓰다가 Astro로 넘어 왔는데 개인적으로 정말 만족스럽습니다.

테스팅 쪽에서는 Jest가 React나 Express에서 봤던 것과 동일한 패턴을 보이고 있습니다. 한때 최고였지만 경험이 계속 나빠지고 있고, 그 자리를 Vitest가 빠르게 채워가고 있죠. E2E 테스팅에서는 Cypress의 경험이 2021년부터 급격히 나빠졌는데, Playwright가 그 자리를 차지하고 있습니다.

build-tool

빌드 도구에서는 Webpack의 그래프가 압권이에요. 여태까지 봤던 모든 도구 중에서 가장 왼쪽으로 많이 이동한 케이스입니다. 사람들이 정말 싫어하는데 어쩔 수 없이 쓰는, 그런 상태가 그래프에 고스란히 드러나고 있어요. 반면 Vite는 혜성처럼 등장해서 빌드 도구 시장을 빠르게 장악했고, 지금은 Vite가 짱이라고 해도 반대하는 사람이 거의 없는 수준입니다.

이런 패턴을 보면 하나의 법칙이 보이는데요. 어떤 도구든 많이 쓰이면 쓰일수록 부정적인 경험이 쌓이기 마련이고, 그때 더 나은 대안이 등장하면 순식간에 세대교체가 일어난다는 겁니다.

영광의 S등급: 지금 가장 뜨거운 도구들

tier-list

State of JS가 2~3년 전부터 도입한 티어 시스템도 제가 매년 빠지지 않고 챙겨보는 부분입니다. 사용률과 사용자 경험을 종합해서 S, A, B, C 등급을 매기는데, 로고가 딱딱 나열되어 있어서 트렌드가 한눈에 들어오거든요.

올해 S등급을 받은 도구들을 보면 이렇습니다.

  • Vite — 빌드 도구의 절대 강자
  • Vitest — Jest를 빠르게 대체하고 있는 테스팅 프레임워크
  • Hono — 차세대 Express라 불리는 백엔드 프레임워크
  • Playwright — Cypress를 밀어내고 있는 E2E 테스팅 도구
  • Astro — 사용률과 만족도 모두 최고인 메타 프레임워크
  • Bun — 올해 처음으로 S등급 진입!

Bun이 특히 인상적이었는데요. 작년에는 설문 티어 테이블에 아예 없었거든요. 올해 처음 등장하면서 바로 S등급을 받은 겁니다. 밑에서부터 차근차근 올라온 게 아니라 한 번에 꼭대기를 찍었다는 것이 정말 대단하죠.

반면 슬프게도 C등급에는 Cypress, Mocha, Angular, Webpack, Selenium, Gatsby 같은 이름이 있습니다. 한때 전성기를 누렸던 도구들인데, 이제는 쓰고 싶어서 쓴다기보다 써야 해서 쓰는 상태가 된 거죠. 자바스크립트 생태계의 세대교체 속도가 정말 빠르다는 걸 실감할 수 있는 부분입니다.

Zod의 약진과 차세대 도구들

libraries

프레임워크와 빌드 도구 외에 다른 라이브러리 쪽도 흥미로운 움직임이 있었는데요.

Zod가 작년 대비 12%나 사용률이 늘면서 기타 라이브러리 부문 1위를 차지했습니다. Lodash나 date-fns 같은 오래된 라이브러리를 제치고 올라온 거라 정말 고무적인 결과죠.

Zod가 이렇게 인기를 얻는 이유는 아까 살펴본 자바스크립트의 고통의 원인과도 직결됩니다. 타입스크립트는 컴파일 타임에만 타입 체크를 해주기 때문에, 실행 시점에서는 여전히 문제가 생길 수 있거든요. Zod를 쓰면 런타임에서도 유효성 검증을 할 수 있고, 동시에 타입스크립트 타입도 자동으로 추출할 수 있어서 두 마리 토끼를 잡을 수 있습니다.

Zod가 궁금하시다면 타입스크립트를 쓰는데도 유효성 검증이 필요할까?를 먼저 읽어보시고, Zod로 유효성 검증과 타입 선언의 두 마리 토끼 잡기에서 실전 사용법을 확인해보세요.

유틸리티 도구 쪽에서는 Biome이 눈에 띕니다. ESLint, Prettier 따로따로 설치하고 플러그인까지 잔뜩 깔아야 했던 불편함을 하나의 도구로 해결해주겠다는 컨셉인데요. Rust로 작성되어 성능도 기존 도구를 압도합니다.

사실 이건 최근 자바스크립트 생태계의 큰 흐름이기도 합니다. ESLint나 Prettier 같은 기존 도구는 자바스크립트로 작성된 자바스크립트 도구인데요. 개발자가 매일 접하는 도구가 밀리초, 민감하신 분들은 마이크로초만 빨라져도 체감을 하시거든요. 그래서 요즘 나오는 차세대 도구들은 Rust나 Go 같은 고성능 언어로 작성되는 추세입니다. Vite는 Go 기반의 esbuild를 활용하고, Biome과 SWC는 Rust로 작성되었죠.

에디터와 AI 도구

editors

에디터 쪽도 재미있는 변화가 있었습니다.

VS Code가 84%로 여전히 압도적이긴 한데요. 2위가 Cursor입니다. VS Code 포크에 AI 기능을 특화시킨 에디터인데, 어깨 너머로 봐서는 VS Code를 쓰는지 Cursor를 쓰는지 구분하기 어려울 정도로 비슷합니다. 다만 AI 코딩 경험은 확실히 차별화되어 있죠.

눈여겨볼 신예는 Zed입니다. Rust로 작성된 에디터라 VS Code보다 체감 속도가 훨씬 빠른데요. VS Code가 Electron 앱이다 보니 플러그인이 쌓이면 무거워지는 문제가 있는데, Zed는 그런 날렵함을 무기로 조용히 존재감을 키워가고 있습니다. 에디터의 계보를 보면 Sublime Text → Atom → VS Code로 세대교체가 있어왔는데, Zed가 그 다음 주자가 될 수도 있겠다는 생각이 듭니다.

AI 도구 사용 현황도 흥미롭습니다. ChatGPT가 1위, GitHub Copilot이 2위인 건 예상 가능하지만, Claude의 사용률이 1년 만에 22%에서 44%로 두 배가 된 것이 눈에 띄네요. Cursor도 15% 늘어서 26%의 자바스크립트 개발자가 쓰고 있다고 합니다.

gne-ai

코드 생성에 AI를 전혀 쓰지 않는다는 응답이 지난 설문에서 20%였는데 이번에는 10%로 절반이 줄었습니다. AI로 코드를 생성하는 비중은 평균 29%까지 올라왔고요. 내년에는 이 수치가 얼마나 더 오를지 궁금해지네요.

State of JS인가, State of TS인가

js-ts

이번 설문에서 개인적으로 가장 인상 깊었던 숫자를 꼽자면 이것입니다.

타입스크립트를 100% 쓴다는 응답자가 40%, 평균 타입스크립트 사용 비중은 77%, 생 자바스크립트만 쓴다는 사람은 6%에 불과합니다.

저도 이제 자바스크립트를 생으로 쓰면 불안해서 못 쓰는 쪽이라 이 40%에 들어가는 것 같은데요. 타입 정보 없이 코드를 읽으면 변수가 무슨 타입인지 변수 이름만 보고 추측해야 하잖아요. 한 번 쓰고 버리는 스크립트라면 상관없겠지만, 유지보수해야 하는 코드라면 얘기가 다르죠.

86%의 응답자가 코드를 컴파일해서 사용하고 있다는 결과도 나왔는데, 타입스크립트를 쓰면 브라우저가 이해할 수 있도록 자바스크립트로 컴파일해야 하니 당연한 결과입니다. 물론 Bun 같은 차세대 런타임은 타입스크립트를 바로 실행할 수 있지만, 아직은 모든 환경에서 그렇지는 않으니까요.

State of JS라는 이름이 무색할 만큼, 사실상 State of TS라고 불러도 될 정도로 TS를 쓰시는 개발자들이 많아졌습니다.

마치며

State of JS 2025 설문 결과를 살펴보면서 느낀 것을 정리해보면 이렇습니다.

어떤 도구든 정점을 찍으면 사용자 경험이 나빠지기 시작하고, 더 나은 대안이 나타나면 세대교체가 빠르게 일어나요. Next.js → Astro, Webpack → Vite, Jest → Vitest, Cypress → Playwright. 여전히 패턴이 반복되고 있고, AI로 인해 이러한 변화 속도의 더 빨라질 수도 있을 것 같습니다.

올해 설문에서 가장 강하게 느낀 것은 세 가지입니다. 타입스크립트는 이미 자바스크립트 개발의 기본값이 되었고, Rust나 Go로 작성된 차세대 도구들이 기존 강자를 빠르게 밀어내고 있습니다. 그리고 AI가 자바스크립트 개발 방식 전반에 깊숙이 스며들고 있다는 것입니다.

설문 결과 전체가 궁금하신 분들은 State of JS 2025 공식 사이트에서 직접 확인해보세요.

This work is licensed under CC BY 4.0 CC BY

Discord