<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>Forem: Aleksei Zhilyuk</title>
    <description>The latest articles on Forem by Aleksei Zhilyuk (@aleksei_zhilyuk).</description>
    <link>https://forem.com/aleksei_zhilyuk</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F1203227%2F035d0154-18f5-4902-9db4-fe8cb0ed5df4.jpg</url>
      <title>Forem: Aleksei Zhilyuk</title>
      <link>https://forem.com/aleksei_zhilyuk</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://forem.com/feed/aleksei_zhilyuk"/>
    <language>en</language>
    <item>
      <title>Next.JS CMS — Top choices in 2024</title>
      <dc:creator>Aleksei Zhilyuk</dc:creator>
      <pubDate>Thu, 31 Oct 2024 09:38:54 +0000</pubDate>
      <link>https://forem.com/focusreactive/nextjs-cms-top-choices-in-2024-o38</link>
      <guid>https://forem.com/focusreactive/nextjs-cms-top-choices-in-2024-o38</guid>
      <description>&lt;h2&gt;
  
  
  WHY A HEADLESS CMS FOR YOUR NEXT.JS PROJECT?
&lt;/h2&gt;

&lt;p&gt;A &lt;a href="https://focusreactive.com/headless-cms-expert-agency/" rel="noopener noreferrer"&gt;headless CMS&lt;/a&gt; serves as a backend-only content repository that provides content via an API, making it displayable on any device. This approach separates content management from its presentation, which is particularly advantageous for &lt;a href="https://focusreactive.com/next-js-expert-agency/" rel="noopener noreferrer"&gt;NextJS projects&lt;/a&gt;. By using a headless CMS, developers can fully leverage Next.js features like &lt;a href="https://nextjs.org/docs/pages/building-your-application/rendering/server-side-rendering" rel="noopener noreferrer"&gt;server-side rendering&lt;/a&gt; and &lt;a href="https://nextjs.org/docs/pages/building-your-application/rendering/static-site-generation" rel="noopener noreferrer"&gt;static site generation&lt;/a&gt;, optimizing both SEO and performance.&lt;/p&gt;

&lt;h2&gt;
  
  
  ADVANTAGES OF INTEGRATING A HEADLESS CMS WITH NEXTJS
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://focusreactive.com/next-js-expert-agency/" rel="noopener noreferrer"&gt;NextJS&lt;/a&gt; is a powerful framework for building efficient and scalable web applications. &lt;/p&gt;

