SafeAreaView — React Native component voor het ontwerpen met het veilige gebied van het scherm op apparaten met uitsparingen en afrondingen. Op iPhone met Notch en Dynamic Island kan inhoud worden bedekt door de camera en indicatoren. SafeAreaView voegt automatisch marges toe om te voorkomen dat de interface wordt afgesneden door systeemelementen. Lees meer over Safe Area in de officiële Meta documentatie.
Belangrijkste
SafeAreaView — React Native component die automatisch interne marges (padding) toevoegt zodat inhoud niet wordt bedekt door systeeminterfce-elementen: statusbalk, Notch, Dynamic Island en het systeemnavigatiepaneel. De component verscheen in React Native 0.50 voor iOS en werd later uitgebreid voor Android.
Op iOS gebruikt SafeAreaView native UIView.safeAreaInsets, geïntroduceerd in iOS 11 (2017). Op Android houdt de component rekening met WindowInsets — systeemmarges beschikbaar vanaf Android 5.0 (API 21). Volgens Apple gegevens (2026) heeft 92% van de actieve iPhones een scherm met uitsparing of Dynamic Island.
Het concept Safe Area — onderdeel van de Apple HIG (Human Interface Guidelines) aanbevelingen. Vóór iPhone X (2017) was de volledige schermruimte veilig. Met de komst van Notch definieerde Apple gebieden waar inhoud niet mag worden geplaatst: camera-uitsparing, tijd- en batterij-indicator, home-indicator. Android voerde een vergelijkbaar concept in met de komst van schermen met uitsparing in 2018.
Op iOS leest SafeAreaView safeAreaInsets uit de native layout-guide. De bovenste marge omvat de hoogte van de statusbalk (meestal 44 of 50 punten voor iPhone met Notch). Onderste marge — 34 punten voor de Home Indicator. Android gebruikt WindowInsets — bovenste marge voor de statusbalk en onderste voor systeemnavigatie.
| Platform | Bovenste marge | Onderste marge | Bron |
|---|---|---|---|
| iOS (Notch) | 44-50 pt | 34 pt | safeAreaInsets.top / .bottom |
| iOS (zonder Notch) | 20 pt | 0 pt | safeAreaInsets.top / .bottom |
| Android (met uitsparing) | 24-48 dp | 24-48 dp | WindowInsets.systemBarsInsets |
| Android (zonder uitsparing) | 24 dp | 0 dp | WindowInsets.statusBarsInsets |
Belangrijk: SafeAreaView past padding automatisch toe, maar alleen voor de root-container. Geneste componenten krijgen geen bescherming — elk scherm moet zijn eigen SafeAreaView hebben. Voor modale vensters en BottomSheet moet u marges apart in overweging nemen.
Notch — hardware-uitsparing aan de bovenkant van het scherm met camera en sensoren. Verschenen in iPhone X (2017). Dynamic Island — software-hardware gebied van iPhone 14 Pro en nieuwer dat Notch vervangt door een interactief element. Beide vereisen een bovenste marge van 50-56 pt.
Op Android hebben uitsparingen verschillende vormen: traanvormig, gat in de hoek (punch-hole), strook onder de camera. SafeAreaView op Android gebruikt WindowInsets die rekening houden met de vorm van de uitsparing. Voor apps in liggende stand worden zijmarges toegevoegd zodat inhoud niet wordt bedekt door systeemelementen.
import React from 'react';
import { SafeAreaView, View, Text } from 'react-native';
const App = () => (
<SafeAreaView style={{ flex: 1 }}>
<View style={styles.content}>
<Text>Content is safe from Notch and system bars</Text>
</View>
</SafeAreaView>
);De Edge-to-edge benadering (Android 15+) adviseert om inhoud onder systeempanelen te tekenen, maar met inachtneming van marges voor interactieve elementen. SafeAreaView helpt deze balans te bewaren: de achtergrond wordt onder de panelen getekend, knoppen en tekst in de veilige zone.
SafeAreaView — de eenvoudigste manier om inhoud te beschermen, maar niet altijd flexibel. De component past dezelfde marges toe aan alle zijden, wat onhandig is wanneer verschillende padding voor verschillende randen nodig is. Zo kunnen zijmarges overbodig zijn en de onderste alleen voor een knop.
Belangrijkste alternatieven: useSafeAreaInsets van react-native-safe-area-context (meest flexibele oplossing), StatusBar.currentHeight op Android, Platform.OS met handmatige controle van het apparaatmodel. Voor complexe gevallen gebruikt u een combinatie van SafeAreaView voor de algemene container en useSafeAreaInsets voor individuele elementen.
import { useSafeAreaInsets } from 'react-native-safe-area-context';
const CustomHeader = () => {
const insets = useSafeAreaInsets();
return (
<View style={{ paddingTop: insets.top }}>
<Header />
</View>
);
};De bibliotheek react-native-safe-area-context — de facto standaard voor werken met Safe Area in React Native. Het wordt ondersteund door Expo, React Navigation en de meeste UI-kits. Het biedt zowel een hook als een Consumer-component voor functionele en class-gebaseerde benaderingen.
react-native-safe-area-context — bibliotheek die een flexibelere API biedt dan de ingebouwde SafeAreaView. Het belangrijkste voordeel — toegang tot afzonderlijke margewaarden (top, bottom, left, right) via de useSafeAreaInsets hook, waardoor ze selectief kunnen worden toegepast.
De bibliotheek biedt ook SafeAreaProvider — een component die verplicht is op het hoogste niveau van de applicatie. Het abonneert zich op veranderingen in systeemmarges bij schermrotatie of het openen van het toetsenbord. React Navigation gebruikt deze bibliotheek standaard.
SafeAreaView van react-native-safe-area-context verschilt van de ingebouwde: het werkt op meer apparaten en ondersteunt animatie van margeveranderingen. Voor een nieuw project wordt aanbevolen deze bibliotheek als afhankelijkheid te installeren en de SafeAreaView ervan te gebruiken in plaats van de ingebouwde.
SafeAreaView wordt vaak verkeerd gebruikt. De eerste fout — elke component in SafeAreaView wikkelen, wat dubbele marges creëert. Regel: één SafeAreaView per root View van het scherm. Geneste componenten erven marges via Flex-lay-out.
Tweede fout — het negeren van Android. Op Android gebruikt SafeAreaView WindowInsets, die kunnen verschillen op verschillende OS-versies. Op Android 15+ kunnen systeempanelen transparant zijn en veranderen marges. Test SafeAreaView altijd op echte apparaten, niet alleen in de emulator.
Derde fout — hard gecodeerde padding. Gebruik nooit Platform.OS === 'ios' ? 44 : 24 — margewaarden veranderen tussen modellen en OS-versies. Gebruik altijd systeem-API's: safeAreaInsets of useSafeAreaInsets. Dynamic Island op iPhone 15 Pro heeft andere marges dan Notch op iPhone X.
Veelgestelde vragen
SafeAreaView werkt op iOS 11+ en Android 5+. Op oudere apparaten zijn de marges nul, wat geen fouten veroorzaakt maar wel handmatige configuratie kan vereisen. Gebruik voor maximale compatibiliteit react-native-safe-area-context.
De ingebouwde SafeAreaView staat niet toe zijden te kiezen. Gebruik useSafeAreaInsets van react-native-safe-area-context: verkrijg insets.top en pas paddingTop toe. Of wikkel SafeAreaView in een View met negatieve margin om de onderste marge te compenseren.
Op sommige Android-apparaten werkt SafeAreaView mogelijk niet vanwege fabrikantinstellingen. Controleer of u React Native 0.64+ gebruikt. Installeer voor gegarandeerde werking react-native-safe-area-context en wikkel de app in SafeAreaProvider.
Ja, bij schermrotatie herberekent SafeAreaView de marges. In liggende stand op iPhone met Notch kunnen zijmarges 0 zijn, de bovenste blijft. De component react-native-safe-area-context abonneert zich automatisch op oriëntatieveranderingen.
SafeAreaView beheert de marges van inhoud ten opzichte van alle systeemelementen (statusbalk, Notch, home-indicator). StatusBar — component voor het beheren van kleur, stijl en zichtbaarheid van de statusbalk. Ze lossen verschillende taken op en kunnen samen worden gebruikt.
Samenvatting
We ontwikkelen een mobiele applicatie turnkey
IT Sectr creëert sinds 2017 iOS- en Android-applicaties voor startups en bedrijven. We adviseren u en stellen de beste oplossing voor.
Lees ook