<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Prasanth React</title>
    <description>The latest articles on DEV Community by Prasanth React (@prasanthreact).</description>
    <link>https://dev.to/prasanthreact</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F684735%2F541178a3-07ca-432e-848c-04e97cb2dc87.png</url>
      <title>DEV Community: Prasanth React</title>
      <link>https://dev.to/prasanthreact</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/prasanthreact"/>
    <language>en</language>
    <item>
      <title>[Boost]</title>
      <dc:creator>Prasanth React</dc:creator>
      <pubDate>Mon, 30 Jun 2025 17:11:49 +0000</pubDate>
      <link>https://dev.to/prasanthreact/-29np</link>
      <guid>https://dev.to/prasanthreact/-29np</guid>
      <description>&lt;div class="ltag__link--embedded"&gt;
  &lt;div class="crayons-story "&gt;
  &lt;a href="https://dev.to/prasanthreact/react-router-too-verbose-try-this-file-based-routing-like-nextjs-in-any-react-app-1c69" class="crayons-story__hidden-navigation-link"&gt;🧭 React Router Too Verbose? Try This: File-Based Routing like Next.js — In Any React App!&lt;/a&gt;


  &lt;div class="crayons-story__body crayons-story__body-full_post"&gt;
    &lt;div class="crayons-story__top"&gt;
      &lt;div class="crayons-story__meta"&gt;
        &lt;div class="crayons-story__author-pic"&gt;

          &lt;a href="/prasanthreact" class="crayons-avatar  crayons-avatar--l  "&gt;
            &lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F684735%2F541178a3-07ca-432e-848c-04e97cb2dc87.png" alt="prasanthreact profile" class="crayons-avatar__image"&gt;
          &lt;/a&gt;
        &lt;/div&gt;
        &lt;div&gt;
          &lt;div&gt;
            &lt;a href="/prasanthreact" class="crayons-story__secondary fw-medium m:hidden"&gt;
              Prasanth React
            &lt;/a&gt;
            &lt;div class="profile-preview-card relative mb-4 s:mb-0 fw-medium hidden m:inline-block"&gt;
              
                Prasanth React
                
              
              &lt;div id="story-author-preview-content-2639437" class="profile-preview-card__content crayons-dropdown branded-7 p-4 pt-0"&gt;
                &lt;div class="gap-4 grid"&gt;
                  &lt;div class="-mt-4"&gt;
                    &lt;a href="/prasanthreact" class="flex"&gt;
                      &lt;span class="crayons-avatar crayons-avatar--xl mr-2 shrink-0"&gt;
                        &lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F684735%2F541178a3-07ca-432e-848c-04e97cb2dc87.png" class="crayons-avatar__image" alt=""&gt;
                      &lt;/span&gt;
                      &lt;span class="crayons-link crayons-subtitle-2 mt-5"&gt;Prasanth React&lt;/span&gt;
                    &lt;/a&gt;
                  &lt;/div&gt;
                  &lt;div class="print-hidden"&gt;
                    
                      Follow
                    
                  &lt;/div&gt;
                  &lt;div class="author-preview-metadata-container"&gt;&lt;/div&gt;
                &lt;/div&gt;
              &lt;/div&gt;
            &lt;/div&gt;

          &lt;/div&gt;
          &lt;a href="https://dev.to/prasanthreact/react-router-too-verbose-try-this-file-based-routing-like-nextjs-in-any-react-app-1c69" class="crayons-story__tertiary fs-xs"&gt;&lt;time&gt;Jun 30 '25&lt;/time&gt;&lt;span class="time-ago-indicator-initial-placeholder"&gt;&lt;/span&gt;&lt;/a&gt;
        &lt;/div&gt;
      &lt;/div&gt;

    &lt;/div&gt;

    &lt;div class="crayons-story__indention"&gt;
      &lt;h2 class="crayons-story__title crayons-story__title-full_post"&gt;
        &lt;a href="https://dev.to/prasanthreact/react-router-too-verbose-try-this-file-based-routing-like-nextjs-in-any-react-app-1c69" id="article-link-2639437"&gt;
          🧭 React Router Too Verbose? Try This: File-Based Routing like Next.js — In Any React App!
        &lt;/a&gt;
      &lt;/h2&gt;
        &lt;div class="crayons-story__tags"&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/webdev"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;webdev&lt;/a&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/react"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;react&lt;/a&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/nextjs"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;nextjs&lt;/a&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/javascript"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;javascript&lt;/a&gt;
        &lt;/div&gt;
      &lt;div class="crayons-story__bottom"&gt;
        &lt;div class="crayons-story__details"&gt;
            &lt;a href="https://dev.to/prasanthreact/react-router-too-verbose-try-this-file-based-routing-like-nextjs-in-any-react-app-1c69#comments" class="crayons-btn crayons-btn--s crayons-btn--ghost crayons-btn--icon-left flex items-center"&gt;
              Comments


              &lt;span class="hidden s:inline"&gt;Add Comment&lt;/span&gt;
            &lt;/a&gt;
        &lt;/div&gt;
        &lt;div class="crayons-story__save"&gt;
          &lt;small class="crayons-story__tertiary fs-xs mr-2"&gt;
            2 min read
          &lt;/small&gt;
            
              &lt;span class="bm-initial"&gt;
                

              &lt;/span&gt;
              &lt;span class="bm-success"&gt;
                

              &lt;/span&gt;
            
        &lt;/div&gt;
      &lt;/div&gt;
    &lt;/div&gt;
  &lt;/div&gt;