&lt;h3&gt;
  
  
  Here are specific advantages of integrating a headless CMS with Next.js:
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Enhanced Performance&lt;/strong&gt;: Next.js excels in fast page loads through features like incremental static regeneration and server-side rendering. A headless CMS complements this by efficiently delivering content through APIs, reducing load times and server strain. &lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Improved SEO:&lt;/strong&gt; Next.js facilitates SEO-friendly site structures, which can be enhanced with a headless CMS that supports SEO optimization through metadata management and structured content delivery.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Scalability:&lt;/strong&gt; As your project grows, the need to handle more traffic and content efficiently becomes crucial. A headless CMS can scale independently from the front-end, making it easier to manage large volumes of data without impacting the front-end performance.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Flexibility in Development:&lt;/strong&gt; Developers can use their preferred front-end technologies and frameworks without constraints imposed by traditional CMS platforms. This means you can use the latest Next.js features and updates as soon as they are released.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Better Security and Stability:&lt;/strong&gt; By decoupling the CMS from the presentation layer, security is enhanced as potential vulnerabilities in the CMS do not directly expose the front-end to security risks.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Streamlined Workflows:&lt;/strong&gt; A headless CMS can support multiple front-ends simultaneously, which is advantageous for projects aiming to deliver content across different platforms and devices.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;These benefits make a headless CMS an excellent match for Next.js, ensuring developers can build modern, secure, and high-performing applications.&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;a href="https://focusreactive.com/contentful-expert-agency/" rel="noopener noreferrer"&gt;Contentful&lt;/a&gt;
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F0e2t6h5pm7ofa3opdpgc.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F0e2t6h5pm7ofa3opdpgc.png" alt="Contentful logo" width="800" height="164"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://focusreactive.com/contentful-cms-overview/" rel="noopener noreferrer"&gt;Contentful&lt;/a&gt; is a leader in the headless CMS market, offering a comprehensive suite of features that cater to developers and content creators alike.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fb0og6btorbin2on62acz.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fb0og6btorbin2on62acz.png" alt="Contentful interface" width="800" height="403"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Ease of Integration:&lt;/strong&gt; 
With its React SDK, integrating Contentful with Next.js projects is a breeze, providing a seamless workflow for developers.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Flexibility:&lt;/strong&gt; 
Contentful's content modeling capabilities are unmatched, allowing for the creation of complex content structures tailored to any project's needs. Its environment feature supports staging and production setups, enabling a robust development workflow.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Performance:&lt;/strong&gt; 
Its Delivery API is built for speed, ensuring that content loads quickly, which is crucial for maintaining high performance in Next.js applications.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Community and Support:&lt;/strong&gt; 
A vast community and extensive documentation mean that developers can easily find solutions or get help when needed. Contentful also offers professional support services for enterprise users, ensuring that any issues can be swiftly addressed.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  &lt;a href="https://www.contentful.com/pricing/?tab=platform" rel="noopener noreferrer"&gt;Contentful pricing&lt;/a&gt;
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Free&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Basic:&lt;/strong&gt; $300/month&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Premium:&lt;/strong&gt; Custom pricing&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fb4xtxcr7h85o3mik616w.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fb4xtxcr7h85o3mik616w.png" alt="Conentful pricing" width="800" height="606"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;a href="https://focusreactive.com/storyblok-expert-agency/" rel="noopener noreferrer"&gt;Storyblok&lt;/a&gt;
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fqt7its9kecfgrxrug21e.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fqt7its9kecfgrxrug21e.png" alt="Storyblok logo" width="800" height="172"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://focusreactive.com/storyblok-cms-overview/" rel="noopener noreferrer"&gt;Storyblok&lt;/a&gt; stands out for its visual editor and block-based approach to content management, making it particularly friendly for both developers and content creators.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fakrq23bs9ycqp4h6kjio.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fakrq23bs9ycqp4h6kjio.png" alt="Storyblok interface" width="800" height="374"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Ease of Integration:&lt;/strong&gt; 
Storyblok's component-based approach integrates seamlessly with Next.js, allowing developers to map components in Storyblok to React components.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Flexibility:&lt;/strong&gt; 
The platform offers incredible flexibility through its block-based content system, enabling creators to build dynamic, rich content experiences without needing developer intervention for layout changes.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Performance:&lt;/strong&gt; 
Storyblok's content delivery is optimized for speed, utilizing a CDN to ensure content is served quickly to Next.js applications globally.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Community and Support:&lt;/strong&gt; 
Storyblok has a rapidly growing community and provides extensive documentation, tutorials, and customer support, making it easy for developers to get started and find help when needed.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  &lt;a href="https://www.storyblok.com/pricing" rel="noopener noreferrer"&gt;Storyblok pricing&lt;/a&gt;
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Community Plan:&lt;/strong&gt; Free&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Entry Plan:&lt;/strong&gt; €99/month&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Enterprise:&lt;/strong&gt; €3299/month&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Enterprise Plus:&lt;/strong&gt; Custom pricing&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fvcq52nn164eqqk710l4t.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fvcq52nn164eqqk710l4t.png" alt="Storyblok pricing" width="800" height="651"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;a href="https://focusreactive.com/sanity-expert-agency/" rel="noopener noreferrer"&gt;Sanity.io&lt;/a&gt;
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F4jlmudmgnyvi1avyy8p1.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F4jlmudmgnyvi1avyy8p1.png" alt="Sanity logo" width="800" height="161"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://focusreactive.com/sanity-cms-overview/" rel="noopener noreferrer"&gt;Sanity.io&lt;/a&gt; differentiates itself with its real-time content editing experience and a highly customizable content studio.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fv87yn6x7xr7ucc6egnt5.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fv87yn6x7xr7ucc6egnt5.png" alt="Sanity interface" width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Ease of Integration:&lt;/strong&gt; The platform offers excellent support for React and Next.js, including real-time preview capabilities that are invaluable during development.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Flexibility:&lt;/strong&gt; The customizable content studio and the innovative portable text feature provide developers and content editors with the power to embed rich content structures directly within textual content, making it highly versatile.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Performance:&lt;/strong&gt; Sanity.io leverages GROQ and GraphQL for data querying, offering efficient and flexible options for fetching data, which enhances app performance.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Community and Support:&lt;/strong&gt; With a vibrant community and plenty of guides, finding help or inspiration is easy. Sanity.io also hosts regular developer streams and community events, fostering a strong sense of community.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  &lt;a href="https://www.sanity.io/pricing" rel="noopener noreferrer"&gt;Sanity pricing&lt;/a&gt;
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Free&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Growth:&lt;/strong&gt; $15/month per user&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Enterprise:&lt;/strong&gt; Custom pricing&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Flbtesxrevj4m3t6gr1u5.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Flbtesxrevj4m3t6gr1u5.png" alt="Sanity Pricing" width="800" height="509"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;a href="https://focusreactive.com/directus-expert-agency/" rel="noopener noreferrer"&gt;Directus&lt;/a&gt;
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F26tyt9ag8qa5lx8899b3.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F26tyt9ag8qa5lx8899b3.png" alt="Directus logo" width="800" height="166"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://focusreactive.com/directus-cms-overview/" rel="noopener noreferrer"&gt;Directus&lt;/a&gt; is an open-source option that stands out for its API-driven approach and extensive customization capabilities.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fyragsn9n1hfozdbhcnku.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fyragsn9n1hfozdbhcnku.png" alt="Directus interface" width="800" height="586"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Ease of Integration:&lt;/strong&gt; 
Offering both RESTful API and GraphQL endpoint, Directus provides versatile integration options with Next.js, catering to different developer preferences.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Flexibility:&lt;/strong&gt; 
Being open-source, Directus allows for deep customization, from the admin UI to the underlying database schema. This flexibility ensures that developers can tailor the CMS to fit the project's exact requirements.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Performance:&lt;/strong&gt; 
While performance is generally excellent, it can vary depending on how the Directus backend is configured. However, the ability to directly query the database ensures minimal overhead.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Community and Support:&lt;/strong&gt; 
The growing open-source community around Directus is a rich resource for troubleshooting and inspiration. Directus also offers dedicated support plans for businesses requiring more personalized assistance.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  &lt;a href="https://directus.io/pricing" rel="noopener noreferrer"&gt;Directus pricing&lt;/a&gt;
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Self-hosted:&lt;/strong&gt; License required &lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Professional Cloud:&lt;/strong&gt; $99/month&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Enterprise Cloud:&lt;/strong&gt; Custom&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fmibfxhzueir57xpcs7e3.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fmibfxhzueir57xpcs7e3.png" alt="Directus pricing" width="800" height="377"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;a href="https://payloadcms.com/" rel="noopener noreferrer"&gt;Payload CMS&lt;/a&gt;
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fn3izx4y4k446k1u20cet.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fn3izx4y4k446k1u20cet.png" alt="Payload CMS logo" width="500" height="141"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://focusreactive.com/payload-cms-overview" rel="noopener noreferrer"&gt;Payload CMS&lt;/a&gt; is a newer entrant in the headless CMS space but has quickly gained attention for its developer-focused features and flexibility.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Faye9h7feroq1v61yi1ir.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Faye9h7feroq1v61yi1ir.png" alt="Payload CMS interface" width="800" height="444"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Ease of Integration:&lt;/strong&gt; 
Designed with developers in mind, Payload CMS offers full TypeScript support and a highly customizable admin UI, making it a perfect match for Next.js applications that utilize TypeScript.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Flexibility:&lt;/strong&gt; 
It stands out for its deep customization capabilities, allowing full control over the admin UI and the APIs. This level of customization makes it possible to tailor every aspect of the CMS to the project's needs.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Performance:&lt;/strong&gt; 
Payload CMS is optimized for performance, featuring efficient data handling and delivery mechanisms. This focus on performance is evident in the speed and responsiveness of Next.js applications powered by Payload.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Community and Support:&lt;/strong&gt; 
Although the community is currently smaller, it's rapidly growing. The developers are actively involved in expanding the documentation and offering support, ensuring users have the resources they need.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  &lt;a href="https://payloadcms.com/cloud-pricing" rel="noopener noreferrer"&gt;Payload CMS pricing&lt;/a&gt;
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Free&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Standard:&lt;/strong&gt; $35/month&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Pro:&lt;/strong&gt; $199/month&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Enterprise:&lt;/strong&gt; Custom&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fix54y39mw4ejl0jeydzj.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fix54y39mw4ejl0jeydzj.png" alt="Payload CMS pricing" width="800" height="156"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;a href="https://prismic.io/" rel="noopener noreferrer"&gt;Prismic&lt;/a&gt;
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fh0lw8gmrsxjusiju724e.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fh0lw8gmrsxjusiju724e.png" alt="Prismic logo" width="800" height="206"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://focusreactive.com/prismic-cms-overview" rel="noopener noreferrer"&gt;Prismic&lt;/a&gt; offers a straightforward and developer-friendly approach to content management, making it a popular choice for many Next.js projects.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fqagiyxav4eec9usquox5.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fqagiyxav4eec9usquox5.png" alt="Prismic interface" width="800" height="492"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Ease of Integration:&lt;/strong&gt; Its REST API and support for webhooks make integrating Prismic with Next.js straightforward, facilitating both static site generation and server-side rendering.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Flexibility:&lt;/strong&gt; The slices feature allows for building dynamic page layouts with ease, offering developers and content creators a flexible and powerful tool for designing content-rich pages.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Performance:&lt;/strong&gt; Prismic's use of a CDN for content delivery ensures fast load times, a critical factor for maintaining high performance in web applications.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Community and Support:&lt;/strong&gt; While Prismic has good documentation and support, its community may not be as large as some others, but the quality of support and resources is high.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  &lt;a href="https://prismic.io/pricing" rel="noopener noreferrer"&gt;Prismic pricing&lt;/a&gt;
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Free:&lt;/strong&gt; &lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Starter:&lt;/strong&gt; $10/month&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Small:&lt;/strong&gt; $25/month&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Medium:&lt;/strong&gt; $150/month&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Platinum:&lt;/strong&gt; $675/month&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Enterprise:&lt;/strong&gt; Custom&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fyqi4f321qildokatqnnz.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fyqi4f321qildokatqnnz.png" alt="Prismic pricing" width="800" height="426"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;a href="https://focusreactive.com/ghost-cms-overview/" rel="noopener noreferrer"&gt;Ghost CMS&lt;/a&gt;
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fy1r9bbz238uurpa86x3y.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fy1r9bbz238uurpa86x3y.png" alt="Ghost logo" width="800" height="294"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://focusreactive.com/ghost-cms-overview/" rel="noopener noreferrer"&gt;Ghost CMS&lt;/a&gt; is an open-source platform focused on blogging and online publishing. Built on Node.js, it is renowned for its simplicity and speed, providing a seamless content creation process. Ghost is ideal for bloggers and organizations seeking a lightweight CMS that enhances SEO and content delivery.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F4j2jgq7w9uqe1a8uh2vd.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F4j2jgq7w9uqe1a8uh2vd.png" alt="Ghost CMS interface" width="800" height="442"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;SEO Optimization&lt;/strong&gt;: Provides SEO-friendly features like automatic sitemap generation and rich meta tagging, complementing Next.js's SEO capabilities.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Modern Technology Stack&lt;/strong&gt;: Built on a Node.js stack, Ghost aligns well with the server-side rendering features of Next.js.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Lightweight and Fast&lt;/strong&gt;: Its lightweight nature enhances the performance benefits of Next.js, making it ideal for projects requiring high-speed content delivery.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Membership and Subscriptions&lt;/strong&gt;: Native support for memberships and subscriptions, enabling monetization in Next.js applications.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  &lt;a href="https://ghost.org/pricing/" rel="noopener noreferrer"&gt;Ghost CMS pricing&lt;/a&gt;
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Starter:&lt;/strong&gt; from $10/month&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Creator:&lt;/strong&gt; $25/month&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Team:&lt;/strong&gt; $50/month&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Business:&lt;/strong&gt; $199/month&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fsemed38echxk01d7jh8v.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fsemed38echxk01d7jh8v.png" alt="Ghost CMS pricing" width="800" height="359"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;a href="https://focusreactive.com/kentiko-kontent-overview/" rel="noopener noreferrer"&gt;Kentico Kontent&lt;/a&gt;
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F1mnkaai888zszun8v931.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F1mnkaai888zszun8v931.png" alt="Kentico Kontent logo" width="600" height="260"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://focusreactive.com/kentiko-kontent-overview/" rel="noopener noreferrer"&gt;Kontent.ai&lt;/a&gt;, formerly known as Kentico Kontent, is a cloud-based CMS designed for content collaboration and delivery across multiple channels. It supports robust content modeling and real-time collaboration, making it suitable for large enterprises and digital agencies managing diverse content ecosystems.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F8909jzefa2075g9yhjb2.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F8909jzefa2075g9yhjb2.png" alt="Kentiko Kontent interface" width="800" height="496"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Workflow Management&lt;/strong&gt;: Offers robust tools for collaborative content creation and workflow management, supporting the development cycles typical in Next.js projects.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Content Modeling&lt;/strong&gt;: Features powerful content modeling tools to structure content efficiently, which is key when building scalable Next.js applications.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;API Capabilities&lt;/strong&gt;: Comprehensive APIs facilitate efficient data exchanges, crucial for integrating with Next.js's data fetching methods like &lt;code&gt;getStaticProps&lt;/code&gt; and &lt;code&gt;getServerSideProps&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Multi-channel Delivery&lt;/strong&gt;: Ensures consistent content delivery across all platforms, which pairs well with Next.js's universal rendering capabilities.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  &lt;a href="https://focusreactive.com/hygraph-cms-overview/" rel="noopener noreferrer"&gt;Hygraph&lt;/a&gt; (formerly GraphCMS)
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fl8dsn965cx1h8z69bj7m.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fl8dsn965cx1h8z69bj7m.png" alt="Hygraph logo" width="716" height="200"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://focusreactive.com/hygraph-cms-overview/" rel="noopener noreferrer"&gt;Hygraph&lt;/a&gt; is a headless CMS that uses GraphQL to enhance content management and delivery. It allows for the quick development of content APIs with minimal coding, ideal for projects requiring complex content structures and relationships.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fdlmtj79hvfqod63ma9m2.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fdlmtj79hvfqod63ma9m2.png" alt="Hygraph interface" width="800" height="444"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;GraphQL Native&lt;/strong&gt;: Being a GraphQL-native CMS, Hygraph provides powerful developer tools that perfectly match Next.js's data fetching strategies, enhancing the development of complex applications.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Schema Management&lt;/strong&gt;: Easy management of content schemas with an intuitive interface complements Next.js's dynamic routing and static generation features.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Real-time Collaboration&lt;/strong&gt;: Supports real-time collaboration and version control, which are beneficial for teams working on Next.js applications.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Rich Media Management&lt;/strong&gt;: Advanced media handling capabilities ensure that multimedia content is optimized for performance in Next.js applications.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  &lt;a href="https://hygraph.com/pricing" rel="noopener noreferrer"&gt;Hygraph pricing&lt;/a&gt;
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Free forever:&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Professional:&lt;/strong&gt; $199/month&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Scale:&lt;/strong&gt; $799/month&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Custom:&lt;/strong&gt; Contact to get a quote&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F8mr37fhxupvwujj4dm1o.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F8mr37fhxupvwujj4dm1o.png" alt="Hygraph pricing" width="800" height="520"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;a href="https://focusreactive.com/butter-cms-overview/" rel="noopener noreferrer"&gt;ButterCMS&lt;/a&gt;
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fnffs085ifrcduiiv5xpj.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fnffs085ifrcduiiv5xpj.png" alt="Butter CMS logo" width="800" height="200"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://focusreactive.com/butter-cms-overview/" rel="noopener noreferrer"&gt;ButterCMS&lt;/a&gt; is a straightforward headless CMS that integrates easily with existing projects thanks to its comprehensive API and SDKs. Known for its ease of use, Butter CMS is favored by marketers and developers needing to deploy content-rich sites quickly.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fu82c8t69k7mpe0uoa9yg.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fu82c8t69k7mpe0uoa9yg.png" alt="Butter CMS interface" width="800" height="427"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Marketing Integration&lt;/strong&gt;: Offers robust tools for SEO and content marketing, enhancing the marketing aspects of Next.js websites.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Simple API&lt;/strong&gt;: Its simple RESTful API is easy to integrate with Next.js, supporting quick implementation in existing projects.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;SDKs and Libraries&lt;/strong&gt;: Provides SDKs for various programming languages, making it easy to integrate with Next.js and other parts of your technology stack.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Personalization Features&lt;/strong&gt;: Content personalization capabilities align well with the dynamic and static rendering options of Next.js.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  &lt;a href="https://buttercms.com/pricing/" rel="noopener noreferrer"&gt;Butter CMS pricing&lt;/a&gt;
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Micror:&lt;/strong&gt; $99/month &lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Startup:&lt;/strong&gt; $199/month&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Small Business:&lt;/strong&gt; $375/month&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Enterprise + Agency:&lt;/strong&gt; Custom&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F8m2igfw1otyl12j1hto5.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F8m2igfw1otyl12j1hto5.png" alt="Butter CMS pricing" width="800" height="501"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;a href="https://focusreactive.com/strapi-cms-overview/" rel="noopener noreferrer"&gt;Strapi&lt;/a&gt;
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F8pbjnckp502rubm49m28.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F8pbjnckp502rubm49m28.png" alt="Strapi logo" width="800" height="193"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://focusreactive.com/strapi-cms-overview/" rel="noopener noreferrer"&gt;Strapi&lt;/a&gt; is an open-source, customizable headless CMS that supports various databases and frontend frameworks. Its API-centric approach and community-driven development make it a flexible choice for building scalable web applications. Strapi appeals to developers looking for control over their CMS environment.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fdudqtgkiihtcaj2mvo53.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fdudqtgkiihtcaj2mvo53.png" alt="Strapi interface" width="800" height="489"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Open Source&lt;/strong&gt;: One of the few fully open-source options available, giving developers complete control over their CMS.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Self-hosting Capability&lt;/strong&gt;: Can be self-hosted, providing full control over the hosting environment and security aspects.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Customizable UI&lt;/strong&gt;: Offers a customizable admin panel built with React, making it a natural choice for React developers.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Community and Plugins&lt;/strong&gt;: A vibrant community and a wide range of plugins available for extended functionalities.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  &lt;a href="https://strapi.io/pricing" rel="noopener noreferrer"&gt;Strapi pricing&lt;/a&gt;
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Community:&lt;/strong&gt; Free&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Developer:&lt;/strong&gt; $29/month&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Pro:&lt;/strong&gt; $99/month&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Team:&lt;/strong&gt; $499/month&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Enterprise:&lt;/strong&gt; Custom&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fh2qbjyo0e640zic0z0sd.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fh2qbjyo0e640zic0z0sd.png" alt="Strapi pricing" width="800" height="440"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Conclusion and Recommendations
&lt;/h2&gt;

