SEO in Next.js 14 - The Ultimate Guide (Metadata, Sitemap, Robots, Google Search Console, Caching)
Vložit
- čas přidán 5. 06. 2024
- In this tutorial, you will learn everything you need to know about SEO (search engine optimization) in Next.js and the app router.
Project files:
Starting code: github.com/codinginflow/nextj...
opengraph-image: github.com/codinginflow/nextj...
⭐ Get my full-stack Next.js with Express & TypeScript course: codinginflow.com/nextjs
✅ Get my free React Best Practices course: www.codinginflow.com/reactbes...
💌 Join my newsletter for regular web dev tips: codinginflow.com/newsletter
💬 Join our developer community on Discord: codinginflow.com/discord
📣 Follow Coding in Flow on social media:
Twitter: / codinginflow
Instagram: / codinginflow
TikTok: / codinginflow
Facebook: / codinginflow
Timestamps:
0:00 - Intro & prerequisites
2:28 - Static metadata, title template, favicon, opengraph-image, next/Font, next/Image
18:24 - Dynamic metadata (generateMetadata), React cache
28:38 - Static rendering & caching, generateStaticParams, notFound
40:48 - Server components (SSR) vs client components (CSR)
43:35 - Dynamic sitemap (sitemap.ts)
50:42 - Robots.txt & robots meta tag
55:59 - Google Search Console & Vercel Analytics connection
Brilliant guide, probably the most informative and clearly explained youtube video I have watched. Great work!
Thank you so much brother
Awesome guide! I'm a big fan of the way you show examples of everything. Thanks a lot!
Thanks man! Glad you liked it!
One of the best SEO videos you can ever watch. Don't skip any steps. I have watched this over and over and over and still can't get enough of it.
Glad you liked it!
@@codinginflow Can you please make a video on the Opengraph image generator?
Absolutely loved this! Very insightful
Thanks a lot! Very happy to hear that!
Thank you for such easy to follow and in depth tutorial
Your explanation is so clear, thank you!
I was hooked like I was watching a blockbuster 😂 Learning many things without getting overwhelmed. Really great video!
Glad you enjoyed it!
This video on SEO is truly exceptional - a must-watch! Each step is crucial, so make sure not to miss any. I've revisited it countless times and still find it incredibly valuable.
thank you 💚
What a fantastic video, I've been struggling with SEO with React and Next.js as I'm new to web development, but this video has been such a great help, even the icon and the opengraph image has been helpful
Absolutely fantastic walk through! Thank you!
thank you
Thank you so much for the detailed video. This video deserves more than just a like and a subscription.
Much appreciated!
Thank you for this amazing tutorial, you deserve my subscription I hope many more people find this channel, I have been trying to understand how to add the metadata in nextjs, I have read the official doc and watch a couple of videos on some channels I could not find any relevant content like, thank you for the hard work for the dev community I am so happy because I have been able to solve many issues after watching this tutorial and also understand may SEO concepts. keep up the good work.
Thank you for the kind words 😊 Glad you liked it
Awesome video, very detailed with lot of useful tips. Thank you very much !
All I needed thank you!
Amazing work, very well delivered. Thank you!
Glad you liked it!
good explained in less time thank bro
Great tutorial. Thank you very much. Really appreciate it.
Thank you so much for the new advanced knowledge and resources. 😍😍
You're welcome!
This knowledge every developer needed thank you so much for this tutorial please more video like this new features in next js
More to come! Thank you very much!
Thank you! you really helped me a lot! keep up the good work
Glad to hear that!
Really well made video. Thanks keep making such videos
Thanks for your content!
Thanks for the guide !!
Super useful tutorial 👍
Thank you so much for uploading 🎉 Subscribed right away.
Thank you bro
thanks man, great video
youre incredible, thank you so much!
Excellent video, thank you!
Glad you liked it!
First time i saw ur channel with this video.
And i can say amazing knowledge on seo u have
Want some more tutorials based on nextjs with typescript seo advance 😊
That's great!! Thank you
Thank you for watching!
The best mentor ever. I followed you when you were doing Android and you helped me get my first job. Now I am learning Next.js and you making it easy for me again. I cant thank you enough for your wonderful videos ❤. You are better than GPT 😂. You are literally answering all the questions that cross my mind. Gooold
Thank you bretheren
Very useful video, thanks
You are welcome
Supern tutorial!
All things SEO related are answered.
Glad you liked it 👌
@@codinginflow I think one thing that is not covered is scheme markup for each dynamic product pages
Thank you very much!
You're welcome!
thank you!
this is awesome.
Thank you!
Thank you :)
just amazing content, new subscriber and will keep watching your videos!
Glad to hear that!
Wow a new t-shirt and a wireless earpiece 😀,
Great video as always , Arigato my sensei !
Very attentive 😆
thank you🙏
thank you this is a goldmine of info
You're very welcome!
great tutorial 🍻
thanks brother
Very in depth vid , could you do one on integrating Google AdSense into Next14?
thank you very muchm very useful and enjoyed watching
My pleasure!
thank you
Beautiful
Thank you
Great video! Helped me a lot improving the SEO for a project I was working on.
One quesion though: I found that vercel's analytics tool gets blocked by most adblockers and on their documentation doesn't mention much or anything about it. Do you know a work around this?
Great tutorial!! So much info. One question. How would we create a site map with internationalization also how to generate the seo metadata based on the lang param ? ✌🏻
Do you know how to resolve the data dump in the content type of text/x-component on the UI. I am using aws cloud front as cdn
This is what I was looking for. Thanks. I still have an error in GSC that says "page with redirect", but I think its a google thing more than my code...
outstanding,thx.
Thank you so much 😊
@@codinginflow nice
Just what i needed to learn, great tutorial! thank you
You're welcome!
Hey! Great stuff! One question though, I have a project that uses next-intl to serve different locales, how can I pass the locale variable to the dynamically generated sitemap so it will take into account which locale to map?
greet. i loved it
awesome
THank You
Hey, thank you for anamazing video.
I wanted to ask in case I have [locale] folder, where should my sitemap file go and how should it look to support different locales?
15:11 - I think there's a feature in VS Code which allows you to forward localhost, it's called port forwarding
Right, I forgot about this. I think it's new.
Hello do you know why con cloudflare pages on dynamic routes I have to use export const runtime = 'edge'; so even if I use generateStaticParams the pages will be note served with SSG but dynamically ? Thanks very much for this video!
This video is a Godsend. The docs sucks compare to your video. I appreciate it.
Glad you liked it 😊
I have encountered an issue where my Open Graph images are no longer appearing when I share my page. Interestingly when I view source in chrome, the images are present in the HTML code. After spending few hours I realize that open graph image is not public. Do you know how do i fix this
another question, if i may.... can i use disallow props in robots.ts file with some wild cards in them?(i.e. disallow: ["/author/*/list", "/groups/name/*"])
thanks and happy coding :)
Thanks for this awesome guide. and how to make sitelink on google search?
I liked this video so much I clicked on its ads
thank u
You're welcome!
Nice video, thanks a lot. Is keyword not important, i am just newbie for SEO and want to know if there is anything that is not mentioned in this video (the first thing that comes in my mind is keywords). Again thanks for this video.
Excellent run-through, thanks for this! The tip to convert the blog post to SSG is great, but my blog index is also dynamic at the moment - I think because I'm using search params for pagination. Is there a way I can make the index (or at least the first page) static as well?
I think it's fine for this section to be dynamic because it doesn't show up much in Google.
However, you can move your page number into a URL path param ("/blog/1") and this way cache them too.
@@codinginflow Thanks for the quick response, appreciate it!
This has helped me a lot. i have one doubt regarding sitemap generation. for one of our project we are using next js 14 app router and currently our site is completely static we are using export to build to static site. I am not able to generate dynamic sitemaps can any one help me with this or provide some resources which will help me . that will be a great help thanks
Great video, I have one question if i'm using vercel with the free domain that vercel provide.
How can i verify the domain when using google search
I think you can't because you don't have access to the DNS settings
@@codinginflow Yeah that's one, thank you ❤️
Thanks so much for that video. It has clarified me a bunch of things. 🙂
May I ask one question? If I fetch data from a server component and I need to render it in a deep nested component how I would do that?
If I place the data in the Context API (use client) I lose all the server features but I also do not want to drill it down so many levels.
Thanks in advance. 🙏🏻
I would fetch it in the lowest server component and then just pass it as a prop
@@codinginflow I really appreciate your insight. 🏆So as I suspected either or another, not a third choice then.
Your approach makes sense since passing props down is better than losing the SSR feature. 🥇🔥
@ Yea I think that's the right way
Hi Florian , why is it that the previous notes ai tutorial and the ecommerce tutorial after running "npm run build" all the pages are shown with lambda as dynamically rendered ?
Thanks !
In both cases, it's because of authentication. We get the current user server-side on each page which requires dynamic rendering.
In the notes app, we don't care about static rendering because we don't have any public pages.
In the e-commerce app, static rendering for product pages would be great. But I think this would require us to handle auth client-side.
@@codinginflow thanks for the clarification, I was going through your tutorial right at this moment :)
Thank you , I have a page where list of products are shown. I am getting SEO related data from API, the main page has SEO like title, author, but in addition, for each product, they have separate SEO, so how can I return those in generateMetadata as it has only one return and I am already returning the page SEO (i-e title, author), but how to return list for each product where product related SEO is keyword, description, etc
You do that on he product details page
thanks, but I also want to do SEO of each product on main page instead of product-detail page, is there any way @@codinginflow
i'm not sure if it's just me, but the form to subscribe to the newsletter doesn't show up on chrome, but it did on edge. Maybe it's one of my numerous addons mistakenly blocking it perhaps.
Thanks for letting me know. The form is loaded from a third-party provider so I guess something in your browser is blocking it.
*Respected Sir,* I'm experiencing a weird problem with API route handlers, my API route gets data from external API (locally hosted using mockoon tool), I'm using *{ next: { revalidate: 60} }* to get fresh data after 60 seconds & also *'force-dynamic'* to prevent it from becoming static during build. External API returns errors like 404, 429, 503 but API route handler responds with cached data & never returns a error, even other errors caught in catch block are ignored. Any suggestions ?
hello, awesome content, really appreciated it, a question, if i may......... how about if we have to fetch data from "internal api" (i.e. localhost:3000/api) endpoints, during "npm run build" it seems to throw error saying "fetch failed" is there any work around it? thanks and happy coding :)
Don't fetch from a route handler in your server components. You can access the DB directly.
thanks a lot :) , thats exactly what i did, just wanted to be sure if thats correct way of doing it or not, much appreciated ♥ @@codinginflow
How do you deal with too many results? I have a listing page with 100k listings, sitemaps are limited to 50k or so
About caching: What if the content changes? Will 31st know that there is new content and invalidate the cache, or it will render outdated data ?
Either build the project again or look into incremental static regeneration
I can't export out folder my nextjs 14 application with nextauth, If have faced this issue please hepl me
So If I have for example 300 elements and I am searching by Id I should generateStaticParams?
Okey you said in 37 min about that, but what do you recommend if the app has at least 300 records.
What should I do? 🙄
thank you sweetheart
How to add script tag in head tag?
Can you please help me.
Thanks in advance.
With next/Script.
You use it with an uppercase S:
i really confuse, how to verify the DNS google search console in vercel :/
Can you please add the microdata in next js?
please make a detailed video on API creation using NEXT Js
What exactly do you want to learn?
@@codinginflow I dont want to learn express and other stuff, i just want to learn API creations and JWT etc using NEXT JS Only, Please make a detailed video on this, Hope this is Your Next Video🙏🙏
Google not accepting sitemap. What to do?
Hola Amigo
Hola
I've been following you for a long time.
I hope you talk about Gaza you are famous and your voice is heard
Beautiful tutorial, but I don’t think you have mentioned about keywords.
Keywords are related to the content. This tutorial covers the technical parts.
👍🙏
the favicon doesn't change
oh well, to solve this, just rename the favicon.ico to icon.ico
I think it's cached. Wait for a bit.
@@codinginflow I solved the problem by changing the name of "favicon.ico" to "icon.ico"
+
WHat's the first word u said? Kodachima? What does it mean?Is it german?
Konichiwa, it means "hello" in Japanese
@@codinginflow cool
@@codinginflow Anime fan, huh?
@@gofudgeyourselves9024 Nah. I just use a greeting in a different language in every video.
thank u
You're welcome!