<?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[The Curious Mockingbird]]></title><description><![CDATA[I am a passionate React developer with a strong interest in continuous learning and sharing knowledge with others.
React, MERN stack, Gatsby.js, Next.js]]></description><link>https://curious-mockingbird.hashnode.dev</link><image><url>https://cdn.hashnode.com/res/hashnode/image/upload/v1690748483493/86zZwu430.png</url><title>The Curious Mockingbird</title><link>https://curious-mockingbird.hashnode.dev</link></image><generator>RSS for Node</generator><lastBuildDate>Thu, 24 Sep 2026 19:42:16 GMT</lastBuildDate><atom:link href="https://curious-mockingbird.hashnode.dev/rss.xml" rel="self" type="application/rss+xml"/><language><![CDATA[en]]></language><ttl>60</ttl><item><title><![CDATA[Choosing the right path: Next.js]]></title><description><![CDATA[As stated in the series introduction, learning React can be confusing for novice developers, and even experienced developers may find it challenging to determine which React framework or stack best suits the technical requirements of their projects.
...]]></description><link>https://curious-mockingbird.hashnode.dev/choosing-the-right-path-nextjs</link><guid isPermaLink="true">https://curious-mockingbird.hashnode.dev/choosing-the-right-path-nextjs</guid><dc:creator><![CDATA[Harold Mesa]]></dc:creator><pubDate>Fri, 27 Jun 2025 03:59:39 GMT</pubDate><enclosure url="https://cdn.hashnode.com/res/hashnode/image/upload/v1691686732363/168310d0-f49e-4f03-9798-ca74558605e7.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>As stated in the <a target="_blank" href="https://harold-mesa.hashnode.dev/choosing-the-right-path-a-guide-to-react-based-frameworks">series introduction</a>, learning React can be confusing for novice developers, and even experienced developers may find it challenging to determine which React framework or stack best suits the technical requirements of their projects.</p>
<p>The primary goal of these articles is to offer practical and comparative advice, to assist you in making informed decisions when selecting the most suitable React frameworks or stack.</p>
<h3 id="heading-full-article-coming-soon">✍🏽✍🏽 (Full article coming soon) ✍🏽✍🏽</h3>
]]></content:encoded></item><item><title><![CDATA[Choosing the right path: the MERN stack]]></title><description><![CDATA[As stated in the series introduction, learning React can be confusing for novice developers, and even experienced developers may find it challenging to determine which React framework or stack best suits the technical requirements of their projects.
...]]></description><link>https://curious-mockingbird.hashnode.dev/choosing-the-right-path-the-mern-stack</link><guid isPermaLink="true">https://curious-mockingbird.hashnode.dev/choosing-the-right-path-the-mern-stack</guid><category><![CDATA[MERN Stack]]></category><category><![CDATA[React]]></category><category><![CDATA[Node.js]]></category><category><![CDATA[Express]]></category><category><![CDATA[MongoDB]]></category><dc:creator><![CDATA[Harold Mesa]]></dc:creator><pubDate>Mon, 07 Aug 2023 20:48:29 GMT</pubDate><enclosure url="https://cdn.hashnode.com/res/hashnode/image/upload/v1691439607262/48fefd55-8752-4459-85ab-0fc06186b550.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>As stated in the <a target="_blank" href="https://harold-mesa.hashnode.dev/choosing-the-right-path-a-guide-to-react-based-frameworks">series introduction</a>, learning React can be confusing for novice developers, and even experienced developers may find it challenging to determine which React framework or stack best suits the technical requirements of their projects.</p>
<p>The primary goal of these articles is to offer practical and comparative advice, to assist you in making informed decisions when selecting the most suitable React frameworks/libraries.</p>
<p>Here are the key metrics of the MERN stack:</p>
<h3 id="heading-stack-vs-framework">Stack v.s framework</h3>
<p>It's essential to understand that a React-based framework and a stack are distinct concepts.</p>
<ul>
<li><p>A <strong>stack</strong> represents a complete set of technologies used in an application, which may or may not include React for its UI (the MERN stack does). Examples of other stacks (that do not include React) are the LAMP stack and the Django stack.</p>
<p>  <strong>- Tip</strong>:<br />  MERN is a stack, not a framework.</p>
</li>
</ul>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1690835551233/97b4d1a6-987a-4a30-afe6-05a5c7a8f683.png" alt class="image--center mx-auto" /></p>
<h3 id="heading-development-paradigm">Development Paradigm</h3>
<p>When we talk about frameworks being "opinionated" and stacks being "less restrictive," we're referring to a combination of architecture, development paradigms, and best practices.</p>
<p>A framework suggests a certain way of doing things and is designed to guide developers into following certain patterns, conventions, or architecture. For example, Next.js, as an opinionated framework, provides clear conventions for routing, file and directory structure, and data fetching.</p>
<ul>
<li><p>The MERN stack doesn't enforce a specific way to structure your application. You can choose how to organize your files, how to handle routing, etc. It is a combination of:</p>
<p>  <a target="_blank" href="https://www.mongodb.com/"><strong>MongoDB</strong></a><strong>,</strong> a document-oriented NoSQL database designed to store (but not limited to) JSON data.</p>
<p>  <a target="_blank" href="https://expressjs.com/"><strong>Express.js</strong></a>, a server-side framework for Node.js that simplifies the process of handling HTTP requests and mapping URLs to server-side functions.</p>
<p>  <a target="_blank" href="https://react.dev/">React.js</a>, as you may know, a arguably the most comprehensive front-end JavaScript library that enables building interactive user interfaces.</p>
<p>  <a target="_blank" href="https://nodejs.org/en">Node.js</a>, a JavaScript runtime environment. It allows developers to execute JavaScript code on the server side (but also locally).</p>
<p>  - <strong>Tip</strong>:</p>
<p>  The MERN stack doesn't impose a particular method. However, you can (and should) still follow design patterns/development paradigms to improve code organization, maintainability, and scalability.</p>
<p>  Adhering to design patterns and development paradigms is still crucial to enhance your code's organization, maintainability, and scalability. Here are just a few design patterns/development paradigms you could implement in your MERN applications:<br />  - MVC (Model-View-Controller)<br />  - RESTful APIs<br />  - Middleware<br />  - Container and Component architecture (In React)<br />  - Asynchronous Programming<br />  - Single Responsibility Principle</p>
</li>
</ul>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1690927019496/8900e09a-4b8c-41a1-ac16-5b12fbf00b1f.png" alt class="image--center mx-auto" /></p>
<h3 id="heading-data-management-and-apis">Data management and APIs</h3>
<p><strong>Data Management</strong>: MongoDB is used for data management in the MERN stack. Mongoose is often used as an object data modeling (ODM) library that provides a straightforward, schema-based solution to model your application data and includes built-in type casting, validation, query building, business logic hooks, and more.</p>
<p><strong>APIs</strong>: Express.js and Node.js are used to build the API in a MERN stack application. Express simplifies the process of defining routes and handling HTTP requests, while Node.js is the runtime in which your server-side code runs.</p>
<p>The process typically works as follows:</p>
<ol>
<li><p>The React.js frontend makes an HTTP request to an API endpoint.</p>
</li>
<li><p>The Express.js server receives this request and performs some operation. For example, a CRUD operation (Create, Read, Update, Delete) is performed against a MongoDB database.</p>
</li>
<li><p>Once the operation is complete, the server sends a response back to the client.</p>
</li>
<li><p>The client (React.js) then updates the user interface based on this response.</p>
</li>
</ol>
<p>Remember, while this is a common structure for a MERN stack application, there's a lot of flexibility depending on your needs. For instance, you could add Redux for state management in your React application, or use GraphQL instead of a REST API.</p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1691372341226/45b8aecc-ff82-46e9-8984-89428d48d138.png" alt class="image--center mx-auto" /></p>
<h3 id="heading-seo">SEO</h3>
<p>SEO, or Search Engine Optimization, is important for any web application that relies on discoverability via search engines. Web applications built with the MERN stack can certainly be SEO-friendly, but you need to plan and build your app with SEO in mind from the ground up:</p>
<ul>
<li><p>- Tips:</p>
<p>  <strong>- Dynamic Meta Tags:</strong> Ensure that you manage the meta tags dynamically based on the page content. Libraries like React Helmet can be used for managing the meta tags of the head of your document with React.</p>
<p>  <strong>- XML Sitemaps:</strong> XML Sitemaps help search engines understand your website's content while crawling it. It is an efficient way for website owners to share with search engines the pages on their websites that are available for crawling.</p>
<p>  <strong>- Structured Data:</strong> You can use JSON-LD, Microdata, or RDFa to mark up your content. Structured data helps Google understand the content of the page, and it's used to gather the data that’s included in a rich search result, including the images, headlines, and descriptions.</p>
<p>  <strong>- URL Structure:</strong> Follow the best practices for creating SEO-friendly URLs. They should be easy to read, concise, and descriptive.</p>
<p>  <strong>- Page Load Speed:</strong> Google uses page load time as one of the factors for SEO rankings. MongoDB, Express.js, and Node.js are generally fast, but you'll also need to optimize your React.js application to ensure it renders quickly.</p>
<p>  <strong>- Responsive Design:</strong> Ensure your website is mobile-friendly. Google uses mobile-friendliness as a ranking signal in mobile search results.</p>
<p>  <strong>- Content and Keywords:</strong> Despite all the technical aspects, content is still king in SEO. Make sure your application serves high-quality, keyword-rich, and relevant content.</p>
</li>
</ul>
<h3 id="heading-performance-and-loading-speed">Performance and loading speed</h3>
<p>Bear in mind that performance and loading speed can also be affected by factors not specifically related to the MERN stack itself, such as network latency, browser rendering speed, and the efficiency of the deploying server or hosting solution.</p>
<p>As a stack, the performance of a MERN application can be significantly influenced by how efficiently its constituting technologies are used together. For instance, server-side rendering with Node.js and Express can improve the initial loading speed, and efficient use of API endpoints can help reduce the amount of data transferred between the client and the server.</p>
<p>Therefore, it's crucial to follow best practices <strong>for each component of the stack</strong>, and continuously monitor and optimize the performance of the application as a whole:</p>
<ul>
<li><p>- (Just a few) Tips:<br />  -- <strong>MongoDB</strong> --<br />  - <strong>Use indexing</strong>: Indexes support the efficient execution of queries and without them, MongoDB must perform a collection scan.</p>
<p>  Imagine you have a collection of books and you frequently query by the author's name. Without an index, MongoDB would need to scan every document in the collection and check the author field to find the books by the specified author, much like reading through every book in a library to find all the ones written by a particular author.</p>
<p>  By contrast, if an index on the author field exists, MongoDB can use that index to limit its search to just the books by the particular author, similar to using a catalog in a library that lists books by author.</p>
<p>  <strong>-- Express.js and Node.js</strong> --<br />  - <strong>Use</strong> <code>gzip</code> <strong>compression middleware</strong> such as <a target="_blank" href="https://www.npmjs.com/package/compression">compression</a> to reduce the size of the response body, thereby improving the speed of your HTTP responses.</p>
<p>  - <strong>Use caching:</strong> This can be used to store responses that are particularly resource-intensive to generate. The cache can be stored in memory or a separate caching service like <a target="_blank" href="https://redis.io/">Redis</a>.</p>
<p>  - <strong>Efficient error handling:</strong> Unhandled errors and exceptions can cause memory leaks which can slow down your application over time.</p>
<p>  - <strong>Use clusters</strong>: Node.js runs on a single thread, but using the <a target="_blank" href="https://www.npmjs.com/package/cluster">cluster</a> module, you can spawn a new instance of your app for each CPU, which can greatly enhance performance.</p>
<p>  -- <strong>React</strong> --<br />  - <strong>Use lazy loading and code splitting</strong>: This helps reduce the size of your JavaScript bundle and delay loading components until they’re needed.</p>
<p>  - <strong>Minimize re-renders:</strong> Make use of <code>shouldComponentUpdate</code>, <code>React.memo</code>, <code>useMemo</code> and <code>useCallback</code> to avoid unnecessary re-renders.</p>
<p>  - <strong>Use keys in lists</strong>: Keys help React identify which items have changed, are added, or are removed and help decide which components need to re-render.</p>
<p>  -- <strong>General</strong> --<br />  - <strong>Use a Content Delivery Network (CDN) for serving static assets:</strong> This can speed up loading times for your users, especially for large files like images and videos.</p>
</li>
</ul>
<h3 id="heading-conclusion">Conclusion</h3>
<p>Navigating the world of React-based frameworks and stacks can be a complex endeavor. Understanding the MERN stack's architecture, development paradigms, data management, SEO considerations, and performance optimization can pave the way for successful application development.</p>
<p>As you embark on your next project, consider implementing the best practices outlined in this article, and don't hesitate to explore further resources or seek expert guidance. The right path is often a blend of knowledge, collaboration, and continuous learning.</p>
]]></content:encoded></item><item><title><![CDATA[Choosing the Right Path: A Guide to React-based Frameworks]]></title><description><![CDATA[Through November and December 2022, I built a blog that allowed users to create accounts, upvote their favorite articles once they logged in, leave comments, and sort articles by popularity and tags, among other cool features.
To achieve this I used ...]]></description><link>https://curious-mockingbird.hashnode.dev/choosing-the-right-path-a-guide-to-react-based-frameworks</link><guid isPermaLink="true">https://curious-mockingbird.hashnode.dev/choosing-the-right-path-a-guide-to-react-based-frameworks</guid><category><![CDATA[React]]></category><category><![CDATA[MERN Stack]]></category><category><![CDATA[Gatsby]]></category><category><![CDATA[Next.js]]></category><category><![CDATA[comparison]]></category><dc:creator><![CDATA[Harold Mesa]]></dc:creator><pubDate>Sun, 30 Jul 2023 03:55:37 GMT</pubDate><enclosure url="https://cdn.hashnode.com/res/hashnode/image/upload/v1714090021170/09ca7df2-1d40-4677-ac1f-b147ceacdcbf.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Through November and December 2022, I built a blog that allowed users to create accounts, upvote their favorite articles once they logged in, leave comments, and sort articles by popularity and tags, among other cool features.</p>
<p>To achieve this I used the <a target="_blank" href="https://www.mongodb.com/mern-stack">MERN stack</a>, which made it easy to construct a three-tier architecture (front end, back end, database) entirely using JavaScript and JSON, and specially suited to use React for the front end tier.</p>
<p>As I worked on the project, I kept wondering if there were other ways to achieve the same result —an application that could retrieve data from a data source and serve it at runtime— while keeping a React front end.</p>
<p>There were, it turned out, and quite a few! That's when I discovered <a target="_blank" href="https://nextjs.org/">Next.js</a>, <a target="_blank" href="https://www.gatsbyjs.com">Gatsby</a> and <a target="_blank" href="https://remix.run/">Remix</a> (arguably three of the most popular React-based frameworks) and began to discover the power of React as a user interface library.</p>
<p>However, while reviewing documentation, tutorials, and community blogs about each of these frameworks (Next.js, Gatsby.js, and Remix) and stack (MERN), I found that the more I researched, the more scattered and challenging my research became. It can be difficult to find one common source of reference that helps developers compare these frameworks/stacks and choose one that truly fulfills the technical needs of our projects.</p>
<p>That's why I am creating this series of articles, to help fill that gap by providing a comprehensive, comparative and unified reference about these React-based technologies.</p>
<h3 id="heading-what-to-expect-from-these-articles">What to expect from these articles?</h3>
<p>We'll analyze the <a target="_blank" href="https://harold-mesa.hashnode.dev/choosing-the-right-path-the-mern-stack">MERN stack</a>, Gatsby, Next.js, and Remix one at a time, based on these and other metrics:</p>
<p>- Performance and loading speed<br />- SEO<br />- Architecture and Development Paradigms<br />- Data management and APIs</p>
<p>I would like to make clear that each one of these frameworks/stacks has its strengths and use cases. The goal is to provide a practical, concise, and unified explanation while sharing insights gained as a full-stack developer and focusing on key concepts.</p>
<p>Whether you're a beginner eager to dive into React or an experienced developer looking to level up your full-stack development skills, this series will have something for everyone.</p>
<h3 id="heading-but-why-reactjs">But, why React.js?</h3>
<p>Sometimes I ask myself: am I the only one in love with React ❤️?</p>
<p>React.js is an open-source JavaScript library maintained by Facebook for building user interfaces (UIs) in web applications. It allows developers to create reusable UI components and efficiently manage their state, enabling the creation of complex and interactive UIs. It has a vast ecosystem of community-contributed libraries and is widely adopted by developers and companies.</p>
<p>React.js's combination of component-based architecture, virtual DOM, declarative syntax, cross-platform capabilities, a vibrant ecosystem, and industry adoption has contributed to its popularity among developers. It offers an efficient and enjoyable way to build modern, scalable, and high-performing user interfaces for web and mobile applications.</p>
<hr />
<p>Please stay tuned!!!</p>
<p>I hope you find these articles helpful in your journey as a full-stack developer and that it serves to demystify React, enabling you to utilize its full potential!</p>
]]></content:encoded></item></channel></rss>