brain

Layout shift와 CLS

현상 — 글을 읽는데 위쪽 이미지·광고가 늦게 뜨면서 본문이 갑자기 아래로 밀린다. 버튼을 누르려는 순간 버튼이 밀려 엉뚱한 걸 누르게 된다.

용어

원인 — 공통점은 자리를 미리 잡아두지 않은 요소가 나중에 끼어드는 것이다. 식당에서 일행 자리를 안 맡아두면 늦게 온 사람이 끼어 앉을 때 모두가 한 칸씩 밀려나는 것과 같다.

지시 예문


LCP

현상 — 페이지에 들어가면 헤더·메뉴는 금방 뜨는데, 정작 화면 한가운데 큰 대표 이미지(또는 큰 제목)가 한참 뒤에 나타난다. “페이지가 느리다”는 체감의 대부분이 이것이다.

용어

원인

지시 예문


INP

현상 — 버튼을 눌렀는데 0.5초쯤 아무 반응이 없다가 뒤늦게 바뀐다. 입력창에 타이핑하면 글자가 한 박자 늦게 찍힌다. 그래서 같은 버튼을 두세 번 누르게 된다.

용어

원인

지시 예문


Stacking context

현상 — 모달·드롭다운에 z-index: 9999를 줬는데도 헤더나 다른 카드 아래에 깔린다. 숫자를 더 키워도 그대로다.

용어

원인 — 애니메이션용 transform, 페이드용 opacity 같은 겉보기와 무관한 속성이 부모에 걸려 몰래 새 묶음이 생김. 그래서 z-index만 보고는 원인을 못 찾는다.

지시 예문


Race condition

현상 — 검색어를 “react” → “redux”로 빠르게 바꿨는데, 화면에 “react” 결과가 남는다. 탭을 빠르게 A → B로 눌렀는데 A 탭 데이터가 B 탭에 뜬다. 가끔만 생기고 재현이 잘 안 된다.

용어

원인 — 요청을 보낼 때마다 응답이 오면 무조건 화면에 반영하도록 짜서, 응답이 오는 순서를 보장하지 않음.

해결 방향

지시 예문


Hydration과 hydration mismatch

현상 — 새로고침 직후 콘솔에 “Hydration failed” / “Text content does not match” 경고가 뜨고, 처음 보인 텍스트가 잠깐 뒤 다른 값으로 바뀐다. 심하면 그 영역이 통째로 다시 그려지며 깜빡인다.

용어

원인 — 서버와 브라우저에서 같은 코드가 다른 값을 내는 경우

지시 예문


Virtualization

현상 — 주문 내역·로그·채팅처럼 행이 수천 개인 목록에 들어가면 첫 화면이 늦게 뜨고, 스크롤이 버벅이며, 필터를 눌러도 반응이 굼뜨다(INP 악화).

용어

부작용 — 지시할 때 같이 챙길 것

대안 — 수백 개 수준이면 virtualization까지 필요 없을 수 있다. 페이지네이션, 무한 스크롤, CSS content-visibility: auto가 더 단순한 선택지다.

지시 예문


FOUC · FOUT · FOIT

현상 — 페이지가 뜨는 순간 잠깐 이상한 모습이 보였다가 정상으로 바뀐다. 스타일 없는 맨 HTML이 번쩍이거나, 글꼴이 바뀌며 글자가 출렁이거나, 다크 모드인데 흰 화면이 번쩍인다.

용어 — 전부 “Flash of ~”(~가 번쩍임)의 약자다.

원인 — 공통점은 첫 화면을 그리는 시점에 필요한 정보(CSS·폰트·테마)가 아직 없음.

외울 것 — 약자 셋을 다 외울 필요는 없다. 지시할 때는 “flash” + 무엇이 번쩍이는지만 말하면 AI가 약자로 바꿔 알아듣는다. 약자는 AI 답변·문서를 읽을 때 알아보는 정도면 충분하다.

지시 예문


Scroll chaining과 scroll lock

현상

용어

원인 정리

지시 예문


텍스트 넘침과 줄바꿈

현상

용어

지시 예문


Skeleton · spinner · optimistic UI

현상

용어 — 모두 “기다림을 어떻게 보여줄까”에 대한 선택지다.

지시 예문


Cache와 cache invalidation

현상

용어

원인 — 데이터를 바꾸는 코드(mutation)는 있는데, 그 데이터를 보여주는 캐시를 무효화하는 코드가 없음.

지시 예문


CORS

현상 — 프론트에서 API를 호출하면 콘솔에 빨간 에러가 뜬다: “Access to fetch at … has been blocked by CORS policy”. 그런데 같은 주소를 Postman·curl로 부르면 멀쩡히 응답이 온다.

용어

원인 — 서버가 허락 헤더를 안 보냄. 그래서 고칠 곳은 프론트가 아니라 서버(또는 프록시)다.

지시 예문


Re-render와 무한 루프

현상

용어 (React 기준)

원인 — 무한 루프의 전형

  1. useEffect의 의존성 배열에 render마다 새로 만들어지는 객체·함수가 들어감
  2. 그래서 매 render마다 “바뀌었다”고 판단해 effect 실행 → effect 안에서 setState → re-render → 1로 돌아감

지시 예문


모바일 viewport: 100vh 문제와 safe area

현상

용어

지시 예문


인터랙션 상태: hover · active · focus-visible

현상

용어 — 요소가 사용자 동작에 따라 가지는 상태(state). 디자인 시안에서도 같은 이름으로 부른다.

원인

지시 예문


