{"id":51,"date":"2022-01-13T15:33:05","date_gmt":"2022-01-13T15:33:05","guid":{"rendered":"https:\/\/blogs.oregonstate.edu\/codinghotdog\/?p=51"},"modified":"2022-01-14T17:15:54","modified_gmt":"2022-01-14T17:15:54","slug":"next-js-is-great-fur-real","status":"publish","type":"post","link":"https:\/\/blogs.oregonstate.edu\/codinghotdog\/2022\/01\/13\/next-js-is-great-fur-real\/","title":{"rendered":"Next.js is Great, fur real."},"content":{"rendered":"<p><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-55 size-full\" src=\"https:\/\/osu-wams-blogs-uploads.s3.amazonaws.com\/blogs.dir\/5176\/files\/2022\/01\/zach-lucero-jYBtuN6aKg0-unsplash-1.jpg\" alt=\"\" width=\"1272\" height=\"1104\" srcset=\"https:\/\/osu-wams-blogs-uploads.s3.amazonaws.com\/blogs.dir\/5176\/files\/2022\/01\/zach-lucero-jYBtuN6aKg0-unsplash-1.jpg 1272w, https:\/\/osu-wams-blogs-uploads.s3.amazonaws.com\/blogs.dir\/5176\/files\/2022\/01\/zach-lucero-jYBtuN6aKg0-unsplash-1-300x260.jpg 300w, https:\/\/osu-wams-blogs-uploads.s3.amazonaws.com\/blogs.dir\/5176\/files\/2022\/01\/zach-lucero-jYBtuN6aKg0-unsplash-1-1024x889.jpg 1024w, https:\/\/osu-wams-blogs-uploads.s3.amazonaws.com\/blogs.dir\/5176\/files\/2022\/01\/zach-lucero-jYBtuN6aKg0-unsplash-1-768x667.jpg 768w\" sizes=\"auto, (max-width: 767px) 89vw, (max-width: 1000px) 54vw, (max-width: 1071px) 543px, 580px\" \/><\/p>\n<h2>Love at First Site (had to)<\/h2>\n<p>I have always wanted a React.js framework. I love making awesome user interfaces with React and I thought a framework would make that experience better. I essentially wanted more bells and whistles and I found them. Queue Next.js.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-61 size-large\" src=\"https:\/\/osu-wams-blogs-uploads.s3.amazonaws.com\/blogs.dir\/5176\/files\/2022\/01\/Screen-Shot-2022-01-13-at-10.46.22-AM-1-1024x520.png\" alt=\"\" width=\"525\" height=\"267\" srcset=\"https:\/\/osu-wams-blogs-uploads.s3.amazonaws.com\/blogs.dir\/5176\/files\/2022\/01\/Screen-Shot-2022-01-13-at-10.46.22-AM-1-1024x520.png 1024w, https:\/\/osu-wams-blogs-uploads.s3.amazonaws.com\/blogs.dir\/5176\/files\/2022\/01\/Screen-Shot-2022-01-13-at-10.46.22-AM-1-300x152.png 300w, https:\/\/osu-wams-blogs-uploads.s3.amazonaws.com\/blogs.dir\/5176\/files\/2022\/01\/Screen-Shot-2022-01-13-at-10.46.22-AM-1-768x390.png 768w, https:\/\/osu-wams-blogs-uploads.s3.amazonaws.com\/blogs.dir\/5176\/files\/2022\/01\/Screen-Shot-2022-01-13-at-10.46.22-AM-1-1536x780.png 1536w, https:\/\/osu-wams-blogs-uploads.s3.amazonaws.com\/blogs.dir\/5176\/files\/2022\/01\/Screen-Shot-2022-01-13-at-10.46.22-AM-1.png 1929w\" sizes=\"auto, (max-width: 525px) 100vw, 525px\" \/><\/p>\n<p>In this post I am not explaining every aspect of Next.js, that information is <a href=\"https:\/\/nextjs.org\" target=\"_blank\" rel=\"noopener\">here<\/a>. I will talk about what gets me excited about Next.js, though.<\/p>\n<h3>Search Engine Optimization<\/h3>\n<p>&#8216;<em>You don&#8217;t know what you don&#8217;t know.&#8217;<\/em> Cringy saying right? So what I didn&#8217;t know was the downstream effects of how React renders site pages: client-side rendering. So, if a user tries to access a specific page on a React site, they will receive a minimal HTML file with Javascript files. The browser then loads the content from the Javascript files into the HTML file. Because the client only has to query the server initially, navigation between pages is fast and at no expense to the server. This makes the website feel fast, which is why I love React.<\/p>\n<p>Unfortunately, I found out sending the minimal HTML file is possibly an <a href=\"https:\/\/linguinecode.com\/post\/react-seo-friendly-or-not\" target=\"_blank\" rel=\"noopener\">issue<\/a> for search engine optimization (SEO). Search engines index sites for rankings (first, second, third page results) with web crawling bots.\u00a0For instance, a Google bot&#8217;s first pass to index a site focuses on consuming content within HTML files. So as we just talked about, with client-side rendering, they won&#8217;t be consuming anything.\u00a0Although, a bot does a second pass for site indexing, and is supposed to reach the content loaded from the javascript files, it is debated if it is effective.<\/p>\n<h4>Pre-Rendering HTML Pages for SEO and Performance<\/h4>\n<p>By default, Next.js pre-renders every page. So, in advance of the client receiving an HTML file, Next has already generated it full of content. You can either statically generate the HTML file at build time or when a client makes a request to the server. Either way, the client will receive content within an HTML file, which makes it fully available to a search engine bot.<\/p>\n<p>Statically generating HTML files at build time also allows for a very fast user experience. The server doesn&#8217;t need to be queried and no content needs to be loaded in the HTML file. Even if the site pages rely on external data, Next has special serverless functions that will generate the data needed at build time. It will also generate the content for dynamic paths (e.g., blog\/post\/1, blog\/post\/2) at build time as well.<\/p>\n<p>You are also not tied to pre-rendering and are able to use both server-side rendering and client-side rendering. Right now I am thinking of a use case for my school project, where I would want to hybrid the rendering options. For a marketplace-like app, I would pre-render statically generated sale post pages, but client-side render sale category pages. I would do this for the category pages because a user will populate different sale posts based off of many search criteria. I can get speed and SEO for all sale pages and I get to minimize use of my server with sale category pages by having the client&#8217;s browser do the heaving lifting.<\/p>\n<h2>File Based System Router<\/h2>\n<p>How have you handled site routing for your React.js Apps? I have always used React-Router, which would end up looking\u00a0something like this:<\/p>\n<pre data-filename=\"src\/main.jsx\" data-line-numbers=\"true\" data-lang=\"tsx\"><code><span class=\"codeblock-line\" data-line-number=\"1\">import { render } from \"react-dom\";\r\n<\/span><span class=\"codeblock-line\" data-highlight=\"true\" data-line-number=\"2\">import {\r\n<\/span><span class=\"codeblock-line\" data-line-number=\"3\">  BrowserRouter,\r\n<\/span><span class=\"codeblock-line\" data-highlight=\"true\" data-line-number=\"4\">  Routes,\r\n<\/span><span class=\"codeblock-line\" data-highlight=\"true\" data-line-number=\"5\">  Route\r\n<\/span><span class=\"codeblock-line\" data-line-number=\"6\">} from \"react-router-dom\";\r\n<\/span><span class=\"codeblock-line\" data-line-number=\"7\">import App from \".\/App\";\r\n<\/span><span class=\"codeblock-line\" data-line-number=\"8\">import Hotdogs from \".\/routes\/hotdogs\";<\/span>\r\n\r\n<span class=\"codeblock-line\" data-line-number=\"11\">const rootElement = document.getElementById(\"root\");\r\n<\/span><span class=\"codeblock-line\" data-line-number=\"12\">render(\r\n<\/span><span class=\"codeblock-line\" data-highlight=\"true\" data-line-number=\"13\">  &lt;BrowserRouter&gt;\r\n<\/span><span class=\"codeblock-line\" data-highlight=\"true\" data-line-number=\"14\">    &lt;Routes&gt;\r\n<\/span><span class=\"codeblock-line\" data-highlight=\"true\" data-line-number=\"15\">      &lt;Route path=\"\/\" element={&lt;App \/&gt;} \/&gt;\r\n<\/span><span class=\"codeblock-line\" data-highlight=\"true\" data-line-number=\"16\">      &lt;Route path=\"hotdogs\" element={&lt;Hotdogs \/&gt;} \/&gt;<\/span>\r\n<span class=\"codeblock-line\" data-highlight=\"true\" data-line-number=\"18\">    &lt;\/Routes&gt;\r\n<\/span><span class=\"codeblock-line\" data-highlight=\"true\" data-line-number=\"19\">  &lt;\/BrowserRouter&gt;,\r\n<\/span><span class=\"codeblock-line\" data-line-number=\"20\">  rootElement\r\n<\/span><span class=\"codeblock-line\" data-line-number=\"21\">);\r\n\r\nhttps:\/\/reactrouter.com\/docs\/en\/v6\/getting-started\/tutorial<\/span><\/code><\/pre>\n<p>Yea, Next handles all this for you. And it does it in a manner that helps you organize the structure of your code base. If you want to have a specific route to a page, you simply create a Javascript file under the pages directory that was created at project install. Inside the Javascript file you return a react component and THAT is where the magic happens \ud83e\udd84.<\/p>\n<h2>In sum..<\/h2>\n<p>I had a fantastic experience creating this <a href=\"https:\/\/berserkir-fitness.vercel.app\/\">site<\/a>\u00a0with Next.js. I optimized the site for search engines, achieved an amazing performance\u00a0<a href=\"https:\/\/pagespeed.web.dev\" target=\"_blank\" rel=\"noopener\">rating<\/a>, and thoroughly enjoyed the out-of-the-box routing feature. Hope this post was helpful; until next time.<\/p>\n<p>&#8211; The Coding Hotdog<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Love at First Site (had to) I have always wanted a React.js framework. I love making awesome user interfaces with React and I thought a framework would make that experience better. I essentially wanted more bells and whistles and I found them. Queue Next.js. In this post I am not explaining every aspect of Next.js, &hellip; <\/p>\n<p class=\"link-more\"><a href=\"https:\/\/blogs.oregonstate.edu\/codinghotdog\/2022\/01\/13\/next-js-is-great-fur-real\/\" class=\"more-link\">Continue reading<span class=\"screen-reader-text\"> &#8220;Next.js is Great, fur real.&#8221;<\/span><\/a><\/p>\n","protected":false},"author":12018,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1],"tags":[],"class_list":["post-51","post","type-post","status-publish","format-standard","hentry","category-uncategorized"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.2 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Next.js is Great, fur real. - Coding Hotdog<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/blogs.oregonstate.edu\/codinghotdog\/2022\/01\/13\/next-js-is-great-fur-real\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Next.js is Great, fur real. - Coding Hotdog\" \/>\n<meta property=\"og:description\" content=\"Love at First Site (had to) I have always wanted a React.js framework. I love making awesome user interfaces with React and I thought a framework would make that experience better. I essentially wanted more bells and whistles and I found them. Queue Next.js. In this post I am not explaining every aspect of Next.js, &hellip; Continue reading &quot;Next.js is Great, fur real.&quot;\" \/>\n<meta property=\"og:url\" content=\"https:\/\/blogs.oregonstate.edu\/codinghotdog\/2022\/01\/13\/next-js-is-great-fur-real\/\" \/>\n<meta property=\"og:site_name\" content=\"Coding Hotdog\" \/>\n<meta property=\"article:published_time\" content=\"2022-01-13T15:33:05+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2022-01-14T17:15:54+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/osu-wams-blogs-uploads.s3.amazonaws.com\/blogs.dir\/5176\/files\/2022\/01\/zach-lucero-jYBtuN6aKg0-unsplash-1.jpg\" \/>\n<meta name=\"author\" content=\"Scott Bax\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Scott Bax\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"4 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/blogs.oregonstate.edu\/codinghotdog\/2022\/01\/13\/next-js-is-great-fur-real\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/blogs.oregonstate.edu\/codinghotdog\/2022\/01\/13\/next-js-is-great-fur-real\/\"},\"author\":{\"name\":\"Scott Bax\",\"@id\":\"https:\/\/blogs.oregonstate.edu\/codinghotdog\/#\/schema\/person\/c87708c348696a5217714e7c9cf1f6d0\"},\"headline\":\"Next.js is Great, fur real.\",\"datePublished\":\"2022-01-13T15:33:05+00:00\",\"dateModified\":\"2022-01-14T17:15:54+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/blogs.oregonstate.edu\/codinghotdog\/2022\/01\/13\/next-js-is-great-fur-real\/\"},\"wordCount\":684,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/blogs.oregonstate.edu\/codinghotdog\/#organization\"},\"image\":{\"@id\":\"https:\/\/blogs.oregonstate.edu\/codinghotdog\/2022\/01\/13\/next-js-is-great-fur-real\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/osu-wams-blogs-uploads.s3.amazonaws.com\/blogs.dir\/5176\/files\/2022\/01\/zach-lucero-jYBtuN6aKg0-unsplash-1.jpg\",\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/blogs.oregonstate.edu\/codinghotdog\/2022\/01\/13\/next-js-is-great-fur-real\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/blogs.oregonstate.edu\/codinghotdog\/2022\/01\/13\/next-js-is-great-fur-real\/\",\"url\":\"https:\/\/blogs.oregonstate.edu\/codinghotdog\/2022\/01\/13\/next-js-is-great-fur-real\/\",\"name\":\"Next.js is Great, fur real. - Coding Hotdog\",\"isPartOf\":{\"@id\":\"https:\/\/blogs.oregonstate.edu\/codinghotdog\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/blogs.oregonstate.edu\/codinghotdog\/2022\/01\/13\/next-js-is-great-fur-real\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/blogs.oregonstate.edu\/codinghotdog\/2022\/01\/13\/next-js-is-great-fur-real\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/osu-wams-blogs-uploads.s3.amazonaws.com\/blogs.dir\/5176\/files\/2022\/01\/zach-lucero-jYBtuN6aKg0-unsplash-1.jpg\",\"datePublished\":\"2022-01-13T15:33:05+00:00\",\"dateModified\":\"2022-01-14T17:15:54+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/blogs.oregonstate.edu\/codinghotdog\/2022\/01\/13\/next-js-is-great-fur-real\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/blogs.oregonstate.edu\/codinghotdog\/2022\/01\/13\/next-js-is-great-fur-real\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/blogs.oregonstate.edu\/codinghotdog\/2022\/01\/13\/next-js-is-great-fur-real\/#primaryimage\",\"url\":\"https:\/\/osu-wams-blogs-uploads.s3.amazonaws.com\/blogs.dir\/5176\/files\/2022\/01\/zach-lucero-jYBtuN6aKg0-unsplash-1.jpg\",\"contentUrl\":\"https:\/\/osu-wams-blogs-uploads.s3.amazonaws.com\/blogs.dir\/5176\/files\/2022\/01\/zach-lucero-jYBtuN6aKg0-unsplash-1.jpg\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/blogs.oregonstate.edu\/codinghotdog\/2022\/01\/13\/next-js-is-great-fur-real\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/blogs.oregonstate.edu\/codinghotdog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Next.js is Great, fur real.\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/blogs.oregonstate.edu\/codinghotdog\/#website\",\"url\":\"https:\/\/blogs.oregonstate.edu\/codinghotdog\/\",\"name\":\"Coding Hotdog\",\"description\":\"Woof, it&#039;s hot out there.. come relax and read tech.\",\"publisher\":{\"@id\":\"https:\/\/blogs.oregonstate.edu\/codinghotdog\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/blogs.oregonstate.edu\/codinghotdog\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/blogs.oregonstate.edu\/codinghotdog\/#organization\",\"name\":\"Coding Hotdog\",\"url\":\"https:\/\/blogs.oregonstate.edu\/codinghotdog\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/blogs.oregonstate.edu\/codinghotdog\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/osu-wams-blogs-uploads.s3.amazonaws.com\/blogs.dir\/5176\/files\/2022\/01\/iStock-1170183630-1.jpg\",\"contentUrl\":\"https:\/\/osu-wams-blogs-uploads.s3.amazonaws.com\/blogs.dir\/5176\/files\/2022\/01\/iStock-1170183630-1.jpg\",\"width\":1732,\"height\":1732,\"caption\":\"Coding Hotdog\"},\"image\":{\"@id\":\"https:\/\/blogs.oregonstate.edu\/codinghotdog\/#\/schema\/logo\/image\/\"}},{\"@type\":\"Person\",\"@id\":\"https:\/\/blogs.oregonstate.edu\/codinghotdog\/#\/schema\/person\/c87708c348696a5217714e7c9cf1f6d0\",\"name\":\"Scott Bax\",\"url\":\"https:\/\/blogs.oregonstate.edu\/codinghotdog\/author\/baxs\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Next.js is Great, fur real. - Coding Hotdog","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:\/\/blogs.oregonstate.edu\/codinghotdog\/2022\/01\/13\/next-js-is-great-fur-real\/","og_locale":"en_US","og_type":"article","og_title":"Next.js is Great, fur real. - Coding Hotdog","og_description":"Love at First Site (had to) I have always wanted a React.js framework. I love making awesome user interfaces with React and I thought a framework would make that experience better. I essentially wanted more bells and whistles and I found them. Queue Next.js. In this post I am not explaining every aspect of Next.js, &hellip; Continue reading \"Next.js is Great, fur real.\"","og_url":"https:\/\/blogs.oregonstate.edu\/codinghotdog\/2022\/01\/13\/next-js-is-great-fur-real\/","og_site_name":"Coding Hotdog","article_published_time":"2022-01-13T15:33:05+00:00","article_modified_time":"2022-01-14T17:15:54+00:00","og_image":[{"url":"https:\/\/osu-wams-blogs-uploads.s3.amazonaws.com\/blogs.dir\/5176\/files\/2022\/01\/zach-lucero-jYBtuN6aKg0-unsplash-1.jpg","type":"","width":"","height":""}],"author":"Scott Bax","twitter_card":"summary_large_image","twitter_misc":{"Written by":"Scott Bax","Est. reading time":"4 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/blogs.oregonstate.edu\/codinghotdog\/2022\/01\/13\/next-js-is-great-fur-real\/#article","isPartOf":{"@id":"https:\/\/blogs.oregonstate.edu\/codinghotdog\/2022\/01\/13\/next-js-is-great-fur-real\/"},"author":{"name":"Scott Bax","@id":"https:\/\/blogs.oregonstate.edu\/codinghotdog\/#\/schema\/person\/c87708c348696a5217714e7c9cf1f6d0"},"headline":"Next.js is Great, fur real.","datePublished":"2022-01-13T15:33:05+00:00","dateModified":"2022-01-14T17:15:54+00:00","mainEntityOfPage":{"@id":"https:\/\/blogs.oregonstate.edu\/codinghotdog\/2022\/01\/13\/next-js-is-great-fur-real\/"},"wordCount":684,"commentCount":0,"publisher":{"@id":"https:\/\/blogs.oregonstate.edu\/codinghotdog\/#organization"},"image":{"@id":"https:\/\/blogs.oregonstate.edu\/codinghotdog\/2022\/01\/13\/next-js-is-great-fur-real\/#primaryimage"},"thumbnailUrl":"https:\/\/osu-wams-blogs-uploads.s3.amazonaws.com\/blogs.dir\/5176\/files\/2022\/01\/zach-lucero-jYBtuN6aKg0-unsplash-1.jpg","inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/blogs.oregonstate.edu\/codinghotdog\/2022\/01\/13\/next-js-is-great-fur-real\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/blogs.oregonstate.edu\/codinghotdog\/2022\/01\/13\/next-js-is-great-fur-real\/","url":"https:\/\/blogs.oregonstate.edu\/codinghotdog\/2022\/01\/13\/next-js-is-great-fur-real\/","name":"Next.js is Great, fur real. - Coding Hotdog","isPartOf":{"@id":"https:\/\/blogs.oregonstate.edu\/codinghotdog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/blogs.oregonstate.edu\/codinghotdog\/2022\/01\/13\/next-js-is-great-fur-real\/#primaryimage"},"image":{"@id":"https:\/\/blogs.oregonstate.edu\/codinghotdog\/2022\/01\/13\/next-js-is-great-fur-real\/#primaryimage"},"thumbnailUrl":"https:\/\/osu-wams-blogs-uploads.s3.amazonaws.com\/blogs.dir\/5176\/files\/2022\/01\/zach-lucero-jYBtuN6aKg0-unsplash-1.jpg","datePublished":"2022-01-13T15:33:05+00:00","dateModified":"2022-01-14T17:15:54+00:00","breadcrumb":{"@id":"https:\/\/blogs.oregonstate.edu\/codinghotdog\/2022\/01\/13\/next-js-is-great-fur-real\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/blogs.oregonstate.edu\/codinghotdog\/2022\/01\/13\/next-js-is-great-fur-real\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/blogs.oregonstate.edu\/codinghotdog\/2022\/01\/13\/next-js-is-great-fur-real\/#primaryimage","url":"https:\/\/osu-wams-blogs-uploads.s3.amazonaws.com\/blogs.dir\/5176\/files\/2022\/01\/zach-lucero-jYBtuN6aKg0-unsplash-1.jpg","contentUrl":"https:\/\/osu-wams-blogs-uploads.s3.amazonaws.com\/blogs.dir\/5176\/files\/2022\/01\/zach-lucero-jYBtuN6aKg0-unsplash-1.jpg"},{"@type":"BreadcrumbList","@id":"https:\/\/blogs.oregonstate.edu\/codinghotdog\/2022\/01\/13\/next-js-is-great-fur-real\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/blogs.oregonstate.edu\/codinghotdog\/"},{"@type":"ListItem","position":2,"name":"Next.js is Great, fur real."}]},{"@type":"WebSite","@id":"https:\/\/blogs.oregonstate.edu\/codinghotdog\/#website","url":"https:\/\/blogs.oregonstate.edu\/codinghotdog\/","name":"Coding Hotdog","description":"Woof, it&#039;s hot out there.. come relax and read tech.","publisher":{"@id":"https:\/\/blogs.oregonstate.edu\/codinghotdog\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/blogs.oregonstate.edu\/codinghotdog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/blogs.oregonstate.edu\/codinghotdog\/#organization","name":"Coding Hotdog","url":"https:\/\/blogs.oregonstate.edu\/codinghotdog\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/blogs.oregonstate.edu\/codinghotdog\/#\/schema\/logo\/image\/","url":"https:\/\/osu-wams-blogs-uploads.s3.amazonaws.com\/blogs.dir\/5176\/files\/2022\/01\/iStock-1170183630-1.jpg","contentUrl":"https:\/\/osu-wams-blogs-uploads.s3.amazonaws.com\/blogs.dir\/5176\/files\/2022\/01\/iStock-1170183630-1.jpg","width":1732,"height":1732,"caption":"Coding Hotdog"},"image":{"@id":"https:\/\/blogs.oregonstate.edu\/codinghotdog\/#\/schema\/logo\/image\/"}},{"@type":"Person","@id":"https:\/\/blogs.oregonstate.edu\/codinghotdog\/#\/schema\/person\/c87708c348696a5217714e7c9cf1f6d0","name":"Scott Bax","url":"https:\/\/blogs.oregonstate.edu\/codinghotdog\/author\/baxs\/"}]}},"_links":{"self":[{"href":"https:\/\/blogs.oregonstate.edu\/codinghotdog\/wp-json\/wp\/v2\/posts\/51","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/blogs.oregonstate.edu\/codinghotdog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blogs.oregonstate.edu\/codinghotdog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blogs.oregonstate.edu\/codinghotdog\/wp-json\/wp\/v2\/users\/12018"}],"replies":[{"embeddable":true,"href":"https:\/\/blogs.oregonstate.edu\/codinghotdog\/wp-json\/wp\/v2\/comments?post=51"}],"version-history":[{"count":28,"href":"https:\/\/blogs.oregonstate.edu\/codinghotdog\/wp-json\/wp\/v2\/posts\/51\/revisions"}],"predecessor-version":[{"id":83,"href":"https:\/\/blogs.oregonstate.edu\/codinghotdog\/wp-json\/wp\/v2\/posts\/51\/revisions\/83"}],"wp:attachment":[{"href":"https:\/\/blogs.oregonstate.edu\/codinghotdog\/wp-json\/wp\/v2\/media?parent=51"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blogs.oregonstate.edu\/codinghotdog\/wp-json\/wp\/v2\/categories?post=51"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blogs.oregonstate.edu\/codinghotdog\/wp-json\/wp\/v2\/tags?post=51"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}