SnapSummary logo SnapSummary Try it free →
React Native Full Course for Beginners
freeCodeCamp.org · Watch on YouTube · Generated with SnapSummary · 2026-07-24

00:00 - Introduction to React Native Course πŸŽ“

  • Overview of the course:
    • Designed for beginners with over 4 hours of content.
    • Covers the basics of mobile app development in 8 chapters.

05:14 - Tools Required βš™οΈ

  • Essential tools for setup:
    • Visual Studio Code (VS Code): Download based on your OS.
    • Git: To manage your code.
    • Node.js: Recommended long-term support version.

11:50 - Understanding Dependencies πŸ“¦

  • Explanation of the package.json:
    • Overview of installed packages from the Expo application creation.
    • Importance of using the correct version for consistency in learning.

14:24 - Expo Setup πŸ“²

  • Steps to install Expo App for development:
    • Instructions to scan QR codes for Expo Go on Android/iOS.
    • Options for using Android Emulator and iOS Simulator.

14:50 - Starting the Application πŸš€

  • Final command for launching the application:
    • Use npx expo start in the terminal while in the correct project folder.
    • Importance of being in the right directory when executing commands.

15:02 - Starting the Project πŸš€

  • The project has begun, showing a QR code for access.
  • Information provided includes the IP address and hostname for application browsing.

15:35 - Using the Expo App πŸ“±

  • Instructions on scanning the QR code using the Expo app on a mobile device.
  • Troubleshooting tips provided if the application fails to load, emphasizing that both devices must be on the same Wi-Fi network.

17:30 - Web Access and Emulation 🌐

  • Option to access the application via a browser at localhost:8081.
  • Discussed how to use Chrome DevTools to simulate a mobile device view.

21:35 - Making App Changes ✏️

  • Guide on modifying the default application’s welcome message from "Welcome" to "Hello World."
  • Confirmation of changes visible on both web and mobile versions of the app.

24:50 - Creating a New App πŸ› οΈ

  • Demonstrated the command to create a new Expo app and the importance of using the default template.
  • Overview of the essential tools integrated within the template, including navigation and cross-platform compatibility.

30:04 - Applying Styles in React Native ✨

  • Introduces style props in React Native, differentiating from HTML attributes.
  • Demonstrates how to apply styles using styles.container and styles.text.

31:14 - Adding Images to the Project πŸ–ΌοΈ

  • Discusses downloading images from GitHub for use in the project.
  • Shows how to add images to the assets directory within the app.

33:12 - Implementing Image Background πŸ–ŒοΈ

  • Explains importing and using ImageBackground in the code.
  • Details on setting up the source and styles for the background image.

37:06 - Customizing Text for Readability πŸ”€

  • Introduces background color for text to improve visibility against the image.
  • Demonstrates how to apply a semi-transparent black background to enhance text legibility.

39:43 - Modifying Splash and Icon Configurations πŸ“±

  • Discusses editing the app.json file to change the app's splash screen and icon.
  • Describes how to see updates on a mobile device after restarting the Expo server.

45:04 - File Management and TypeScript Options πŸš€

  • Discussion on the index.jsx file created from TSX.
  • Users are informed TypeScript is enabled but optional for this project.
  • Steps to move the file outside the tabs directory and adjustments to the TS config file.

47:04 - Application Layout and Navigation Setup 🧭

  • Introduction of header visibility changes and navigation using Link.
  • Emphasizes similarities with Next.js links.
  • Creation of an explore link and associated styles for better user navigation.

50:04 - Button Implementation πŸ”˜

  • Replacing plain links with buttons for navigation via Pressable from React Native.
  • Instructions on styling the button and alignment adjustments for better UI representation.

54:56 - Structural Changes in Project πŸ“‚

  • Introduction of a contact page and modifications to navigate to it.
  • Adjustments to the root layout file for improved page management.
  • Overview of using Stack to manage the navigation structure effectively.

59:23 - Header Customization πŸ› οΈ

  • Options to hide and customize headers for specific pages.
  • Demonstration of header visibility changes on the homepage and the contact page for improved usability.

1:00:11 - Web File Configuration πŸ“„

  • Overview of files: Includes special files like plus.html.TSX used for static page configuration.
  • Not Found File: Discusses plus.not-found file which displays a custom error message for non-existent screens.

1:02:00 - Group Directory and Layout Creation πŸ“

  • Group Definitions: Introduces the functionality of creating directories in parentheses to define groups (e.g., (coffee)).
  • Layout File Setup: Explains the creation of underscore layout.jsx and the use of slot for passing components.