&lt;p&gt;After a detailed analysis of each platform, our top recommendations for Next.js developers based on specific project needs and priorities are:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F4jlmudmgnyvi1avyy8p1.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F4jlmudmgnyvi1avyy8p1.png" alt="Sanity logo" width="800" height="161"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;&lt;a href="https://focusreactive.com/sanity-cms-overview/" rel="noopener noreferrer"&gt;Sanity.io&lt;/a&gt;&lt;/strong&gt;:
&lt;/h3&gt;

&lt;p&gt;Perfect for projects that require real-time content updates and a high degree of customization in the content editing experience.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fqt7its9kecfgrxrug21e.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fqt7its9kecfgrxrug21e.png" alt="Storyblok logo" width="800" height="172"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;&lt;a href="https://focusreactive.com/storyblok-cms-overview/" rel="noopener noreferrer"&gt;Storyblok&lt;/a&gt;&lt;/strong&gt;:
&lt;/h3&gt;

&lt;p&gt;Ideal for those who value intuitive content management with a visual editor and a block-based approach, offering ease of use for developers and content creators alike.&lt;/p&gt;

&lt;p&gt;If you are considering a &lt;a href="https://focusreactive.com/migration-from-wordpress-to-headless-cms/" rel="noopener noreferrer"&gt;migration to Headless CMS&lt;/a&gt; or you are building it from scratch - &lt;a href="https://focusreactive.com/#mail-us" rel="noopener noreferrer"&gt;contact us&lt;/a&gt;, we are &lt;a href="https://focusreactive.com/headless-cms-expert-agency/" rel="noopener noreferrer"&gt;headless cms agency&lt;/a&gt; and we can set up a free consultation around the project you have in mind &lt;/p&gt;

