<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>React Native Tutorial - Proven Tips &amp; Trends by Goloris</title>
	<atom:link href="https://blog.goloris.com/tag/react-native-tutorial/feed/" rel="self" type="application/rss+xml" />
	<link>https://blog.goloris.com</link>
	<description>Build smarter apps with no-code and AI. Proven tips, trends, and expert insights from Goloris to empower your next project.</description>
	<lastBuildDate>Thu, 04 Sep 2025 11:40:24 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.8.2</generator>

<image>
	<url>https://blog.goloris.com/wp-content/uploads/2025/08/android-chrome-512x512-1-90x90.png</url>
	<title>React Native Tutorial - Proven Tips &amp; Trends by Goloris</title>
	<link>https://blog.goloris.com</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>How to Build a To-Do App with React Native in 2025 (Beginner’s Guide)</title>
		<link>https://blog.goloris.com/how-to-build-a-to-do-app-with-react-native-in-2025-beginners-guide/</link>
					<comments>https://blog.goloris.com/how-to-build-a-to-do-app-with-react-native-in-2025-beginners-guide/#respond</comments>
		
		<dc:creator><![CDATA[goloris]]></dc:creator>
		<pubDate>Fri, 29 Aug 2025 23:32:44 +0000</pubDate>
				<category><![CDATA[Mobile Application Development]]></category>
		<category><![CDATA[Expo Beginners Guide]]></category>
		<category><![CDATA[React Native Tutorial]]></category>
		<guid isPermaLink="false">https://blog.goloris.com/?p=3451</guid>

					<description><![CDATA[<p>Why Start With a To-Do App? Learning to code can feel intimidating. The good news is that React Native makes it possible to build [&#8230;]</p>
<p>The post <a href="https://blog.goloris.com/how-to-build-a-to-do-app-with-react-native-in-2025-beginners-guide/">How to Build a To-Do App with React Native in 2025 (Beginner’s Guide)</a> first appeared on <a href="https://blog.goloris.com">Build Smarter with No-Code & AI | Proven Tips & Trends by Goloris</a>.</p>]]></description>
										<content:encoded><![CDATA[<figure class="wp-block-image size-large"><img fetchpriority="high" decoding="async" width="1024" height="683" src="https://blog.goloris.com/wp-content/uploads/2025/08/react-native-expo-1024x683.webp" alt="react native logo, expo logo" class="wp-image-3460" srcset="https://blog.goloris.com/wp-content/uploads/2025/08/react-native-expo-1024x683.webp 1024w, https://blog.goloris.com/wp-content/uploads/2025/08/react-native-expo-300x200.webp 300w, https://blog.goloris.com/wp-content/uploads/2025/08/react-native-expo-768x512.webp 768w, https://blog.goloris.com/wp-content/uploads/2025/08/react-native-expo-400x268.webp 400w, https://blog.goloris.com/wp-content/uploads/2025/08/react-native-expo-1120x747.webp 1120w, https://blog.goloris.com/wp-content/uploads/2025/08/react-native-expo.webp 1536w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>



<h3 class="wp-block-heading">Why Start With a To-Do App?</h3>



<p>Learning to code can feel intimidating. The good news is that React Native makes it possible to build mobile apps for <strong>iOS and Android with a single codebase</strong>, and it’s still one of the most popular frameworks in 2025.</p>



<p>When learning something new, it’s best to start small. That’s why so many developers begin with a <strong>to-do list app</strong>. It’s simple but practical, and teaches you the fundamentals:</p>



<ul class="wp-block-list">
<li>How to structure a React Native project</li>



<li>How to use components like <code>View</code>, <code>Text</code>, <code>TextInput</code>, and <code>Button</code></li>



<li>How to store and update data with <code>useState</code></li>



<li>How to display lists with <code>FlatList</code></li>



<li>How to make things interactive with <code>TouchableOpacity</code></li>
</ul>



<p>By the end of this tutorial, you’ll have a working to-do app you can run on your phone in under an hour. Let’s get started.</p>



<h3 class="wp-block-heading">Step 1: Setting Up the Project</h3>



<p>First, you’ll need <strong>Node.js</strong> installed. Download it from <a href="https://nodejs.org/en/download/" title="">nodejs.org</a>. Installing Node also gives you npm, the package manager we’ll use.</p>



<p>For beginners, the easiest way to start is with <strong>Expo</strong>, which handles a lot of configuration for you. Open your terminal and run:</p>



<div class="wp-block-kevinbatdorf-code-block-pro" data-code-block-pro-font-family="Code-Pro-JetBrains-Mono" style="font-size:.875rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)"><span style="display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#212121"><svg xmlns="http://www.w3.org/2000/svg" width="54" height="14" viewBox="0 0 54 14"><g fill="none" fill-rule="evenodd" transform="translate(1 1)"><circle cx="6" cy="6" r="6" fill="#FF5F56" stroke="#E0443E" stroke-width=".5"></circle><circle cx="26" cy="6" r="6" fill="#FFBD2E" stroke="#DEA123" stroke-width=".5"></circle><circle cx="46" cy="6" r="6" fill="#27C93F" stroke="#1AAB29" stroke-width=".5"></circle></g></svg></span><span role="button" tabindex="0" style="color:#EEFFFF;display:none" aria-label="Copy" class="code-block-pro-copy-button"><pre class="code-block-pro-copy-button-pre" aria-hidden="true"><textarea class="code-block-pro-copy-button-textarea" tabindex="-1" aria-hidden="true" readonly>npx create-expo-app my-todo-app
cd my-todo-app
npm start</textarea></pre><svg xmlns="http://www.w3.org/2000/svg" style="width:24px;height:24px" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="2"><path class="with-check" stroke-linecap="round" stroke-linejoin="round" d="M4.5 12.75l6 6 9-13.5"></path><path class="without-check" stroke-linecap="round" stroke-linejoin="round" d="M16.5 8.25V6a2.25 2.25 0 00-2.25-2.25H6A2.25 2.25 0 003.75 6v8.25A2.25 2.25 0 006 16.5h2.25m8.25-8.25H18a2.25 2.25 0 012.25 2.25V18A2.25 2.25 0 0118 20.25h-7.5A2.25 2.25 0 018.25 18v-1.5m8.25-8.25h-6a2.25 2.25 0 00-2.25 2.25v6"></path></svg></span><pre class="shiki material-theme-darker" style="background-color: #212121" tabindex="0"><code><span class="line"><span style="color: #FFCB6B">npx</span><span style="color: #EEFFFF"> </span><span style="color: #C3E88D">create-expo-app</span><span style="color: #EEFFFF"> </span><span style="color: #C3E88D">my-todo-app</span></span>
<span class="line"><span style="color: #82AAFF">cd</span><span style="color: #EEFFFF"> </span><span style="color: #C3E88D">my-todo-app</span></span>
<span class="line"><span style="color: #FFCB6B">npm</span><span style="color: #EEFFFF"> </span><span style="color: #C3E88D">start</span></span></code></pre></div>



<p>Expo will create a folder called <code>my-todo-app</code> with all the boilerplate files. When you run <code>npm start</code>, you’ll see a QR code in the terminal. Install the <strong>Expo Go app</strong> on your phone, scan the QR code, and—just like that—you’ll see your new app running live on your device.</p>



<figure class="wp-block-image size-large"><img decoding="async" width="1024" height="390" src="https://blog.goloris.com/wp-content/uploads/2025/08/react-native-npx-create-expo-app-1024x390.png" alt="" class="wp-image-3453" srcset="https://blog.goloris.com/wp-content/uploads/2025/08/react-native-npx-create-expo-app-1024x390.png 1024w, https://blog.goloris.com/wp-content/uploads/2025/08/react-native-npx-create-expo-app-300x114.png 300w, https://blog.goloris.com/wp-content/uploads/2025/08/react-native-npx-create-expo-app-768x293.png 768w, https://blog.goloris.com/wp-content/uploads/2025/08/react-native-npx-create-expo-app-1536x585.png 1536w, https://blog.goloris.com/wp-content/uploads/2025/08/react-native-npx-create-expo-app-2048x780.png 2048w, https://blog.goloris.com/wp-content/uploads/2025/08/react-native-npx-create-expo-app-400x152.png 400w, https://blog.goloris.com/wp-content/uploads/2025/08/react-native-npx-create-expo-app-1120x427.png 1120w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>



<figure class="wp-block-image size-large"><img decoding="async" width="1024" height="931" src="https://blog.goloris.com/wp-content/uploads/2025/08/react-native-expo-npm-start-1024x931.png" alt="" class="wp-image-3452" srcset="https://blog.goloris.com/wp-content/uploads/2025/08/react-native-expo-npm-start-1024x931.png 1024w, https://blog.goloris.com/wp-content/uploads/2025/08/react-native-expo-npm-start-300x273.png 300w, https://blog.goloris.com/wp-content/uploads/2025/08/react-native-expo-npm-start-768x698.png 768w, https://blog.goloris.com/wp-content/uploads/2025/08/react-native-expo-npm-start-295x268.png 295w, https://blog.goloris.com/wp-content/uploads/2025/08/react-native-expo-npm-start-1120x1019.png 1120w, https://blog.goloris.com/wp-content/uploads/2025/08/react-native-expo-npm-start.png 1413w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>



<p>At this point it just shows a welcome screen, but that’s our blank canvas.</p>



<h3 class="wp-block-heading">Step 2: Meet React Native’s Core Components</h3>



<p>Before diving into code, let’s look at the building blocks we’ll use. React Native doesn’t use HTML elements like <code>&lt;div&gt;</code> or <code>&lt;p&gt;</code>. Instead, it provides components designed for mobile apps:</p>



<ul class="wp-block-list">
<li><strong><code>View</code></strong> → The most common container, similar to a <code>div</code> on the web. It organizes layout and groups elements together.</li>



<li><strong><code>Text</code></strong> → Used to display text on screen: titles, labels, messages.</li>



<li><strong><code>TextInput</code></strong> → A text field where the user can type input, like new tasks for our app.</li>



<li><strong><code>Button</code></strong> → A simple pressable button, often used for submitting actions.</li>



<li><strong><code>FlatList</code></strong> → An efficient way to render long lists, like our list of todos.</li>



<li><strong><code>TouchableOpacity</code></strong> → Makes any element pressable, and slightly fades (opacity) when tapped. Perfect for making todo items removable.</li>



<li><strong><code>StyleSheet</code></strong> → Keeps your styling code organized. With <code>StyleSheet.create</code>, you define all visual styles (colors, spacing, fonts) in one place.</li>
</ul>



<p>Think of these as the LEGO bricks of your app. By combining them, you can build almost anything.</p>



<h3 class="wp-block-heading">Step 3: Creating a Clean Starting Point</h3>



<p>Open <code>App.js</code> in your editor and replace the contents with this minimal structure:</p>



<div class="wp-block-kevinbatdorf-code-block-pro padding-bottom-disabled" data-code-block-pro-font-family="Code-Pro-JetBrains-Mono" style="font-size:.875rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)"><span style="display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#212121"><svg xmlns="http://www.w3.org/2000/svg" width="54" height="14" viewBox="0 0 54 14"><g fill="none" fill-rule="evenodd" transform="translate(1 1)"><circle cx="6" cy="6" r="6" fill="#FF5F56" stroke="#E0443E" stroke-width=".5"></circle><circle cx="26" cy="6" r="6" fill="#FFBD2E" stroke="#DEA123" stroke-width=".5"></circle><circle cx="46" cy="6" r="6" fill="#27C93F" stroke="#1AAB29" stroke-width=".5"></circle></g></svg></span><span role="button" tabindex="0" style="color:#EEFFFF;display:none" aria-label="Copy" class="code-block-pro-copy-button"><pre class="code-block-pro-copy-button-pre" aria-hidden="true"><textarea class="code-block-pro-copy-button-textarea" tabindex="-1" aria-hidden="true" readonly>import React from 'react';
import { StyleSheet, Text, View } from 'react-native';

export default function App() {
  return (
    &lt;View style={styles.container}>
      &lt;Text style={styles.title}>My To-Do App&lt;/Text>
    &lt;/View>
  );
}

const styles = StyleSheet.create({
  container: {
    flex: 1,
    backgroundColor: '#fff',
    paddingTop: 60,
    paddingHorizontal: 20,
  },
  title: {
    fontSize: 24,
    fontWeight: 'bold',
    textAlign: 'center',
    marginBottom: 20,
  },
});</textarea></pre><svg xmlns="http://www.w3.org/2000/svg" style="width:24px;height:24px" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="2"><path class="with-check" stroke-linecap="round" stroke-linejoin="round" d="M4.5 12.75l6 6 9-13.5"></path><path class="without-check" stroke-linecap="round" stroke-linejoin="round" d="M16.5 8.25V6a2.25 2.25 0 00-2.25-2.25H6A2.25 2.25 0 003.75 6v8.25A2.25 2.25 0 006 16.5h2.25m8.25-8.25H18a2.25 2.25 0 012.25 2.25V18A2.25 2.25 0 0118 20.25h-7.5A2.25 2.25 0 018.25 18v-1.5m8.25-8.25h-6a2.25 2.25 0 00-2.25 2.25v6"></path></svg></span><pre class="shiki material-theme-darker" style="background-color: #212121" tabindex="0"><code><span class="line"><span style="color: #89DDFF; font-style: italic">import</span><span style="color: #EEFFFF"> React </span><span style="color: #89DDFF; font-style: italic">from</span><span style="color: #EEFFFF"> </span><span style="color: #89DDFF">&#39;</span><span style="color: #C3E88D">react</span><span style="color: #89DDFF">&#39;</span><span style="color: #89DDFF">;</span></span>
<span class="line"><span style="color: #89DDFF; font-style: italic">import</span><span style="color: #EEFFFF"> </span><span style="color: #89DDFF">{</span><span style="color: #F07178"> </span><span style="color: #EEFFFF">StyleSheet</span><span style="color: #89DDFF">,</span><span style="color: #F07178"> </span><span style="color: #EEFFFF">Text</span><span style="color: #89DDFF">,</span><span style="color: #F07178"> </span><span style="color: #EEFFFF">View</span><span style="color: #F07178"> </span><span style="color: #89DDFF">}</span><span style="color: #EEFFFF"> </span><span style="color: #89DDFF; font-style: italic">from</span><span style="color: #EEFFFF"> </span><span style="color: #89DDFF">&#39;</span><span style="color: #C3E88D">react-native</span><span style="color: #89DDFF">&#39;</span><span style="color: #89DDFF">;</span></span>
<span class="line"></span>
<span class="line"><span style="color: #89DDFF; font-style: italic">export</span><span style="color: #EEFFFF"> </span><span style="color: #89DDFF; font-style: italic">default</span><span style="color: #EEFFFF"> </span><span style="color: #C792EA">function</span><span style="color: #EEFFFF"> </span><span style="color: #82AAFF">App</span><span style="color: #89DDFF">()</span><span style="color: #EEFFFF"> </span><span style="color: #89DDFF">{</span></span>
<span class="line"><span style="color: #F07178">  </span><span style="color: #89DDFF; font-style: italic">return</span><span style="color: #F07178"> (</span></span>
<span class="line"><span style="color: #F07178">    </span><span style="color: #89DDFF">&lt;</span><span style="color: #FFCB6B">View</span><span style="color: #89DDFF"> </span><span style="color: #C792EA">style</span><span style="color: #89DDFF">={</span><span style="color: #EEFFFF">styles</span><span style="color: #89DDFF">.</span><span style="color: #EEFFFF">container</span><span style="color: #89DDFF">}&gt;</span></span>
<span class="line"><span style="color: #EEFFFF">      </span><span style="color: #89DDFF">&lt;</span><span style="color: #FFCB6B">Text</span><span style="color: #89DDFF"> </span><span style="color: #C792EA">style</span><span style="color: #89DDFF">={</span><span style="color: #EEFFFF">styles</span><span style="color: #89DDFF">.</span><span style="color: #EEFFFF">title</span><span style="color: #89DDFF">}&gt;</span><span style="color: #EEFFFF">My To-Do App</span><span style="color: #89DDFF">&lt;/</span><span style="color: #FFCB6B">Text</span><span style="color: #89DDFF">&gt;</span></span>
<span class="line"><span style="color: #EEFFFF">    </span><span style="color: #89DDFF">&lt;/</span><span style="color: #FFCB6B">View</span><span style="color: #89DDFF">&gt;</span></span>
<span class="line"><span style="color: #F07178">  )</span><span style="color: #89DDFF">;</span></span>
<span class="line"><span style="color: #89DDFF">}</span></span>
<span class="line"></span>
<span class="line"><span style="color: #C792EA">const</span><span style="color: #EEFFFF"> styles </span><span style="color: #89DDFF">=</span><span style="color: #EEFFFF"> StyleSheet</span><span style="color: #89DDFF">.</span><span style="color: #82AAFF">create</span><span style="color: #EEFFFF">(</span><span style="color: #89DDFF">{</span></span>
<span class="line"><span style="color: #EEFFFF">  </span><span style="color: #F07178">container</span><span style="color: #89DDFF">:</span><span style="color: #EEFFFF"> </span><span style="color: #89DDFF">{</span></span>
<span class="line"><span style="color: #EEFFFF">    </span><span style="color: #F07178">flex</span><span style="color: #89DDFF">:</span><span style="color: #EEFFFF"> </span><span style="color: #F78C6C">1</span><span style="color: #89DDFF">,</span></span>
<span class="line"><span style="color: #EEFFFF">    </span><span style="color: #F07178">backgroundColor</span><span style="color: #89DDFF">:</span><span style="color: #EEFFFF"> </span><span style="color: #89DDFF">&#39;</span><span style="color: #C3E88D">#fff</span><span style="color: #89DDFF">&#39;</span><span style="color: #89DDFF">,</span></span>
<span class="line"><span style="color: #EEFFFF">    </span><span style="color: #F07178">paddingTop</span><span style="color: #89DDFF">:</span><span style="color: #EEFFFF"> </span><span style="color: #F78C6C">60</span><span style="color: #89DDFF">,</span></span>
<span class="line"><span style="color: #EEFFFF">    </span><span style="color: #F07178">paddingHorizontal</span><span style="color: #89DDFF">:</span><span style="color: #EEFFFF"> </span><span style="color: #F78C6C">20</span><span style="color: #89DDFF">,</span></span>
<span class="line"><span style="color: #EEFFFF">  </span><span style="color: #89DDFF">},</span></span>
<span class="line"><span style="color: #EEFFFF">  </span><span style="color: #F07178">title</span><span style="color: #89DDFF">:</span><span style="color: #EEFFFF"> </span><span style="color: #89DDFF">{</span></span>
<span class="line"><span style="color: #EEFFFF">    </span><span style="color: #F07178">fontSize</span><span style="color: #89DDFF">:</span><span style="color: #EEFFFF"> </span><span style="color: #F78C6C">24</span><span style="color: #89DDFF">,</span></span>
<span class="line"><span style="color: #EEFFFF">    </span><span style="color: #F07178">fontWeight</span><span style="color: #89DDFF">:</span><span style="color: #EEFFFF"> </span><span style="color: #89DDFF">&#39;</span><span style="color: #C3E88D">bold</span><span style="color: #89DDFF">&#39;</span><span style="color: #89DDFF">,</span></span>
<span class="line"><span style="color: #EEFFFF">    </span><span style="color: #F07178">textAlign</span><span style="color: #89DDFF">:</span><span style="color: #EEFFFF"> </span><span style="color: #89DDFF">&#39;</span><span style="color: #C3E88D">center</span><span style="color: #89DDFF">&#39;</span><span style="color: #89DDFF">,</span></span>
<span class="line"><span style="color: #EEFFFF">    </span><span style="color: #F07178">marginBottom</span><span style="color: #89DDFF">:</span><span style="color: #EEFFFF"> </span><span style="color: #F78C6C">20</span><span style="color: #89DDFF">,</span></span>
<span class="line"><span style="color: #EEFFFF">  </span><span style="color: #89DDFF">},</span></span>
<span class="line"><span style="color: #89DDFF">}</span><span style="color: #EEFFFF">)</span><span style="color: #89DDFF">;</span></span></code></pre><span style="display:flex;align-items:flex-end;padding:10px;width:100%;justify-content:flex-end;background-color:#212121;color:#d5ffff;font-size:12px;line-height:1;position:relative">JavaScript</span></div>



<p>This displays a white screen with the title “My To-Do App” at the top. It’s simple, but it confirms our project is running correctly. Now we can start building functionality.</p>



<h3 class="wp-block-heading">Step 4: Adding State for Tasks</h3>



<p>We’ll need two pieces of data:</p>



<ol class="wp-block-list">
<li>The list of todos.</li>



<li>The text currently in the input field.</li>
</ol>



<p>React provides the <code>useState</code> hook for this. Update your code:</p>



<div class="wp-block-kevinbatdorf-code-block-pro padding-bottom-disabled" data-code-block-pro-font-family="Code-Pro-JetBrains-Mono" style="font-size:.875rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)"><span style="display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#212121"><svg xmlns="http://www.w3.org/2000/svg" width="54" height="14" viewBox="0 0 54 14"><g fill="none" fill-rule="evenodd" transform="translate(1 1)"><circle cx="6" cy="6" r="6" fill="#FF5F56" stroke="#E0443E" stroke-width=".5"></circle><circle cx="26" cy="6" r="6" fill="#FFBD2E" stroke="#DEA123" stroke-width=".5"></circle><circle cx="46" cy="6" r="6" fill="#27C93F" stroke="#1AAB29" stroke-width=".5"></circle></g></svg></span><span role="button" tabindex="0" style="color:#EEFFFF;display:none" aria-label="Copy" class="code-block-pro-copy-button"><pre class="code-block-pro-copy-button-pre" aria-hidden="true"><textarea class="code-block-pro-copy-button-textarea" tabindex="-1" aria-hidden="true" readonly>import React, { useState } from 'react';
import { StyleSheet, Text, View } from 'react-native';

export default function App() {
  const &#91;todos, setTodos&#93; = useState([]);
  const &#91;text, setText&#93; = useState('');

  return (
    &lt;View style={styles.container}>
      &lt;Text style={styles.title}>My To-Do App&lt;/Text>
    &lt;/View>
  );
}</textarea></pre><svg xmlns="http://www.w3.org/2000/svg" style="width:24px;height:24px" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="2"><path class="with-check" stroke-linecap="round" stroke-linejoin="round" d="M4.5 12.75l6 6 9-13.5"></path><path class="without-check" stroke-linecap="round" stroke-linejoin="round" d="M16.5 8.25V6a2.25 2.25 0 00-2.25-2.25H6A2.25 2.25 0 003.75 6v8.25A2.25 2.25 0 006 16.5h2.25m8.25-8.25H18a2.25 2.25 0 012.25 2.25V18A2.25 2.25 0 0118 20.25h-7.5A2.25 2.25 0 018.25 18v-1.5m8.25-8.25h-6a2.25 2.25 0 00-2.25 2.25v6"></path></svg></span><pre class="shiki material-theme-darker" style="background-color: #212121" tabindex="0"><code><span class="line"><span style="color: #89DDFF; font-style: italic">import</span><span style="color: #EEFFFF"> React</span><span style="color: #89DDFF">,</span><span style="color: #EEFFFF"> </span><span style="color: #89DDFF">{</span><span style="color: #F07178"> </span><span style="color: #EEFFFF">useState</span><span style="color: #F07178"> </span><span style="color: #89DDFF">}</span><span style="color: #EEFFFF"> </span><span style="color: #89DDFF; font-style: italic">from</span><span style="color: #EEFFFF"> </span><span style="color: #89DDFF">&#39;</span><span style="color: #C3E88D">react</span><span style="color: #89DDFF">&#39;</span><span style="color: #89DDFF">;</span></span>
<span class="line"><span style="color: #89DDFF; font-style: italic">import</span><span style="color: #EEFFFF"> </span><span style="color: #89DDFF">{</span><span style="color: #F07178"> </span><span style="color: #EEFFFF">StyleSheet</span><span style="color: #89DDFF">,</span><span style="color: #F07178"> </span><span style="color: #EEFFFF">Text</span><span style="color: #89DDFF">,</span><span style="color: #F07178"> </span><span style="color: #EEFFFF">View</span><span style="color: #F07178"> </span><span style="color: #89DDFF">}</span><span style="color: #EEFFFF"> </span><span style="color: #89DDFF; font-style: italic">from</span><span style="color: #EEFFFF"> </span><span style="color: #89DDFF">&#39;</span><span style="color: #C3E88D">react-native</span><span style="color: #89DDFF">&#39;</span><span style="color: #89DDFF">;</span></span>
<span class="line"></span>
<span class="line"><span style="color: #89DDFF; font-style: italic">export</span><span style="color: #EEFFFF"> </span><span style="color: #89DDFF; font-style: italic">default</span><span style="color: #EEFFFF"> </span><span style="color: #C792EA">function</span><span style="color: #EEFFFF"> </span><span style="color: #82AAFF">App</span><span style="color: #89DDFF">()</span><span style="color: #EEFFFF"> </span><span style="color: #89DDFF">{</span></span>
<span class="line"><span style="color: #F07178">  </span><span style="color: #C792EA">const</span><span style="color: #F07178"> </span><span style="color: #89DDFF">&#91;</span><span style="color: #EEFFFF">todos</span><span style="color: #89DDFF">,</span><span style="color: #F07178"> </span><span style="color: #EEFFFF">setTodos</span><span style="color: #89DDFF">&#93;</span><span style="color: #F07178"> </span><span style="color: #89DDFF">=</span><span style="color: #F07178"> </span><span style="color: #82AAFF">useState</span><span style="color: #F07178">([])</span><span style="color: #89DDFF">;</span></span>
<span class="line"><span style="color: #F07178">  </span><span style="color: #C792EA">const</span><span style="color: #F07178"> </span><span style="color: #89DDFF">&#91;</span><span style="color: #EEFFFF">text</span><span style="color: #89DDFF">,</span><span style="color: #F07178"> </span><span style="color: #EEFFFF">setText</span><span style="color: #89DDFF">&#93;</span><span style="color: #F07178"> </span><span style="color: #89DDFF">=</span><span style="color: #F07178"> </span><span style="color: #82AAFF">useState</span><span style="color: #F07178">(</span><span style="color: #89DDFF">&#39;&#39;</span><span style="color: #F07178">)</span><span style="color: #89DDFF">;</span></span>
<span class="line"></span>
<span class="line"><span style="color: #F07178">  </span><span style="color: #89DDFF; font-style: italic">return</span><span style="color: #F07178"> (</span></span>
<span class="line"><span style="color: #F07178">    </span><span style="color: #89DDFF">&lt;</span><span style="color: #FFCB6B">View</span><span style="color: #89DDFF"> </span><span style="color: #C792EA">style</span><span style="color: #89DDFF">={</span><span style="color: #EEFFFF">styles</span><span style="color: #89DDFF">.</span><span style="color: #EEFFFF">container</span><span style="color: #89DDFF">}&gt;</span></span>
<span class="line"><span style="color: #EEFFFF">      </span><span style="color: #89DDFF">&lt;</span><span style="color: #FFCB6B">Text</span><span style="color: #89DDFF"> </span><span style="color: #C792EA">style</span><span style="color: #89DDFF">={</span><span style="color: #EEFFFF">styles</span><span style="color: #89DDFF">.</span><span style="color: #EEFFFF">title</span><span style="color: #89DDFF">}&gt;</span><span style="color: #EEFFFF">My To-Do App</span><span style="color: #89DDFF">&lt;/</span><span style="color: #FFCB6B">Text</span><span style="color: #89DDFF">&gt;</span></span>
<span class="line"><span style="color: #EEFFFF">    </span><span style="color: #89DDFF">&lt;/</span><span style="color: #FFCB6B">View</span><span style="color: #89DDFF">&gt;</span></span>
<span class="line"><span style="color: #F07178">  )</span><span style="color: #89DDFF">;</span></span>
<span class="line"><span style="color: #89DDFF">}</span></span></code></pre><span style="display:flex;align-items:flex-end;padding:10px;width:100%;justify-content:flex-end;background-color:#212121;color:#d5ffff;font-size:12px;line-height:1;position:relative">JavaScript</span></div>



<ul class="wp-block-list">
<li><code>todos</code> is an array of tasks.</li>



<li><code>text</code> stores what the user is typing.</li>
</ul>



<h3 class="wp-block-heading">Step 5: Adding Input and a Button</h3>



<p>Now let’s let the user type a task and add it to the list. We’ll use <code>TextInput</code> and <code>Button</code>.</p>



<div class="wp-block-kevinbatdorf-code-block-pro padding-bottom-disabled" data-code-block-pro-font-family="Code-Pro-JetBrains-Mono" style="font-size:.875rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)"><span style="display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#212121"><svg xmlns="http://www.w3.org/2000/svg" width="54" height="14" viewBox="0 0 54 14"><g fill="none" fill-rule="evenodd" transform="translate(1 1)"><circle cx="6" cy="6" r="6" fill="#FF5F56" stroke="#E0443E" stroke-width=".5"></circle><circle cx="26" cy="6" r="6" fill="#FFBD2E" stroke="#DEA123" stroke-width=".5"></circle><circle cx="46" cy="6" r="6" fill="#27C93F" stroke="#1AAB29" stroke-width=".5"></circle></g></svg></span><span role="button" tabindex="0" style="color:#EEFFFF;display:none" aria-label="Copy" class="code-block-pro-copy-button"><pre class="code-block-pro-copy-button-pre" aria-hidden="true"><textarea class="code-block-pro-copy-button-textarea" tabindex="-1" aria-hidden="true" readonly>&lt;TextInput
  style={styles.input}
  placeholder="Add a new task..."
  value={text}
  onChangeText={setText}
  returnKeyType="done"
  onSubmitEditing={() => {
    if (text.trim().length > 0) {
      setTodos(&#91;...todos, { id: Date.now().toString(), text }&#93;);
      setText('');
    }
  }}
/>

&lt;Button
  title="Add Task"
  onPress={() => {
    if (text.trim().length > 0) {
      setTodos(&#91;...todos, { id: Date.now().toString(), text }&#93;);
      setText('');
    }
  }}
/></textarea></pre><svg xmlns="http://www.w3.org/2000/svg" style="width:24px;height:24px" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="2"><path class="with-check" stroke-linecap="round" stroke-linejoin="round" d="M4.5 12.75l6 6 9-13.5"></path><path class="without-check" stroke-linecap="round" stroke-linejoin="round" d="M16.5 8.25V6a2.25 2.25 0 00-2.25-2.25H6A2.25 2.25 0 003.75 6v8.25A2.25 2.25 0 006 16.5h2.25m8.25-8.25H18a2.25 2.25 0 012.25 2.25V18A2.25 2.25 0 0118 20.25h-7.5A2.25 2.25 0 018.25 18v-1.5m8.25-8.25h-6a2.25 2.25 0 00-2.25 2.25v6"></path></svg></span><pre class="shiki material-theme-darker" style="background-color: #212121" tabindex="0"><code><span class="line"><span style="color: #89DDFF">&lt;</span><span style="color: #FFCB6B">TextInput</span></span>
<span class="line"><span style="color: #89DDFF">  </span><span style="color: #C792EA">style</span><span style="color: #89DDFF">={</span><span style="color: #EEFFFF">styles</span><span style="color: #89DDFF">.</span><span style="color: #EEFFFF">input</span><span style="color: #89DDFF">}</span></span>
<span class="line"><span style="color: #89DDFF">  </span><span style="color: #C792EA">placeholder</span><span style="color: #89DDFF">=</span><span style="color: #89DDFF">&quot;</span><span style="color: #C3E88D">Add a new task...</span><span style="color: #89DDFF">&quot;</span></span>
<span class="line"><span style="color: #89DDFF">  </span><span style="color: #C792EA">value</span><span style="color: #89DDFF">={</span><span style="color: #EEFFFF">text</span><span style="color: #89DDFF">}</span></span>
<span class="line"><span style="color: #89DDFF">  </span><span style="color: #C792EA">onChangeText</span><span style="color: #89DDFF">={</span><span style="color: #EEFFFF">setText</span><span style="color: #89DDFF">}</span></span>
<span class="line"><span style="color: #89DDFF">  </span><span style="color: #C792EA">returnKeyType</span><span style="color: #89DDFF">=</span><span style="color: #89DDFF">&quot;</span><span style="color: #C3E88D">done</span><span style="color: #89DDFF">&quot;</span></span>
<span class="line"><span style="color: #89DDFF">  </span><span style="color: #C792EA">onSubmitEditing</span><span style="color: #89DDFF">={()</span><span style="color: #EEFFFF"> </span><span style="color: #C792EA">=&gt;</span><span style="color: #EEFFFF"> </span><span style="color: #89DDFF">{</span></span>
<span class="line"><span style="color: #F07178">    </span><span style="color: #89DDFF; font-style: italic">if</span><span style="color: #F07178"> (</span><span style="color: #EEFFFF">text</span><span style="color: #89DDFF">.</span><span style="color: #82AAFF">trim</span><span style="color: #F07178">()</span><span style="color: #89DDFF">.</span><span style="color: #EEFFFF">length</span><span style="color: #F07178"> </span><span style="color: #89DDFF">&gt;</span><span style="color: #F07178"> </span><span style="color: #F78C6C">0</span><span style="color: #F07178">) </span><span style="color: #89DDFF">{</span></span>
<span class="line"><span style="color: #F07178">      </span><span style="color: #82AAFF">setTodos</span><span style="color: #F07178">(&#91;</span><span style="color: #89DDFF">...</span><span style="color: #EEFFFF">todos</span><span style="color: #89DDFF">,</span><span style="color: #F07178"> </span><span style="color: #89DDFF">{</span><span style="color: #F07178"> id</span><span style="color: #89DDFF">:</span><span style="color: #F07178"> </span><span style="color: #EEFFFF">Date</span><span style="color: #89DDFF">.</span><span style="color: #82AAFF">now</span><span style="color: #F07178">()</span><span style="color: #89DDFF">.</span><span style="color: #82AAFF">toString</span><span style="color: #F07178">()</span><span style="color: #89DDFF">,</span><span style="color: #F07178"> </span><span style="color: #EEFFFF">text</span><span style="color: #F07178"> </span><span style="color: #89DDFF">}</span><span style="color: #F07178">&#93;)</span><span style="color: #89DDFF">;</span></span>
<span class="line"><span style="color: #F07178">      </span><span style="color: #82AAFF">setText</span><span style="color: #F07178">(</span><span style="color: #89DDFF">&#39;&#39;</span><span style="color: #F07178">)</span><span style="color: #89DDFF">;</span></span>
<span class="line"><span style="color: #F07178">    </span><span style="color: #89DDFF">}</span></span>
<span class="line"><span style="color: #F07178">  </span><span style="color: #89DDFF">}}</span></span>
<span class="line"><span style="color: #89DDFF">/&gt;</span></span>
<span class="line"></span>
<span class="line"><span style="color: #89DDFF">&lt;</span><span style="color: #FFCB6B">Button</span></span>
<span class="line"><span style="color: #89DDFF">  </span><span style="color: #C792EA">title</span><span style="color: #89DDFF">=</span><span style="color: #89DDFF">&quot;</span><span style="color: #C3E88D">Add Task</span><span style="color: #89DDFF">&quot;</span></span>
<span class="line"><span style="color: #89DDFF">  </span><span style="color: #C792EA">onPress</span><span style="color: #89DDFF">={()</span><span style="color: #EEFFFF"> </span><span style="color: #C792EA">=&gt;</span><span style="color: #EEFFFF"> </span><span style="color: #89DDFF">{</span></span>
<span class="line"><span style="color: #F07178">    </span><span style="color: #89DDFF; font-style: italic">if</span><span style="color: #F07178"> (</span><span style="color: #EEFFFF">text</span><span style="color: #89DDFF">.</span><span style="color: #82AAFF">trim</span><span style="color: #F07178">()</span><span style="color: #89DDFF">.</span><span style="color: #EEFFFF">length</span><span style="color: #F07178"> </span><span style="color: #89DDFF">&gt;</span><span style="color: #F07178"> </span><span style="color: #F78C6C">0</span><span style="color: #F07178">) </span><span style="color: #89DDFF">{</span></span>
<span class="line"><span style="color: #F07178">      </span><span style="color: #82AAFF">setTodos</span><span style="color: #F07178">(&#91;</span><span style="color: #89DDFF">...</span><span style="color: #EEFFFF">todos</span><span style="color: #89DDFF">,</span><span style="color: #F07178"> </span><span style="color: #89DDFF">{</span><span style="color: #F07178"> id</span><span style="color: #89DDFF">:</span><span style="color: #F07178"> </span><span style="color: #EEFFFF">Date</span><span style="color: #89DDFF">.</span><span style="color: #82AAFF">now</span><span style="color: #F07178">()</span><span style="color: #89DDFF">.</span><span style="color: #82AAFF">toString</span><span style="color: #F07178">()</span><span style="color: #89DDFF">,</span><span style="color: #F07178"> </span><span style="color: #EEFFFF">text</span><span style="color: #F07178"> </span><span style="color: #89DDFF">}</span><span style="color: #F07178">&#93;)</span><span style="color: #89DDFF">;</span></span>
<span class="line"><span style="color: #F07178">      </span><span style="color: #82AAFF">setText</span><span style="color: #F07178">(</span><span style="color: #89DDFF">&#39;&#39;</span><span style="color: #F07178">)</span><span style="color: #89DDFF">;</span></span>
<span class="line"><span style="color: #F07178">    </span><span style="color: #89DDFF">}</span></span>
<span class="line"><span style="color: #F07178">  </span><span style="color: #89DDFF">}}</span></span>
<span class="line"><span style="color: #89DDFF">/&gt;</span></span></code></pre><span style="display:flex;align-items:flex-end;padding:10px;width:100%;justify-content:flex-end;background-color:#212121;color:#d5ffff;font-size:12px;line-height:1;position:relative">JavaScript</span></div>



<p>Now when you type something and press the button, it gets added to <code>todos</code>. We still need to show it on screen.</p>


<div class="wp-block-image">
<figure class="aligncenter size-full"><img loading="lazy" decoding="async" width="514" height="407" src="https://blog.goloris.com/wp-content/uploads/2025/08/react-native-todo-app-1.png" alt="" class="wp-image-3455" srcset="https://blog.goloris.com/wp-content/uploads/2025/08/react-native-todo-app-1.png 514w, https://blog.goloris.com/wp-content/uploads/2025/08/react-native-todo-app-1-300x238.png 300w, https://blog.goloris.com/wp-content/uploads/2025/08/react-native-todo-app-1-338x268.png 338w" sizes="(max-width: 514px) 100vw, 514px" /></figure></div>


<h3 class="wp-block-heading">Step 6: Displaying the List with FlatList</h3>



<p>React Native’s <code>FlatList</code> makes rendering lists simple and efficient. Add this below the button:</p>



<div class="wp-block-kevinbatdorf-code-block-pro padding-bottom-disabled" data-code-block-pro-font-family="Code-Pro-JetBrains-Mono" style="font-size:.875rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)"><span style="display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#212121"><svg xmlns="http://www.w3.org/2000/svg" width="54" height="14" viewBox="0 0 54 14"><g fill="none" fill-rule="evenodd" transform="translate(1 1)"><circle cx="6" cy="6" r="6" fill="#FF5F56" stroke="#E0443E" stroke-width=".5"></circle><circle cx="26" cy="6" r="6" fill="#FFBD2E" stroke="#DEA123" stroke-width=".5"></circle><circle cx="46" cy="6" r="6" fill="#27C93F" stroke="#1AAB29" stroke-width=".5"></circle></g></svg></span><span role="button" tabindex="0" style="color:#EEFFFF;display:none" aria-label="Copy" class="code-block-pro-copy-button"><pre class="code-block-pro-copy-button-pre" aria-hidden="true"><textarea class="code-block-pro-copy-button-textarea" tabindex="-1" aria-hidden="true" readonly>&lt;FlatList
  data={todos}
  keyExtractor={(item) => item.id}
  renderItem={({ item }) => (
    &lt;View style={styles.todoItem}>
      &lt;Text style={styles.todoText}>{item.text}&lt;/Text>
    &lt;/View>
  )}
  ListEmptyComponent={
    &lt;Text style={styles.emptyText}>Your list is empty. Add your first task!&lt;/Text>
  }
/></textarea></pre><svg xmlns="http://www.w3.org/2000/svg" style="width:24px;height:24px" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="2"><path class="with-check" stroke-linecap="round" stroke-linejoin="round" d="M4.5 12.75l6 6 9-13.5"></path><path class="without-check" stroke-linecap="round" stroke-linejoin="round" d="M16.5 8.25V6a2.25 2.25 0 00-2.25-2.25H6A2.25 2.25 0 003.75 6v8.25A2.25 2.25 0 006 16.5h2.25m8.25-8.25H18a2.25 2.25 0 012.25 2.25V18A2.25 2.25 0 0118 20.25h-7.5A2.25 2.25 0 018.25 18v-1.5m8.25-8.25h-6a2.25 2.25 0 00-2.25 2.25v6"></path></svg></span><pre class="shiki material-theme-darker" style="background-color: #212121" tabindex="0"><code><span class="line"><span style="color: #89DDFF">&lt;</span><span style="color: #FFCB6B">FlatList</span></span>
<span class="line"><span style="color: #89DDFF">  </span><span style="color: #C792EA">data</span><span style="color: #89DDFF">={</span><span style="color: #EEFFFF">todos</span><span style="color: #89DDFF">}</span></span>
<span class="line"><span style="color: #89DDFF">  </span><span style="color: #C792EA">keyExtractor</span><span style="color: #89DDFF">={(</span><span style="color: #EEFFFF; font-style: italic">item</span><span style="color: #89DDFF">)</span><span style="color: #EEFFFF"> </span><span style="color: #C792EA">=&gt;</span><span style="color: #EEFFFF"> item</span><span style="color: #89DDFF">.</span><span style="color: #EEFFFF">id</span><span style="color: #89DDFF">}</span></span>
<span class="line"><span style="color: #89DDFF">  </span><span style="color: #C792EA">renderItem</span><span style="color: #89DDFF">={({</span><span style="color: #EEFFFF"> </span><span style="color: #EEFFFF; font-style: italic">item</span><span style="color: #EEFFFF"> </span><span style="color: #89DDFF">})</span><span style="color: #EEFFFF"> </span><span style="color: #C792EA">=&gt;</span><span style="color: #EEFFFF"> (</span></span>
<span class="line"><span style="color: #EEFFFF">    </span><span style="color: #89DDFF">&lt;</span><span style="color: #FFCB6B">View</span><span style="color: #89DDFF"> </span><span style="color: #C792EA">style</span><span style="color: #89DDFF">={</span><span style="color: #EEFFFF">styles</span><span style="color: #89DDFF">.</span><span style="color: #EEFFFF">todoItem</span><span style="color: #89DDFF">}&gt;</span></span>
<span class="line"><span style="color: #EEFFFF">      </span><span style="color: #89DDFF">&lt;</span><span style="color: #FFCB6B">Text</span><span style="color: #89DDFF"> </span><span style="color: #C792EA">style</span><span style="color: #89DDFF">={</span><span style="color: #EEFFFF">styles</span><span style="color: #89DDFF">.</span><span style="color: #EEFFFF">todoText</span><span style="color: #89DDFF">}&gt;{</span><span style="color: #EEFFFF">item</span><span style="color: #89DDFF">.</span><span style="color: #EEFFFF">text</span><span style="color: #89DDFF">}&lt;/</span><span style="color: #FFCB6B">Text</span><span style="color: #89DDFF">&gt;</span></span>
<span class="line"><span style="color: #EEFFFF">    </span><span style="color: #89DDFF">&lt;/</span><span style="color: #FFCB6B">View</span><span style="color: #89DDFF">&gt;</span></span>
<span class="line"><span style="color: #EEFFFF">  )</span><span style="color: #89DDFF">}</span></span>
<span class="line"><span style="color: #89DDFF">  </span><span style="color: #C792EA">ListEmptyComponent</span><span style="color: #89DDFF">={</span></span>
<span class="line"><span style="color: #EEFFFF">    </span><span style="color: #89DDFF">&lt;</span><span style="color: #FFCB6B">Text</span><span style="color: #89DDFF"> </span><span style="color: #C792EA">style</span><span style="color: #89DDFF">={</span><span style="color: #EEFFFF">styles</span><span style="color: #89DDFF">.</span><span style="color: #EEFFFF">emptyText</span><span style="color: #89DDFF">}&gt;</span><span style="color: #EEFFFF">Your list is empty. Add your first task!</span><span style="color: #89DDFF">&lt;/</span><span style="color: #FFCB6B">Text</span><span style="color: #89DDFF">&gt;</span></span>
<span class="line"><span style="color: #EEFFFF">  </span><span style="color: #89DDFF">}</span></span>
<span class="line"><span style="color: #89DDFF">/&gt;</span></span></code></pre><span style="display:flex;align-items:flex-end;padding:10px;width:100%;justify-content:flex-end;background-color:#212121;color:#d5ffff;font-size:12px;line-height:1;position:relative">JavaScript</span></div>



<p>Now every todo you add appears on screen. If there are none, it shows a helpful message.</p>



<h3 class="wp-block-heading">Step 7: Deleting Todos with TouchableOpacity</h3>



<p>To make todos removable, wrap each one in a <code>TouchableOpacity</code>:</p>



<div class="wp-block-kevinbatdorf-code-block-pro padding-bottom-disabled" data-code-block-pro-font-family="Code-Pro-JetBrains-Mono" style="font-size:.875rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)"><span style="display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#212121"><svg xmlns="http://www.w3.org/2000/svg" width="54" height="14" viewBox="0 0 54 14"><g fill="none" fill-rule="evenodd" transform="translate(1 1)"><circle cx="6" cy="6" r="6" fill="#FF5F56" stroke="#E0443E" stroke-width=".5"></circle><circle cx="26" cy="6" r="6" fill="#FFBD2E" stroke="#DEA123" stroke-width=".5"></circle><circle cx="46" cy="6" r="6" fill="#27C93F" stroke="#1AAB29" stroke-width=".5"></circle></g></svg></span><span role="button" tabindex="0" style="color:#EEFFFF;display:none" aria-label="Copy" class="code-block-pro-copy-button"><pre class="code-block-pro-copy-button-pre" aria-hidden="true"><textarea class="code-block-pro-copy-button-textarea" tabindex="-1" aria-hidden="true" readonly>renderItem={({ item }) => (
  &lt;TouchableOpacity onPress={() => setTodos(todos.filter(t => t.id !== item.id))}>
    &lt;View style={styles.todoItem}>
      &lt;Text style={styles.todoText}>{item.text}&lt;/Text>
      &lt;Text style={styles.todoHint}>Tap to remove&lt;/Text>
    &lt;/View>
  &lt;/TouchableOpacity>
)}</textarea></pre><svg xmlns="http://www.w3.org/2000/svg" style="width:24px;height:24px" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="2"><path class="with-check" stroke-linecap="round" stroke-linejoin="round" d="M4.5 12.75l6 6 9-13.5"></path><path class="without-check" stroke-linecap="round" stroke-linejoin="round" d="M16.5 8.25V6a2.25 2.25 0 00-2.25-2.25H6A2.25 2.25 0 003.75 6v8.25A2.25 2.25 0 006 16.5h2.25m8.25-8.25H18a2.25 2.25 0 012.25 2.25V18A2.25 2.25 0 0118 20.25h-7.5A2.25 2.25 0 018.25 18v-1.5m8.25-8.25h-6a2.25 2.25 0 00-2.25 2.25v6"></path></svg></span><pre class="shiki material-theme-darker" style="background-color: #212121" tabindex="0"><code><span class="line"><span style="color: #EEFFFF">renderItem</span><span style="color: #89DDFF">={</span><span style="color: #EEFFFF">(</span><span style="color: #89DDFF">{</span><span style="color: #F07178"> </span><span style="color: #EEFFFF">item</span><span style="color: #F07178"> </span><span style="color: #89DDFF">}</span><span style="color: #EEFFFF">) =&gt; (</span></span>
<span class="line"><span style="color: #EEFFFF">  &lt;TouchableOpacity onPress</span><span style="color: #89DDFF">={</span><span style="color: #EEFFFF">() =&gt; </span><span style="color: #F07178">setTodos</span><span style="color: #89DDFF">(</span><span style="color: #EEFFFF">todos.filter(</span><span style="color: #EEFFFF; font-style: italic">t</span><span style="color: #EEFFFF"> </span><span style="color: #89DDFF">=&gt;</span><span style="color: #EEFFFF"> t</span><span style="color: #89DDFF">.</span><span style="color: #EEFFFF">id </span><span style="color: #89DDFF">!==</span><span style="color: #EEFFFF"> item</span><span style="color: #89DDFF">.</span><span style="color: #EEFFFF">id</span><span style="color: #89DDFF">)</span><span style="color: #EEFFFF">)</span><span style="color: #89DDFF">}&gt;</span></span>
<span class="line"><span style="color: #EEFFFF">    &lt;View style</span><span style="color: #89DDFF">={</span><span style="color: #EEFFFF">styles.todoItem</span><span style="color: #89DDFF">}&gt;</span></span>
<span class="line"><span style="color: #EEFFFF">      &lt;Text style</span><span style="color: #89DDFF">={</span><span style="color: #EEFFFF">styles.todoText</span><span style="color: #89DDFF">}&gt;{</span><span style="color: #EEFFFF">item.text</span><span style="color: #89DDFF">}&lt;/</span><span style="color: #EEFFFF">Text</span><span style="color: #89DDFF">&gt;</span></span>
<span class="line"><span style="color: #EEFFFF">      &lt;Text style</span><span style="color: #89DDFF">={</span><span style="color: #EEFFFF">styles.todoHint</span><span style="color: #89DDFF">}&gt;</span><span style="color: #EEFFFF">Tap to remove</span><span style="color: #89DDFF">&lt;/</span><span style="color: #EEFFFF">Text</span><span style="color: #89DDFF">&gt;</span></span>
<span class="line"><span style="color: #EEFFFF">    &lt;/View&gt;</span></span>
<span class="line"><span style="color: #EEFFFF">  &lt;/TouchableOpacity&gt;</span></span>
<span class="line"><span style="color: #EEFFFF">)</span><span style="color: #89DDFF">}</span></span></code></pre><span style="display:flex;align-items:flex-end;padding:10px;width:100%;justify-content:flex-end;background-color:#212121;color:#d5ffff;font-size:12px;line-height:1;position:relative">JavaScript</span></div>



<p>Now when you tap a task, it disappears. Simple, but effective!</p>



<h3 class="wp-block-heading">Step 8: Styling the App</h3>



<p>Finally, let’s polish the design with <code>StyleSheet</code>. Add these styles:</p>



<div class="wp-block-kevinbatdorf-code-block-pro padding-bottom-disabled" data-code-block-pro-font-family="Code-Pro-JetBrains-Mono" style="font-size:.875rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)"><span style="display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#212121"><svg xmlns="http://www.w3.org/2000/svg" width="54" height="14" viewBox="0 0 54 14"><g fill="none" fill-rule="evenodd" transform="translate(1 1)"><circle cx="6" cy="6" r="6" fill="#FF5F56" stroke="#E0443E" stroke-width=".5"></circle><circle cx="26" cy="6" r="6" fill="#FFBD2E" stroke="#DEA123" stroke-width=".5"></circle><circle cx="46" cy="6" r="6" fill="#27C93F" stroke="#1AAB29" stroke-width=".5"></circle></g></svg></span><span role="button" tabindex="0" style="color:#EEFFFF;display:none" aria-label="Copy" class="code-block-pro-copy-button"><pre class="code-block-pro-copy-button-pre" aria-hidden="true"><textarea class="code-block-pro-copy-button-textarea" tabindex="-1" aria-hidden="true" readonly>input: {
  borderWidth: 1,
  borderColor: '#d9d9d9',
  padding: 12,
  borderRadius: 8,
  marginBottom: 10,
  fontSize: 16,
},
todoItem: {
  padding: 14,
  borderRadius: 10,
  backgroundColor: '#f7f8fa',
  borderWidth: 1,
  borderColor: '#ececec',
  marginBottom: 8,
},
todoText: {
  fontSize: 16,
  color: '#222',
},
todoHint: {
  marginTop: 6,
  fontSize: 12,
  color: '#7a7a7a',
},
emptyText: {
  color: '#9b9b9b',
  fontSize: 14,
  textAlign: 'center',
  marginTop: 20,
},</textarea></pre><svg xmlns="http://www.w3.org/2000/svg" style="width:24px;height:24px" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="2"><path class="with-check" stroke-linecap="round" stroke-linejoin="round" d="M4.5 12.75l6 6 9-13.5"></path><path class="without-check" stroke-linecap="round" stroke-linejoin="round" d="M16.5 8.25V6a2.25 2.25 0 00-2.25-2.25H6A2.25 2.25 0 003.75 6v8.25A2.25 2.25 0 006 16.5h2.25m8.25-8.25H18a2.25 2.25 0 012.25 2.25V18A2.25 2.25 0 0118 20.25h-7.5A2.25 2.25 0 018.25 18v-1.5m8.25-8.25h-6a2.25 2.25 0 00-2.25 2.25v6"></path></svg></span><pre class="shiki material-theme-darker" style="background-color: #212121" tabindex="0"><code><span class="line"><span style="color: #FFCB6B">input</span><span style="color: #89DDFF">:</span><span style="color: #EEFFFF"> </span><span style="color: #89DDFF">{</span></span>
<span class="line"><span style="color: #F07178">  </span><span style="color: #FFCB6B">borderWidth</span><span style="color: #89DDFF">:</span><span style="color: #F07178"> </span><span style="color: #F78C6C">1</span><span style="color: #89DDFF">,</span></span>
<span class="line"><span style="color: #F07178">  </span><span style="color: #FFCB6B">borderColor</span><span style="color: #89DDFF">:</span><span style="color: #F07178"> </span><span style="color: #89DDFF">&#39;</span><span style="color: #C3E88D">#d9d9d9</span><span style="color: #89DDFF">&#39;</span><span style="color: #89DDFF">,</span></span>
<span class="line"><span style="color: #F07178">  </span><span style="color: #FFCB6B">padding</span><span style="color: #89DDFF">:</span><span style="color: #F07178"> </span><span style="color: #F78C6C">12</span><span style="color: #89DDFF">,</span></span>
<span class="line"><span style="color: #F07178">  </span><span style="color: #FFCB6B">borderRadius</span><span style="color: #89DDFF">:</span><span style="color: #F07178"> </span><span style="color: #F78C6C">8</span><span style="color: #89DDFF">,</span></span>
<span class="line"><span style="color: #F07178">  </span><span style="color: #FFCB6B">marginBottom</span><span style="color: #89DDFF">:</span><span style="color: #F07178"> </span><span style="color: #F78C6C">10</span><span style="color: #89DDFF">,</span></span>
<span class="line"><span style="color: #F07178">  </span><span style="color: #FFCB6B">fontSize</span><span style="color: #89DDFF">:</span><span style="color: #F07178"> </span><span style="color: #F78C6C">16</span><span style="color: #89DDFF">,</span></span>
<span class="line"><span style="color: #89DDFF">},</span></span>
<span class="line"><span style="color: #FFCB6B">todoItem</span><span style="color: #89DDFF">:</span><span style="color: #EEFFFF"> </span><span style="color: #89DDFF">{</span></span>
<span class="line"><span style="color: #F07178">  </span><span style="color: #FFCB6B">padding</span><span style="color: #89DDFF">:</span><span style="color: #F07178"> </span><span style="color: #F78C6C">14</span><span style="color: #89DDFF">,</span></span>
<span class="line"><span style="color: #F07178">  </span><span style="color: #FFCB6B">borderRadius</span><span style="color: #89DDFF">:</span><span style="color: #F07178"> </span><span style="color: #F78C6C">10</span><span style="color: #89DDFF">,</span></span>
<span class="line"><span style="color: #F07178">  </span><span style="color: #FFCB6B">backgroundColor</span><span style="color: #89DDFF">:</span><span style="color: #F07178"> </span><span style="color: #89DDFF">&#39;</span><span style="color: #C3E88D">#f7f8fa</span><span style="color: #89DDFF">&#39;</span><span style="color: #89DDFF">,</span></span>
<span class="line"><span style="color: #F07178">  </span><span style="color: #FFCB6B">borderWidth</span><span style="color: #89DDFF">:</span><span style="color: #F07178"> </span><span style="color: #F78C6C">1</span><span style="color: #89DDFF">,</span></span>
<span class="line"><span style="color: #F07178">  </span><span style="color: #FFCB6B">borderColor</span><span style="color: #89DDFF">:</span><span style="color: #F07178"> </span><span style="color: #89DDFF">&#39;</span><span style="color: #C3E88D">#ececec</span><span style="color: #89DDFF">&#39;</span><span style="color: #89DDFF">,</span></span>
<span class="line"><span style="color: #F07178">  </span><span style="color: #FFCB6B">marginBottom</span><span style="color: #89DDFF">:</span><span style="color: #F07178"> </span><span style="color: #F78C6C">8</span><span style="color: #89DDFF">,</span></span>
<span class="line"><span style="color: #89DDFF">},</span></span>
<span class="line"><span style="color: #FFCB6B">todoText</span><span style="color: #89DDFF">:</span><span style="color: #EEFFFF"> </span><span style="color: #89DDFF">{</span></span>
<span class="line"><span style="color: #F07178">  </span><span style="color: #FFCB6B">fontSize</span><span style="color: #89DDFF">:</span><span style="color: #F07178"> </span><span style="color: #F78C6C">16</span><span style="color: #89DDFF">,</span></span>
<span class="line"><span style="color: #F07178">  </span><span style="color: #FFCB6B">color</span><span style="color: #89DDFF">:</span><span style="color: #F07178"> </span><span style="color: #89DDFF">&#39;</span><span style="color: #C3E88D">#222</span><span style="color: #89DDFF">&#39;</span><span style="color: #89DDFF">,</span></span>
<span class="line"><span style="color: #89DDFF">},</span></span>
<span class="line"><span style="color: #FFCB6B">todoHint</span><span style="color: #89DDFF">:</span><span style="color: #EEFFFF"> </span><span style="color: #89DDFF">{</span></span>
<span class="line"><span style="color: #F07178">  </span><span style="color: #FFCB6B">marginTop</span><span style="color: #89DDFF">:</span><span style="color: #F07178"> </span><span style="color: #F78C6C">6</span><span style="color: #89DDFF">,</span></span>
<span class="line"><span style="color: #F07178">  </span><span style="color: #FFCB6B">fontSize</span><span style="color: #89DDFF">:</span><span style="color: #F07178"> </span><span style="color: #F78C6C">12</span><span style="color: #89DDFF">,</span></span>
<span class="line"><span style="color: #F07178">  </span><span style="color: #FFCB6B">color</span><span style="color: #89DDFF">:</span><span style="color: #F07178"> </span><span style="color: #89DDFF">&#39;</span><span style="color: #C3E88D">#7a7a7a</span><span style="color: #89DDFF">&#39;</span><span style="color: #89DDFF">,</span></span>
<span class="line"><span style="color: #89DDFF">},</span></span>
<span class="line"><span style="color: #FFCB6B">emptyText</span><span style="color: #89DDFF">:</span><span style="color: #EEFFFF"> </span><span style="color: #89DDFF">{</span></span>
<span class="line"><span style="color: #F07178">  </span><span style="color: #FFCB6B">color</span><span style="color: #89DDFF">:</span><span style="color: #F07178"> </span><span style="color: #89DDFF">&#39;</span><span style="color: #C3E88D">#9b9b9b</span><span style="color: #89DDFF">&#39;</span><span style="color: #89DDFF">,</span></span>
<span class="line"><span style="color: #F07178">  </span><span style="color: #FFCB6B">fontSize</span><span style="color: #89DDFF">:</span><span style="color: #F07178"> </span><span style="color: #F78C6C">14</span><span style="color: #89DDFF">,</span></span>
<span class="line"><span style="color: #F07178">  </span><span style="color: #FFCB6B">textAlign</span><span style="color: #89DDFF">:</span><span style="color: #F07178"> </span><span style="color: #89DDFF">&#39;</span><span style="color: #C3E88D">center</span><span style="color: #89DDFF">&#39;</span><span style="color: #89DDFF">,</span></span>
<span class="line"><span style="color: #F07178">  </span><span style="color: #FFCB6B">marginTop</span><span style="color: #89DDFF">:</span><span style="color: #F07178"> </span><span style="color: #F78C6C">20</span><span style="color: #89DDFF">,</span></span>
<span class="line"><span style="color: #89DDFF">},</span></span></code></pre><span style="display:flex;align-items:flex-end;padding:10px;width:100%;justify-content:flex-end;background-color:#212121;color:#d5ffff;font-size:12px;line-height:1;position:relative">JavaScript</span></div>



<p>The app now has a clean, minimal look.</p>


<div class="wp-block-image">
<figure class="aligncenter size-full"><img loading="lazy" decoding="async" width="511" height="415" src="https://blog.goloris.com/wp-content/uploads/2025/08/react-native-todo-app-2.png" alt="" class="wp-image-3456" srcset="https://blog.goloris.com/wp-content/uploads/2025/08/react-native-todo-app-2.png 511w, https://blog.goloris.com/wp-content/uploads/2025/08/react-native-todo-app-2-300x244.png 300w, https://blog.goloris.com/wp-content/uploads/2025/08/react-native-todo-app-2-330x268.png 330w" sizes="(max-width: 511px) 100vw, 511px" /></figure></div>


<h3 class="wp-block-heading">Complete App.js</h3>



<p>Here’s the <strong>entire code</strong> so you can copy and paste it directly into <code>App.js</code> and run it:</p>



<div class="wp-block-kevinbatdorf-code-block-pro padding-bottom-disabled" data-code-block-pro-font-family="Code-Pro-JetBrains-Mono" style="font-size:.875rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)"><span style="display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#212121"><svg xmlns="http://www.w3.org/2000/svg" width="54" height="14" viewBox="0 0 54 14"><g fill="none" fill-rule="evenodd" transform="translate(1 1)"><circle cx="6" cy="6" r="6" fill="#FF5F56" stroke="#E0443E" stroke-width=".5"></circle><circle cx="26" cy="6" r="6" fill="#FFBD2E" stroke="#DEA123" stroke-width=".5"></circle><circle cx="46" cy="6" r="6" fill="#27C93F" stroke="#1AAB29" stroke-width=".5"></circle></g></svg></span><span role="button" tabindex="0" style="color:#EEFFFF;display:none" aria-label="Copy" class="code-block-pro-copy-button"><pre class="code-block-pro-copy-button-pre" aria-hidden="true"><textarea class="code-block-pro-copy-button-textarea" tabindex="-1" aria-hidden="true" readonly>import React, { useState } from 'react';
import {
  StyleSheet,
  Text,
  View,
  TextInput,
  Button,
  FlatList,
  TouchableOpacity,
} from 'react-native';

export default function App() {
  const &#91;todos, setTodos&#93; = useState([]);
  const &#91;text, setText&#93; = useState('');

  const addTodo = () => {
    const trimmed = text.trim();
    if (!trimmed) return;
    setTodos((prev) => &#91;...prev, { id: Date.now().toString(), text: trimmed }&#93;);
    setText('');
  };

  const removeTodo = (id) => {
    setTodos((prev) => prev.filter((t) => t.id !== id));
  };

  const renderItem = ({ item }) => (
    &lt;TouchableOpacity onPress={() => removeTodo(item.id)}>
      &lt;View style={styles.todoItem}>
        &lt;Text style={styles.todoText}>{item.text}&lt;/Text>
        &lt;Text style={styles.todoHint}>Tap to remove&lt;/Text>
      &lt;/View>
    &lt;/TouchableOpacity>
  );

  return (
    &lt;View style={styles.container}>
      &lt;Text style={styles.title}>My To-Do App&lt;/Text>

      &lt;TextInput
        style={styles.input}
        placeholder="Add a new task..."
        value={text}
        onChangeText={setText}
        returnKeyType="done"
        onSubmitEditing={addTodo}
      />

      &lt;View style={styles.buttonWrap}>
        &lt;Button title="Add Task" onPress={addTodo} />
      &lt;/View>

      &lt;FlatList
        data={todos}
        keyExtractor={(item) => item.id}
        renderItem={renderItem}
        ListEmptyComponent={
          &lt;Text style={styles.emptyText}>
            Your list is empty. Add your first task!
          &lt;/Text>
        }
      />
    &lt;/View>
  );
}

const styles = StyleSheet.create({
  container: {
    flex: 1,
    backgroundColor: '#fff',
    paddingTop: 60,
    paddingHorizontal: 20,
  },
  title: {
    fontSize: 24,
    fontWeight: 'bold',
    textAlign: 'center',
    marginBottom: 20,
  },
  input: {
    borderWidth: 1,
    borderColor: '#d9d9d9',
    padding: 12,
    borderRadius: 8,
    marginBottom: 10,
    fontSize: 16,
  },
  buttonWrap: {
    marginBottom: 12,
  },
  todoItem: {
    padding: 14,
    borderRadius: 10,
    backgroundColor: '#f7f8fa',
    borderWidth: 1,
    borderColor: '#ececec',
    marginBottom: 8,
  },
  todoText: {
    fontSize: 16,
    color: '#222',
  },
  todoHint: {
    marginTop: 6,
    fontSize: 12,
    color: '#7a7a7a',
  },
  emptyText: {
    color: '#9b9b9b',
    fontSize: 14,
    textAlign: 'center',
    marginTop: 20,
  },
});</textarea></pre><svg xmlns="http://www.w3.org/2000/svg" style="width:24px;height:24px" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="2"><path class="with-check" stroke-linecap="round" stroke-linejoin="round" d="M4.5 12.75l6 6 9-13.5"></path><path class="without-check" stroke-linecap="round" stroke-linejoin="round" d="M16.5 8.25V6a2.25 2.25 0 00-2.25-2.25H6A2.25 2.25 0 003.75 6v8.25A2.25 2.25 0 006 16.5h2.25m8.25-8.25H18a2.25 2.25 0 012.25 2.25V18A2.25 2.25 0 0118 20.25h-7.5A2.25 2.25 0 018.25 18v-1.5m8.25-8.25h-6a2.25 2.25 0 00-2.25 2.25v6"></path></svg></span><pre class="shiki material-theme-darker" style="background-color: #212121" tabindex="0"><code><span class="line"><span style="color: #89DDFF; font-style: italic">import</span><span style="color: #EEFFFF"> React</span><span style="color: #89DDFF">,</span><span style="color: #EEFFFF"> </span><span style="color: #89DDFF">{</span><span style="color: #F07178"> </span><span style="color: #EEFFFF">useState</span><span style="color: #F07178"> </span><span style="color: #89DDFF">}</span><span style="color: #EEFFFF"> </span><span style="color: #89DDFF; font-style: italic">from</span><span style="color: #EEFFFF"> </span><span style="color: #89DDFF">&#39;</span><span style="color: #C3E88D">react</span><span style="color: #89DDFF">&#39;</span><span style="color: #89DDFF">;</span></span>
<span class="line"><span style="color: #89DDFF; font-style: italic">import</span><span style="color: #EEFFFF"> </span><span style="color: #89DDFF">{</span></span>
<span class="line"><span style="color: #F07178">  </span><span style="color: #EEFFFF">StyleSheet</span><span style="color: #89DDFF">,</span></span>
<span class="line"><span style="color: #F07178">  </span><span style="color: #EEFFFF">Text</span><span style="color: #89DDFF">,</span></span>
<span class="line"><span style="color: #F07178">  </span><span style="color: #EEFFFF">View</span><span style="color: #89DDFF">,</span></span>
<span class="line"><span style="color: #F07178">  </span><span style="color: #EEFFFF">TextInput</span><span style="color: #89DDFF">,</span></span>
<span class="line"><span style="color: #F07178">  </span><span style="color: #EEFFFF">Button</span><span style="color: #89DDFF">,</span></span>
<span class="line"><span style="color: #F07178">  </span><span style="color: #EEFFFF">FlatList</span><span style="color: #89DDFF">,</span></span>
<span class="line"><span style="color: #F07178">  </span><span style="color: #EEFFFF">TouchableOpacity</span><span style="color: #89DDFF">,</span></span>
<span class="line"><span style="color: #89DDFF">}</span><span style="color: #EEFFFF"> </span><span style="color: #89DDFF; font-style: italic">from</span><span style="color: #EEFFFF"> </span><span style="color: #89DDFF">&#39;</span><span style="color: #C3E88D">react-native</span><span style="color: #89DDFF">&#39;</span><span style="color: #89DDFF">;</span></span>
<span class="line"></span>
<span class="line"><span style="color: #89DDFF; font-style: italic">export</span><span style="color: #EEFFFF"> </span><span style="color: #89DDFF; font-style: italic">default</span><span style="color: #EEFFFF"> </span><span style="color: #C792EA">function</span><span style="color: #EEFFFF"> </span><span style="color: #82AAFF">App</span><span style="color: #89DDFF">()</span><span style="color: #EEFFFF"> </span><span style="color: #89DDFF">{</span></span>
<span class="line"><span style="color: #F07178">  </span><span style="color: #C792EA">const</span><span style="color: #F07178"> </span><span style="color: #89DDFF">&#91;</span><span style="color: #EEFFFF">todos</span><span style="color: #89DDFF">,</span><span style="color: #F07178"> </span><span style="color: #EEFFFF">setTodos</span><span style="color: #89DDFF">&#93;</span><span style="color: #F07178"> </span><span style="color: #89DDFF">=</span><span style="color: #F07178"> </span><span style="color: #82AAFF">useState</span><span style="color: #F07178">([])</span><span style="color: #89DDFF">;</span></span>
<span class="line"><span style="color: #F07178">  </span><span style="color: #C792EA">const</span><span style="color: #F07178"> </span><span style="color: #89DDFF">&#91;</span><span style="color: #EEFFFF">text</span><span style="color: #89DDFF">,</span><span style="color: #F07178"> </span><span style="color: #EEFFFF">setText</span><span style="color: #89DDFF">&#93;</span><span style="color: #F07178"> </span><span style="color: #89DDFF">=</span><span style="color: #F07178"> </span><span style="color: #82AAFF">useState</span><span style="color: #F07178">(</span><span style="color: #89DDFF">&#39;&#39;</span><span style="color: #F07178">)</span><span style="color: #89DDFF">;</span></span>
<span class="line"></span>
<span class="line"><span style="color: #F07178">  </span><span style="color: #C792EA">const</span><span style="color: #F07178"> </span><span style="color: #EEFFFF">addTodo</span><span style="color: #F07178"> </span><span style="color: #89DDFF">=</span><span style="color: #F07178"> </span><span style="color: #89DDFF">()</span><span style="color: #F07178"> </span><span style="color: #C792EA">=&gt;</span><span style="color: #F07178"> </span><span style="color: #89DDFF">{</span></span>
<span class="line"><span style="color: #F07178">    </span><span style="color: #C792EA">const</span><span style="color: #F07178"> </span><span style="color: #EEFFFF">trimmed</span><span style="color: #F07178"> </span><span style="color: #89DDFF">=</span><span style="color: #F07178"> </span><span style="color: #EEFFFF">text</span><span style="color: #89DDFF">.</span><span style="color: #82AAFF">trim</span><span style="color: #F07178">()</span><span style="color: #89DDFF">;</span></span>
<span class="line"><span style="color: #F07178">    </span><span style="color: #89DDFF; font-style: italic">if</span><span style="color: #F07178"> (</span><span style="color: #89DDFF">!</span><span style="color: #EEFFFF">trimmed</span><span style="color: #F07178">) </span><span style="color: #89DDFF; font-style: italic">return</span><span style="color: #89DDFF">;</span></span>
<span class="line"><span style="color: #F07178">    </span><span style="color: #82AAFF">setTodos</span><span style="color: #F07178">(</span><span style="color: #89DDFF">(</span><span style="color: #EEFFFF; font-style: italic">prev</span><span style="color: #89DDFF">)</span><span style="color: #F07178"> </span><span style="color: #C792EA">=&gt;</span><span style="color: #F07178"> &#91;</span><span style="color: #89DDFF">...</span><span style="color: #EEFFFF">prev</span><span style="color: #89DDFF">,</span><span style="color: #F07178"> </span><span style="color: #89DDFF">{</span><span style="color: #F07178"> id</span><span style="color: #89DDFF">:</span><span style="color: #F07178"> </span><span style="color: #EEFFFF">Date</span><span style="color: #89DDFF">.</span><span style="color: #82AAFF">now</span><span style="color: #F07178">()</span><span style="color: #89DDFF">.</span><span style="color: #82AAFF">toString</span><span style="color: #F07178">()</span><span style="color: #89DDFF">,</span><span style="color: #F07178"> text</span><span style="color: #89DDFF">:</span><span style="color: #F07178"> </span><span style="color: #EEFFFF">trimmed</span><span style="color: #F07178"> </span><span style="color: #89DDFF">}</span><span style="color: #F07178">&#93;)</span><span style="color: #89DDFF">;</span></span>
<span class="line"><span style="color: #F07178">    </span><span style="color: #82AAFF">setText</span><span style="color: #F07178">(</span><span style="color: #89DDFF">&#39;&#39;</span><span style="color: #F07178">)</span><span style="color: #89DDFF">;</span></span>
<span class="line"><span style="color: #F07178">  </span><span style="color: #89DDFF">};</span></span>
<span class="line"></span>
<span class="line"><span style="color: #F07178">  </span><span style="color: #C792EA">const</span><span style="color: #F07178"> </span><span style="color: #EEFFFF">removeTodo</span><span style="color: #F07178"> </span><span style="color: #89DDFF">=</span><span style="color: #F07178"> </span><span style="color: #89DDFF">(</span><span style="color: #EEFFFF; font-style: italic">id</span><span style="color: #89DDFF">)</span><span style="color: #F07178"> </span><span style="color: #C792EA">=&gt;</span><span style="color: #F07178"> </span><span style="color: #89DDFF">{</span></span>
<span class="line"><span style="color: #F07178">    </span><span style="color: #82AAFF">setTodos</span><span style="color: #F07178">(</span><span style="color: #89DDFF">(</span><span style="color: #EEFFFF; font-style: italic">prev</span><span style="color: #89DDFF">)</span><span style="color: #F07178"> </span><span style="color: #C792EA">=&gt;</span><span style="color: #F07178"> </span><span style="color: #EEFFFF">prev</span><span style="color: #89DDFF">.</span><span style="color: #82AAFF">filter</span><span style="color: #F07178">(</span><span style="color: #89DDFF">(</span><span style="color: #EEFFFF; font-style: italic">t</span><span style="color: #89DDFF">)</span><span style="color: #F07178"> </span><span style="color: #C792EA">=&gt;</span><span style="color: #F07178"> </span><span style="color: #EEFFFF">t</span><span style="color: #89DDFF">.</span><span style="color: #EEFFFF">id</span><span style="color: #F07178"> </span><span style="color: #89DDFF">!==</span><span style="color: #F07178"> </span><span style="color: #EEFFFF">id</span><span style="color: #F07178">))</span><span style="color: #89DDFF">;</span></span>
<span class="line"><span style="color: #F07178">  </span><span style="color: #89DDFF">};</span></span>
<span class="line"></span>
<span class="line"><span style="color: #F07178">  </span><span style="color: #C792EA">const</span><span style="color: #F07178"> </span><span style="color: #EEFFFF">renderItem</span><span style="color: #F07178"> </span><span style="color: #89DDFF">=</span><span style="color: #F07178"> </span><span style="color: #89DDFF">({</span><span style="color: #F07178"> </span><span style="color: #EEFFFF; font-style: italic">item</span><span style="color: #F07178"> </span><span style="color: #89DDFF">})</span><span style="color: #F07178"> </span><span style="color: #C792EA">=&gt;</span><span style="color: #F07178"> (</span></span>
<span class="line"><span style="color: #F07178">    </span><span style="color: #89DDFF">&lt;</span><span style="color: #FFCB6B">TouchableOpacity</span><span style="color: #89DDFF"> </span><span style="color: #C792EA">onPress</span><span style="color: #89DDFF">={()</span><span style="color: #EEFFFF"> </span><span style="color: #C792EA">=&gt;</span><span style="color: #EEFFFF"> </span><span style="color: #82AAFF">removeTodo</span><span style="color: #EEFFFF">(item</span><span style="color: #89DDFF">.</span><span style="color: #EEFFFF">id)</span><span style="color: #89DDFF">}&gt;</span></span>
<span class="line"><span style="color: #EEFFFF">      </span><span style="color: #89DDFF">&lt;</span><span style="color: #FFCB6B">View</span><span style="color: #89DDFF"> </span><span style="color: #C792EA">style</span><span style="color: #89DDFF">={</span><span style="color: #EEFFFF">styles</span><span style="color: #89DDFF">.</span><span style="color: #EEFFFF">todoItem</span><span style="color: #89DDFF">}&gt;</span></span>
<span class="line"><span style="color: #EEFFFF">        </span><span style="color: #89DDFF">&lt;</span><span style="color: #FFCB6B">Text</span><span style="color: #89DDFF"> </span><span style="color: #C792EA">style</span><span style="color: #89DDFF">={</span><span style="color: #EEFFFF">styles</span><span style="color: #89DDFF">.</span><span style="color: #EEFFFF">todoText</span><span style="color: #89DDFF">}&gt;{</span><span style="color: #EEFFFF">item</span><span style="color: #89DDFF">.</span><span style="color: #EEFFFF">text</span><span style="color: #89DDFF">}&lt;/</span><span style="color: #FFCB6B">Text</span><span style="color: #89DDFF">&gt;</span></span>
<span class="line"><span style="color: #EEFFFF">        </span><span style="color: #89DDFF">&lt;</span><span style="color: #FFCB6B">Text</span><span style="color: #89DDFF"> </span><span style="color: #C792EA">style</span><span style="color: #89DDFF">={</span><span style="color: #EEFFFF">styles</span><span style="color: #89DDFF">.</span><span style="color: #EEFFFF">todoHint</span><span style="color: #89DDFF">}&gt;</span><span style="color: #EEFFFF">Tap to remove</span><span style="color: #89DDFF">&lt;/</span><span style="color: #FFCB6B">Text</span><span style="color: #89DDFF">&gt;</span></span>
<span class="line"><span style="color: #EEFFFF">      </span><span style="color: #89DDFF">&lt;/</span><span style="color: #FFCB6B">View</span><span style="color: #89DDFF">&gt;</span></span>
<span class="line"><span style="color: #EEFFFF">    </span><span style="color: #89DDFF">&lt;/</span><span style="color: #FFCB6B">TouchableOpacity</span><span style="color: #89DDFF">&gt;</span></span>
<span class="line"><span style="color: #F07178">  )</span><span style="color: #89DDFF">;</span></span>
<span class="line"></span>
<span class="line"><span style="color: #F07178">  </span><span style="color: #89DDFF; font-style: italic">return</span><span style="color: #F07178"> (</span></span>
<span class="line"><span style="color: #F07178">    </span><span style="color: #89DDFF">&lt;</span><span style="color: #FFCB6B">View</span><span style="color: #89DDFF"> </span><span style="color: #C792EA">style</span><span style="color: #89DDFF">={</span><span style="color: #EEFFFF">styles</span><span style="color: #89DDFF">.</span><span style="color: #EEFFFF">container</span><span style="color: #89DDFF">}&gt;</span></span>
<span class="line"><span style="color: #EEFFFF">      </span><span style="color: #89DDFF">&lt;</span><span style="color: #FFCB6B">Text</span><span style="color: #89DDFF"> </span><span style="color: #C792EA">style</span><span style="color: #89DDFF">={</span><span style="color: #EEFFFF">styles</span><span style="color: #89DDFF">.</span><span style="color: #EEFFFF">title</span><span style="color: #89DDFF">}&gt;</span><span style="color: #EEFFFF">My To-Do App</span><span style="color: #89DDFF">&lt;/</span><span style="color: #FFCB6B">Text</span><span style="color: #89DDFF">&gt;</span></span>
<span class="line"></span>
<span class="line"><span style="color: #EEFFFF">      </span><span style="color: #89DDFF">&lt;</span><span style="color: #FFCB6B">TextInput</span></span>
<span class="line"><span style="color: #89DDFF">        </span><span style="color: #C792EA">style</span><span style="color: #89DDFF">={</span><span style="color: #EEFFFF">styles</span><span style="color: #89DDFF">.</span><span style="color: #EEFFFF">input</span><span style="color: #89DDFF">}</span></span>
<span class="line"><span style="color: #89DDFF">        </span><span style="color: #C792EA">placeholder</span><span style="color: #89DDFF">=</span><span style="color: #89DDFF">&quot;</span><span style="color: #C3E88D">Add a new task...</span><span style="color: #89DDFF">&quot;</span></span>
<span class="line"><span style="color: #89DDFF">        </span><span style="color: #C792EA">value</span><span style="color: #89DDFF">={</span><span style="color: #EEFFFF">text</span><span style="color: #89DDFF">}</span></span>
<span class="line"><span style="color: #89DDFF">        </span><span style="color: #C792EA">onChangeText</span><span style="color: #89DDFF">={</span><span style="color: #EEFFFF">setText</span><span style="color: #89DDFF">}</span></span>
<span class="line"><span style="color: #89DDFF">        </span><span style="color: #C792EA">returnKeyType</span><span style="color: #89DDFF">=</span><span style="color: #89DDFF">&quot;</span><span style="color: #C3E88D">done</span><span style="color: #89DDFF">&quot;</span></span>
<span class="line"><span style="color: #89DDFF">        </span><span style="color: #C792EA">onSubmitEditing</span><span style="color: #89DDFF">={</span><span style="color: #EEFFFF">addTodo</span><span style="color: #89DDFF">}</span></span>
<span class="line"><span style="color: #89DDFF">      /&gt;</span></span>
<span class="line"></span>
<span class="line"><span style="color: #EEFFFF">      </span><span style="color: #89DDFF">&lt;</span><span style="color: #FFCB6B">View</span><span style="color: #89DDFF"> </span><span style="color: #C792EA">style</span><span style="color: #89DDFF">={</span><span style="color: #EEFFFF">styles</span><span style="color: #89DDFF">.</span><span style="color: #EEFFFF">buttonWrap</span><span style="color: #89DDFF">}&gt;</span></span>
<span class="line"><span style="color: #EEFFFF">        </span><span style="color: #89DDFF">&lt;</span><span style="color: #FFCB6B">Button</span><span style="color: #89DDFF"> </span><span style="color: #C792EA">title</span><span style="color: #89DDFF">=</span><span style="color: #89DDFF">&quot;</span><span style="color: #C3E88D">Add Task</span><span style="color: #89DDFF">&quot;</span><span style="color: #89DDFF"> </span><span style="color: #C792EA">onPress</span><span style="color: #89DDFF">={</span><span style="color: #EEFFFF">addTodo</span><span style="color: #89DDFF">} /&gt;</span></span>
<span class="line"><span style="color: #EEFFFF">      </span><span style="color: #89DDFF">&lt;/</span><span style="color: #FFCB6B">View</span><span style="color: #89DDFF">&gt;</span></span>
<span class="line"></span>
<span class="line"><span style="color: #EEFFFF">      </span><span style="color: #89DDFF">&lt;</span><span style="color: #FFCB6B">FlatList</span></span>
<span class="line"><span style="color: #89DDFF">        </span><span style="color: #C792EA">data</span><span style="color: #89DDFF">={</span><span style="color: #EEFFFF">todos</span><span style="color: #89DDFF">}</span></span>
<span class="line"><span style="color: #89DDFF">        </span><span style="color: #C792EA">keyExtractor</span><span style="color: #89DDFF">={(</span><span style="color: #EEFFFF; font-style: italic">item</span><span style="color: #89DDFF">)</span><span style="color: #EEFFFF"> </span><span style="color: #C792EA">=&gt;</span><span style="color: #EEFFFF"> item</span><span style="color: #89DDFF">.</span><span style="color: #EEFFFF">id</span><span style="color: #89DDFF">}</span></span>
<span class="line"><span style="color: #89DDFF">        </span><span style="color: #C792EA">renderItem</span><span style="color: #89DDFF">={</span><span style="color: #EEFFFF">renderItem</span><span style="color: #89DDFF">}</span></span>
<span class="line"><span style="color: #89DDFF">        </span><span style="color: #C792EA">ListEmptyComponent</span><span style="color: #89DDFF">={</span></span>
<span class="line"><span style="color: #EEFFFF">          </span><span style="color: #89DDFF">&lt;</span><span style="color: #FFCB6B">Text</span><span style="color: #89DDFF"> </span><span style="color: #C792EA">style</span><span style="color: #89DDFF">={</span><span style="color: #EEFFFF">styles</span><span style="color: #89DDFF">.</span><span style="color: #EEFFFF">emptyText</span><span style="color: #89DDFF">}&gt;</span></span>
<span class="line"><span style="color: #EEFFFF">            Your list is empty. Add your first task!</span></span>
<span class="line"><span style="color: #EEFFFF">          </span><span style="color: #89DDFF">&lt;/</span><span style="color: #FFCB6B">Text</span><span style="color: #89DDFF">&gt;</span></span>
<span class="line"><span style="color: #EEFFFF">        </span><span style="color: #89DDFF">}</span></span>
<span class="line"><span style="color: #89DDFF">      /&gt;</span></span>
<span class="line"><span style="color: #EEFFFF">    </span><span style="color: #89DDFF">&lt;/</span><span style="color: #FFCB6B">View</span><span style="color: #89DDFF">&gt;</span></span>
<span class="line"><span style="color: #F07178">  )</span><span style="color: #89DDFF">;</span></span>
<span class="line"><span style="color: #89DDFF">}</span></span>
<span class="line"></span>
<span class="line"><span style="color: #C792EA">const</span><span style="color: #EEFFFF"> styles </span><span style="color: #89DDFF">=</span><span style="color: #EEFFFF"> StyleSheet</span><span style="color: #89DDFF">.</span><span style="color: #82AAFF">create</span><span style="color: #EEFFFF">(</span><span style="color: #89DDFF">{</span></span>
<span class="line"><span style="color: #EEFFFF">  </span><span style="color: #F07178">container</span><span style="color: #89DDFF">:</span><span style="color: #EEFFFF"> </span><span style="color: #89DDFF">{</span></span>
<span class="line"><span style="color: #EEFFFF">    </span><span style="color: #F07178">flex</span><span style="color: #89DDFF">:</span><span style="color: #EEFFFF"> </span><span style="color: #F78C6C">1</span><span style="color: #89DDFF">,</span></span>
<span class="line"><span style="color: #EEFFFF">    </span><span style="color: #F07178">backgroundColor</span><span style="color: #89DDFF">:</span><span style="color: #EEFFFF"> </span><span style="color: #89DDFF">&#39;</span><span style="color: #C3E88D">#fff</span><span style="color: #89DDFF">&#39;</span><span style="color: #89DDFF">,</span></span>
<span class="line"><span style="color: #EEFFFF">    </span><span style="color: #F07178">paddingTop</span><span style="color: #89DDFF">:</span><span style="color: #EEFFFF"> </span><span style="color: #F78C6C">60</span><span style="color: #89DDFF">,</span></span>
<span class="line"><span style="color: #EEFFFF">    </span><span style="color: #F07178">paddingHorizontal</span><span style="color: #89DDFF">:</span><span style="color: #EEFFFF"> </span><span style="color: #F78C6C">20</span><span style="color: #89DDFF">,</span></span>
<span class="line"><span style="color: #EEFFFF">  </span><span style="color: #89DDFF">},</span></span>
<span class="line"><span style="color: #EEFFFF">  </span><span style="color: #F07178">title</span><span style="color: #89DDFF">:</span><span style="color: #EEFFFF"> </span><span style="color: #89DDFF">{</span></span>
<span class="line"><span style="color: #EEFFFF">    </span><span style="color: #F07178">fontSize</span><span style="color: #89DDFF">:</span><span style="color: #EEFFFF"> </span><span style="color: #F78C6C">24</span><span style="color: #89DDFF">,</span></span>
<span class="line"><span style="color: #EEFFFF">    </span><span style="color: #F07178">fontWeight</span><span style="color: #89DDFF">:</span><span style="color: #EEFFFF"> </span><span style="color: #89DDFF">&#39;</span><span style="color: #C3E88D">bold</span><span style="color: #89DDFF">&#39;</span><span style="color: #89DDFF">,</span></span>
<span class="line"><span style="color: #EEFFFF">    </span><span style="color: #F07178">textAlign</span><span style="color: #89DDFF">:</span><span style="color: #EEFFFF"> </span><span style="color: #89DDFF">&#39;</span><span style="color: #C3E88D">center</span><span style="color: #89DDFF">&#39;</span><span style="color: #89DDFF">,</span></span>
<span class="line"><span style="color: #EEFFFF">    </span><span style="color: #F07178">marginBottom</span><span style="color: #89DDFF">:</span><span style="color: #EEFFFF"> </span><span style="color: #F78C6C">20</span><span style="color: #89DDFF">,</span></span>
<span class="line"><span style="color: #EEFFFF">  </span><span style="color: #89DDFF">},</span></span>
<span class="line"><span style="color: #EEFFFF">  </span><span style="color: #F07178">input</span><span style="color: #89DDFF">:</span><span style="color: #EEFFFF"> </span><span style="color: #89DDFF">{</span></span>
<span class="line"><span style="color: #EEFFFF">    </span><span style="color: #F07178">borderWidth</span><span style="color: #89DDFF">:</span><span style="color: #EEFFFF"> </span><span style="color: #F78C6C">1</span><span style="color: #89DDFF">,</span></span>
<span class="line"><span style="color: #EEFFFF">    </span><span style="color: #F07178">borderColor</span><span style="color: #89DDFF">:</span><span style="color: #EEFFFF"> </span><span style="color: #89DDFF">&#39;</span><span style="color: #C3E88D">#d9d9d9</span><span style="color: #89DDFF">&#39;</span><span style="color: #89DDFF">,</span></span>
<span class="line"><span style="color: #EEFFFF">    </span><span style="color: #F07178">padding</span><span style="color: #89DDFF">:</span><span style="color: #EEFFFF"> </span><span style="color: #F78C6C">12</span><span style="color: #89DDFF">,</span></span>
<span class="line"><span style="color: #EEFFFF">    </span><span style="color: #F07178">borderRadius</span><span style="color: #89DDFF">:</span><span style="color: #EEFFFF"> </span><span style="color: #F78C6C">8</span><span style="color: #89DDFF">,</span></span>
<span class="line"><span style="color: #EEFFFF">    </span><span style="color: #F07178">marginBottom</span><span style="color: #89DDFF">:</span><span style="color: #EEFFFF"> </span><span style="color: #F78C6C">10</span><span style="color: #89DDFF">,</span></span>
<span class="line"><span style="color: #EEFFFF">    </span><span style="color: #F07178">fontSize</span><span style="color: #89DDFF">:</span><span style="color: #EEFFFF"> </span><span style="color: #F78C6C">16</span><span style="color: #89DDFF">,</span></span>
<span class="line"><span style="color: #EEFFFF">  </span><span style="color: #89DDFF">},</span></span>
<span class="line"><span style="color: #EEFFFF">  </span><span style="color: #F07178">buttonWrap</span><span style="color: #89DDFF">:</span><span style="color: #EEFFFF"> </span><span style="color: #89DDFF">{</span></span>
<span class="line"><span style="color: #EEFFFF">    </span><span style="color: #F07178">marginBottom</span><span style="color: #89DDFF">:</span><span style="color: #EEFFFF"> </span><span style="color: #F78C6C">12</span><span style="color: #89DDFF">,</span></span>
<span class="line"><span style="color: #EEFFFF">  </span><span style="color: #89DDFF">},</span></span>
<span class="line"><span style="color: #EEFFFF">  </span><span style="color: #F07178">todoItem</span><span style="color: #89DDFF">:</span><span style="color: #EEFFFF"> </span><span style="color: #89DDFF">{</span></span>
<span class="line"><span style="color: #EEFFFF">    </span><span style="color: #F07178">padding</span><span style="color: #89DDFF">:</span><span style="color: #EEFFFF"> </span><span style="color: #F78C6C">14</span><span style="color: #89DDFF">,</span></span>
<span class="line"><span style="color: #EEFFFF">    </span><span style="color: #F07178">borderRadius</span><span style="color: #89DDFF">:</span><span style="color: #EEFFFF"> </span><span style="color: #F78C6C">10</span><span style="color: #89DDFF">,</span></span>
<span class="line"><span style="color: #EEFFFF">    </span><span style="color: #F07178">backgroundColor</span><span style="color: #89DDFF">:</span><span style="color: #EEFFFF"> </span><span style="color: #89DDFF">&#39;</span><span style="color: #C3E88D">#f7f8fa</span><span style="color: #89DDFF">&#39;</span><span style="color: #89DDFF">,</span></span>
<span class="line"><span style="color: #EEFFFF">    </span><span style="color: #F07178">borderWidth</span><span style="color: #89DDFF">:</span><span style="color: #EEFFFF"> </span><span style="color: #F78C6C">1</span><span style="color: #89DDFF">,</span></span>
<span class="line"><span style="color: #EEFFFF">    </span><span style="color: #F07178">borderColor</span><span style="color: #89DDFF">:</span><span style="color: #EEFFFF"> </span><span style="color: #89DDFF">&#39;</span><span style="color: #C3E88D">#ececec</span><span style="color: #89DDFF">&#39;</span><span style="color: #89DDFF">,</span></span>
<span class="line"><span style="color: #EEFFFF">    </span><span style="color: #F07178">marginBottom</span><span style="color: #89DDFF">:</span><span style="color: #EEFFFF"> </span><span style="color: #F78C6C">8</span><span style="color: #89DDFF">,</span></span>
<span class="line"><span style="color: #EEFFFF">  </span><span style="color: #89DDFF">},</span></span>
<span class="line"><span style="color: #EEFFFF">  </span><span style="color: #F07178">todoText</span><span style="color: #89DDFF">:</span><span style="color: #EEFFFF"> </span><span style="color: #89DDFF">{</span></span>
<span class="line"><span style="color: #EEFFFF">    </span><span style="color: #F07178">fontSize</span><span style="color: #89DDFF">:</span><span style="color: #EEFFFF"> </span><span style="color: #F78C6C">16</span><span style="color: #89DDFF">,</span></span>
<span class="line"><span style="color: #EEFFFF">    </span><span style="color: #F07178">color</span><span style="color: #89DDFF">:</span><span style="color: #EEFFFF"> </span><span style="color: #89DDFF">&#39;</span><span style="color: #C3E88D">#222</span><span style="color: #89DDFF">&#39;</span><span style="color: #89DDFF">,</span></span>
<span class="line"><span style="color: #EEFFFF">  </span><span style="color: #89DDFF">},</span></span>
<span class="line"><span style="color: #EEFFFF">  </span><span style="color: #F07178">todoHint</span><span style="color: #89DDFF">:</span><span style="color: #EEFFFF"> </span><span style="color: #89DDFF">{</span></span>
<span class="line"><span style="color: #EEFFFF">    </span><span style="color: #F07178">marginTop</span><span style="color: #89DDFF">:</span><span style="color: #EEFFFF"> </span><span style="color: #F78C6C">6</span><span style="color: #89DDFF">,</span></span>
<span class="line"><span style="color: #EEFFFF">    </span><span style="color: #F07178">fontSize</span><span style="color: #89DDFF">:</span><span style="color: #EEFFFF"> </span><span style="color: #F78C6C">12</span><span style="color: #89DDFF">,</span></span>
<span class="line"><span style="color: #EEFFFF">    </span><span style="color: #F07178">color</span><span style="color: #89DDFF">:</span><span style="color: #EEFFFF"> </span><span style="color: #89DDFF">&#39;</span><span style="color: #C3E88D">#7a7a7a</span><span style="color: #89DDFF">&#39;</span><span style="color: #89DDFF">,</span></span>
<span class="line"><span style="color: #EEFFFF">  </span><span style="color: #89DDFF">},</span></span>
<span class="line"><span style="color: #EEFFFF">  </span><span style="color: #F07178">emptyText</span><span style="color: #89DDFF">:</span><span style="color: #EEFFFF"> </span><span style="color: #89DDFF">{</span></span>
<span class="line"><span style="color: #EEFFFF">    </span><span style="color: #F07178">color</span><span style="color: #89DDFF">:</span><span style="color: #EEFFFF"> </span><span style="color: #89DDFF">&#39;</span><span style="color: #C3E88D">#9b9b9b</span><span style="color: #89DDFF">&#39;</span><span style="color: #89DDFF">,</span></span>
<span class="line"><span style="color: #EEFFFF">    </span><span style="color: #F07178">fontSize</span><span style="color: #89DDFF">:</span><span style="color: #EEFFFF"> </span><span style="color: #F78C6C">14</span><span style="color: #89DDFF">,</span></span>
<span class="line"><span style="color: #EEFFFF">    </span><span style="color: #F07178">textAlign</span><span style="color: #89DDFF">:</span><span style="color: #EEFFFF"> </span><span style="color: #89DDFF">&#39;</span><span style="color: #C3E88D">center</span><span style="color: #89DDFF">&#39;</span><span style="color: #89DDFF">,</span></span>
<span class="line"><span style="color: #EEFFFF">    </span><span style="color: #F07178">marginTop</span><span style="color: #89DDFF">:</span><span style="color: #EEFFFF"> </span><span style="color: #F78C6C">20</span><span style="color: #89DDFF">,</span></span>
<span class="line"><span style="color: #EEFFFF">  </span><span style="color: #89DDFF">},</span></span>
<span class="line"><span style="color: #89DDFF">}</span><span style="color: #EEFFFF">)</span><span style="color: #89DDFF">;</span></span></code></pre><span style="display:flex;align-items:flex-end;padding:10px;width:100%;justify-content:flex-end;background-color:#212121;color:#d5ffff;font-size:12px;line-height:1;position:relative">JavaScript</span></div>


<div class="wp-block-image">
<figure class="aligncenter size-full"><img loading="lazy" decoding="async" width="512" height="609" src="https://blog.goloris.com/wp-content/uploads/2025/08/react-native-todo-app-3.png" alt="" class="wp-image-3457" srcset="https://blog.goloris.com/wp-content/uploads/2025/08/react-native-todo-app-3.png 512w, https://blog.goloris.com/wp-content/uploads/2025/08/react-native-todo-app-3-252x300.png 252w, https://blog.goloris.com/wp-content/uploads/2025/08/react-native-todo-app-3-225x268.png 225w" sizes="(max-width: 512px) 100vw, 512px" /></figure></div>


<h3 class="wp-block-heading">Conclusion</h3>



<p>Congratulations! <img src="https://s.w.org/images/core/emoji/16.0.1/72x72/1f389.png" alt="🎉" class="wp-smiley" style="height: 1em; max-height: 1em;" /> You just built your first mobile app with React Native. You now understand:</p>



<ul class="wp-block-list">
<li>How to use core components (<code>View</code>, <code>Text</code>, <code>TextInput</code>, <code>Button</code>, <code>FlatList</code>, <code>TouchableOpacity</code>)</li>



<li>How to manage data with <code>useState</code></li>



<li>How to style an app with <code>StyleSheet</code></li>



<li>How to add and delete tasks in a simple list</li>
</ul>



<p>This app may be small, but the same building blocks scale to much larger projects.</p>



<p>Of course, coding takes time. If your goal is simply to <strong>launch an app quickly for your business</strong>, you don’t always need to write code. Platforms like <strong><a href="https://goloris.com" target="_blank" rel="noopener" title="Goloris AI No-Code App Builder">Goloris AI No-Code App Builder</a></strong> let you describe your app in plain language, and it generates the structure instantly. You can publish as a free <strong>Progressive Web App (PWA)</strong> or upgrade to launch on iOS and Android.</p>



<p>Whether you want to learn coding or prefer no-code speed, you now have both options.</p>



<p></p><p>The post <a href="https://blog.goloris.com/how-to-build-a-to-do-app-with-react-native-in-2025-beginners-guide/">How to Build a To-Do App with React Native in 2025 (Beginner’s Guide)</a> first appeared on <a href="https://blog.goloris.com">Build Smarter with No-Code & AI | Proven Tips & Trends by Goloris</a>.</p>]]></content:encoded>
					
					<wfw:commentRss>https://blog.goloris.com/how-to-build-a-to-do-app-with-react-native-in-2025-beginners-guide/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
	</channel>
</rss>
