환경Expo SDK: 54React Native: 0.81.5Xcode: 27 에러call to consteval function 'fmt::basic_format_string' is not a constant expression 원인React Native 내부(정확히는 번들된 fmt 라이브러리)와 Xcode 26 툴체인의 호환성 문제fmt는 C++ 포매팅 라이브러리로, 포맷 문자열을 컴파일 타임에 검증하기 위해 consteval 함수인 basic_format_string을 사용한다.consteval은 "반드시 컴파일 타임 상수 평가가 가능해야 하는" 함수인데, Xcode 26에 들어온 Clang/C++ 프론트엔드가 상수 평가 규칙을 더 엄격하게 적용하면서, 기존 React Native가 번들하던 fmt..
시작말재사용 가능한 공통 컴포넌트, 확장성 있는 컴포넌트란 무엇일까?에 대해 고민하다가잘 만들어진 오픈소스 UI 라이브러리 코드들을 보면 그 답을 알 수 있지 않을까 해서 Radix UI와 Headless UI의 라이브러리 코드를 살펴보기로 했다.소스코드에서 공통적으로 사용하는 컴포넌트 설계 패턴이 있는데 4가지의 핵심 React Composition 패턴에 대해 정리해보려고 한다.1. Compound Component 패턴핵심 개념은 간단하다.부모 컴포넌트가 상태를 관리하고, 자식 컴포넌트들은 Context를 통해 그 상태를 공유하는 것이다.Radix UI의 Select 컴포넌트에서 이 패턴을 확인할 수 있었다.// Context 생성const SelectContext = React.createCont..
시작말프로젝트에서 '공유' 기능을 구현하면서 다음과 같은 요구사항이 생겼다.공유된 링크를 클릭했을 때 앱이 설치되어 있으면 앱이 열려야 하고앱이 미설치 상태라면 웹 브라우저로 열려야 한다.이러한 동작을 iOS에서는 유니버셜 링크(Universal Links), 안드로이드에서는 앱 링크(App Links)라고 부른다. 이전에 모동숲마켓에서 푸시 알림을 클릭했을 때 앱이 열리도록 딥링크를 구현한 적 있다.그때는 Custom URL Scheme 방식을 사용했는데, 이 방식은 앱이 설치된 경우에만 동작하고, 앱이 설치되어있지 않으면 시에는 아무 동작도 하지 않는다는 한계가 있다.그래서 이번에는 앱 설치 여부와 관계없이 동작하는 링크 구조를 구현해야했고, Universal Links/App Links를 적용하게 ..