</description>
      <category>headlesscms</category>
      <category>nextjs</category>
      <category>jamstack</category>
    </item>
    <item>
      <title>Next.js Conf 2024 Highlights and React Framework Future</title>
      <dc:creator>Aleksei Zhilyuk</dc:creator>
      <pubDate>Thu, 31 Oct 2024 09:26:32 +0000</pubDate>
      <link>https://forem.com/focusreactive/nextjs-conf-2024-highlights-and-react-framework-future-1bdb</link>
      <guid>https://forem.com/focusreactive/nextjs-conf-2024-highlights-and-react-framework-future-1bdb</guid>
      <description>&lt;p&gt;While the overall ambitious tone of the previous conference editions have cooled off, we enthusiastically welcomed the direction the presenting team have taken, focusing on making Next.js API more streamlined, and self-hosting friendly. We saw updates and celebrated stable release of Turbopack for Dev, and insightful deep-dives from people behind the framework. &lt;/p&gt;

&lt;p&gt;Followed up by case studies of major Next.js adopters, and strategic partners, including, our most technological Headless CMS of choice - &lt;a href="https://focusreactive.com/sanity-expert-agency/" rel="noopener noreferrer"&gt;Sanity&lt;/a&gt;, which went all in with their Next.js 15 support and innovative “live” CMS content approach. We got so excited about the last one that we even wrote a separate blog post breaking down the vision behind the new architecture of choice when it comes to Next.js+Sanity combo.&lt;/p&gt;

&lt;p&gt;Let’s break down some of the talks we followed the most:&lt;/p&gt;

&lt;h2&gt;
  
  
  Opening Keynote
&lt;/h2&gt;

&lt;p&gt;Guillermo Rauch (CEO, Vercel &amp;amp; Creator of Next.js) welcomes everyone to the fifth anniversary of Next.js and begins his speech by expressing gratitude to the main contributors to Next.js.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fybmi4tv8sibchvkwjddg.webp" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fybmi4tv8sibchvkwjddg.webp" alt="Guillermo Rauch on stage" width="800" height="486"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;A lot happened during the year:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;4000 PRs&lt;/li&gt;
&lt;li&gt;5 Next.js releases were made&lt;/li&gt;
&lt;li&gt;570 new contributors joined the project&lt;/li&gt;
&lt;li&gt;Next.js reaches 7 million downloads on NPM&lt;/li&gt;
&lt;li&gt;Many large companies have already migrated to APP Router, such as PayPal, wayfair, xAI&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Guillermo Rauch believes that Next.js and its ecosystem is something we can rely on in the future. Next.js is used all over the world to create everything from the simplest websites to complex, sophisticated applications.&lt;/p&gt;

&lt;p&gt;Guillermo Rauch was guided by these principles when creating Next.js&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Make it work &lt;/li&gt;
&lt;li&gt;Make it right&lt;/li&gt;
&lt;li&gt;Make it fast&lt;/li&gt;
&lt;li&gt;Make it blazing fast&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ftwt52lr8bhi95m30d3hg.webp" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ftwt52lr8bhi95m30d3hg.webp" alt="make, right, fast" width="800" height="311"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;APP Router was created to make data fetching and rendering more predictable, since according to Guillermo Rauch, developers should not worry about caching and focus on creating the application.&lt;/p&gt;

&lt;p&gt;In order for the idea to turn into a product as quickly as possible and the time for each iteration to be as short as possible Guillermo Rauch is pleased to announce that Turbopack is finally stable. &lt;/p&gt;

&lt;p&gt;The new compiler is 50% faster than the previous one for initial compilation and 90% faster for Fast Refresh.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F0l29h0c3qlehwhmaj8zf.webp" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F0l29h0c3qlehwhmaj8zf.webp" alt="nextjs.org compile time" width="800" height="430"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Coming soon for Turbopack: Turbopack uses persistent cache for its fast performance.&lt;/p&gt;

&lt;h3&gt;
  
  
  Simplifying Next.js Cache API
&lt;/h3&gt;

