useOptimistic: action 안에서 optimistic update를 처리할 수 있도록 지원하는 리액트 공식 훅. set 함수는 action 안에서 호출되어야 하며, action 바깥에서 호출할 경우 warning을 띄우고 optimistic state이 잠깐동안 보여진다.- TanStack을 사용하고 있다면 기존 onMutate 방식을 유지하고, 추후에 Server Action/FormAction 중심으로 구조를 가져게 되면 그때
useOptimistic을 검토해 볼 수 있다.
오깨들
프론트엔드 개발과 도구를 다루며 그날 새롭게 이해한 내용을 짧게 기록합니다.
2026
- flex에서 긴 문자열이 있을 때
overflow-wrap: break-word가 아닌overflow-wrap: anywhere을 사용하면min-width: 0을 매번 지정해주지 않아도 된다. break-word: "실제로 넘치면 깨도 돼". 긴 단어의 크기를 크게 잡아서 텍스트 영역을 충분히 줄이지 못함.anywhere: "필요하면 어디서든 깨도 돼". intrinsic size를 계산할때도 깨서 보여줄 수 있음.
- flex에서 긴 문자열이 있을 때
- 맥북에서는 옵션 버튼을 누르고 창을 드래그하면 화면분할이 손쉽게 가능하다. 창을 화면의 꼭지점으로 드래그하면 4분할도 가능하다.
- AST: Abstract Syntax Tree
- 코드가 어떻게 작성됐는가? 문법 중심. lint, formatter 등에서 사용
- HIR: High-level Intermediate Representation
- 코드가 언어 차원에서 어떤 의미를 가지는가? 문법적 설탕을 제거하고, 의미 중심.
- MIR: Mid-level Intermediate Representation
- 프로그램이 어떤 제어 흐름을 가지는가? 실행 중심.
- 다만 AST, HIR, MIR이 컴파일러에 공통된 고정 단계인 것은 아니며, 구체적인 구분과 역할은 컴파일러마다 다르다.
- no-extra-boolean-cast
- 어차피 Boolean으로 평가되는 문맥에서 !!, Boolean() 등을 불필요하게 사용하지 마라.
- Disallow unnecessary boolean casts
- strict-boolean-expressions
- Boolean 문맥에서 암묵적인 truthy/falsy 변환에 의존하지 말고 명시적으로 검사해라. (e.g. Don't:
if(name), Do:if(name !== "")) - Forbids usage of non-boolean types in expressions where a boolean is expected. boolean and never types are always allowed. Additional types which are considered safe in a boolean context can be configured via options.
- Boolean 문맥에서 암묵적인 truthy/falsy 변환에 의존하지 말고 명시적으로 검사해라. (e.g. Don't:
- no-extra-boolean-cast
- TypeScript는
Apply a sound or "provably correct" type system을 목적으로 하지 않고,Instead, strike a balance between correctness and productivity를 목적으로 한다.
- TypeScript는
- claude는 세션을 30일동안 보관한다. cleanupPeriodDays를 수정하여 보관기한을 조정할 수 있다.
- codex는 보관기한이 설정되어 있지 않다.
- BAML은 Basically A Made-up Language의 약자이다.
- v0에서는 구조화 프롬프팅을 위해 LLM에 타입 안전 인터페이스를 제공하는 가벼운 프로그래밍 언어였다면, v1에서는 보다 확장하여 에이전트를 위한 프로그래밍 언어로 소개한다.