Trung BìnhReact Native iconReact Native

`Platform.OS` / `Platform.select` — khi nào dùng, khi nào tách file `.ios.tsx` / `.android.tsx`?

Inline check (Platform.OS / Platform.select) dùng cho khác biệt nhỏ trong cùng một component:

tsx
const styles = StyleSheet.create({
  shadow: Platform.select({
    ios: { shadowColor: '#000', shadowOpacity: 0.2, shadowRadius: 4 },
    android: { elevation: 4 },
  }),
})

Tách file (Component.ios.tsx + Component.android.tsx) dùng khi:
- Code khác biệt nhiều (>30%) — vd map view dùng react-native-maps iOS gọi Apple Maps, Android gọi Google Maps qua key khác.
- Native module chỉ tồn tại một bên.
- Performance: tránh ship code không dùng — Metro bundler tự pick .ios.tsx cho iOS, .android.tsx cho Android, code platform khác không vào bundle.

Trade-off: tách file khó maintain (logic share phải extract ra Component.shared.ts), nên chỉ tách khi thật sự cần. Còn Platform.OS === 'ios' rải rác hơn 5–6 chỗ trong file thì chính là tín hiệu nên tách.

Xem toàn bộ React Native cùng filter theo level & chủ đề con.

Mở danh sách React Native