&lt;p&gt;Next, Delba de Oliveira (DX Engineer at Vercel) shows how to make the demo application faster using caching and introduces a new experimental NextJS “use cache” directive that allows you to explicitly specify that a component or the result of a function execution should be cached. &lt;/p&gt;

&lt;p&gt;This directive works both in components, similar to “use client”, and in functions, similar to “use server”, as well as a new API “cacheTag” for cache keys and “cacheLife” for specifying how long a given cache should live.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fsa9t3hqx65oonxoe6yxw.webp" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fsa9t3hqx65oonxoe6yxw.webp" alt="use cache" width="800" height="417"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fzewvqc9zhfmwysyhjcqu.webp" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fzewvqc9zhfmwysyhjcqu.webp" alt="pertial prerendering" width="800" height="251"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fwh92dcyfclzumiv1cd9a.webp" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fwh92dcyfclzumiv1cd9a.webp" alt="dynamic/streaming/prerender/revalidate" width="800" height="144"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Developers can try these experimental changes in the canary version of Next.js. We will also soon write up our own deep-dive into the new “use cache” API.&lt;/p&gt;

&lt;h3&gt;
  
  
  Better self-hosting of Next.js
&lt;/h3&gt;

&lt;p&gt;Next, Lee Robinson (VP of Product at Vercel) appears on stage to uncover improvements for &lt;a href="https://focusreactive.com/self-hosted-next-js-when-vercel-is-not-an-option/" rel="noopener noreferrer"&gt;self-hosted Next.js&lt;/a&gt; they have shipped, re-iterating Vercel’s focus on keeping Next.js open-source first.&lt;/p&gt;

&lt;p&gt;In v15, the Vercel team has made it easier to configure how caching works by default, also simplifying the required minimal DevOps setup for self hosting Next.js. Documentation covering various deployment scenarios and templates have also been greatly improved, including the &lt;a href="https://github.com/nextjs" rel="noopener noreferrer"&gt;launch of Next.js community GitHub org&lt;/a&gt; with up-to-date redeployment recipes for community’s most popular hosting targets.&lt;/p&gt;

&lt;p&gt;Previously, Next.js used a web assembly-based image optimization library, but they were dissatisfied with the fact that this library consumed a lot of memory, so now it uses “Sharp”, which is installed automatically.&lt;/p&gt;

&lt;p&gt;Default cache control headers have been updated&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F9zy5l6weifdwf75crw7m.webp" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F9zy5l6weifdwf75crw7m.webp" alt="next14 vs next15 cache control headers" width="800" height="191"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ffb92za938d6o45nbr4o5.webp" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ffb92za938d6o45nbr4o5.webp" alt="cache controll config" width="800" height="419"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  AMA: Next.js Team
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fcwe0x3zazzikzlpascnv.webp" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fcwe0x3zazzikzlpascnv.webp" alt="AMA: Next.js Team" width="800" height="426"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Variety of topics have been covered during the Ask Me Anything session with the Next.js team, we suggest you dive into it yourself on the &lt;a href="https://www.youtube.com/live/WLHHzsqGSVQ?si=rV4XvraDRztZINiB&amp;amp;t=4915" rel="noopener noreferrer"&gt;stream recording&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  React Server Components: Elevating speed, interactivity, and user experience
&lt;/h2&gt;

&lt;p&gt;Aurora starts her talk by saying that the RSC have changed the way we build apps.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Some of the new possibilities, that come with the RSC:&lt;/strong&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Fetch data async inside the component itself&lt;/li&gt;
&lt;li&gt;Access backend resources directly from component&lt;/li&gt;
&lt;li&gt;No JS is ship to the client&lt;/li&gt;
&lt;li&gt;Streaming&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;RSC and latest next.js features help increase speed of not only websites, but also development velocity. New versions of next.js and react help you split compute load between client and a server, which will help you build an application based on your needs. Another important aspects that have beed improved, are interactivity and ability to easily build responsive apps.&lt;/p&gt;

&lt;p&gt;With the new features comes new limitations, for example you can’t access client hooks such as useState, useEffect, or browser information in such components.&lt;/p&gt;

&lt;p&gt;New development patterns to leverage the latest features and create a stunning UI:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Move data fetching closer to UI&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Instead of fetching data on top level, and make requests blocking render, move data fetching inside the component, and wrap component in Suspence boundary.&lt;/p&gt;

&lt;p&gt;Before and after&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F4pm0ombdq6tyqz36aoa3.webp" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F4pm0ombdq6tyqz36aoa3.webp" alt="render-blocking requests" width="476" height="487"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F9kxigi68eqh34yp16dup.webp" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F9kxigi68eqh34yp16dup.webp" alt="suspense requests" width="529" height="474"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Add client component and preserve request non-blocking fashion&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;If you need to make a component inside Suspence boundary client-side, you will be forced to remove server function call from it. In this case, create a promise on the top level, pass it to client component as a prop, and resolve using react new use() function. It will help you avoid render blocking and keep client component in suspense boundary, to show a static shell on initial render.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fii5do8q8ti77fs46i7v0.webp" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fii5do8q8ti77fs46i7v0.webp" alt="react use hook" width="459" height="55"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fz0o8rs6aij5m6tebi7jo.webp" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fz0o8rs6aij5m6tebi7jo.webp" alt="passing promise from RSC to RCC" width="535" height="398"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;useTransition, useOptimistic&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;These new react hooks allows you to create a smooth transitions on any user’s action. Moreover, using these hooks you are able to show instant feedback to the user and mnot depend on network connection.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;React cache&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Use new cache function to prevent firing the same request multiple times. This means we can reuse existing pattern of calling data directly inside component and maintain composition.&lt;/p&gt;

&lt;p&gt;All these new features and patters allow us build fully interactive apps without use of useState and useEffect.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Best development practices:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Resolve promises deep in the tree&lt;/li&gt;
&lt;li&gt;Display pending indicators&lt;/li&gt;
&lt;li&gt;Put state in the URL&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;New tools:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Leverage react 19 features:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;cache() - perform per-render caching for expensive func calls&lt;/li&gt;
&lt;li&gt;useOptimistic() - respond to user interactions instantly even when the request is slow&lt;/li&gt;
&lt;li&gt;use() - suspend client components as they resolve a promise passed down&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Next.js features:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;staleTimes - set state times for dynamic page segments to reuse them across subsequent requests&lt;/li&gt;
&lt;li&gt;PPR - statically renders parts of the page or layout to improve performance&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  The long and winding road: CSR to static export to SSG
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Building user interfaces in the age of AI
&lt;/h3&gt;

&lt;p&gt;Oleg starts of by defining what is great interface? Great interface is measured by the ability to help users accomplish their task as quickly and as effortlessly as possible.&lt;/p&gt;

&lt;p&gt;The most important things here are speed and reliability.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What is Generative UI?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;It is an umbrella for any project leveraging LLMs, in order to enhance user interface. It is a spectrum. Each side of the spectrum has it’s own tradeoffs and requirements. But they are united by the crucial role of LLM.&lt;/p&gt;

&lt;p&gt;Both edges of the spectrum has it’s own requirements,  tradeoffs and performance characteristics.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fy49tmqy0h4tjiky7yyrg.webp" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fy49tmqy0h4tjiky7yyrg.webp" alt="generative UI spectrum" width="800" height="331"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The slide represents the current state of LLM’s capabilities for generating UI.&lt;/p&gt;

