<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[Crimson.dev]]></title><description><![CDATA[Crimson.dev]]></description><link>https://crimson.hashnode.dev</link><generator>RSS for Node</generator><lastBuildDate>Tue, 03 Nov 2026 05:27:16 GMT</lastBuildDate><atom:link href="https://crimson.hashnode.dev/rss.xml" rel="self" type="application/rss+xml"/><language><![CDATA[en]]></language><ttl>60</ttl><item><title><![CDATA[How to Fix Fast Refresh or Hot Reload Not Working in Expo Router]]></title><description><![CDATA[Learn how to fix fast refresh and hot reload issues in Expo Router with simple solutions and best practices for efficient development]]></description><link>https://crimson.hashnode.dev/how-to-fix-fast-refresh-or-hot-reload-not-working-in-expo-router</link><guid isPermaLink="true">https://crimson.hashnode.dev/how-to-fix-fast-refresh-or-hot-reload-not-working-in-expo-router</guid><category><![CDATA[fast refresh]]></category><category><![CDATA[React Native]]></category><category><![CDATA[React Native Expo Setup]]></category><category><![CDATA[Expo]]></category><category><![CDATA[expo-router]]></category><category><![CDATA[hot-reload]]></category><dc:creator><![CDATA[Oluwatowo Rosanwo]]></dc:creator><pubDate>Thu, 20 Nov 2025 15:03:43 GMT</pubDate><enclosure url="https://cdn.hashnode.com/res/hashnode/image/upload/v1763650969509/a68c4f19-2e9c-4aaa-b460-ab2ebd2796e2.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>It really looked like I was the only one having this issue, I did tons of research, AI Prompting, googling, all were in vain, only because the issue was pretty simple, and not many people have it,  </p>
<p>but if you’re here, you’re probably in my shoes, with nowhere to go to, or no one to turn to. walk with me lets tackle it together</p>
<h2 id="heading-how-expo-router-handles-your-routes">How Expo Router handles your routes</h2>
<p>Naturally Expo Router uses your folders as routes in your app, also, it always looks for <code>index.ts(x)</code> in your folders to render as a page, if it doesn’t find any, it renders a “Screen does not exist“ page, there’s one that always comes by default so this doesn’t happen upfront.  </p>
<p>Now sometimes in your Mockup or Figma design, there could be multiple pages that look like they have the same layout, but you don’t want to them to be in the same subfolder, that’s where the <strong>“( )”</strong> syntax comes in. example <code>/app/(main)/index.tsx</code></p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1763650331661/7b539342-db21-40bb-90c6-c25bc9470821.png" alt class="image--center mx-auto" /></p>
<p>when navigating, you don’t need to do something like <code>push(‘/app/(main)/index.tsx‘)</code> you just need to do <code>push(‘/‘)</code>, then your <code>(main)</code> folder can have a <code>_layout.tsx</code> file that would handle security access logic  </p>
<p>when you use this syntax to name your folder group, it disappears from your navigation paths, and it helps you group pages with similar layout together such that they don’t affect or show up in the URL when you’re navigating</p>
<p>This is perfect for cases where you want to secure a group of pages for Authorization or Authentication purposes, or premium purposes, and you don’t want the URL to be affected</p>
<h2 id="heading-solution">Solution?</h2>
<ul>
<li><p>First thing to make sure is that</p>
<p>  Your app routing or nested routing is structured properly, also try to make sure that you app’s <strong>“/“</strong> page leads directly to your apps dashboard page, or logged in page, or whatever it is, you can use the <strong>“()“</strong> syntax for groupings if you app has nested pages and routes and complex layout logics</p>
</li>
<li><p>Second is to make sure all your pages (or the affected page, i.e. the page you noticed fast refresh isn’t working) only <strong>have one single default export</strong> of the page, any page that has multiple exports would have fast refresh disabled automatically  </p>
</li>
</ul>
<p>In conclusion, addressing the issue of fast refresh not working in Expo Router can be straightforward with the right approach and unfortunately these things don’t throw errors or warnings, so they can be really hard to debug. But by ensuring proper routing structure and adhering to best practices like having a single default export per page, you can maintain a smooth and efficient development experience. Remember, small adjustments can lead to significant improvements in your development workflow. Thank you for reading, and I hope these insights prove helpful in your projects.  </p>
<p>If I have more points, I’ll make sure to update,</p>
<p>Thank you for your time!</p>
]]></content:encoded></item></channel></rss>