&lt;/div&gt;

&lt;/div&gt;


</description>
      <category>webdev</category>
      <category>react</category>
      <category>nextjs</category>
      <category>javascript</category>
    </item>
    <item>
      <title>🧭 React Router Too Verbose? Try This: File-Based Routing like Next.js — In Any React App!</title>
      <dc:creator>Prasanth React</dc:creator>
      <pubDate>Mon, 30 Jun 2025 12:43:51 +0000</pubDate>
      <link>https://dev.to/prasanthreact/react-router-too-verbose-try-this-file-based-routing-like-nextjs-in-any-react-app-1c69</link>
      <guid>https://dev.to/prasanthreact/react-router-too-verbose-try-this-file-based-routing-like-nextjs-in-any-react-app-1c69</guid>
      <description>&lt;p&gt;React’s flexibility is powerful — but when it comes to routing, things can quickly get verbose. If you love how Next.js App Router handles file-based routing, nested layouts, and grouped routes, I’ve got something exciting:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Meet &lt;code&gt;react-next-router&lt;/code&gt; — a plug-and-play file-based routing system for React that mimics Next.js App Router behavior — but for any React app!&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;🚀 Features&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;✅ Next.js App Router-like routing in React apps&lt;/li&gt;
&lt;li&gt;✅ Auto-load pages from the /app folder&lt;/li&gt;
&lt;li&gt;✅ Support for Layouts via &lt;code&gt;layout.jsx&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;✅ Route Groups with (group) folders&lt;/li&gt;
&lt;li&gt;✅ Dynamic routes with &lt;code&gt;[slug], [...slug], [[slug]]&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;✅ Error boundaries via &lt;code&gt;error.jsx&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;✅ 404 Not Found handling with &lt;code&gt;404.jsx&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;✅ Loader support for data fetching &lt;code&gt;loader.jsx&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;✅ Fully type-safe (TypeScript supported)
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;src/
 └── app/
      ├── layout.jsx          # Root layout
      ├── page.jsx            # Index route ('/')
      ├── about/
      │    └── page.jsx       # '/about'
      ├── blog/
      │    ├── [slug]/
      │    │     ├── page.jsx   # '/blog/:slug'
      │    │     └── loader.jsx  # Loader for data fetching
      │    └── layout.jsx     # Layout for '/blog/*'
      ├── (admin)/
      │    ├── dashboard/
      │    │      └── page.jsx # '/dashboard'
      │    └── layout.jsx     # Layout for group
      ├── error.jsx           # Error boundary
      ├── 404.jsx             # Not Found page
      ├── loading.jsx         # Loading component (renders while loading)
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  🚀 Usage
&lt;/h3&gt;

&lt;p&gt;Example src/app/page.jsx:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;export default function Home({ data }) {
  return &amp;lt;h1&amp;gt;Home Page {data &amp;amp;&amp;amp; &amp;lt;span&amp;gt;{data.message}&amp;lt;/span&amp;gt;}&amp;lt;/h1&amp;gt;;
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Example src/app/layout.jsx:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;export default function RootLayout({ children }) {
  return (
    &amp;lt;div&amp;gt;
      &amp;lt;header&amp;gt;Header Content&amp;lt;/header&amp;gt;
      &amp;lt;main&amp;gt;{children}&amp;lt;/main&amp;gt;
    &amp;lt;/div&amp;gt;
  );
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Example src/app/loader.jsx:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;// This loader runs before the sibling page.jsx and its return value is passed as the 'data' prop
export default async function loader() {
  // You can fetch from any API or return any data
  const res = await fetch("https://api.example.com/message");
  const data = await res.json();
  return { message: data.message };
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Example src/App.jsx:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;import { AppRouter } from "react-next-router";

function App() {
  return &amp;lt;AppRouter /&amp;gt;;
}
export default App;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;📎 Links&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;🔗 NPM: &lt;a href="https://www.npmjs.com/package/react-next-router" rel="noopener noreferrer"&gt;react-next-router&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;🧠 GitHub: &lt;a href="//github.com/prasanthreact/react-next-router"&gt;github.com/prasanthreact/react-next-router&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;📦 Demo: &lt;a href="https://stackblitz.com/edit/react-next-router-example?file=package.json" rel="noopener noreferrer"&gt;StackBlitz Example&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>webdev</category>
      <category>react</category>
      <category>nextjs</category>
      <category>javascript</category>
    </item>
  </channel>
</rss>