&lt;p&gt;Generating HTML from text is a hard problem with following challenges:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Slow. takes up to 5-7s to generate a HTML page on perplexity &lt;/li&gt;
&lt;li&gt;No reliable way to deploy it&lt;/li&gt;
&lt;li&gt;Hard to sync with design system&lt;/li&gt;
&lt;li&gt;Token inefficiency&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;The Perplexity team is focused on text to object generations instead.&lt;/p&gt;

&lt;p&gt;One of the patterns guys in Perplexity use is define schemas for each presentational component and define props based on schema.&lt;/p&gt;

&lt;p&gt;Example:&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fm1wdhpskj0bmoxezt3vu.webp" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fm1wdhpskj0bmoxezt3vu.webp" alt="schema for component props" width="723" height="493"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Then use component’s schema as input for the model. This way you can create simple components with streaming functionality using LLMs.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Frbsby0alqo844cfsvwvt.webp" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Frbsby0alqo844cfsvwvt.webp" alt="component handling streaming schema" width="734" height="445"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Key Takeaways:&lt;/strong&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Use LLMs as APIs&lt;/li&gt;
&lt;li&gt;Faster and cheaper &lt;/li&gt;
&lt;li&gt;Fits well into existing flow&lt;/li&gt;
&lt;li&gt;Easy to integrate&lt;/li&gt;
&lt;li&gt;Structured output&lt;/li&gt;
&lt;li&gt;React friendly JSON data&lt;/li&gt;
&lt;li&gt;Guaranteed to be valid&lt;/li&gt;
&lt;li&gt;Schemas are useful without LLMs&lt;/li&gt;
&lt;li&gt;Streaming UX&lt;/li&gt;
&lt;li&gt;Address re-rendering issues&lt;/li&gt;
&lt;li&gt;Use OSS libs&lt;/li&gt;
&lt;li&gt;Implementation depends on your code&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  Optimizing LCP: Partial Prerendering deep dive
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Wyatt Johnson
&lt;/h3&gt;

&lt;p&gt;Wyatt Johnson, a software engineer at Vercel, provides a comprehensive overview of “Partial Prerendering”, an experimental feature aimed at optimizing the Largest Contentful Paint (LCP) by combining the best of static and dynamic rendering techniques. This method has been developed to tackle the limitations of traditional rendering methods, improving site performance and user experience.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fbe1d97oqnrtq4b6o3b5i.webp" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fbe1d97oqnrtq4b6o3b5i.webp" alt="what are Core Web Vitals?" width="800" height="419"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Wyatt begins by explaining the significance of Core Web Vitals, particularly focusing on LCP, which measures the render time of the largest image or text block visible within the viewport. He highlights the challenges faced with traditional rendering approaches where developers must choose between the speed of static rendering and the flexibility of dynamic rendering. Static rendering, while fast, cannot incorporate request data, leading to delays in rendering dynamic content. Conversely, dynamic rendering incorporates request data but often at the expense of speed due to server response times.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F9ywcuigbrrbvv86y07ie.webp" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F9ywcuigbrrbvv86y07ie.webp" alt="speed functionality tradeoff" width="800" height="408"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The session delves into the mechanics of Partial Prerendering (PPR), which allows for a static shell of a page to be generated at build time and served from the edge. Simultaneously, it sends a request back to the origin to complete the dynamic rendering. This approach minimizes the time to first byte and ensures that the page loads quickly while still supporting dynamic capabilities.&lt;/p&gt;

&lt;p&gt;Wyatt demonstrates practical applications of PPR in an e-commerce setting, showing how PPR can streamline the rendering process, reduce latency, and improve the user experience by delivering a fast initial load with dynamic capabilities intact. He further explains the technical implementation of PPR, discussing how it leverages React’s capabilities to suspend and resume rendering as needed, based on the dynamic content requirements.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Folguu0y420br1v0wslro.webp" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Folguu0y420br1v0wslro.webp" alt="enabling partial prerenderring" width="800" height="407"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;To conclude, Wyatt emphasizes the future potential of PPR in Next.js and the ongoing efforts to integrate this feature across different hosting environments. He expresses enthusiasm for the capabilities of Next.js in bridging the gap between static speed and dynamic flexibility, ultimately providing developers with the tools to build faster and more responsive web applications.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fvwmyjmf6hvlz4bu80vj8.webp" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fvwmyjmf6hvlz4bu80vj8.webp" alt="streaming on 5$ VPS" width="800" height="402"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  That's a Wrap
&lt;/h2&gt;

&lt;p&gt;Thank you for following our highlights from the Next.js Conference 2024, we enjoy sharing these with the community, as we eagerly follow all the developments in the Next.js space.&lt;/p&gt;

&lt;p&gt;Follow our blog for more Next.js content and practical use cases that we have solved building a variety of Next.js apps; as well as the practices we developed through our &lt;a href="https://focusreactive.com/nextjs-performance-audit/" rel="noopener noreferrer"&gt;Performance and SEO audits&lt;/a&gt; for our clients.&lt;/p&gt;

&lt;p&gt;We are excited about the direction Next.js team took, prioritizing API simplicity,increased transparency and support towards non-Vercel clients, which is dearly important for us. We support the renewed open source spirit and simplicity it brings for deployment of Next.js to own cloud environments.&lt;/p&gt;

</description>
    </item>
    <item>
      <title>Top React Conferences to Attend in 2024</title>
      <dc:creator>Aleksei Zhilyuk</dc:creator>
      <pubDate>Tue, 27 Aug 2024 10:31:42 +0000</pubDate>
      <link>https://forem.com/focusreactive/top-react-conferences-to-attend-in-2024-54n0</link>
      <guid>https://forem.com/focusreactive/top-react-conferences-to-attend-in-2024-54n0</guid>
      <description>&lt;p&gt;The React community continues to grow and evolve, making 2024 an exciting year for developers who want to connect, learn, and share their knowledge. Whether you're an experienced pro or just getting started, attending a React conference is an excellent way to stay up-to-date with the latest trends, tools, and best practices. Below, we've outlined some of the top React conferences coming up in 2024 that you won't want to miss.&lt;/p&gt;

&lt;p&gt;For a full list of events, check out the &lt;a href="https://gitnation.com/events/react-conferences" rel="noopener noreferrer"&gt;React events&lt;/a&gt; on GitNation.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fow6v1naki4jsrvwt33mm.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fow6v1naki4jsrvwt33mm.png" alt="React Summit US logo" width="300" height="300"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  1. React Summit US
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Date:&lt;/strong&gt; November 19 - 22, 2024&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Location:&lt;/strong&gt; New York, USA&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://reactsummit.us/" rel="noopener noreferrer"&gt;React Summit US&lt;/a&gt; is one of the largest React gatherings worldwide, bringing together industry leaders to discuss the latest in React technology, state management, performance optimization, and more. Whether you're interested in deep technical dives or broader industry trends, you'll find sessions and workshops that fit your needs.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fk0dh0gwid220j44qa8on.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fk0dh0gwid220j44qa8on.png" alt="React Day Berlin logo" width="300" height="300"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  2. React Day Berlin
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Date:&lt;/strong&gt; December 13 - 16, 2024&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Location:&lt;/strong&gt; Berlin, Germany&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Berlin, a vibrant tech hub, hosts &lt;a href="https://reactday.berlin/" rel="noopener noreferrer"&gt;React Day Berlin&lt;/a&gt;, a must-attend event for React developers in Europe. This conference offers a perfect blend of technical sessions, hands-on workshops, and networking opportunities. Expect to hear from top-notch speakers, including React core team members and contributors from the open-source community.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fgins8gmr0urqrn92eup2.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fgins8gmr0urqrn92eup2.png" alt="React Advanced London logo" width="300" height="300"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  3. React Advanced London
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Date:&lt;/strong&gt; October 25 - 28, 2024&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Location:&lt;/strong&gt; London, UK&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://reactadvanced.com/" rel="noopener noreferrer"&gt;React Advanced London&lt;/a&gt; is one of the most anticipated React events. Known for its diverse lineup of speakers and in-depth sessions, this conference covers everything from fundamental React concepts to advanced design patterns. It's a great opportunity to meet fellow developers and immerse yourself in the tech scene.&lt;/p&gt;

