← 탐색

태그된 포스트: 프론트엔드

프론트엔드 시그널 · ·3분 읽기

removeEventListener 깜빡한 건 내 잘못이 아니었다

프로덕션 코드 리뷰하다가 등골이 서늘해진 적이 있다. addEventListener는 47번, removeEventListener는 31번.

typescriptusingsymbol.dispose
프론트엔드 시그널 · ·3분 읽기

페이지 전환에 framer-motion 44KB 넣던 시대가 끝나간다

npm ls framer-motion 치면 나오는 44KB(gzipped). 모달 열고 닫기, 페이지 전환, 리스트 아이템 등장 — 이 중 절반은 이제 브라우저가 공짜로 처리해준다.

view transitions apiframer-motionreact
프론트엔드 시그널 · ·3분 읽기

빌드 46초가 6초로, Vite가 번들러를 갈아끼운 진짜 이유

프로덕션 빌드가 46초 걸리던 프로젝트에서 vite.config.

viterolldownrust
프론트엔드 시그널 · ·3분 읽기

display: none에서 fade-in, 이제 CSS만으로 된다

모달 열 때 opacity: 0에서 opacity: 1로 트랜지션 주고 싶어서 requestAnimationFrame 안에 requestAnimationFrame을 넣어본 적 있는 사람? 아니면 setTimeout(0) 쓴 사람?

@starting-stylecss트랜지션
프론트엔드 시그널 · ·3분 읽기

tooltip 띄우려고 JS 번들에 12KB 넣는 시대는 끝났다

프로젝트에 tooltip 하나 추가하려고 npm install @floating-ui/dom부터 치는 게 프론트엔드 개발자의 근육 기억이었다. 그 근육 기억을 지워야 할 때가 왔다.

css anchor positioningfloating uipopper.js
프론트엔드 시그널 · ·2분 읽기

npm audit 돌렸더니 빨간 줄 12개, 전부 Next.js였다

월요일 아침, 습관처럼 npm audit을 돌렸다. 빨간 줄이 12개.

next.jsreact보안
프론트엔드 시그널 · ·3분 읽기

onClick에 await 하나 박았더니 INP 500ms 찍었다

지난주 프로덕션 대시보드 페이지에서 버튼 클릭 이벤트를 하나 손봤다. 기존 동기 호출을 async/await로 바꾸고, 그 안에서 상태 업데이트 세 개를 순차적으로 돌렸다.

inpcore web vitalsscheduler.yield
프론트엔드 시그널 · ·3분 읽기

서버 컴포넌트 수정하고 새로고침 안 눌렀더니 반영돼 있었다

서버 컴포넌트를 고치고 브라우저를 봤는데, 새로고침을 안 눌렀다. 근데 이미 바뀌어 있었다.

next.jsturbopackserver fast refresh
프론트엔드 시그널 · ·2분 읽기

useMemo 지웠다가 롤백한 사람, 손 들어봐

React Compiler 1.0이 출시되고 7개월이 지났다.

react compilerusememousecallback
프론트엔드 시그널 · ·2분 읽기

.eslintrc 300줄, 이제 지워도 된다

.eslintrc.

biomeeslintprettier
프론트엔드 시그널 · ·2분 읽기

tsgo 돌려봤는데, tsc로 돌아갈 수가 없다

지난달 TypeScript 7.0 베타가 나왔다.

typescript 7.0tsgogo
프론트엔드 시그널 · ·2분 읽기

에이전트가 console.error를 읽기 시작했다

AI 코딩 에이전트한테 "이 버튼 클릭하면 화면 깨져"라고 말하면, 에이전트는 코드를 뒤적거리며 추측한다. 브라우저를 못 보니까.

chrome devtools mcpai 에이전트프론트엔드
프론트엔드 시그널 · ·2분 읽기

페이지 넘길 때 '뚝' 끊기는 거, 이제 CSS만으로 없앤다

내가 MPA를 고를 때마다 PM이 한마디 한다. "페이지 전환이 좀 뚝뚝 끊기지 않아요?

view transitions apicssmpa
프론트엔드 시그널 · ·3분 읽기

빌드 46초가 6초 됐는데, 설정 파일은 한 줄도 안 바꿨다

Vite 8이 3월에 나왔다. 벌써 두 달인데 아직 7에 머물러 있는 팀이 꽤 보인다.

vite 8rolldownrust
프론트엔드 시그널 · ·3분 읽기

import 60개짜리 파일, 절반은 안 쓰는데 왜 다 로딩하고 있었나

대시보드 프로젝트 하나를 프로파일링하다가 멍한 순간이 왔다. 진입점에서 import하는 모듈이 62개, 그중 사용자가 실제로 첫 화면에서 쓰는 건 11개.

typescriptimport defer번들 최적화
프론트엔드 시그널 · ·3분 읽기

tooltip에 npm install이 필요 없어진 날

프로젝트의 package.json을 열어보면 tooltip 하나 띄우려고 설치한 라이브러리가 꼭 하나는 있다.

css anchor positioningtooltipfloating ui
프론트엔드 시그널 · ·3분 읽기

올해 안에 33항목 맞춰야 하는데, 9개는 처음 본다

2026년부터 전자정부 웹사이트는 KWCAG 2.2를 충족해야 한다.

kwcag 2.2웹 접근성react
프론트엔드 시그널 · ·3분 읽기

Signals 전쟁은 끝났는데, TC39는 이제 시작이라고?

프레임워크 전쟁의 승자가 결정됐다. Angular 20, Vue 4, Solid, Svelte 5 — 전부 Signals 기반 리액티비티로 수렴했다.

signalstc39javascript
프론트엔드 시그널 · ·3분 읽기

브라우저를 안 여는 동료가 생겼다

Claude Code한테 "이 버튼 눌렀을 때 콘솔 에러 좀 봐"라고 했더니 돌아온 답이 "브라우저에 접근할 수 없습니다"였다. 당연한 얘긴데, 그 순간 좀 멈칫했다.

next.js 16.2agent devtoolsreact devtools
프론트엔드 시그널 · ·3분 읽기

탭 바꿀 때 상태 날아가는 거 — React가 드디어 답을 냈다

프론트엔드에서 탭 UI를 만들 때 가장 짜증나는 순간이 있다. 사용자가 첫 번째 탭에서 폼을 절반 채우고, 두 번째 탭 갔다 돌아왔더니 입력값이 전부 사라진 거다.

reactactivityreact 19.2
1 / 3 Next →