환경 변수(env)

현상

용어

지시 예문


URL 상태와 scroll restoration

현상

용어

지시 예문


Semantic HTML과 접근성(a11y)

현상

용어

지시 예문


Bundle과 code splitting

현상

용어

지시 예문


Open Graph와 링크 미리보기

현상

용어

지시 예문


Empty state · error state · error boundary

현상

용어

지시 예문


인증: 쿠키 · 세션 · 토큰

현상

용어

한 장면으로 묶은 비유: 헬스장

웹 헬스장
session 회원카드에 번호만 있고, 카운터 PC 장부에서 조회해 입장. 해지하면 즉시 막힘. 대신 매번 장부 조회가 필요
token(JWT) 회원권 자체에 이름·만료일·위조 방지 도장이 찍힘. 직원은 도장만 보고 통과. 장부 조회는 필요 없지만, 잃어버려도 회수가 어려워 짧게 발급
access / refresh token 매일 새로 받는 1일권과, 1일권을 재발급받는 정기권
cookie 카드를 넣는 목걸이 카드지갑. 입구를 지날 때마다 리더기에 자동으로 찍힘. 세션 번호도 토큰도 여기 넣을 수 있다
localStorage 가방 속. 입구마다 직접 꺼내 보여줘야 하고(JS가 요청에 직접 붙임), 소매치기(XSS)가 가방을 뒤질 수 있다
httpOnly 쿠키 손으로 못 여는 목걸이 지갑. 입구 리더기만 읽을 수 있어 소매치기가 못 꺼낸다

원인

지시 예문


실시간 갱신: polling · SSE · WebSocket

현상

용어 — 서버의 새 소식을 화면에 반영하는 세 가지 방식. 비유는 택배 도착 확인.

고르는 기준

지시 예문


웹 보안 기초: XSS · CSRF · injection

현상 — 겉으로는 멀쩡해서 “현상”으로 드러나지 않는 게 특징이다. 대신 이런 코드를 보면 의심한다.

용어

지시 예문


시간대(timezone)와 날짜 버그

현상

용어

지시 예문


중복 제출과 멱등성(idempotency)

현상

용어

지시 예문


HTTP 상태 코드

현상 — 개발자 도구 Network 탭이나 에러 로그에 404, 500, 504 같은 숫자가 찍힌다. 이 숫자만 정확히 전달해도 AI가 원인 범위를 절반 이상 좁힌다.

용어 — 서버가 응답마다 붙이는 세 자리 결과 번호. 첫 자리가 큰 분류다.

코드 뜻 흔한 상황
200 OK 성공 일반 조회
201 Created 새로 만들어짐 글 작성·회원가입 성공
204 No Content 성공했는데 돌려줄 내용 없음 삭제 성공
301 / 308 영구 이동 주소 변경. 검색엔진도 새 주소로 옮김
302 / 307 임시 이동 로그인 후 원래 페이지로 보내기
304 Not Modified 바뀐 게 없으니 캐시 써라 브라우저 캐시 재사용(캐시 레슨)
400 Bad Request 요청 형식이 틀림 필수 값 누락, JSON 깨짐
401 Unauthorized 누군지 모름 로그인 필요·토큰 만료(인증 레슨)
403 Forbidden 누군지 아는데 권한 없음 일반 회원이 관리자 페이지 접근
404 Not Found 없음 잘못된 주소, 삭제된 글
409 Conflict 현재 상태와 충돌 이미 있는 이메일로 가입(멱등성 레슨)
422 Unprocessable 형식은 맞는데 값이 규칙 위반 비밀번호 너무 짧음
429 Too Many Requests 너무 자주 요청함 rate limit(요청 횟수 제한)에 걸림
500 Internal Server Error 서버 코드가 터짐 처리 안 된 예외, 버그
502 Bad Gateway 중간 서버가 뒤쪽 서버에게 이상한 응답을 받음 백엔드 서버 다운
503 Service Unavailable 지금 처리 불가 과부하, 점검 중
504 Gateway Timeout 뒤쪽 서버가 너무 늦음 서버리스 함수 실행 시간 초과, 느린 DB 쿼리

지시할 때 요령

지시 예문


Pagination: offset vs cursor

현상

용어

지시 예문


반응형: breakpoint · mobile-first · container query

현상

용어

지시 예문


상태 관리: single source of truth · prop drilling · 전역 상태

현상

용어

지시 예문


폼 입력: IME composition · validation 타이밍

현상

용어

지시 예문


배포: build · 환경 · preview · rollback

현상

용어

지시 예문


반응형 이미지: srcset · sizes · DPR · art direction

현상

용어

지시 예문


SEO 기초: index · robots · sitemap · canonical

현상

용어

지시 예문


개발자 도구(DevTools)로 증거 전달하기

현상 — AI에게 “안 돼”, “이상해”라고만 말하면 추측으로 코드를 고치다 엉뚱한 곳을 망친다. 개발자 도구(Chrome: Cmd+Option+I)에서 어느 탭의 무엇을 봤는지 전달하면 원인 범위가 확 좁혀진다.

용어 — 탭별로 “무엇을 확인하는 곳”인지

전달 공식 — “어디서(탭) + 무엇을 봤다(값) + 기대는 이랬다”

지시 예문


CSS 우선순위: cascade · specificity · !important

현상

용어

지시 예문


레이아웃: flex · grid · 축 · gap

현상

용어

지시 예문


Position: relative · absolute · fixed · sticky

현상

용어

지시 예문


다국어: i18n · locale · RTL

현상

용어

지시 예문