{"id":996,"date":"2021-06-08T18:43:00","date_gmt":"2021-06-08T16:43:00","guid":{"rendered":"http:\/\/cmagazine.test\/kickoff-a-react-project-cra-next-js-or-gatsby\/"},"modified":"2022-07-25T16:34:42","modified_gmt":"2022-07-25T14:34:42","slug":"react-project-cra-nextjs-gatsby","status":"publish","type":"post","link":"https:\/\/www.codemotion.com\/magazine\/frontend\/javascript\/react-project-cra-nextjs-gatsby\/","title":{"rendered":"Kick Off a React JS Project: CRA, Next.js or Gatsby?"},"content":{"rendered":"\t\t\t\t<div class=\"wp-block-uagb-table-of-contents uagb-toc__align-left uagb-toc__columns-1  uagb-block-5d862a92      \"\n\t\t\t\t\tdata-scroll= \"1\"\n\t\t\t\t\tdata-offset= \"30\"\n\t\t\t\t\tstyle=\"\"\n\t\t\t\t>\n\t\t\t\t<div class=\"uagb-toc__wrap\">\n\t\t\t\t\t\t<div class=\"uagb-toc__title\">\n\t\t\t\t\t\t\tTable Of Contents\t\t\t\t\t\t<\/div>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<div class=\"uagb-toc__list-wrap \">\n\t\t\t\t\t\t<ol class=\"uagb-toc__list\"><li class=\"uagb-toc__list\"><a href=\"#how-to-choose-which-new-react-js-project-to-build\" class=\"uagb-toc-link__trigger\">How to choose which new React JS project to build?<\/a><li class=\"uagb-toc__list\"><a href=\"#cra-create-react-app\" class=\"uagb-toc-link__trigger\">CRA: create-react-app<\/a><li class=\"uagb-toc__list\"><a href=\"#gatsby\" class=\"uagb-toc-link__trigger\">Gatsby<\/a><li class=\"uagb-toc__list\"><a href=\"#nextjs\" class=\"uagb-toc-link__trigger\">Next.js<\/a><li class=\"uagb-toc__list\"><a href=\"#gatsbyjs-vs-nextjs-vs-cra\" class=\"uagb-toc-link__trigger\">Gatsby.JS vs Next.JS vs CRA<\/a><li class=\"uagb-toc__list\"><a href=\"#what-if-i-need-something-different\" class=\"uagb-toc-link__trigger\">What if I need something different?<\/a><li class=\"uagb-toc__list\"><a href=\"#conclusions\" class=\"uagb-toc-link__trigger\">Conclusions<\/a><\/ol>\t\t\t\t\t<\/div>\n\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\n\n\n<p>A simple guide to avoid getting lost in the <strong><a href=\"https:\/\/reactjs.org\/\" target=\"_blank\" aria-label=\"React JS (opens in a new tab)\" rel=\"noreferrer noopener\" class=\"ek-link\">React JS<\/a><\/strong> bootstrapping solutions. Learn more about <strong>CRA, Gatsby <\/strong>and <strong>Next.js<\/strong>.<\/p>\n\n\n\n<p>This is a simple guide for normal humans to avoid getting lost in the React JS bootstrapping solutions out there.<\/p>\n\n\n\n<p>React is a <a href=\"https:\/\/www.codemotion.com\/magazine\/dev-hub\/javascript\/javascript-frameworks-guide\/\" target=\"_blank\" rel=\"noopener\" class=\"ek-link\">JavaScript framework<\/a> designed to build a powerful single page app, developed on Facebook since 2013, which suggests a component-based approach to building applications.<\/p>\n\n\n\n<p>The development of React JS is based on a declarative model, in which each component defines a portion of an app using the<em> JSX syntax<\/em>, and these components can be combined.<\/p>\n\n\n\n<p>Many features have evolved from the original design of React code, such as the native <a href=\"https:\/\/www.codemotion.com\/magazine\/dev-hub\/javascript\/javascript-ultimate-guide\/\" class=\"ek-link\">JavaScript <\/a>class support for React components. With this evolution, the number of features available to configure in a project pipeline increased, alongside the complexity of the configuration.<\/p>\n\n\n\n<p>Starting a React JS project implies the configuration of multiple tools such as <strong>Webpack<\/strong>, <strong>Babel <\/strong>and so on, to create the foundations of your web app: depending on project requirements, the configuration can be complicated and hard to maintain.<\/p>\n\n\n\n<p>This is the reason multiple code boilerplates started to pop up on code platforms like Github: the evolution of some of these boilerplates eventually led to the creation of more advanced and specialized tools such as CRA , Gatsby and Next.js to cater to common needs.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"759\" height=\"617\" src=\"https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2021\/06\/react-in-visual-studio.png\" alt=\"Visual Studio Code UI showing React application folder.\" class=\"wp-image-15201\" srcset=\"https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2021\/06\/react-in-visual-studio.png 759w, https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2021\/06\/react-in-visual-studio-300x244.png 300w\" sizes=\"auto, (max-width: 759px) 100vw, 759px\" \/><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"h-how-to-choose-which-new-react-js-project-to-build\">How to choose which new React JS project to build?<\/h2>\n\n\n\n<p>The first step in making a choice is to understand what problems the tool solves, and if these solutions match your needs. Let&#8217;s start from the end.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"h-when-to-consider-cra\">When to consider CRA<\/h3>\n\n\n\n<ul class=\"is-style-default wp-block-list\"><li>The React app is single page and self contained on the frontend (no need for a server).<\/li><li>The application relies on server APIs<\/li><li>You want to experiment or get started with React<\/li><li>You want to try a new React JS project and pick utility libraries on your own<\/li><\/ul>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"h-when-to-consider-gatsby\">When to consider Gatsby<\/h3>\n\n\n\n<ul class=\"is-style-default wp-block-list\"><li>You are building a landing page<\/li><li>You are building a static website (and the team likes ReactJS?)<\/li><li>There are particular pages of your website in React that need to be super performers (move them to Gatsby if they are already in CRA for instance)<\/li><li>You need better <a href=\"https:\/\/www.codemotion.com\/magazine\/dev-hub\/machine-learning-dev\/how-search-engines-work\/\" target=\"_blank\" rel=\"noopener\">Search Engine Optimization<\/a> (SEO) or AMP (Accelerated Mobile Pages)<\/li><\/ul>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"h-when-to-consider-next-js\">When to consider Next.js<\/h3>\n\n\n\n<ul class=\"is-style-default wp-block-list\"><li>The app is composed of both a server and a client side<\/li><li>The React app is already in express.js and needs to be extended on the client side as well<\/li><li>You are building a dynamic website<\/li><li>You need SEO or AMP and you have dynamic content<\/li><\/ul>\n\n\n\n<p>[jwp-video n=&#8221;1&#8243;]<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"h-cra-create-react-app\">CRA: create-react-app<\/h2>\n\n\n\n<p><strong>Create-react-app<\/strong> (also known as CRA) is an official React CLI <a href=\"https:\/\/reactjs.org\/blog\/2016\/07\/22\/create-apps-with-no-configuration.html\" target=\"_blank\" aria-label=\" (opens in a new tab)\" rel=\"noreferrer noopener\" class=\"ek-link\">announced by the Facebook team<\/a> behind ReactJS itself in 2016: the goal of the project is to provide a simple way to bootstrap your Single Page Application (SPA) in React.<\/p>\n\n\n\n<p>A <strong>Single Page Application<\/strong> is a web app created out of a single HTML page that &#8220;virtually&#8221; involves many other pages created dynamically on the frontend side.<\/p>\n\n\n\n<p>CRA creates a simple web app to start with, including most of the required configuration for general Single Page Application needs, whatever your taste: <a href=\"https:\/\/www.codemotion.com\/magazine\/dev-hub\/web-developer\/learning-typescript\/\" target=\"_blank\" rel=\"noopener\">Typescript<\/a>, CSS preprocessors like SASS or LESS and more. <\/p>\n\n\n\n<p>The app is bound to a single HTML page that, when open, loads the React apps &#8211; this provided an incredible <em>Developer Experience<\/em> (DX) for the development process: errors don&#8217;t stop development any more, installing new dependencies doesn&#8217;t mean the need to stop and restart, and on and on!<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"600\" height=\"432\" src=\"https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2021\/06\/2021-06-09-11_36_35-Window.png\" alt=\"Code strings representing Create React App quick start.\" class=\"wp-image-15203\" srcset=\"https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2021\/06\/2021-06-09-11_36_35-Window.png 600w, https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2021\/06\/2021-06-09-11_36_35-Window-300x216.png 300w\" sizes=\"auto, (max-width: 600px) 100vw, 600px\" \/><\/figure>\n\n\n\n<p>Note that there&#8217;s <em>no bundled React library with CRA<\/em>, nor i18n, <a href=\"https:\/\/www.codemotion.com\/magazine\/dev-hub\/web-developer\/how-mobx-helps-you-manage-your-state\/\" class=\"ek-link\">state management<\/a> or other advanced features, so it&#8217;s completely up to the React developer to pick the right library to include in their project. <\/p>\n\n\n\n<p>This makes the bootstrapped project less opinionated and means it&#8217;s ready to be used to experiment with any React JS library or to quickly prototype a basic app.<\/p>\n\n\n\n<p>The final product of a CRA build is one single HTML page, with JS and CSS files containing the web application bundle. This means that the build folder can be statically deployed anywhere and does not depend on any particular web server.<\/p>\n\n\n\n<h3 class=\"gb-headline gb-headline-0155ede2 gb-headline-text\">What if the configuration provided in CRA is still not enough?<\/h3>\n\n\n\n<p>In this situation, it is always possible to &#8220;eject&#8221; from the classic configuration, and customize it. The &#8220;eject&#8221; task has a major downside, though &#8211; losing the ability to upgrade again using the main create-react-app streams.<\/p>\n\n\n\n<p>There are a few projects out there that help with that, like react-app-rewired project, which can be used in these scenarios without a full &#8220;eject&#8221;, maintaining the ability to upgrade later on.<\/p>\n\n\n\n<p>Would it be possible to have the development experience of this tool on the server side? Could React be used to build a website that loads like static, but is as fast as an SPA when using it? This is the idea that powers Gatsby.<\/p>\n\n\n\n<p>[jwp-video n=&#8221;2&#8243;]<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"h-gatsby\">Gatsby<\/h2>\n\n\n\n<p><a aria-label=\"Gatsby (opens in a new tab)\" href=\"https:\/\/www.gatsbyjs.com\/\" target=\"_blank\" rel=\"noreferrer noopener\" class=\"ek-link\">Gatsby<\/a> is based on React&#8217;s open-source framework offering built-in performance, scalability and security. It is the solution created by Facebook to enable the use of ReactJS on the server side, or as it is often referred to, <strong>React SSR<\/strong> (React Server Side Rendering).<\/p>\n\n\n\n<p>The product of a React SSR is a plain HTML page, like any other backend rendering technology: the advantage of using React is the &#8220;hydrating&#8221; process that can make it an SPA on the front-end, as explained below.<\/p>\n\n\n\n<p>The goal of Gatsby is to make the development of websites super performant by leveraging the React developer experience. <\/p>\n\n\n\n<p>Although the website is modelled as an SPA &#8211; going as far as to have a routing system in React JS; the Gatsby router &#8211; what actually happens is that Gatsby will build both a static website and also an SPA from the material.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"733\" height=\"708\" src=\"https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2021\/06\/gatsby-in-visual-studio-code.png\" alt=\"UI of Visual Studio Code UI showing Gatsby's &quot;hello world&quot; \" class=\"wp-image-15204\" srcset=\"https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2021\/06\/gatsby-in-visual-studio-code.png 733w, https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2021\/06\/gatsby-in-visual-studio-code-300x290.png 300w\" sizes=\"auto, (max-width: 733px) 100vw, 733px\" \/><\/figure>\n\n\n\n<p>The React SSR version of Gatsby can be seen as a &#8220;compile&#8221; step for all pages, enabling you to serve them as static content.<\/p>\n\n\n\n<p>Like CRA, Gatsby has many configurations that provide support for Typescript, CSS preprocessors and so on. Gatsby is particularly focused on websites, and it provides an out-of-the-box system based on GraphQL for easy content fetching, with a multitude of plugins for theming and every kind of support.<\/p>\n\n\n\n<p>The reason for building both a static version of the website and an SPA is that this provides an instant website load in a few milliseconds via the static version, then &#8220;hydrates&#8221; the website with an equivalent React JS SPA to make it interactive. <\/p>\n\n\n\n<p>This means that the user will see the website has an excellent performance on first load, then with one click it behaves as a client app without accessing the servers again.<\/p>\n\n\n\n<p>This sounds awesome, right? In fact, although it&#8217;s great, it comes with a built-in limit: the website must be static, so all possible HTML pages must be created in advance. This means that dynamic routes are not possible in websites built with Gatsby.<\/p>\n\n\n\n<p>If we&#8217;re talking about the deployable artifact, with Gatsby we&#8217;re still building frontend assets: a folder full of HTML pages and JS\/CSS scripts. The Gatsby team built a full infrastructure to help optimize the building step for developers, named Gatsby Cloud. The deployment step in Gatsby is straightforward &#8211; a simple upload of the folder resources on a web server.<\/p>\n\n\n\n<p>But is it possible to have a real server developed with React SSR that has the possibility of a SPA on the front? The answer to this is <em>Next.js<\/em>.<\/p>\n\n\n\n<p>[jwp-video n=&#8221;3&#8243;]<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"h-next-js\">Next.js<\/h2>\n\n\n\n<p><a href=\"https:\/\/nextjs.org\/\" target=\"_blank\" aria-label=\"Next.js (opens in a new tab)\" rel=\"noreferrer noopener\" class=\"ek-link\">Next.js<\/a> is a project to bring ReactJS to the server side, and combine the SPA experience with it. It&#8217;s built with ZEIT (now <strong>Vercel<\/strong>), with dynamic routes.<\/p>\n\n\n\n<p>Next.js is open source, developed in Node, and it can be used either as a web server or can be integrated into bigger node applications &#8211; like <em>Express.js, Hapi, Fastify<\/em>, etc. &#8211; providing React remains the rendering engine. <\/p>\n\n\n\n<p>There are some additional React JS conventions in this tool to bear in mind, because the same app page can be rendered on the server, on the client or in <strong>AMP <\/strong>(Accelerated Mobile Pages).<\/p>\n\n\n\n<p>Under the hood of the build version of a Next application, Webpack is used to optimize the final app artifact (while already optimized, the configuration can be extended at will).<\/p>\n\n\n\n<p>Next.js makes the integration between back and <a href=\"https:\/\/www.codemotion.com\/magazine\/dev-hub\/web-developer\/typescript-4-0-gives-javascript-developers-some-new-toys\/\" class=\"ek-link\">front end development<\/a> <a href=\"https:\/\/www.codemotion.com\/magazine\/dev-hub\/web-developer\/typescript-4-0-gives-javascript-developers-some-new-toys\/\" class=\"ek-link\">in Javascript (or Typescript<\/a> ) of complex web apps seamless. The build products of Next.js are then a Node.JS app with front end assets for the SPA.<\/p>\n\n\n\n<p>Next.js provides a full React SSR experience with dynamic page rendering. Since Next.js 9.3, a new Static Site Generation feature is available, which aligns Next.js with Gatsby in the static generation market, providing a unique hybrid static and dynamic server rendering tool.<\/p>\n\n\n\n<figure class=\"wp-block-embed is-type-wp-embed is-provider-codemotion-magazine wp-block-embed-codemotion-magazine\"><div class=\"wp-block-embed__wrapper\">\n<blockquote class=\"wp-embedded-content\" data-secret=\"OejNm9in1A\"><a href=\"https:\/\/www.codemotion.com\/magazine\/frontend\/react-native-alive-and-kicking-in-2022\/\">React Native: Alive and Kicking in 2022<\/a><\/blockquote><iframe loading=\"lazy\" class=\"wp-embedded-content\" sandbox=\"allow-scripts\" security=\"restricted\" style=\"position: absolute; clip: rect(1px, 1px, 1px, 1px);\" title=\"&#8220;React Native: Alive and Kicking in 2022&#8221; &#8212; Codemotion Magazine\" src=\"https:\/\/www.codemotion.com\/magazine\/frontend\/react-native-alive-and-kicking-in-2022\/embed\/#?secret=njwKK9y3mo#?secret=OejNm9in1A\" data-secret=\"OejNm9in1A\" width=\"500\" height=\"282\" frameborder=\"0\" marginwidth=\"0\" marginheight=\"0\" scrolling=\"no\"><\/iframe>\n<\/div><\/figure>\n\n\n\n<h2 class=\"gb-headline gb-headline-fbf45eb1 gb-headline-text\">Gatsby.JS vs Next.JS vs CRA<\/h2>\n\n\n\n<p>Gatsby.Js and Next.Js are both React frameworks that have been around for some time now and have in common quite a few things. <\/p>\n\n\n\n<p>Fort starters, Gatsby and Next both come with extensive <strong>documentation <\/strong>so you don&#8217;t have to learn everything from scratch; a basic understanding of React is the only prerequisite.<\/p>\n\n\n\n<p>Also, Gatsby and Next are both SEO-friendly and are used to build high-performance websites especially for their ability to deliver pre-rendered HTML pages.<\/p>\n\n\n\n<p>Finally, both Gatsby and Next are excellent JS frameworks for web development with built-in features such as Hot Reloading, Code Splitting, and Prefetching.<\/p>\n\n\n\n<p>But the similarities end here.  Each of them has distinct features that make them stand out from the other. Hence, they are used for fundamentally different purposes.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"h-peculiarities-of-gatsbyjs\"><strong>Peculiarities of GatsbyJS<\/strong><\/h3>\n\n\n\n<p>Gatsby is a modern front-end framework that provides incredibly fast page-loads, as well as features like asset optimization, server-side rendering, data pre-fetching. It combines the best of React, GraphQL, and React-router providing a very Web developer-friendly<strong> static site <\/strong>generator. <\/p>\n\n\n\n<p>Gatsby&#8217;s static HTML files are hosted on CDNs for faster access so it has not to rely on a server or database to make queries.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"h-peculiarities-of-next-js\"><strong><strong>Peculiarities of<\/strong><\/strong> <strong>Next.JS<\/strong><\/h3>\n\n\n\n<p>Next.JS is instead used to build <strong>dynamic<\/strong> server-side rendered websites that require to interact a lot with the server every time a new request comes to it. To enhance the development experience, it lets you use features like Hot Code Reloading, Single File components, and Automatic Code Splitting. <\/p>\n\n\n\n<p>Because of its semplicity, you can use Next.js effectively and in no time. As a Web developer, you probably won&#8217;t need a tutorial to get started. In fact, you don&#8217;t have to be an experienced JavaScript developer or code like a pro to use it.<\/p>\n\n\n\n<h3 class=\"gb-headline gb-headline-8e993350 gb-headline-text\">Peculiarities of CRA<\/h3>\n\n\n\n<p>CRA is a new project created to simplify the process of getting started with React development. It configures webpack and Babel for you, so all you need to do is install npm and Node. It can be used to develop single-page app (SPA), <em>i.e. <\/em>websites that do not require refreshing when navigating through pages, hence offering a very fast and fluid browsing experience. <\/p>\n\n\n\n<p>The browser extension usually stores user data locally during the time spent on the page, and is able to create home environments for the user. <\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"576\" src=\"https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2020\/04\/code-3337044_1280-1024x576.jpg\" alt=\"Image of random javascript code.\" class=\"wp-image-3893\" srcset=\"https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2020\/04\/code-3337044_1280-1024x576.jpg 1024w, https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2020\/04\/code-3337044_1280-300x169.jpg 300w, https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2020\/04\/code-3337044_1280-768x432.jpg 768w, https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2020\/04\/code-3337044_1280-896x504.jpg 896w, https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2020\/04\/code-3337044_1280-400x225.jpg 400w, https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2020\/04\/code-3337044_1280.jpg 1200w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"h-what-if-i-need-something-different\">What if I need something different?<\/h2>\n\n\n\n<p>The three options discussed here are only the most famous tools in the React JS world with which to start your project, but there are more available that cater to specific niches or tastes, for instance <a aria-label=\" (opens in a new tab)\" href=\"https:\/\/docusaurus.io\/en\/\" target=\"_blank\" rel=\"noreferrer noopener\" class=\"ek-link\">Docusaurus<\/a> or <a aria-label=\" (opens in a new tab)\" href=\"https:\/\/github.com\/react-boilerplate\/react-boilerplate\" target=\"_blank\" rel=\"noreferrer noopener\" class=\"ek-link\">react-boilerplate project<\/a>.<\/p>\n\n\n\n<p>Using one of these tools is probably the best bet to start with, but the <strong>React community<\/strong> has already managed to pull some magic out of the hat a few times in the past, so feel free to explore what&#8217;s out there for new and wonderful discoveries.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"h-conclusions\">Conclusions<\/h2>\n\n\n\n<p>It is quite clear that all of these frameworks are great for developing apps with React. To choose one against the other is more a matter of what is your use case going to be for a specific project.<\/p>\n\n\n\n<p>NextJS by Vercel has been growing in popularity and the reason is quite simple. This JS framework does it all. It seems to have taken the best of Gatsby&#8217;s and CRA&#8217;s functions to offer them either independently or in combination to Web developers. If you have no time for tutorials and like a zero-config approach and out-of-the-box routing, styling, and code-splitting, this might be your best choice.<\/p>\n\n\n\n<p><em>Recommended article: <a href=\"https:\/\/www.codemotion.com\/magazine\/frontend\/react-native-alive-and-kicking-in-2022\/\" target=\"_blank\" aria-label=\"React Native - Alive and Kicking in 2022 (opens in a new tab)\" rel=\"noreferrer noopener\" class=\"ek-link\">React Native &#8211; Alive and Kicking in 2022<\/a><\/em><\/p>\n","protected":false},"excerpt":{"rendered":"<p>A simple guide to avoid getting lost in the React JS bootstrapping solutions. Learn more about CRA, Gatsby and Next.js. This is a simple guide for normal humans to avoid getting lost in the React JS bootstrapping solutions out there. React is a JavaScript framework designed to build a powerful single page app, developed on&#8230; <a class=\"more-link\" href=\"https:\/\/www.codemotion.com\/magazine\/frontend\/javascript\/react-project-cra-nextjs-gatsby\/\">Read more<\/a><\/p>\n","protected":false},"author":10,"featured_media":15195,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_editorskit_title_hidden":false,"_editorskit_reading_time":8,"_editorskit_is_block_options_detached":false,"_editorskit_block_options_position":"{}","_uag_custom_page_level_css":"","_genesis_hide_title":false,"_genesis_hide_breadcrumbs":false,"_genesis_hide_singular_image":false,"_genesis_hide_footer_widgets":false,"_genesis_custom_body_class":"","_genesis_custom_post_class":"","_genesis_layout":"","footnotes":""},"categories":[8],"tags":[9907,54],"collections":[],"class_list":{"0":"post-996","1":"post","2":"type-post","3":"status-publish","4":"format-standard","5":"has-post-thumbnail","7":"category-javascript","8":"tag-frameworks","9":"tag-react","10":"entry"},"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v26.9 (Yoast SEO v26.9) - https:\/\/yoast.com\/product\/yoast-seo-premium-wordpress\/ -->\n<title>Kick Off a React JS Project: CRA, Next.js or Gatsby? -<\/title>\n<meta name=\"description\" content=\"A simple guide to know which React JS framework to choose for your next web-based project. CRA vs Gatsby vs Next.js.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.codemotion.com\/magazine\/frontend\/javascript\/react-project-cra-nextjs-gatsby\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Kick Off a React JS Project: CRA, Next.js or Gatsby?\" \/>\n<meta property=\"og:description\" content=\"A simple guide to know which React JS framework to choose for your next web-based project. CRA vs Gatsby vs Next.js.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.codemotion.com\/magazine\/frontend\/javascript\/react-project-cra-nextjs-gatsby\/\" \/>\n<meta property=\"og:site_name\" content=\"Codemotion Magazine\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/Codemotion.Italy\/\" \/>\n<meta property=\"article:published_time\" content=\"2021-06-08T16:43:00+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2022-07-25T14:34:42+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2020\/06\/Kick-Off-a-React-JS-Project-CRA-Next.js-or-Gatsby.jpg\" \/>\n\t<meta property=\"og:image:width\" content=\"1200\" \/>\n\t<meta property=\"og:image:height\" content=\"628\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"author\" content=\"Marco Liberati\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@CodemotionIT\" \/>\n<meta name=\"twitter:site\" content=\"@CodemotionIT\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Marco Liberati\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"10 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/www.codemotion.com\/magazine\/frontend\/javascript\/react-project-cra-nextjs-gatsby\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/www.codemotion.com\/magazine\/frontend\/javascript\/react-project-cra-nextjs-gatsby\/\"},\"author\":{\"name\":\"Marco Liberati\",\"@id\":\"https:\/\/www.codemotion.com\/magazine\/#\/schema\/person\/35b2a685d3154030dccf48af78880509\"},\"headline\":\"Kick Off a React JS Project: CRA, Next.js or Gatsby?\",\"datePublished\":\"2021-06-08T16:43:00+00:00\",\"dateModified\":\"2022-07-25T14:34:42+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/www.codemotion.com\/magazine\/frontend\/javascript\/react-project-cra-nextjs-gatsby\/\"},\"wordCount\":2071,\"publisher\":{\"@id\":\"https:\/\/www.codemotion.com\/magazine\/#organization\"},\"image\":{\"@id\":\"https:\/\/www.codemotion.com\/magazine\/frontend\/javascript\/react-project-cra-nextjs-gatsby\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2020\/06\/Kick-Off-a-React-JS-Project-CRA-Next.js-or-Gatsby.jpg\",\"keywords\":[\"Frameworks\",\"React\"],\"articleSection\":[\"JavaScript\"],\"inLanguage\":\"en-US\"},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.codemotion.com\/magazine\/frontend\/javascript\/react-project-cra-nextjs-gatsby\/\",\"url\":\"https:\/\/www.codemotion.com\/magazine\/frontend\/javascript\/react-project-cra-nextjs-gatsby\/\",\"name\":\"Kick Off a React JS Project: CRA, Next.js or Gatsby? -\",\"isPartOf\":{\"@id\":\"https:\/\/www.codemotion.com\/magazine\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/www.codemotion.com\/magazine\/frontend\/javascript\/react-project-cra-nextjs-gatsby\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/www.codemotion.com\/magazine\/frontend\/javascript\/react-project-cra-nextjs-gatsby\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2020\/06\/Kick-Off-a-React-JS-Project-CRA-Next.js-or-Gatsby.jpg\",\"datePublished\":\"2021-06-08T16:43:00+00:00\",\"dateModified\":\"2022-07-25T14:34:42+00:00\",\"description\":\"A simple guide to know which React JS framework to choose for your next web-based project. CRA vs Gatsby vs Next.js.\",\"breadcrumb\":{\"@id\":\"https:\/\/www.codemotion.com\/magazine\/frontend\/javascript\/react-project-cra-nextjs-gatsby\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.codemotion.com\/magazine\/frontend\/javascript\/react-project-cra-nextjs-gatsby\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.codemotion.com\/magazine\/frontend\/javascript\/react-project-cra-nextjs-gatsby\/#primaryimage\",\"url\":\"https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2020\/06\/Kick-Off-a-React-JS-Project-CRA-Next.js-or-Gatsby.jpg\",\"contentUrl\":\"https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2020\/06\/Kick-Off-a-React-JS-Project-CRA-Next.js-or-Gatsby.jpg\",\"width\":1200,\"height\":628,\"caption\":\"Kick Off a React JS Project CRA, Next.js or Gatsby\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.codemotion.com\/magazine\/frontend\/javascript\/react-project-cra-nextjs-gatsby\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/www.codemotion.com\/magazine\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Frontend\",\"item\":\"https:\/\/www.codemotion.com\/magazine\/frontend\/\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"JavaScript\",\"item\":\"https:\/\/www.codemotion.com\/magazine\/frontend\/javascript\/\"},{\"@type\":\"ListItem\",\"position\":4,\"name\":\"Kick Off a React JS Project: CRA, Next.js or Gatsby?\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.codemotion.com\/magazine\/#website\",\"url\":\"https:\/\/www.codemotion.com\/magazine\/\",\"name\":\"Codemotion Magazine\",\"description\":\"We code the future. Together\",\"publisher\":{\"@id\":\"https:\/\/www.codemotion.com\/magazine\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/www.codemotion.com\/magazine\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/www.codemotion.com\/magazine\/#organization\",\"name\":\"Codemotion\",\"url\":\"https:\/\/www.codemotion.com\/magazine\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.codemotion.com\/magazine\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2019\/11\/codemotionlogo.png\",\"contentUrl\":\"https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2019\/11\/codemotionlogo.png\",\"width\":225,\"height\":225,\"caption\":\"Codemotion\"},\"image\":{\"@id\":\"https:\/\/www.codemotion.com\/magazine\/#\/schema\/logo\/image\/\"},\"sameAs\":[\"https:\/\/www.facebook.com\/Codemotion.Italy\/\",\"https:\/\/x.com\/CodemotionIT\"]},{\"@type\":\"Person\",\"@id\":\"https:\/\/www.codemotion.com\/magazine\/#\/schema\/person\/35b2a685d3154030dccf48af78880509\",\"name\":\"Marco Liberati\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.codemotion.com\/magazine\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/5f7b8b739c7398e9a151fa3f30d1f29fb44a77c4723ece6995dd896d3ad0c90e?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/5f7b8b739c7398e9a151fa3f30d1f29fb44a77c4723ece6995dd896d3ad0c90e?s=96&d=mm&r=g\",\"caption\":\"Marco Liberati\"},\"description\":\"I am passionate about data visualisation and the start-up enviroment. If I can write in JS I will, and it will probably be mapped into a graphDB and visualised: I like drawing pixels on the screen, better if I can do it with Javascript and ReactJS. Recently I've been exploring the GraphQL world and how it can leverage the productivity of developers for building complex apps and\/or data dashboards. Community fellow of the RomaJS and GraphRM.\",\"url\":\"https:\/\/www.codemotion.com\/magazine\/author\/marco-liberati\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Kick Off a React JS Project: CRA, Next.js or Gatsby? -","description":"A simple guide to know which React JS framework to choose for your next web-based project. CRA vs Gatsby vs Next.js.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.codemotion.com\/magazine\/frontend\/javascript\/react-project-cra-nextjs-gatsby\/","og_locale":"en_US","og_type":"article","og_title":"Kick Off a React JS Project: CRA, Next.js or Gatsby?","og_description":"A simple guide to know which React JS framework to choose for your next web-based project. CRA vs Gatsby vs Next.js.","og_url":"https:\/\/www.codemotion.com\/magazine\/frontend\/javascript\/react-project-cra-nextjs-gatsby\/","og_site_name":"Codemotion Magazine","article_publisher":"https:\/\/www.facebook.com\/Codemotion.Italy\/","article_published_time":"2021-06-08T16:43:00+00:00","article_modified_time":"2022-07-25T14:34:42+00:00","og_image":[{"width":1200,"height":628,"url":"https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2020\/06\/Kick-Off-a-React-JS-Project-CRA-Next.js-or-Gatsby.jpg","type":"image\/jpeg"}],"author":"Marco Liberati","twitter_card":"summary_large_image","twitter_creator":"@CodemotionIT","twitter_site":"@CodemotionIT","twitter_misc":{"Written by":"Marco Liberati","Est. reading time":"10 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.codemotion.com\/magazine\/frontend\/javascript\/react-project-cra-nextjs-gatsby\/#article","isPartOf":{"@id":"https:\/\/www.codemotion.com\/magazine\/frontend\/javascript\/react-project-cra-nextjs-gatsby\/"},"author":{"name":"Marco Liberati","@id":"https:\/\/www.codemotion.com\/magazine\/#\/schema\/person\/35b2a685d3154030dccf48af78880509"},"headline":"Kick Off a React JS Project: CRA, Next.js or Gatsby?","datePublished":"2021-06-08T16:43:00+00:00","dateModified":"2022-07-25T14:34:42+00:00","mainEntityOfPage":{"@id":"https:\/\/www.codemotion.com\/magazine\/frontend\/javascript\/react-project-cra-nextjs-gatsby\/"},"wordCount":2071,"publisher":{"@id":"https:\/\/www.codemotion.com\/magazine\/#organization"},"image":{"@id":"https:\/\/www.codemotion.com\/magazine\/frontend\/javascript\/react-project-cra-nextjs-gatsby\/#primaryimage"},"thumbnailUrl":"https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2020\/06\/Kick-Off-a-React-JS-Project-CRA-Next.js-or-Gatsby.jpg","keywords":["Frameworks","React"],"articleSection":["JavaScript"],"inLanguage":"en-US"},{"@type":"WebPage","@id":"https:\/\/www.codemotion.com\/magazine\/frontend\/javascript\/react-project-cra-nextjs-gatsby\/","url":"https:\/\/www.codemotion.com\/magazine\/frontend\/javascript\/react-project-cra-nextjs-gatsby\/","name":"Kick Off a React JS Project: CRA, Next.js or Gatsby? -","isPartOf":{"@id":"https:\/\/www.codemotion.com\/magazine\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.codemotion.com\/magazine\/frontend\/javascript\/react-project-cra-nextjs-gatsby\/#primaryimage"},"image":{"@id":"https:\/\/www.codemotion.com\/magazine\/frontend\/javascript\/react-project-cra-nextjs-gatsby\/#primaryimage"},"thumbnailUrl":"https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2020\/06\/Kick-Off-a-React-JS-Project-CRA-Next.js-or-Gatsby.jpg","datePublished":"2021-06-08T16:43:00+00:00","dateModified":"2022-07-25T14:34:42+00:00","description":"A simple guide to know which React JS framework to choose for your next web-based project. CRA vs Gatsby vs Next.js.","breadcrumb":{"@id":"https:\/\/www.codemotion.com\/magazine\/frontend\/javascript\/react-project-cra-nextjs-gatsby\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.codemotion.com\/magazine\/frontend\/javascript\/react-project-cra-nextjs-gatsby\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.codemotion.com\/magazine\/frontend\/javascript\/react-project-cra-nextjs-gatsby\/#primaryimage","url":"https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2020\/06\/Kick-Off-a-React-JS-Project-CRA-Next.js-or-Gatsby.jpg","contentUrl":"https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2020\/06\/Kick-Off-a-React-JS-Project-CRA-Next.js-or-Gatsby.jpg","width":1200,"height":628,"caption":"Kick Off a React JS Project CRA, Next.js or Gatsby"},{"@type":"BreadcrumbList","@id":"https:\/\/www.codemotion.com\/magazine\/frontend\/javascript\/react-project-cra-nextjs-gatsby\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.codemotion.com\/magazine\/"},{"@type":"ListItem","position":2,"name":"Frontend","item":"https:\/\/www.codemotion.com\/magazine\/frontend\/"},{"@type":"ListItem","position":3,"name":"JavaScript","item":"https:\/\/www.codemotion.com\/magazine\/frontend\/javascript\/"},{"@type":"ListItem","position":4,"name":"Kick Off a React JS Project: CRA, Next.js or Gatsby?"}]},{"@type":"WebSite","@id":"https:\/\/www.codemotion.com\/magazine\/#website","url":"https:\/\/www.codemotion.com\/magazine\/","name":"Codemotion Magazine","description":"We code the future. Together","publisher":{"@id":"https:\/\/www.codemotion.com\/magazine\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.codemotion.com\/magazine\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/www.codemotion.com\/magazine\/#organization","name":"Codemotion","url":"https:\/\/www.codemotion.com\/magazine\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.codemotion.com\/magazine\/#\/schema\/logo\/image\/","url":"https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2019\/11\/codemotionlogo.png","contentUrl":"https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2019\/11\/codemotionlogo.png","width":225,"height":225,"caption":"Codemotion"},"image":{"@id":"https:\/\/www.codemotion.com\/magazine\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/Codemotion.Italy\/","https:\/\/x.com\/CodemotionIT"]},{"@type":"Person","@id":"https:\/\/www.codemotion.com\/magazine\/#\/schema\/person\/35b2a685d3154030dccf48af78880509","name":"Marco Liberati","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.codemotion.com\/magazine\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/5f7b8b739c7398e9a151fa3f30d1f29fb44a77c4723ece6995dd896d3ad0c90e?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/5f7b8b739c7398e9a151fa3f30d1f29fb44a77c4723ece6995dd896d3ad0c90e?s=96&d=mm&r=g","caption":"Marco Liberati"},"description":"I am passionate about data visualisation and the start-up enviroment. If I can write in JS I will, and it will probably be mapped into a graphDB and visualised: I like drawing pixels on the screen, better if I can do it with Javascript and ReactJS. Recently I've been exploring the GraphQL world and how it can leverage the productivity of developers for building complex apps and\/or data dashboards. Community fellow of the RomaJS and GraphRM.","url":"https:\/\/www.codemotion.com\/magazine\/author\/marco-liberati\/"}]}},"featured_image_src":"https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2020\/06\/Kick-Off-a-React-JS-Project-CRA-Next.js-or-Gatsby-600x400.jpg","featured_image_src_square":"https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2020\/06\/Kick-Off-a-React-JS-Project-CRA-Next.js-or-Gatsby-600x600.jpg","author_info":{"display_name":"Marco Liberati","author_link":"https:\/\/www.codemotion.com\/magazine\/author\/marco-liberati\/"},"uagb_featured_image_src":{"full":["https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2020\/06\/Kick-Off-a-React-JS-Project-CRA-Next.js-or-Gatsby.jpg",1200,628,false],"thumbnail":["https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2020\/06\/Kick-Off-a-React-JS-Project-CRA-Next.js-or-Gatsby-150x150.jpg",150,150,true],"medium":["https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2020\/06\/Kick-Off-a-React-JS-Project-CRA-Next.js-or-Gatsby-300x157.jpg",300,157,true],"medium_large":["https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2020\/06\/Kick-Off-a-React-JS-Project-CRA-Next.js-or-Gatsby-768x402.jpg",768,402,true],"large":["https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2020\/06\/Kick-Off-a-React-JS-Project-CRA-Next.js-or-Gatsby-1024x536.jpg",1024,536,true],"1536x1536":["https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2020\/06\/Kick-Off-a-React-JS-Project-CRA-Next.js-or-Gatsby.jpg",1200,628,false],"2048x2048":["https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2020\/06\/Kick-Off-a-React-JS-Project-CRA-Next.js-or-Gatsby.jpg",1200,628,false],"small-home-featured":["https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2020\/06\/Kick-Off-a-React-JS-Project-CRA-Next.js-or-Gatsby.jpg",100,52,false],"sidebar-featured":["https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2020\/06\/Kick-Off-a-React-JS-Project-CRA-Next.js-or-Gatsby-180x128.jpg",180,128,true],"genesis-singular-images":["https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2020\/06\/Kick-Off-a-React-JS-Project-CRA-Next.js-or-Gatsby-896x504.jpg",896,504,true],"archive-featured":["https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2020\/06\/Kick-Off-a-React-JS-Project-CRA-Next.js-or-Gatsby-400x225.jpg",400,225,true],"gb-block-post-grid-landscape":["https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2020\/06\/Kick-Off-a-React-JS-Project-CRA-Next.js-or-Gatsby-600x400.jpg",600,400,true],"gb-block-post-grid-square":["https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2020\/06\/Kick-Off-a-React-JS-Project-CRA-Next.js-or-Gatsby-600x600.jpg",600,600,true]},"uagb_author_info":{"display_name":"Marco Liberati","author_link":"https:\/\/www.codemotion.com\/magazine\/author\/marco-liberati\/"},"uagb_comment_info":1,"uagb_excerpt":"A simple guide to avoid getting lost in the React JS bootstrapping solutions. Learn more about CRA, Gatsby and Next.js. This is a simple guide for normal humans to avoid getting lost in the React JS bootstrapping solutions out there. React is a JavaScript framework designed to build a powerful single page app, developed on&#8230;&hellip;","lang":"en","_links":{"self":[{"href":"https:\/\/www.codemotion.com\/magazine\/wp-json\/wp\/v2\/posts\/996","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.codemotion.com\/magazine\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.codemotion.com\/magazine\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.codemotion.com\/magazine\/wp-json\/wp\/v2\/users\/10"}],"replies":[{"embeddable":true,"href":"https:\/\/www.codemotion.com\/magazine\/wp-json\/wp\/v2\/comments?post=996"}],"version-history":[{"count":34,"href":"https:\/\/www.codemotion.com\/magazine\/wp-json\/wp\/v2\/posts\/996\/revisions"}],"predecessor-version":[{"id":18385,"href":"https:\/\/www.codemotion.com\/magazine\/wp-json\/wp\/v2\/posts\/996\/revisions\/18385"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.codemotion.com\/magazine\/wp-json\/wp\/v2\/media\/15195"}],"wp:attachment":[{"href":"https:\/\/www.codemotion.com\/magazine\/wp-json\/wp\/v2\/media?parent=996"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.codemotion.com\/magazine\/wp-json\/wp\/v2\/categories?post=996"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.codemotion.com\/magazine\/wp-json\/wp\/v2\/tags?post=996"},{"taxonomy":"collections","embeddable":true,"href":"https:\/\/www.codemotion.com\/magazine\/wp-json\/wp\/v2\/collections?post=996"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}