&lt;h2&gt;
  
  
  Meet the FocusReactive Team
&lt;/h2&gt;

&lt;p&gt;FocusReactive is a co-organizer of these conferences, and our team will be actively participating in all of them. We’d love to connect with you—whether to chat about the latest trends in React, explore potential collaborations, or just say hello. If you're attending any of these events, don't hesitate to reach out to us!&lt;/p&gt;

&lt;h2&gt;
  
  
  Conclusion
&lt;/h2&gt;

&lt;p&gt;With so many incredible events on the horizon, 2024 is set to be a fantastic year for the React community. Each of these conferences offers unique opportunities to learn, network, and grow as a developer. Be sure to grab your tickets and join the community at these exciting gatherings.&lt;/p&gt;

&lt;p&gt;For more details on these and other React conferences, check out the full &lt;a href="https://gitnation.com/events/react-conferences" rel="noopener noreferrer"&gt;React conferences list&lt;/a&gt; by GitNation.&lt;/p&gt;

</description>
      <category>react</category>
    </item>
    <item>
      <title>How to rank Higher on Google / How NextJS can improve SEO</title>
      <dc:creator>Aleksei Zhilyuk</dc:creator>
      <pubDate>Wed, 08 Nov 2023 09:04:25 +0000</pubDate>
      <link>https://forem.com/focusreactive/how-to-rank-higher-on-google-how-nextjs-can-improve-seo-4bpk</link>
      <guid>https://forem.com/focusreactive/how-to-rank-higher-on-google-how-nextjs-can-improve-seo-4bpk</guid>
      <description>&lt;p&gt;Creating a website is just the first step towards its success. One of the most important factors in the success of any website is its search engine optimization. SEO is the process of optimizing a website to increase its search visibility and attract more traffic through search engines. There are many factors that impact SEO, one of which is the choice of a suitable website development technology.&lt;/p&gt;

&lt;p&gt;In this article, we will discuss how using NextJS can help improve the SEO of your website and what steps you can take to achieve a higher rank in search engines like Google.&lt;/p&gt;

&lt;h3&gt;
  
  
  What is NextJS?
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://focusreactive.com/next-js-experts" rel="noopener noreferrer"&gt;NextJS&lt;/a&gt; is a popular React framework used for developing fast, scalable, and powerful web applications. It also allows for easy creation of universal applications with server-side rendering SSR, SSG, and client-side applications using the same code.&lt;/p&gt;

&lt;h2&gt;
  
  
  How can NextJS help improve SEO?
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Server-side rendering
&lt;/h3&gt;

&lt;p&gt;One of the most significant advantages of NextJS is the ability to use server-side rendering. This means that web pages can be rendered on the server and then sent to the client's browser as fully rendered pages, improving site speed and perception. SSR also helps search engine robots better index site pages, which can improve SEO.&lt;/p&gt;

&lt;h3&gt;
  
  
  Static site generation
&lt;/h3&gt;

&lt;p&gt;NextJS also allows for the creation of static sites, which means that website pages can be pre-generated during application build time. This reduces page load time and improves SEO. Static sites are also easier to cache and can reduce the number of requests to the server.&lt;/p&gt;

&lt;h3&gt;
  
  
  Image optimization
&lt;/h3&gt;

&lt;p&gt;NextJS automatically optimizes images, which can help reduce page load time. This can also help improve SEO, as search engines consider page load time when ranking websites. By optimizing images, you can help ensure that your website loads quickly and is more likely to rank higher in search engine results pages.&lt;/p&gt;

&lt;h3&gt;
  
  
  Code splitting
&lt;/h3&gt;

&lt;p&gt;NextJS supports code splitting, which allows for the separation of code into smaller chunks that can be loaded on demand. This reduces the initial load time of a page and improves user experience. It also helps search engines crawl and index pages faster, which can improve SEO.&lt;/p&gt;

&lt;h3&gt;
  
  
  Meta tags and SEO optimization
&lt;/h3&gt;

&lt;p&gt;NextJS makes it easy to add meta tags to web pages, which are crucial for SEO. Meta tags provide information about a web page to search engines and social media platforms, which can improve its visibility and ranking. NextJS also supports SEO optimization features like canonical tags and structured data, which can help further improve your website's SEO.&lt;/p&gt;

&lt;h3&gt;
  
  
  Page speed
&lt;/h3&gt;

&lt;p&gt;In addition to its SEO benefits, NextJS can also help improve your website's page speed. By using features like server-side rendering and static site generation, NextJS can significantly reduce the initial load time of your website's pages. This means that your website can load faster, which can lead to a better user experience and higher search engine rankings. In fact, websites built with NextJS often achieve high scores on Google's PageSpeed Insights tool, which measures page speed performance. By using NextJS, you can ensure that your website not only ranks well in search engines but also provides a fast and seamless experience for your users.&lt;/p&gt;

&lt;p&gt;In conclusion, using &lt;a href="https://focusreactive.com/next-js-experts" rel="noopener noreferrer"&gt;NextJS&lt;/a&gt; can help improve the SEO of your website by leveraging its features like server-side rendering, static site generation, image optimization, code splitting, and SEO optimization features. By implementing these features, you can help ensure that your website loads quickly, is more likely to rank higher in search engine results pages, and provides a better user experience.&lt;/p&gt;