1:04:55 - Header Visibility and Navigation πŸ‘“

  • Header Control: Discusses handling group headers and modifying them to be hidden for better organization.
  • Navigation Flow: Demonstrates keeping navigation functionally while removing visible headers.

1:08:00 - Tabs Implementation and Customization πŸ€

  • Tabs Directory Setup: Details the importance of the tabs directory for organizing layouts.
  • Icon and Color Customization: Discusses changing tab bar colors and icons to match app themes.

1:14:00 - Icon Selection for Tabs πŸ”

  • Choosing Icons: Reviews how to find and select appropriate icons for the tab bar using resources.
  • UI Consistency: Emphasizes the use of visually consistent icons for user navigation and experience.

1:15:14 - Icon Integration πŸ“±

  • Discusses importing icons for the app from Ionicons.
  • Confirms that the tab bar icon component uses the Ionicons library correctly.

1:16:27 - Assignment Reminder πŸ“š

  • Reminds viewers about an assignment to convert the explore page into a contact page.
  • Encourages using a theme text component for color scheme consistency.

1:17:26 - Next Lesson Overview πŸ“–

  • Previews the next lesson focusing on lists in React Native.
  • Advises to start the application using npx Expo start for real-time updates.

1:19:00 - Layout Adjustments πŸ”„

  • Describes removing the tabs directory to simplify navigation in the app.
  • Introduces the appearance module from React Native for handling light/dark themes.

1:29:20 - Using Flat Lists β˜•

  • Explains the difference between FlatList and SectionList for handling data.
  • Confirms the implementation of FlatList for a coffee menu in the app.

1:30:19 - Setting Up Color Scheme 🎨

  • Define color scheme using imports.
  • Determine theme based on color scheme values (dark/light).

1:31:07 - Creating Styles Function 🎨

  • Introduce a new function for styles, enhancing style definitions.
  • Utilize stylesheet for styles in the application.

1:32:01 - Using Safe Area View πŸ“±

  • Explain the necessity of using Safe Area View for mobile devices.
  • Distinguish between Scroll View for web and Safe Area View for mobile.

1:35:04 - Flat List & Data Import πŸ“œ

  • Start integrating Flat List component with required data and props.
  • Create constants for menu items and images.

1:39:01 - Rendering Menu Items 🍽️

  • Outline structure for rendering menu items, including titles, descriptions, and images.
  • Establish a fallback to ensure Flat List displays content without errors.

1:45:24 - Styling Content Container 🎨

  • Adjusted padding values for better layout:
    • Bottom: 20
    • Horizontal (Left and Right): 12
  • Set background color using the theme.

1:46:11 - Adding Separator Component πŸ› οΈ

  • Defined a separator component to create a visual distinction between items in a list.
  • Configured height to 1 with a background color based on theme color scheme (dark or light).
  • Created simple header ("Top of List") and footer ("End of List") components for the Flat List.
  • Applied center styling to both header and footer for consistent alignment.

1:52:09 - Handling Empty State in List πŸ“­

  • Added list empty component to render a message ("No items") when the data array is empty.
  • Demonstrated how to manage display when there’s no content available.

1:59:53 - Finalizing Styles for Menu Items βœ”οΈ

  • Applied styles to menu item texts and images to improve visibility (font sizes/colors).
  • Ensured elements align correctly and fit within the specified dimensions for a polished look.

2:00:27 - Styling Updates 🎨

  • Adjustments made to the menu layout, enhancing overall image presentation.
  • Footer text color updated to white for better visibility.

2:01:58 - Adding Navigation Button πŸ”—

  • New button added on the homepage linking to the menu page.
  • Button styles adjusted for uniformity with margin and width enhancements.

2:03:41 - Finalizing Menu Page βœ…

  • Demonstrated successful navigation to the menu page via the new button.
  • Confirmed layout meets design expectations across mobile view.

2:05:29 - Contact Us Page Showcase πŸ“ž

  • Introduced the contact information page with functionality for direct phone and SMS interaction.
  • Emphasized basic design appropriateness for small business needs.

2:11:17 - Student Challenge Overview πŸŽ“

  • Presented a CRUD app as a challenge, focusing on create, read, update, and delete functionalities in a to-do application.
  • Encouraged learners to use prior knowledge of React and React Native for implementation.

