화면이 자꾸 깜빡거려요 (Rebuild의 함정)
상태만 바꿨는데 왜 이미지까지 다시 로딩될까요? FutureBuilder를 build 안에 넣는 실수부터 const 생성자, RepaintBoundary까지, 플러터 앱이 번개처럼 파닥거리는 원인을 잡습니다.

개발과 기술에 대한 이야기를 기록합니다.
상태만 바꿨는데 왜 이미지까지 다시 로딩될까요? FutureBuilder를 build 안에 넣는 실수부터 const 생성자, RepaintBoundary까지, 플러터 앱이 번개처럼 파닥거리는 원인을 잡습니다.

글자 하나 칠 때마다 키보드가 내려가고 포커스가 풀리나요? 당신이 저지른 '컨트롤러 초기화' 실수를 찾아드립니다. TextEditingController와 build() 메서드의 관계를 완벽하게 파헤칩니다.

사용자가 올린 사진이 찌그러져서 오이가 되었습니다. 디자이너는 화를 냅니다. BoxFit.cover, contain, fill의 차이를 명확히 이해하고, AspectRatio 위젯으로 완벽한 프레임을 짜봅시다.

아이폰 X 이후, 직사각형 화면의 시대는 끝났습니다. 노치와 홈 인디케이터로부터 당신의 UI를 지키는 방법, 그리고 SafeArea를 쓰지 말아야 할 때를 정리해봤습니다.

로그인 화면을 만들었는데 키보드가 올라오니 노란 줄무늬 에러가 뜹니다. resizeToAvoidBottomInset부터 스크롤 뷰, 그리고 채팅 앱을 위한 reverse 팁까지, 키보드 대응의 모든 것을 정리해봤습니다.

Column 안에 ListView를 넣으면 왜 화면이 하얗게 변하거나 에러가 날까요? '무한한 높이'의 역설을 이해하고, Expanded와 Slivers로 우아하게 해결하는 방법을 정리해봤습니다.

Flutter 개발자라면 피할 수 없는 노란색/검은색 줄무늬 에러. 단순히 Expanded로 감싸는 게 답이 아닐 수 있습니다. 플러터의 제약 조건(Constraints) 시스템을 완벽하게 이해해봤다.

"Named export not found" 에러의 원인인 CommonJS와 ES Modules의 충돌을 파헤칩니다. package.json의 exports 필드부터 transpilePackages 설정까지 완벽 가이드.

Next.js 빌드 로그에 나오는 동그라미(○)와 람다(λ) 기호의 의미를 아시나요? 실수로 모든 페이지를 동적으로 만들어버리지 않는 방법을 확인하세요.

Vercel에서는 잘 되던 ISR이 AWS나 Docker 환경에서는 왜 작동하지 않을까요? 파일 시스템 캐시의 함정과 해결책을 파헤쳐봤습니다.
