Bird
Raised Fist0
React Nativemobile~20 mins

Platform-specific styles in React Native - Mini App: Build & Ship

Choose your learning style10 modes available
Build: Platform Style Demo
A simple screen that shows a box styled differently on iOS and Android using platform-specific styles.
Target UI
-------------------------
| Platform Style Demo   |
|-----------------------|
|                       |
|   [ Colored Box ]      |
|                       |
|  (iOS: Blue, Android:  |
|   Green background)    |
|                       |
-------------------------
Display a centered box with fixed width and height
Use blue background color on iOS devices
Use green background color on Android devices
Use React Native's Platform API or StyleSheet platform-specific styles
Add a text label below the box showing the current platform name
Starter Code
React Native
import React from 'react';
import { View, Text, StyleSheet, Platform } from 'react-native';

export default function PlatformStyleDemo() {
  return (
    <View style={styles.container}>
      {/* TODO: Add the colored box here with platform-specific background color */}
      {/* TODO: Add a Text component below showing the platform name */}
    </View>
  );
}

const styles = StyleSheet.create({
  container: {
    flex: 1,
    justifyContent: 'center',
    alignItems: 'center',
    backgroundColor: '#fff'
  },
  // TODO: Add styles for the box here
});
Task 1
Task 2
Task 3
Solution
React Native
import React from 'react';
import { View, Text, StyleSheet, Platform } from 'react-native';

export default function PlatformStyleDemo() {
  return (
    <View style={styles.container}>
      <View style={styles.box} />
      <Text style={styles.platformText}>Platform: {Platform.OS}</Text>
    </View>
  );
}

const styles = StyleSheet.create({
  container: {
    flex: 1,
    justifyContent: 'center',
    alignItems: 'center',
    backgroundColor: '#fff'
  },
  box: {
    width: 150,
    height: 150,
    backgroundColor: Platform.select({
      ios: 'blue',
      android: 'green',
      default: 'gray'
    }),
    borderRadius: 10
  },
  platformText: {
    marginTop: 20,
    fontSize: 18,
    color: '#333'
  }
});

We use React Native's Platform API to apply different background colors depending on the device OS. The Platform.select method helps us write platform-specific styles cleanly inside the StyleSheet. The box is centered with fixed size and rounded corners. Below it, a Text component shows the current platform name dynamically using Platform.OS.

This approach keeps the UI consistent but visually distinct on iOS and Android, demonstrating platform-specific styling in React Native.

Final Result
Completed Screen
-------------------------
| Platform Style Demo   |
|-----------------------|
|                       |
|   ███████████████     |
|   ███████████████     |
|   ███████████████     |
|                       |
|  Platform: ios        |
-------------------------
User sees a colored box in the center: blue on iOS, green on Android
Below the box, the text shows 'Platform: ios' or 'Platform: android' accordingly
No interactive elements on this screen
Stretch Goal
Add a button that toggles the box color between the platform color and red when pressed.
💡 Hint
Use React useState hook to track toggle state and change the box background color accordingly.

Practice

(1/5)
1. What is the main purpose of using Platform.OS in React Native styles?
easy
A. To apply different styles depending on the device's operating system
B. To detect the screen size of the device
C. To change the app's language automatically
D. To access the device's GPS location

Solution

  1. Step 1: Understand what Platform.OS does

    Platform.OS returns the current device's operating system, like 'ios' or 'android'.
  2. Step 2: Connect Platform.OS to styling

    Developers use it to apply styles that look good on each platform, adjusting UI differences.
  3. Final Answer:

    To apply different styles depending on the device's operating system -> Option A
  4. Quick Check:

    Platform.OS = conditional styles [OK]
Hint: Platform.OS helps pick styles per device type [OK]
Common Mistakes:
  • Thinking Platform.OS detects screen size
  • Confusing it with language settings
  • Using it to get device hardware info
2. Which of the following is the correct syntax to use Platform.select for styles in React Native?
easy
A. const styles = { color: Platform.select({ ios: 'blue', android: 'green' }) };
B. const styles = Platform.select({ color: 'blue', color: 'green' });
C. const styles = Platform.select('ios' ? 'blue' : 'green');
D. const styles = { color: Platform.OS('ios' ? 'blue' : 'green') };