2:15:31 - To-Do List Setup πŸ“‹

  • Initial Setup: Introduction of a to-do list in a CRUD application.
  • Data Import: Data imported from a specified source and set to state.

2:18:55 - Adding New To-Dos βž•

  • Function Implementation: Explained how to add a new to-do using an ID generator and state management.
  • Text Management: Input text is cleared after adding a new to-do.

2:19:54 - CRUD Functions Overview πŸ”„

  • Reading: Implemented reading functionality using a flat list.
  • Updating: Showed how to toggle the completion status of a to-do using a mapping function.

2:21:11 - Removing To-Dos ❌

  • Filter Logic: Mechanism to remove a to-do based on its ID using a filter function is explained.

2:28:40 - Styling and Final Touches 🎨

  • Style Implementation: Discussed applying styles for better layout visibility and user interaction.
  • Adjustments: Ensured the header was hidden and adjusted the input box styling for a cleaner UI.

2:30:36 - Styling Input and Button 🎨

  • Adjusted input styling:
    • Border width and color set.
    • Padding and margin defined.
    • Font size increased for readability.
    • Set min-width to allow shrinking on mobile devices.
  • Button styles applied:
    • Background color changed to white.
    • Font styles set for the button text.

2:32:25 - Adding Flat List to App πŸ“‹

  • Started implementing Flat List for to-dos:
    • Imported Flat List component.
    • Data bound to to-do state.
    • Set up keyExtractor based on to-do ID.

2:34:50 - Defining Render Item Logic πŸ“¦

  • Created render item function for the Flat List:
    • Each item encapsulated in a View component.
    • Included text and a delete button (from Material Community Icons).
    • Styled according to completion status.

2:40:01 - Completing App Styles πŸ–ŒοΈ

  • Finalized styles applied to all components:
    • Set display properties for to-do items.
    • Aligned items in a row with spacing.
    • Added text decoration for completed tasks.

2:42:34 - CRUD Operations and Next Steps βœ”οΈ

  • Verified that all CRUD operations function correctly:
    • Adding, editing, and deleting to-dos worked as expected.
  • Mentioned future lessons on enhancing the app with custom fonts and dynamic routing.
  • Provided details on running the Expo app on mobile devices.

2:45:43 - Font Import and Initial Setup 🎨

  • The setup begins with importing the Enter 500 Medium font using useFonts.
  • Check for loaded and error states immediately after importing.

2:48:09 - Applying Font Styles ✏️

  • The font is applied to the input text and to-do text in styles.
  • A terminal command is introduced for restarting the project with cache clearing.

2:50:35 - Theme Creation 🌈

  • Focus shifts to creating a light and dark theme in the colors.ts file.
  • New color definitions are added, emphasizing the simplicity in light and dark themes.

2:54:32 - Theme Context Setup 🌌

  • A new context directory is created for building a theme context.
  • The theme provider is set to wrap components, enabling theme access through context.

2:59:42 - Theme Toggle Functionality βš™οΈ

  • Includes a toggle button to switch between light and dark modes.
  • The button's action checks current theme state and switches accordingly.

3:00:49 - Setting Up Theme Colors and Styles 🎨

  • Set color to the defined theme and text from context.
  • Initialize 'selectable' to avoid browser warnings.
  • Introduce a function to create styles for dynamic theming, updating background and button colors based on theme.

3:04:10 - Implementing Toggle Theme Functionality πŸ”„

  • Test the toggle button functionality for dark and light modes.
  • Verify changes in the browser, ensuring both modes function seamlessly.

3:06:25 - Adding Animations to To-Do List 🌟

  • Integrate animations using React Native Reanimated for smoother transitions.
  • Adjust components to utilize animated FlatList for improved UI responsiveness.

3:09:37 - Introducing Local Data Storage πŸ—„οΈ

  • Install Async Storage to maintain to-do data persistently between sessions.
  • Set up method to fetch stored to-dos on app load and sort them for organization.

3:14:55 - Saving To-Do Data to Storage πŸ’Ύ

  • Establish a useEffect to handle saving the latest to-do states.
  • Ensure that data persists and correctly displays even after application reloads.

3:16:00 - Asynchronous Data Handling πŸ”„

  • Introduction of async function to handle storing JSON data.
  • Utilize JSON.stringify to convert to-dos and store using async storage.

3:17:14 - Application Testing πŸ“±

  • Restart the app using npx Expo start to ensure updates are applied.
  • Validation of app functionality on both web and mobile platforms.

