# useSafeArea URL: /lynx/hooks/use-safe-area Source: https://github.com/daangn/seed-design/blob/dev/docs/content/lynx/hooks/use-safe-area.mdx Lynx 앱에서 top/bottom safe area inset 값을 가져오는 훅입니다. 사용 가능 버전: @seed-design/lynx-react@0.1.0 ## Import ```ts import { useSafeArea } from "@seed-design/lynx-react"; ``` `useSafeArea`는 `@seed-design/lynx-react` 패키지에 포함되어 있습니다. host 앱이 주입하는 `lynx.__globalProps.safeAreaInsetTop` / `safeAreaInsetBottom` 값을 우선 읽고, 값이 없으면 Lynx CSS `env(safe-area-inset-*)`를 fallback으로 반환합니다. ## Usage ### 기본 사용 ```tsx import { useSafeArea } from "@seed-design/lynx-react"; function Screen() { const { safeAreaInsetTop, safeAreaInsetBottom } = useSafeArea(); return ( Content ); } ``` ### Box와 함께 사용 ```tsx import { Box } from "@seed-design/lynx-react"; function Screen() { return ( Content ); } ``` `Box pt="safeArea"` / `pb="safeArea"`도 내부적으로 `useSafeArea`와 같은 safe area resolve 로직을 사용합니다. ## 동작 방식 값 소스 우선순위는 다음과 같습니다. 1. `lynx.__globalProps.safeAreaInsetTop` / `safeAreaInsetBottom` 2. `env(safe-area-inset-top)` / `env(safe-area-inset-bottom)` host가 `0`이 아닌 유효한 숫자 값을 주입하면 해당 값을 `px` 문자열로 변환합니다. 값이 없거나 `0`이면 CSS `env()` 문자열을 반환하고, 실제 px 해석은 Lynx layout 단계에 맡깁니다. ## API ### Return | Property | Type | Description | | --------------------- | -------- | ---------------------------- | | `safeAreaInsetTop` | `string` | top safe area inset 값입니다. | | `safeAreaInsetBottom` | `string` | bottom safe area inset 값입니다. | ## 사용 시 주의사항 - host global props가 없으면 CSS `env(safe-area-inset-*)` fallback을 반환합니다. 이 값은 JavaScript에서 px로 resolve되지 않고 style/layout 단계에서 해석됩니다. - `BottomSheet.Content`처럼 컴포넌트 구조상 safe area가 필요한 경우에는 컴포넌트 내부에서 bottom safe area를 처리합니다. - v1에서는 top/bottom만 지원합니다. left/right/p/px/py safe area shorthand는 열지 않습니다. - BG → FG 딥링크 진입처럼 native safe area 계산 타이밍이 흔들릴 수 있는 환경에서는 host 앱이 `lynx.__globalProps.safeAreaInsetTop` / `safeAreaInsetBottom`을 안정적으로 주입하는지 확인해야 합니다.