Solution

  1. Step 1: Recall Platform.select usage

    Platform.select takes an object with keys for platforms and returns the value for the current platform.
  2. Step 2: Check syntax correctness

    const styles = { color: Platform.select({ ios: 'blue', android: 'green' }) }; correctly uses Platform.select inside a style object with platform keys and values.
  3. Final Answer:

    const styles = { color: Platform.select({ ios: 'blue', android: 'green' }) }; -> Option A
  4. Quick Check:

    Platform.select = object with platform keys [OK]
Hint: Platform.select uses an object with platform keys [OK]
Common Mistakes:
  • Passing a ternary string instead of an object
  • Using Platform.OS as a function
  • Duplicating keys without platform names
3. What will be the background color of the following React Native style on an Android device?
const styles = {
  backgroundColor: Platform.select({
    ios: 'red',
    android: 'yellow',
    default: 'gray'
  })
};
medium
A. red
B. yellow
C. gray
D. undefined

Solution

  1. Step 1: Identify the platform

    The device is Android, so Platform.select will pick the 'android' key value.
  2. Step 2: Check the value for Android

    The value for 'android' is 'yellow', so the background color will be yellow.
  3. Final Answer:

    yellow -> Option B
  4. Quick Check:

    Android platform picks 'yellow' [OK]
Hint: Platform.select picks value matching current OS key [OK]
Common Mistakes:
  • Choosing the default value instead of platform key
  • Confusing iOS and Android values
  • Assuming undefined if platform key exists
4. Identify the error in this React Native style code using Platform.select:
const styles = {
  fontSize: Platform.select({
    ios: 16,
    android: 14
  });
};
medium
A. Missing default key in Platform.select object
B. Platform.select cannot be used inside style objects
C. Extra semicolon after Platform.select call
D. fontSize should be a string, not a number

Solution

  1. Step 1: Check syntax of Platform.select usage

    The object passed to Platform.select is correct, and keys ios and android are valid.
  2. Step 2: Identify syntax error

    There is an extra semicolon after the Platform.select call inside the object, which is invalid syntax.
  3. Final Answer:

    Extra semicolon after Platform.select call -> Option C
  4. Quick Check:

    Semicolon inside object literal is syntax error [OK]
Hint: No semicolon inside object properties [OK]
Common Mistakes:
  • Thinking default key is mandatory
  • Assuming fontSize must be string
  • Believing Platform.select can't be in styles
5. You want a button to have a shadow on iOS but no shadow on Android. Which style code correctly achieves this?
hard
A. const buttonStyle = { shadowColor: Platform.select({ ios: '#000', android: 'transparent' }), shadowOpacity: 0.5 };
B. const buttonStyle = { shadowColor: '#000', shadowOpacity: Platform.select({ ios: 0.5, android: 0 }) };
C. const buttonStyle = { shadowColor: '#000', shadowOpacity: 0.5, elevation: Platform.select({ ios: 0, android: 0 }) };
D. const buttonStyle = { shadowColor: Platform.OS === 'ios' ? '#000' : undefined, shadowOpacity: Platform.OS === 'ios' ? 0.5 : 0 };

Solution

  1. Step 1: Understand shadow properties on platforms

    iOS uses shadowColor and shadowOpacity for shadows; Android uses elevation. To have no shadow on Android, shadow properties should be disabled or undefined.
  2. Step 2: Analyze each option for correct conditional styling

    const buttonStyle = { shadowColor: Platform.OS === 'ios' ? '#000' : undefined, shadowOpacity: Platform.OS === 'ios' ? 0.5 : 0 }; uses Platform.OS === 'ios' to set shadowColor and shadowOpacity only on iOS, setting them to undefined or 0 on Android, effectively disabling shadow.
  3. Final Answer:

    const buttonStyle = { shadowColor: Platform.OS === 'ios' ? '#000' : undefined, shadowOpacity: Platform.OS === 'ios' ? 0.5 : 0 }; -> Option D
  4. Quick Check:

    Use Platform.OS check for conditional shadow [OK]
Hint: Use Platform.OS === 'ios' for iOS-only styles [OK]
Common Mistakes:
  • Setting Android shadowColor instead of disabling
  • Using elevation without Android values
  • Not disabling shadowOpacity on Android
Recommended

Ready to prove it?

Pass the test and this pattern moves unknown strong while earning +1 Grip toward your certificate.

10 questions~5 mineasy hard