{"id":31636,"date":"2024-06-03T15:39:50","date_gmt":"2024-06-03T20:39:50","guid":{"rendered":"https:\/\/wpengine.com\/builders\/?p=31636"},"modified":"2024-06-04T08:29:41","modified_gmt":"2024-06-04T13:29:41","slug":"isr-support-for-next-js-faust-js-on-wp-engines-atlas","status":"publish","type":"post","link":"https:\/\/wpengine.com\/builders\/isr-support-for-next-js-faust-js-on-wp-engines-atlas\/","title":{"rendered":"ISR Support for Next.js\/Faust.js\u00a0 on WP Engine\u2019s Atlas"},"content":{"rendered":"\n<p>WP Engine\u2019s Atlas is <strong>THE<\/strong> headless WordPress hosting platform.&nbsp; In this article, I will discuss and guide you through the easy implementation of the latest feature on Atlas:&nbsp; Support for ISR on <a href=\"http:\/\/next.js\/Faust.js\">Next.js\/Faust.js<\/a>.&nbsp; By the end of this article, you will have a better understanding of ISR and using Atlas to support it with Next.js\/Faust.js<\/p>\n\n\n\n<div class=\"wp-block-group has-polar-background-color has-background is-layout-flow wp-container-core-group-is-layout-7a03825d wp-block-group-is-layout-flow\" style=\"padding-top:var(--wp--preset--spacing--30);padding-right:var(--wp--preset--spacing--40);padding-bottom:var(--wp--preset--spacing--30);padding-left:var(--wp--preset--spacing--40)\">\n<p class=\"has-large-font-size\"><strong>Table of Contents<\/strong><\/p>\n\n\n\n<ul class=\"wp-block-list\" id=\"Prerequisites\">\n<li><a href=\"#prerequisites\">Prerequisites <\/a><\/li>\n\n\n\n<li><a href=\"#what-is-isr\">What is ISR?<\/a><\/li>\n\n\n\n<li><a href=\"#why-use-it-in-headless-wp\">Why Use it in headless WordPress?<\/a><\/li>\n\n\n\n<li><a href=\"#configuring-nextjs-with-atlas-isr\">Configuring Next.js with Atlas ISR Support<\/a><\/li>\n\n\n\n<li><a href=\"#faustjs-wrapper\">Faust.js Wrapper<\/a><\/li>\n\n\n\n<li><a href=\"#atlas-user-portal\">Atlas User Portal<\/a><\/li>\n\n\n\n<li><a href=\"#limitations\">Limitations<\/a><\/li>\n\n\n\n<li><a href=\"#conclusion\">Conclusion<\/a><\/li>\n<\/ul>\n<\/div>\n\n\n\n<p><\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"prerequisites\">Prerequisites<\/h2>\n\n\n\n<p>Before reading this article, you should have the following prerequisites checked off:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Basic knowledge of Next.js and Faust.js.<\/li>\n\n\n\n<li>An Atlas account and environment set up.<\/li>\n\n\n\n<li>Node.js and npm are installed on your local machine.<\/li>\n<\/ul>\n\n\n\n<p>If you do not and need a basic understanding of Next.js and Faust.js, please visit the docs:<\/p>\n\n\n\n<p><a href=\"https:\/\/nextjs.org\/docs\">https:\/\/nextjs.org\/docs<\/a><\/p>\n\n\n\n<p><a href=\"https:\/\/faustjs.org\/tutorial\/get-started-with-faust\">https:\/\/faustjs.org\/tutorial\/get-started-with-faust<\/a><\/p>\n\n\n\n<div class=\"wp-block-group has-base-color has-heliotrope-background-color has-text-color has-background has-link-color wp-elements-60580c77f35127ab4c58efd3ae854863 has-global-padding is-layout-constrained wp-container-core-group-is-layout-9b866ece wp-block-group-is-layout-constrained\" style=\"border-radius:12px;margin-bottom:var(--wp--preset--spacing--30);padding-top:var(--wp--preset--spacing--30);padding-right:var(--wp--preset--spacing--30);padding-bottom:var(--wp--preset--spacing--30);padding-left:var(--wp--preset--spacing--30)\">\n<div class=\"wp-block-group alignwide is-content-justification-left is-layout-flex wp-container-core-group-is-layout-4bb02320 wp-block-group-is-layout-flex\" style=\"padding-top:0;padding-right:0;padding-bottom:0;padding-left:0\">\n<p style=\"font-size:26px;font-style:normal;font-weight:700;letter-spacing:-1px;line-height:1\">Headless<br>Platform<\/p>\n\n\n\n<p class=\"has-small-font-size wp-container-content-9cfa9a5a\" style=\"line-height:1.5\">The all-in-one platform for <br>radically fast headless sites.<\/p>\n\n\n\n<div class=\"wp-block-buttons is-content-justification-right is-nowrap is-layout-flex wp-container-core-buttons-is-layout-b315634e wp-block-buttons-is-layout-flex\">\n<div class=\"wp-block-button is-style-outline-base\"><a class=\"wp-block-button__link wp-element-button\" href=\"https:\/\/wpeng.in\/headless-platform\/\" style=\"border-radius:99px;padding-top:10px;padding-right:24px;padding-bottom:10px;padding-left:24px\" target=\"_blank\" rel=\"noreferrer noopener\">Try for free \u2192<\/a><\/div>\n<\/div>\n<\/div>\n<\/div>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"what-is-isr\">What is ISR?<\/h2>\n\n\n\n<p><a href=\"https:\/\/nextjs.org\/docs\/pages\/building-your-application\/data-fetching\/incremental-static-regeneration\">Incremental Static Regeneration (ISR) is a feature introduced in Next.js<\/a> that allows you to update static content after it has been deployed. Unlike traditional static site generation, which regenerates all pages at build time, ISR enables you to regenerate individual pages on a timed interval as new requests come in. This ensures that your site remains highly performant while still delivering up-to-date content to your users.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"why-use-it-in-headless-wp\">Why Use it in headless WordPress?<\/h3>\n\n\n\n<p>In headless WordPress, the front end is decoupled from the WordPress backend, often using Next.js and Faust.js to render the website. This architecture offers several advantages, such as improved performance, enhanced security, and greater flexibility in choosing front-end technologies.<\/p>\n\n\n\n<p>However, one challenge with headless WordPress is ensuring that content changes in WordPress are reflected on the front end without sacrificing performance. This is where ISR becomes crucial. By leveraging ISR, you can achieve the following benefits:<\/p>\n\n\n\n<p><strong>Up-to-date Content<\/strong>: ISR allows your site to fetch the latest content updates from WordPress at specified intervals. For example, by setting a revalidation time of 60 seconds, Next.js will check for content updates every 60 seconds. When a user visits a page, the first user will receive stale content, but subsequent requests will serve the updated content, ensuring minimal delay in content updates.<\/p>\n\n\n\n<p><strong>Enhanced Performance<\/strong>: Since ISR updates only the specific pages that need regeneration at set intervals, your site remains fast and responsive. The initial load times are minimized, and only the changed content is updated, reducing the server load and build times.<\/p>\n\n\n\n<p><strong>SEO Benefits<\/strong>: Static pages are highly favored by search engines due to their speed and reliability. With ISR, you maintain the SEO advantages of static generation while ensuring that your content is always fresh and relevant.<\/p>\n\n\n\n<p><strong>Scalability<\/strong>: ISR enables your site to handle large volumes of content efficiently. Whether you&#8217;re running a blog with frequent updates or an e-commerce site with dynamic product listings, ISR ensures that your site scales seamlessly.<\/p>\n\n\n\n<p>All those benefits got me stoked!&nbsp; Let\u2019s get it on our Next.js and Faust.js sites!<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"configuring-nextjs-with-atlas-isr\">Configuring Next.js with Atlas ISR Support<\/h2>\n\n\n\n<p>Here are the docs link to the <a href=\"https:\/\/developers.wpengine.com\/docs\/atlas\/framework-guides\/next-js\/nextjs-isr-support\/\">Atlas support for ISR<\/a>.<\/p>\n\n\n\n<p>In your Next.js project, go to your terminal and install the <a href=\"https:\/\/www.npmjs.com\/package\/@wpengine\/atlas-next\">@wpengine\/atlas-next package<\/a>:<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-1\" data-shcb-language-name=\"CSS\" data-shcb-language-slug=\"css\"><span><code class=\"hljs language-css shcb-code-table shcb-line-numbers\"><span class='shcb-loc'><span><span class=\"hljs-selector-tag\">npm<\/span> <span class=\"hljs-selector-tag\">install<\/span> <span class=\"hljs-selector-tag\">--save<\/span> <span class=\"hljs-keyword\">@wpengine<\/span>\/atlas-next\n<\/span><\/span><\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-1\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">CSS<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">css<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p>This package provides improved support on Atlas.<\/p>\n\n\n\n<p>Once you install it, ensure it is in your project by navigating to your <code>package.json<\/code> file at the root of your project:<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-2\" data-shcb-language-name=\"JavaScript\" data-shcb-language-slug=\"javascript\"><span><code class=\"hljs language-javascript shcb-code-table shcb-line-numbers\"><span class='shcb-loc'><span><span class=\"hljs-string\">\"dependencies\"<\/span>: {\n<\/span><\/span><span class='shcb-loc'><span>   <span class=\"hljs-string\">\"@wpengine\/atlas-next\"<\/span>: <span class=\"hljs-string\">\"^1.1.0\"<\/span>,\n<\/span><\/span><span class='shcb-loc'><span>   <span class=\"hljs-string\">\"autoprefixer\"<\/span>: <span class=\"hljs-string\">\"10.4.14\"<\/span>,\n<\/span><\/span><span class='shcb-loc'><span>   <span class=\"hljs-string\">\"eslint\"<\/span>: <span class=\"hljs-string\">\"8.44.0\"<\/span>,\n<\/span><\/span><span class='shcb-loc'><span>   <span class=\"hljs-string\">\"eslint-config-next\"<\/span>: <span class=\"hljs-string\">\"13.4.9\"<\/span>,\n<\/span><\/span><span class='shcb-loc'><span>   <span class=\"hljs-string\">\"next\"<\/span>: <span class=\"hljs-string\">\"14.1.2\"<\/span>,\n<\/span><\/span><span class='shcb-loc'><span>   <span class=\"hljs-string\">\"postcss\"<\/span>: <span class=\"hljs-string\">\"8.4.25\"<\/span>,\n<\/span><\/span><span class='shcb-loc'><span>   <span class=\"hljs-string\">\"react\"<\/span>: <span class=\"hljs-string\">\"18.2.0\"<\/span>,\n<\/span><\/span><span class='shcb-loc'><span>   <span class=\"hljs-string\">\"react-dom\"<\/span>: <span class=\"hljs-string\">\"18.2.0\"<\/span>,\n<\/span><\/span><span class='shcb-loc'><span>   <span class=\"hljs-string\">\"tailwindcss\"<\/span>: <span class=\"hljs-string\">\"3.3.2\"<\/span>\n<\/span><\/span><span class='shcb-loc'><span> }\n<\/span><\/span><span class='shcb-loc'><span>\n<\/span><\/span><\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-2\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">JavaScript<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">javascript<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p>Now that you have verified the proper installation, staying at the root of your project,&nbsp; modify your <code>next.config.js<\/code> file like so:<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-3\" data-shcb-language-name=\"PHP\" data-shcb-language-slug=\"php\"><span><code class=\"hljs language-php shcb-code-table shcb-line-numbers\"><span class='shcb-loc'><span><span class=\"hljs-keyword\">const<\/span> { withAtlasConfig } = <span class=\"hljs-keyword\">require<\/span>(<span class=\"hljs-string\">\"@wpengine\/atlas-next\"<\/span>);\n<\/span><\/span><span class='shcb-loc'><span>\n<\/span><\/span><span class='shcb-loc'><span>\n<\/span><\/span><span class='shcb-loc'><span><span class=\"hljs-comment\">\/** <span class=\"hljs-doctag\">@type<\/span> {import('next').NextConfig} *\/<\/span>\n<\/span><\/span><span class='shcb-loc'><span><span class=\"hljs-keyword\">const<\/span> nextConfig = {\n<\/span><\/span><span class='shcb-loc'><span> <span class=\"hljs-comment\">\/\/ Your existing Next.js config<\/span>\n<\/span><\/span><span class='shcb-loc'><span>};\n<\/span><\/span><span class='shcb-loc'><span>\n<\/span><\/span><span class='shcb-loc'><span>\n<\/span><\/span><span class='shcb-loc'><span>module.exports = withAtlasConfig(nextConfig);\n<\/span><\/span><span class='shcb-loc'><span>\n<\/span><\/span><\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-3\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">PHP<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">php<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<h3 class=\"wp-block-heading\" id=\"faustjs-wrapper\">Faust.js Wrapper<\/h3>\n\n\n\n<p>If you are using Faust.js, all you need to do is modify your <code>next.config.js<\/code> file using the <code>withFaust<\/code> wrapper:<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-4\" data-shcb-language-name=\"PHP\" data-shcb-language-slug=\"php\"><span><code class=\"hljs language-php shcb-code-table shcb-line-numbers\"><span class='shcb-loc'><span><span class=\"hljs-keyword\">const<\/span> { withFaust } = <span class=\"hljs-keyword\">require<\/span>(<span class=\"hljs-string\">\"@faustwp\/core\"<\/span>)\n<\/span><\/span><span class='shcb-loc'><span><span class=\"hljs-keyword\">const<\/span> { withAtlasConfig } = <span class=\"hljs-keyword\">require<\/span>(<span class=\"hljs-string\">\"@wpengine\/atlas-next\"<\/span>)\n<\/span><\/span><span class='shcb-loc'><span>\n<\/span><\/span><span class='shcb-loc'><span><span class=\"hljs-comment\">\/** <span class=\"hljs-doctag\">@type<\/span> {import('next').NextConfig} *\/<\/span>\n<\/span><\/span><span class='shcb-loc'><span><span class=\"hljs-keyword\">const<\/span> nextConfig = {\n<\/span><\/span><span class='shcb-loc'><span>  <span class=\"hljs-comment\">\/\/ Your existing Next.js config<\/span>\n<\/span><\/span><span class='shcb-loc'><span>}\n<\/span><\/span><span class='shcb-loc'><span>\n<\/span><\/span><span class='shcb-loc'><span>module.exports = withFaust(withAtlasConfig(nextConfig))\n<\/span><\/span><\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-4\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">PHP<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">php<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p>Next, we need to verify that it works.&nbsp; Run your app in dev mode via <code>npm run dev <\/code>and you should see this output in your terminal:<\/p>\n\n\n\n<p><img loading=\"lazy\" decoding=\"async\" width=\"668\" height=\"152\" src=\"https:\/\/lh7-us.googleusercontent.com\/docsz\/AD_4nXdJAKbSiPEjH5JkICltauDXKKs01D73MYLgBkoBilFNP8Z_uOOKw_p0frFeZgn9y0GX_njJPmtgXwdamA1a0KEsQD7fzpQlMm8Hon-Gtyu6KRz4kKYEFrsjV-sQp3vkBE5SJMk2R4rF38eHZpOyVlHNbHQ4?key=vNrM4w3vNDQKrtMXRFOBxw\"><\/p>\n\n\n\n<p>Stoked!!! It works!!!<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"atlas-user-portal\">Atlas User Portal<\/h3>\n\n\n\n<p>We now have ISR set up with the proper configuration. The last steps are to connect our remote repository to Atlas, git push any changes, and observe ISR working in all its cache invalidation glory.<\/p>\n\n\n\n<p>If you have not connected your local project to a remote repository, go ahead and do so.&nbsp; Atlas supports GitHub, Bitbucket and GitLab.<\/p>\n\n\n\n<p><img loading=\"lazy\" decoding=\"async\" width=\"677\" height=\"232\" src=\"https:\/\/lh7-us.googleusercontent.com\/docsz\/AD_4nXf-xcq2YpHXdvZxzItHiowwE5BW8uiLbhUxzpQbqsyRUvn1uX8x1XUhgJRf9XADIpBBNJvgphHhQzLo4SPB_N61XgnkD1bMvTpudZTMq31b6sZZacQM9tvm09l6ykHIXt_hmb_AET5bQJ5dHdXbCSn26kRp?key=vNrM4w3vNDQKrtMXRFOBxw\"><\/p>\n\n\n\n<p>Once you have connected your remote repository and added all your necessary environment variables, go ahead and build the app. If you have done this with an existing repo, you can <code>git push<\/code> the change, which will trigger a build.<\/p>\n\n\n\n<p>When the application is finished in the build step, you are on the <em>main<\/em> page of the Atlas portal.&nbsp; Navigate over to the <strong>Logs<\/strong> subpage:<\/p>\n\n\n\n<p><img loading=\"lazy\" decoding=\"async\" width=\"561\" height=\"282\" src=\"https:\/\/lh7-us.googleusercontent.com\/docsz\/AD_4nXfQzW-14I5kTYJPH2ehTwa7Vtbz1myG9MKWLOZAViG0fPKobXQzBuG1BSFqC8XTyANnN5FtHXEb5WSoRiU4XGAE0FJKmD8JwnYMD3IsvEj0-4ekOefn_ilxY6cGRcxSKiACpfa6kKm5L4Sp7nWiHC7-A0Ey?key=vNrM4w3vNDQKrtMXRFOBxw\"><\/p>\n\n\n\n<p>In the <em>Logs<\/em> subpage, click the <strong>&#8220;Show logs&#8221;<\/strong> button on the Runtime option:<\/p>\n\n\n\n<p><img loading=\"lazy\" decoding=\"async\" width=\"654\" height=\"330\" src=\"https:\/\/lh7-us.googleusercontent.com\/docsz\/AD_4nXfIvIKl4D8DxAVuysdpQQtASyeziLFLzSNeawlheQtj8F5N6c6lESZfuBYGPWA96cE_rJ3qJ6BaYOnVOLs_JxHZDG340kV_Ux2ftP8f8aqoLsRmQArh4Bpn-gGNKhRG0BIzBaUSOJOw1ottwQA-VGLUWqBF?key=vNrM4w3vNDQKrtMXRFOBxw\"><\/p>\n\n\n\n<p>You should see the same output focusing on line 6 as you did in your terminal to ensure it&#8217;s working properly:<\/p>\n\n\n\n<p><img loading=\"lazy\" decoding=\"async\" width=\"653\" height=\"359\" src=\"https:\/\/lh7-us.googleusercontent.com\/docsz\/AD_4nXcz3hyWek-K-EBn-Sr5ObnDXj-0UK40OJZ_cEWVFEJxAyy02CissNYoO9Pg7PbV1lXF3MRdhD4n-UEkw6eVMtuGgGvLf3ax0FSA0Sh-ggoS-eNLLe7WbRmhYtNN-pwRZ0mDLGM4fas9LBDYt1QNA78tlLxp?key=vNrM4w3vNDQKrtMXRFOBxw\"><\/p>\n\n\n\n<p>Awesome!!! It is implemented and working in runtime.&nbsp; Now, when you edit or input new content in your WP backend, and then visit the live URL of the Atlas site you just deployed, the ISR should work on the timed interval you set it to like so:<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"1920\" height=\"1080\" src=\"https:\/\/wpengine.com\/builders\/wp-content\/uploads\/2024\/06\/Atlas-ISR-Support.gif\" alt=\"\" class=\"wp-image-31632\"\/><\/figure>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"limitations\">Limitations<\/h3>\n\n\n\n<p>Just a note, the docs state that this feature is currently in the&nbsp;<em>Beta<\/em>&nbsp;phase, which entails:<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li>Functional completeness, offering comprehensive support for Next.js Incremental Static Regeneration.<\/li>\n\n\n\n<li>Ongoing assessment by Atlas Platform teams regarding the feature\u2019s effect on website performance and application scalability.<\/li>\n<\/ol>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"conclusion\">Conclusion<\/h2>\n\n\n\n<p>Implementing Incremental Static Regeneration (ISR) with Next.js and Faust.js on WP Engine\u2019s Atlas platform is a game-changer for maintaining performance and up-to-date content in a headless WordPress setup. By following the steps outlined in this guide, you can leverage ISR to ensure your site remains both fast and current, without the need for full rebuilds.&nbsp;<\/p>\n\n\n\n<p>The integration with Atlas also simplifies the deployment and management process, providing a seamless workflow from development to production.&nbsp;<br>Get stoked on ISR and Atlas to deliver awesome user experiences and keep your site at the edge of web performance and content freshness.&nbsp; As always, we look forward to hearing your feedback, thoughts, and projects so hit us up in our headless <a href=\"https:\/\/discord.com\/invite\/headless-wordpress-836253505944813629\">Discord<\/a>!<\/p>\n\n\n\n<p><\/p>\n","protected":false},"excerpt":{"rendered":"<p>WP Engine\u2019s Atlas is THE headless WordPress hosting platform.&nbsp; In this article, I will discuss and guide you through the easy implementation of the latest feature on Atlas:&nbsp; Support for [&hellip;]<\/p>\n","protected":false},"author":20,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_EventAllDay":false,"_EventTimezone":"","_EventStartDate":"","_EventEndDate":"","_EventStartDateUTC":"","_EventEndDateUTC":"","_EventShowMap":false,"_EventShowMapLink":false,"_EventURL":"","_EventCost":"","_EventCostDescription":"","_EventCurrencySymbol":"","_EventCurrencyCode":"","_EventCurrencyPosition":"","_EventDateTimeSeparator":"","_EventTimeRangeSeparator":"","_EventOrganizerID":[],"_EventVenueID":[],"_OrganizerEmail":"","_OrganizerPhone":"","_OrganizerWebsite":"","_VenueAddress":"","_VenueCity":"","_VenueCountry":"","_VenueProvince":"","_VenueState":"","_VenueZip":"","_VenuePhone":"","_VenueURL":"","_VenueStateProvince":"","_VenueLat":"","_VenueLng":"","_VenueShowMap":false,"_VenueShowMapLink":false,"footnotes":""},"categories":[23],"tags":[],"class_list":["post-31636","post","type-post","status-publish","format-standard","hentry","category-headless"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.7 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>ISR Support for Next.js\/Faust.js\u00a0 on WP Engine\u2019s Atlas - Builders<\/title>\n<meta name=\"description\" content=\"Learn how to implement Incremental Static Regeneration (ISR) support feature with Next.js and Faust.js on WP Engine&#039;s Atlas platform. Boost performance, enhance SEO, and keep your content fresh with this step-by-step guide.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/wpengine.com\/builders\/isr-support-for-next-js-faust-js-on-wp-engines-atlas\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"ISR Support for Next.js\/Faust.js on WP Engine\u2019s Atlas! \ud83d\ude80\" \/>\n<meta property=\"og:description\" content=\"Learn how to implement Incremental Static Regeneration (ISR) support feature with Next.js and Faust.js on WP Engine&#039;s Atlas platform. Boost performance, enhance SEO, and keep your content fresh with this step-by-step guide.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/wpengine.com\/builders\/isr-support-for-next-js-faust-js-on-wp-engines-atlas\/\" \/>\n<meta property=\"og:site_name\" content=\"Builders\" \/>\n<meta property=\"article:published_time\" content=\"2024-06-03T20:39:50+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2024-06-04T13:29:41+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/wpengine.com\/builders\/wp-content\/uploads\/2024\/06\/WPE-Builders-YouTube-ScreenshotNavy-1920x1080-1-1.png\" \/>\n\t<meta property=\"og:image:width\" content=\"1920\" \/>\n\t<meta property=\"og:image:height\" content=\"1080\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"Francis Agulto\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@wpebuilders\" \/>\n<meta name=\"twitter:site\" content=\"@wpebuilders\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Francis Agulto\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"6 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/wpengine.com\\\/builders\\\/isr-support-for-next-js-faust-js-on-wp-engines-atlas\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/wpengine.com\\\/builders\\\/isr-support-for-next-js-faust-js-on-wp-engines-atlas\\\/\"},\"author\":{\"name\":\"Francis Agulto\",\"@id\":\"https:\\\/\\\/wpengine.com\\\/builders\\\/#\\\/schema\\\/person\\\/bcdcb4ac0b215c34b6b30e440a24dc54\"},\"headline\":\"ISR Support for Next.js\\\/Faust.js\u00a0 on WP Engine\u2019s Atlas\",\"datePublished\":\"2024-06-03T20:39:50+00:00\",\"dateModified\":\"2024-06-04T13:29:41+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/wpengine.com\\\/builders\\\/isr-support-for-next-js-faust-js-on-wp-engines-atlas\\\/\"},\"wordCount\":1031,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\\\/\\\/wpengine.com\\\/builders\\\/#organization\"},\"image\":{\"@id\":\"https:\\\/\\\/wpengine.com\\\/builders\\\/isr-support-for-next-js-faust-js-on-wp-engines-atlas\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/lh7-us.googleusercontent.com\\\/docsz\\\/AD_4nXdJAKbSiPEjH5JkICltauDXKKs01D73MYLgBkoBilFNP8Z_uOOKw_p0frFeZgn9y0GX_njJPmtgXwdamA1a0KEsQD7fzpQlMm8Hon-Gtyu6KRz4kKYEFrsjV-sQp3vkBE5SJMk2R4rF38eHZpOyVlHNbHQ4?key=vNrM4w3vNDQKrtMXRFOBxw\",\"articleSection\":[\"Headless\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/wpengine.com\\\/builders\\\/isr-support-for-next-js-faust-js-on-wp-engines-atlas\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/wpengine.com\\\/builders\\\/isr-support-for-next-js-faust-js-on-wp-engines-atlas\\\/\",\"url\":\"https:\\\/\\\/wpengine.com\\\/builders\\\/isr-support-for-next-js-faust-js-on-wp-engines-atlas\\\/\",\"name\":\"ISR Support for Next.js\\\/Faust.js\u00a0 on WP Engine\u2019s Atlas - Builders\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/wpengine.com\\\/builders\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/wpengine.com\\\/builders\\\/isr-support-for-next-js-faust-js-on-wp-engines-atlas\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/wpengine.com\\\/builders\\\/isr-support-for-next-js-faust-js-on-wp-engines-atlas\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/lh7-us.googleusercontent.com\\\/docsz\\\/AD_4nXdJAKbSiPEjH5JkICltauDXKKs01D73MYLgBkoBilFNP8Z_uOOKw_p0frFeZgn9y0GX_njJPmtgXwdamA1a0KEsQD7fzpQlMm8Hon-Gtyu6KRz4kKYEFrsjV-sQp3vkBE5SJMk2R4rF38eHZpOyVlHNbHQ4?key=vNrM4w3vNDQKrtMXRFOBxw\",\"datePublished\":\"2024-06-03T20:39:50+00:00\",\"dateModified\":\"2024-06-04T13:29:41+00:00\",\"description\":\"Learn how to implement Incremental Static Regeneration (ISR) support feature with Next.js and Faust.js on WP Engine's Atlas platform. Boost performance, enhance SEO, and keep your content fresh with this step-by-step guide.\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/wpengine.com\\\/builders\\\/isr-support-for-next-js-faust-js-on-wp-engines-atlas\\\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/wpengine.com\\\/builders\\\/isr-support-for-next-js-faust-js-on-wp-engines-atlas\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/wpengine.com\\\/builders\\\/isr-support-for-next-js-faust-js-on-wp-engines-atlas\\\/#primaryimage\",\"url\":\"https:\\\/\\\/lh7-us.googleusercontent.com\\\/docsz\\\/AD_4nXdJAKbSiPEjH5JkICltauDXKKs01D73MYLgBkoBilFNP8Z_uOOKw_p0frFeZgn9y0GX_njJPmtgXwdamA1a0KEsQD7fzpQlMm8Hon-Gtyu6KRz4kKYEFrsjV-sQp3vkBE5SJMk2R4rF38eHZpOyVlHNbHQ4?key=vNrM4w3vNDQKrtMXRFOBxw\",\"contentUrl\":\"https:\\\/\\\/lh7-us.googleusercontent.com\\\/docsz\\\/AD_4nXdJAKbSiPEjH5JkICltauDXKKs01D73MYLgBkoBilFNP8Z_uOOKw_p0frFeZgn9y0GX_njJPmtgXwdamA1a0KEsQD7fzpQlMm8Hon-Gtyu6KRz4kKYEFrsjV-sQp3vkBE5SJMk2R4rF38eHZpOyVlHNbHQ4?key=vNrM4w3vNDQKrtMXRFOBxw\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/wpengine.com\\\/builders\\\/isr-support-for-next-js-faust-js-on-wp-engines-atlas\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/wpengine.com\\\/builders\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"ISR Support for Next.js\\\/Faust.js\u00a0 on WP Engine\u2019s Atlas\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/wpengine.com\\\/builders\\\/#website\",\"url\":\"https:\\\/\\\/wpengine.com\\\/builders\\\/\",\"name\":\"Builders\",\"description\":\"Reimagining the way we build with WordPress.\",\"publisher\":{\"@id\":\"https:\\\/\\\/wpengine.com\\\/builders\\\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/wpengine.com\\\/builders\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/wpengine.com\\\/builders\\\/#organization\",\"name\":\"WP Engine\",\"url\":\"https:\\\/\\\/wpengine.com\\\/builders\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/wpengine.com\\\/builders\\\/#\\\/schema\\\/logo\\\/image\\\/\",\"url\":\"https:\\\/\\\/wpengine.com\\\/builders\\\/wp-content\\\/uploads\\\/2024\\\/05\\\/WP-Engine-Horizontal@2x.png\",\"contentUrl\":\"https:\\\/\\\/wpengine.com\\\/builders\\\/wp-content\\\/uploads\\\/2024\\\/05\\\/WP-Engine-Horizontal@2x.png\",\"width\":348,\"height\":68,\"caption\":\"WP Engine\"},\"image\":{\"@id\":\"https:\\\/\\\/wpengine.com\\\/builders\\\/#\\\/schema\\\/logo\\\/image\\\/\"},\"sameAs\":[\"https:\\\/\\\/x.com\\\/wpebuilders\",\"https:\\\/\\\/www.youtube.com\\\/channel\\\/UCh1WuL54XFb9ZI6m6goFv1g\"]},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/wpengine.com\\\/builders\\\/#\\\/schema\\\/person\\\/bcdcb4ac0b215c34b6b30e440a24dc54\",\"name\":\"Francis Agulto\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/0c8a05c76944fc987d57296c96dc368055844527088c0aa44297edbfa8b82546?s=96&d=mm&r=g\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/0c8a05c76944fc987d57296c96dc368055844527088c0aa44297edbfa8b82546?s=96&d=mm&r=g\",\"contentUrl\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/0c8a05c76944fc987d57296c96dc368055844527088c0aa44297edbfa8b82546?s=96&d=mm&r=g\",\"caption\":\"Francis Agulto\"},\"description\":\"Fran Agulto is a Developer Advocate at WP Engine. He is a lover of all things headless WordPress, Rock Climbing, and overall being stoked for people that love what they do and share that stoke with others! Follow me on Twitter for cool stoked headless WP!\",\"url\":\"https:\\\/\\\/wpengine.com\\\/builders\\\/author\\\/francis-agultowpengine-com-2-2-2-2-2-2-2-2-2-2-2-3\\\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"ISR Support for Next.js\/Faust.js\u00a0 on WP Engine\u2019s Atlas - Builders","description":"Learn how to implement Incremental Static Regeneration (ISR) support feature with Next.js and Faust.js on WP Engine's Atlas platform. Boost performance, enhance SEO, and keep your content fresh with this step-by-step guide.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/wpengine.com\/builders\/isr-support-for-next-js-faust-js-on-wp-engines-atlas\/","og_locale":"en_US","og_type":"article","og_title":"ISR Support for Next.js\/Faust.js on WP Engine\u2019s Atlas! \ud83d\ude80","og_description":"Learn how to implement Incremental Static Regeneration (ISR) support feature with Next.js and Faust.js on WP Engine's Atlas platform. Boost performance, enhance SEO, and keep your content fresh with this step-by-step guide.","og_url":"https:\/\/wpengine.com\/builders\/isr-support-for-next-js-faust-js-on-wp-engines-atlas\/","og_site_name":"Builders","article_published_time":"2024-06-03T20:39:50+00:00","article_modified_time":"2024-06-04T13:29:41+00:00","og_image":[{"width":1920,"height":1080,"url":"https:\/\/wpengine.com\/builders\/wp-content\/uploads\/2024\/06\/WPE-Builders-YouTube-ScreenshotNavy-1920x1080-1-1.png","type":"image\/png"}],"author":"Francis Agulto","twitter_card":"summary_large_image","twitter_creator":"@wpebuilders","twitter_site":"@wpebuilders","twitter_misc":{"Written by":"Francis Agulto","Est. reading time":"6 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/wpengine.com\/builders\/isr-support-for-next-js-faust-js-on-wp-engines-atlas\/#article","isPartOf":{"@id":"https:\/\/wpengine.com\/builders\/isr-support-for-next-js-faust-js-on-wp-engines-atlas\/"},"author":{"name":"Francis Agulto","@id":"https:\/\/wpengine.com\/builders\/#\/schema\/person\/bcdcb4ac0b215c34b6b30e440a24dc54"},"headline":"ISR Support for Next.js\/Faust.js\u00a0 on WP Engine\u2019s Atlas","datePublished":"2024-06-03T20:39:50+00:00","dateModified":"2024-06-04T13:29:41+00:00","mainEntityOfPage":{"@id":"https:\/\/wpengine.com\/builders\/isr-support-for-next-js-faust-js-on-wp-engines-atlas\/"},"wordCount":1031,"commentCount":0,"publisher":{"@id":"https:\/\/wpengine.com\/builders\/#organization"},"image":{"@id":"https:\/\/wpengine.com\/builders\/isr-support-for-next-js-faust-js-on-wp-engines-atlas\/#primaryimage"},"thumbnailUrl":"https:\/\/lh7-us.googleusercontent.com\/docsz\/AD_4nXdJAKbSiPEjH5JkICltauDXKKs01D73MYLgBkoBilFNP8Z_uOOKw_p0frFeZgn9y0GX_njJPmtgXwdamA1a0KEsQD7fzpQlMm8Hon-Gtyu6KRz4kKYEFrsjV-sQp3vkBE5SJMk2R4rF38eHZpOyVlHNbHQ4?key=vNrM4w3vNDQKrtMXRFOBxw","articleSection":["Headless"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/wpengine.com\/builders\/isr-support-for-next-js-faust-js-on-wp-engines-atlas\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/wpengine.com\/builders\/isr-support-for-next-js-faust-js-on-wp-engines-atlas\/","url":"https:\/\/wpengine.com\/builders\/isr-support-for-next-js-faust-js-on-wp-engines-atlas\/","name":"ISR Support for Next.js\/Faust.js\u00a0 on WP Engine\u2019s Atlas - Builders","isPartOf":{"@id":"https:\/\/wpengine.com\/builders\/#website"},"primaryImageOfPage":{"@id":"https:\/\/wpengine.com\/builders\/isr-support-for-next-js-faust-js-on-wp-engines-atlas\/#primaryimage"},"image":{"@id":"https:\/\/wpengine.com\/builders\/isr-support-for-next-js-faust-js-on-wp-engines-atlas\/#primaryimage"},"thumbnailUrl":"https:\/\/lh7-us.googleusercontent.com\/docsz\/AD_4nXdJAKbSiPEjH5JkICltauDXKKs01D73MYLgBkoBilFNP8Z_uOOKw_p0frFeZgn9y0GX_njJPmtgXwdamA1a0KEsQD7fzpQlMm8Hon-Gtyu6KRz4kKYEFrsjV-sQp3vkBE5SJMk2R4rF38eHZpOyVlHNbHQ4?key=vNrM4w3vNDQKrtMXRFOBxw","datePublished":"2024-06-03T20:39:50+00:00","dateModified":"2024-06-04T13:29:41+00:00","description":"Learn how to implement Incremental Static Regeneration (ISR) support feature with Next.js and Faust.js on WP Engine's Atlas platform. Boost performance, enhance SEO, and keep your content fresh with this step-by-step guide.","breadcrumb":{"@id":"https:\/\/wpengine.com\/builders\/isr-support-for-next-js-faust-js-on-wp-engines-atlas\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/wpengine.com\/builders\/isr-support-for-next-js-faust-js-on-wp-engines-atlas\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/wpengine.com\/builders\/isr-support-for-next-js-faust-js-on-wp-engines-atlas\/#primaryimage","url":"https:\/\/lh7-us.googleusercontent.com\/docsz\/AD_4nXdJAKbSiPEjH5JkICltauDXKKs01D73MYLgBkoBilFNP8Z_uOOKw_p0frFeZgn9y0GX_njJPmtgXwdamA1a0KEsQD7fzpQlMm8Hon-Gtyu6KRz4kKYEFrsjV-sQp3vkBE5SJMk2R4rF38eHZpOyVlHNbHQ4?key=vNrM4w3vNDQKrtMXRFOBxw","contentUrl":"https:\/\/lh7-us.googleusercontent.com\/docsz\/AD_4nXdJAKbSiPEjH5JkICltauDXKKs01D73MYLgBkoBilFNP8Z_uOOKw_p0frFeZgn9y0GX_njJPmtgXwdamA1a0KEsQD7fzpQlMm8Hon-Gtyu6KRz4kKYEFrsjV-sQp3vkBE5SJMk2R4rF38eHZpOyVlHNbHQ4?key=vNrM4w3vNDQKrtMXRFOBxw"},{"@type":"BreadcrumbList","@id":"https:\/\/wpengine.com\/builders\/isr-support-for-next-js-faust-js-on-wp-engines-atlas\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/wpengine.com\/builders\/"},{"@type":"ListItem","position":2,"name":"ISR Support for Next.js\/Faust.js\u00a0 on WP Engine\u2019s Atlas"}]},{"@type":"WebSite","@id":"https:\/\/wpengine.com\/builders\/#website","url":"https:\/\/wpengine.com\/builders\/","name":"Builders","description":"Reimagining the way we build with WordPress.","publisher":{"@id":"https:\/\/wpengine.com\/builders\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/wpengine.com\/builders\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/wpengine.com\/builders\/#organization","name":"WP Engine","url":"https:\/\/wpengine.com\/builders\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/wpengine.com\/builders\/#\/schema\/logo\/image\/","url":"https:\/\/wpengine.com\/builders\/wp-content\/uploads\/2024\/05\/WP-Engine-Horizontal@2x.png","contentUrl":"https:\/\/wpengine.com\/builders\/wp-content\/uploads\/2024\/05\/WP-Engine-Horizontal@2x.png","width":348,"height":68,"caption":"WP Engine"},"image":{"@id":"https:\/\/wpengine.com\/builders\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/x.com\/wpebuilders","https:\/\/www.youtube.com\/channel\/UCh1WuL54XFb9ZI6m6goFv1g"]},{"@type":"Person","@id":"https:\/\/wpengine.com\/builders\/#\/schema\/person\/bcdcb4ac0b215c34b6b30e440a24dc54","name":"Francis Agulto","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/secure.gravatar.com\/avatar\/0c8a05c76944fc987d57296c96dc368055844527088c0aa44297edbfa8b82546?s=96&d=mm&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/0c8a05c76944fc987d57296c96dc368055844527088c0aa44297edbfa8b82546?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/0c8a05c76944fc987d57296c96dc368055844527088c0aa44297edbfa8b82546?s=96&d=mm&r=g","caption":"Francis Agulto"},"description":"Fran Agulto is a Developer Advocate at WP Engine. He is a lover of all things headless WordPress, Rock Climbing, and overall being stoked for people that love what they do and share that stoke with others! Follow me on Twitter for cool stoked headless WP!","url":"https:\/\/wpengine.com\/builders\/author\/francis-agultowpengine-com-2-2-2-2-2-2-2-2-2-2-2-3\/"}]}},"_links":{"self":[{"href":"https:\/\/wpengine.com\/builders\/wp-json\/wp\/v2\/posts\/31636","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/wpengine.com\/builders\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/wpengine.com\/builders\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/wpengine.com\/builders\/wp-json\/wp\/v2\/users\/20"}],"replies":[{"embeddable":true,"href":"https:\/\/wpengine.com\/builders\/wp-json\/wp\/v2\/comments?post=31636"}],"version-history":[{"count":0,"href":"https:\/\/wpengine.com\/builders\/wp-json\/wp\/v2\/posts\/31636\/revisions"}],"wp:attachment":[{"href":"https:\/\/wpengine.com\/builders\/wp-json\/wp\/v2\/media?parent=31636"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/wpengine.com\/builders\/wp-json\/wp\/v2\/categories?post=31636"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/wpengine.com\/builders\/wp-json\/wp\/v2\/tags?post=31636"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}