&lt;p&gt;Please find the links to read more about how NextJS can improve your SEO:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://nextjs.org/docs/basic-features/image-optimization" rel="noopener noreferrer"&gt;https://nextjs.org/docs/basic-features/image-optimization&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://nextjs.org/docs/migrating/from-react-router#code-splitting" rel="noopener noreferrer"&gt;https://nextjs.org/docs/migrating/from-react-router#code-splitting&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://nextjs.org/docs/api-reference/next/head" rel="noopener noreferrer"&gt;https://nextjs.org/docs/api-reference/next/head&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://developers.google.com/search/docs/crawling-indexing/special-tags" rel="noopener noreferrer"&gt;https://developers.google.com/search/docs/crawling-indexing/special-tags&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://nextjs.org/docs/basic-features/pages#static-generation" rel="noopener noreferrer"&gt;https://nextjs.org/docs/basic-features/pages#static-generation&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://nextjs.org/docs/basic-features/pages#server-side-rendering" rel="noopener noreferrer"&gt;https://nextjs.org/docs/basic-features/pages#server-side-rendering&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://developers.google.com/search/docs/fundamentals/seo-starter-guide" rel="noopener noreferrer"&gt;https://developers.google.com/search/docs/fundamentals/seo-starter-guide&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>nextjs</category>
      <category>seo</category>
      <category>jamstack</category>
      <category>webdev</category>
    </item>
    <item>
      <title>How we used Neural network, Replicate.com, and WebGL to generate photorealistic 3D avatars for the GitNation portal`s users</title>
      <dc:creator>Aleksei Zhilyuk</dc:creator>
      <pubDate>Wed, 08 Nov 2023 08:46:59 +0000</pubDate>
      <link>https://forem.com/focusreactive/how-we-used-neural-network-replicatecom-and-webgl-to-generate-photorealistic-3d-avatars-for-the-gitnation-portals-users-3cim</link>
      <guid>https://forem.com/focusreactive/how-we-used-neural-network-replicatecom-and-webgl-to-generate-photorealistic-3d-avatars-for-the-gitnation-portals-users-3cim</guid>
      <description>&lt;p&gt;Avatars are an integral part of any social portal. It is important for people to see the person they are interacting with, photography creates a personal connection and enhances the user experience. But what if we go further and use AI and WebGL to turn every user photo into an interactive 3D avatar?&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fdjogc7y9xbufh663jajs.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fdjogc7y9xbufh663jajs.gif" alt="image 1" width="506" height="380"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Requirements for the solution - to work on one photo uploaded by the user. Be cheap and reliable enough to process thousands of photos.&lt;/p&gt;

&lt;p&gt;At the moment, there are several technologies that allow you to reconstruct 3D portrait data from a photograph of a person, but the only one reliable enough for production is the depth map.&lt;/p&gt;

&lt;h2&gt;
  
  
  What is a depth map?
&lt;/h2&gt;

&lt;p&gt;The depth map is an image complementary to a photo where each pixel stores the depth of the scene.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ftv0kc0c2xkukdhrppq9c.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ftv0kc0c2xkukdhrppq9c.png" alt="image 2" width="682" height="512"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The web does not have built-in components for displaying images with a depth map. This requires WebGL, some JS and a custom shader. Fortunately, there are ready-made components like &lt;a href="https://www.npmjs.com/package/react-depth-map" rel="noopener noreferrer"&gt;react-depth-map&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  How to get a depth map for a photo?
&lt;/h2&gt;

&lt;p&gt;Previously, the only way to get a depth map was to scan the surface with laser scanning at the time of photographing. Luckily, advances in AI and ML have made it possible to reconstruct pixel depth from a single photo. You can read more about the method here, and the practical &lt;a href="https://pytorch.org/hub/intelisl_midas_v2/" rel="noopener noreferrer"&gt;implementation of the neural network is at the PyTorch hub&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;You can play online and &lt;a href="https://huggingface.co/spaces/jonjhiggins/MiDaS" rel="noopener noreferrer"&gt;make a depth map for your photo on Huggling face&lt;/a&gt;. I tested Midas on 10 user photos and it became clear that the reliability is high enough, it can work.&lt;/p&gt;

&lt;h2&gt;
  
  
  Implementation
&lt;/h2&gt;

&lt;p&gt;The chosen solution was to store the path to the depth map in a separate field in the database, generate a depth map daily with a cron job, save the URL to the file in that field, and clear its value when a user uploads a new photo. If the field is empty, then there is no depth map for this user and we display the standard &lt;code&gt;&amp;lt;image&amp;gt;&lt;/code&gt; tag.&lt;/p&gt;

&lt;h2&gt;
  
  
  Run Midas as a Cron job
&lt;/h2&gt;

&lt;p&gt;This was a remarkable problem as the neural network is extremely slow without a GPU. The first thing I tried was to buy a GPU instance from &lt;a href="https://runpod.io" rel="noopener noreferrer"&gt;https://runpod.io&lt;/a&gt; and run the project there. This approach lead to dozens of problems with the installation and after their resolution, the cost of renting a GPU instance still remained a problem.&lt;/p&gt;

&lt;p&gt;Having searched a little, I came across a wonderful service &lt;a href="https://replicate.com/" rel="noopener noreferrer"&gt;https://replicate.com/&lt;/a&gt; - these guys have already deployed all known neural networks, including Midas, into the cloud. &lt;a href="https://replicate.com/explore" rel="noopener noreferrer"&gt;Look at the entire list&lt;/a&gt;, you may find a solution to your other problems!&lt;/p&gt;

&lt;p&gt;The ultimate cron job for generating avatars is a Node.js script that runs daily:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;for (const user of usersWithoutDepthMaps) {
    queue.enqueue(async () =&amp;gt; {
        await updateDepthMapForUser(user);
    });
}

function updateDepthMapForUser(user: User) {
    const output = await replicate.run('cjwbw/midas:a6ba5798f04f80d3b314de0f0a62277f21ab3503c60c84d4817de83c5edfdae0', {
        input: {
            model_type: 'dpt_beit_large_512',
            image: user.avatar,
        },
    });
    await downloadFile(output, getDetphMapFileName(user));
    const depthMapUrl = await uploadFileToCloudianryNode(getDetphMapFileName(user));

    await db.user.update({
        where: {
            id: user.id,
        },
        data: {
            avatarDepthMap: depthMapUrl as string,
        },
    });

    console.log('Updated depth map for', user.name);
}

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Display
&lt;/h2&gt;

&lt;p&gt;We have a depth map. How to display them? Because The GitNation portal is written in Next.js it makes sense to use &lt;a href="https://www.npmjs.com/package/react-depth-map" rel="noopener noreferrer"&gt;react-depth-map&lt;/a&gt;. The component using it looks something like this:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;export function Public3dAvatar({ user }) {
    return (
        &amp;lt;ImageDepthMap
            key={user.id}
            originalImg={getSquareCloudinaryImage(user.avatar)}
            depthImg={getSquareCloudinaryImage(user.avatarDepthMap)}
            verticalThreshold={35}
            horizontalThreshold={35}
            multiplier={1}
        /&amp;gt;
    );
}

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Unfortunately, out of the box, react-depth-map gives a strange artifact where the avatar splits into two:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fgtn39hx9qcsemkbe9k5w.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fgtn39hx9qcsemkbe9k5w.gif" alt="image 3" width="508" height="378"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The reason is that the shader is written in such a way that the back of the scene is displaced in the opposite direction from the foreground. This works well for depth maps with multiple depth layers, but often breaks avatars. The solution was to fork the component and fix the pixel shader, greatly reducing the back clipping.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F8k11rsaixu1vnuh4al5d.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F8k11rsaixu1vnuh4al5d.jpg" alt="image 4" width="800" height="452"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;And the final result:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fil5z40v3qeouclk0p0ci.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fil5z40v3qeouclk0p0ci.gif" alt="image 5" width="506" height="380"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Conclusion
&lt;/h2&gt;

&lt;p&gt;Seeing the progress of AI technology is an absolute excitement! It is hard to predict how they will change the technology in the next few years, yet they have already given a fresh, previously impossible-to-have look to our portal, all speakers have received nearly free 3d avatars, and users have received a fresh design solution.&lt;/p&gt;

&lt;p&gt;Also here is &lt;a href="https://portal.gitnation.org/person/Adron_Hall" rel="noopener noreferrer"&gt;the page&lt;/a&gt; where you can unlock the insights of Adron - a seasoned expert in C#, JavaScript, Go, and a variety of other languages. &lt;br&gt;
Gain a unique polyglot perspective and discover the optimal technology stacks for your projects.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>webgl</category>
      <category>javascript</category>
    </item>
  </channel>
</rss>
