appandflow / appandflow/react-native-safe-area-context

SafeAreaView does not detect if a phone have a dynamic island or not

Ouverte
#682 0 commentaires 0 réactions 0 personnes assignées Voir sur GitHub
Langage dominant
TypeScript
Étoiles
2.8k
Forks
258
Merge moyen
3 j 1 h
PR mergées (30 j)
2

Description

### Description

I want the SafeAreaView to apply dynamic padding depending on the actual device’s top inset. For example:

iPhone 16 Pro Max → larger status bar + Dynamic Island → needs more top/bottom safe area padding

Pixel 4 → no notch → should have smaller insets

Other Android devices → shapes vary (hole-punch, waterfall, etc.)

Right now my implementation is overly simplified:

```
const hasNotch = Platform.OS === 'ios'

return isTransparent ? content : (

{content}

)

```

Expected behavior

SafeAreaView should automatically apply padding based on the real device safe area insets, not a hardcoded boolean. Ideally:

Use the actual safe area bottom inset

Add additional padding only when needed

Work correctly across iOS + Android + future devices

![Image](https://github.com/user-attachments/assets/4b6b2d7c-cc51-4a33-a424-52d6c27e03db)

![Image](https://github.com/user-attachments/assets/e92553f9-446d-401a-ad43-a9ae47e774a5)

### Steps to reproduce

```
const StatusBar = observer(() => {
const isTransparent = TRANSPARENT_STATUS_BAR_SCENES.includes(rootStore.layoutStore.currentScene)
const currentScene = rootStore.layoutStore.currentScene
const insets = useSafeAreaInsets()

// // Only add padding if device has notch/Dynamic Island (top inset > 20px)
// // This works for both iOS (notch/Dynamic Island) and Android (notch)
// const hasNotch = Platform.OS === 'ios'

const content = (

)

// Don't wrap in SafeAreaView if currentScene is null (navigation not ready yet)
// This prevents double SafeAreaView padding on first render
if (currentScene === null) {
return content
}

return isTransparent ? content : (

{content}

)
})
```

### Snack or a link to a repository

https://github.com/Fundy-asia/user-app

### Safe Area Context version

^5.6.2

### React Native version

0.80.2

### Platforms

Android

### Architecture

None

### Build type

None

### Device

None

### Device model

Pixel 4

### Acknowledgements

Yes

Guide de contribution

Ouvrir le guide de contribution

Évaluation

Cette issue n'a pas encore été évaluée.

Recevez les nouvelles issues par e-mail

Un résumé court des issues GitHub adaptées aux débutants.