3:19:12 - Status Bar Implementation πŸ“Š

  • Address the status bar visibility issues between light and dark modes.
  • Implement StatusBar from Expo to better manage the interface appearance.

3:22:11 - Dynamic Routing Introduction 🚦

  • Discuss the upcoming feature of dynamic routing for individual to-do items.
  • Preparation to set up routing to allow editing of to-dos without creating multiple routes.

3:30:00 - Dynamic Functionality Testing πŸ”

  • Testing of dynamic routing in the application.
  • Verify that item clicks will navigate to the specific to-do edit page successfully.

3:31:10 - Interactive Editing of To-Dos πŸ“

  • The speaker demonstrates zooming in on the screen for better visibility of the editing process.
  • The interface displays the ID numbers for each to-do.

3:31:34 - Setting Up the Edit Page βš™οΈ

  • Transition to Visual Studio Code (VS Code) for editing.
  • The speaker discusses closing terminal windows and navigating between files.
  • Emphasizes the need to import React hooks and necessary components.

3:34:11 - Loading and Updating To-Do Data πŸ”„

  • Introduction to defining state for the individual to-do being edited.
  • The use of async functions to fetch and update to-do data in AsyncStorage is covered.

3:39:39 - Handling Save Functionality πŸ’Ύ

  • Discusses implementing the handleSave function for saving changes.
  • Comparison between existing to-dos and the updated to-do is made for updating the storage.

3:45:39 - Finalizing the Edit Page UI 🎨

  • The speaker wraps components within Safe Area View.
  • Details on adding text inputs for editing, and buttons for saving or canceling changes are described.
  • A brief mention of the style application for the UI components is also outlined.

3:46:27 - Starting Input Configuration ✍️

  • Initial setup of input field with placeholder, text color, and value.
  • Utilizes optional chaining for input handling to avoid undefined errors.

3:48:24 - Theme Toggle Implementation 🌈

  • Implementation of a button to toggle theme between light and dark modes.
  • Reuses previous styles for consistent design across the button.

3:49:09 - Save and Cancel Button Setup πŸ’Ύ

  • Establishing save and cancel buttons with distinct styling.
  • Callback functions assigned for each button to manage to-do list actions.

3:56:00 - Styling Adjustments in Dark Mode 🎨

  • Adjustments to styles for input and buttons to improve visibility in dark mode.
  • Focus on ensuring both input and buttons retain usability across screen sizes.

4:00:11 - Input Length Limitation βŒ›

  • Implementation of a maximum length restriction on input fields to enhance user experience.
  • Ensures that entries are contained within 30 characters for better display and functionality.

4:01:32 - Task Creation and Editing πŸ“

  • User saves a task to take out the trash every week.
  • Character limit issues encountered while editing the task.

4:02:16 - Introduction to Development Builds πŸš€

  • Exploring Dynamic routes with Expo Router for a React Native app.
  • Difference between Expo Go and development builds outlined.

4:03:30 - Setting Up Development Environment πŸ› οΈ

  • User logs into Expo on expo.dev and sets up for a development build.
  • Introduces EAS (Expo Application Services) for building apps in the cloud.

4:07:20 - Configuring EAS Build βš™οΈ

  • Commands for EAS build initialization and configuration.
  • Importance of skipping overwriting local iOS/Android directories.

4:14:41 - Building Android Application πŸ“±

  • User initiates EAS build process for Android.
  • Discussion on installing Expo Dev client and generating an Android key store.

4:16:33 - Build Progress Overview πŸš€

  • Added details in logs while the build progresses.
  • Mentioned running Expo doctor to check compatibility issues.

4:17:14 - Build Completion and QR Code πŸ“±

  • Build has completed, displaying a new QR code.
  • The need to start the local server with npx Expo start highlighted.

4:18:14 - Scanning QR Code πŸ”

  • Discussed challenges encountered with the tunnel flag while scanning the QR code.
  • Successfully started the development server and scanned the correct QR code.

4:20:10 - Installation Process πŸ“₯

  • Explained the installation process on mobile after downloading the file.
  • Highlighted potential security prompts related to app installations.

4:22:31 - Resources and Next Steps πŸ“š

  • Encouraged to reference Expo documentation for further learning.
  • Highlighted future learning opportunities, including beginner projects and additional resources.
πŸ“¬ Never miss a freeCodeCamp.org video β€” every new upload summarised in your inbox. Follow free

Summarize any YouTube video instantly

Get AI-powered summaries, timestamps, and Q&A for free.

Generate your own summary →
More summaries →