0
0
React Nativemobile~20 mins

Skeleton loading screens in React Native - Practice Problems & Coding Challenges

Choose your learning style9 modes available
Challenge - 5 Problems
🎖️
Skeleton Screen Master
Get all challenges correct to earn this badge!
Test your skills under time pressure!
ui_behavior
intermediate
2:00remaining
What will this skeleton loader display?
Consider this React Native component that uses a simple skeleton loader. What will the user see while the data is loading?
React Native
import React from 'react';
import { View, StyleSheet } from 'react-native';

export default function SkeletonLoader() {
  return (
    <View style={styles.container}>
      <View style={styles.skeletonBox} />
      <View style={styles.skeletonLine} />
      <View style={styles.skeletonLine} />
    </View>
  );
}

const styles = StyleSheet.create({
  container: { padding: 20 },
  skeletonBox: { width: 100, height: 100, backgroundColor: '#ccc', borderRadius: 8, marginBottom: 10 },
  skeletonLine: { height: 20, backgroundColor: '#ddd', borderRadius: 4, marginBottom: 6 }
});
AA white box with two colored buttons below it.
BAn image loaded with text below it.
CA gray square box with two gray horizontal bars below it, simulating loading content.
DA blank screen with no visible elements.
Attempts:
2 left
💡 Hint
Look at the backgroundColor and shapes used in the styles.
lifecycle
intermediate
1:30remaining
When should you hide the skeleton screen?
In a React Native app, when is the best time to stop showing the skeleton loading screen and display the actual content?
AAfter the data has finished loading and is ready to display.
BOnly after a fixed timeout of 5 seconds, ignoring data state.
CAs soon as the component mounts, regardless of data loading state.
DWhen the user taps the screen.
Attempts:
2 left
💡 Hint
Think about when the real content is ready to replace the placeholder.
📝 Syntax
advanced
2:30remaining
Which code correctly animates a skeleton loader's opacity?
Which option correctly uses React Native's Animated API to create a pulsing opacity effect for a skeleton loader?
React Native
import React, { useEffect, useRef } from 'react';
import { Animated, View, StyleSheet } from 'react-native';

export default function PulsingSkeleton() {
  const opacity = useRef(new Animated.Value(1)).current;

  useEffect(() => {
    Animated.loop(
      Animated.sequence([
        Animated.timing(opacity, { toValue: 0.3, duration: 700, useNativeDriver: true }),
        Animated.timing(opacity, { toValue: 1, duration: 700, useNativeDriver: true })
      ])
    ).start();
  }, [opacity]);

  return <Animated.View style={[styles.skeleton, { opacity }]} />;
}

const styles = StyleSheet.create({
  skeleton: { width: 100, height: 20, backgroundColor: '#ccc', borderRadius: 4 }
});
AUses Animated.loop with Animated.sequence of two Animated.timing calls changing opacity between 1 and 0.3.
BUses setInterval to change opacity state every 700ms without Animated API.
CUses Animated.timing once without loop or sequence, so opacity changes only once.
DUses Animated.spring to animate opacity from 1 to 0.3 repeatedly.
Attempts:
2 left
💡 Hint
Look for the use of Animated.loop and Animated.sequence for continuous animation.
navigation
advanced
2:30remaining
How to keep skeleton screen visible during navigation?
In a React Native app using React Navigation, you want to show a skeleton loader on a screen while fetching data. Which approach ensures the skeleton screen remains visible during navigation transitions until data loads?
AShow skeleton in the screen component and fetch data in useEffect; skeleton hides after data loads.
BUse a modal overlay with skeleton that blocks navigation until data loads.
CNavigate to a blank screen first, then navigate again to the data screen after loading completes.
DFetch data in a parent navigator component and pass data as props; screen shows skeleton until props arrive.
Attempts:
2 left
💡 Hint
Think about where data is fetched and how props control rendering.
🧠 Conceptual
expert
2:00remaining
Why prefer skeleton loaders over spinners in mobile apps?
Which reason best explains why skeleton loading screens are often better than simple spinners for mobile app user experience?
ASpinners use less battery and are easier to implement.
BSkeleton loaders show approximate layout, reducing perceived wait time and layout shifts.
CSkeleton loaders require no styling and are faster to code.
DSpinners provide more detailed information about loading progress.
Attempts:
2 left
💡 Hint
Consider how users perceive waiting and content stability.