{"id":19183,"date":"2025-04-07T14:50:50","date_gmt":"2025-04-07T12:50:50","guid":{"rendered":"https:\/\/pagepro.co\/blog\/?p=19183"},"modified":"2026-04-22T09:14:22","modified_gmt":"2026-04-22T07:14:22","slug":"self-hosting-nextjs-apps","status":"publish","type":"post","link":"https:\/\/pagepro.co\/blog\/self-hosting-nextjs-apps\/","title":{"rendered":"Self Hosting Nextjs Apps"},"content":{"rendered":"\n<h2 class=\"wp-block-heading\" id=\"is-self-hosting-next-js-apps-a-good-idea\">Is Self-Hosting Next.js Apps a Good Idea?<\/h2>\n\n\n\n<p>It&#8217;s hard to beat the comfort Vercel provides for hosting Next.js applications. Everything you need is within reach, either in the form of <strong>pre-set settings<\/strong> or <strong>built-in features<\/strong>.&nbsp;<\/p>\n\n\n\n<p>Yet this convenience doesn&#8217;t come for free. Scaling Next.js projects might notice that their hosting costs start to increase, which puts them in a precarious position. They can successfully <strong><a href=\"https:\/\/pagepro.co\/services\/vercel-cost-optimisation\">optimize Vercel costs<\/a><\/strong> by finding code inefficiencies and other opportunities for savings, but for some the rising costs are the push to start self host Nextjs apps.&nbsp;<\/p>\n\n\n\n<p>Moving to a standalone setup gives you <strong>complete control over infrastructure and costs<\/strong> but also requires more investment in DevOps knowledge, modern web development techniques, and tooling. <\/p>\n\n\n\n<p>We&#8217;ve prepared an article detailing what to consider before migrating, which providers to consider, and some challenges you might face.&nbsp;You can also watch our video on the topic:<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><a href=\"https:\/\/youtu.be\/KPbuoLYl7EI?si=_EdAg5gSLD5Vr1b8\" target=\"_blank\" rel=\"noreferrer noopener\"><img decoding=\"async\" loading=\"lazy\" width=\"700\" height=\"391\" src=\"https:\/\/pagepro.co\/blog\/wp-content\/uploads\/2025\/04\/YT_livesession_thumbnail.png\" alt=\"Self Hosting Nextjs Live Session YouTube Thumbnail\" class=\"wp-image-19184\" srcset=\"https:\/\/pagepro.co\/blog\/wp-content\/uploads\/2025\/04\/YT_livesession_thumbnail.png 700w, https:\/\/pagepro.co\/blog\/wp-content\/uploads\/2025\/04\/YT_livesession_thumbnail-300x168.png 300w, https:\/\/pagepro.co\/blog\/wp-content\/uploads\/2025\/04\/YT_livesession_thumbnail-500x279.png 500w, https:\/\/pagepro.co\/blog\/wp-content\/uploads\/2025\/04\/YT_livesession_thumbnail-324x181.png 324w\" sizes=\"(max-width: 700px) 100vw, 700px\" \/><\/a><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"leaving-vercel\">Leaving&nbsp;Vercel<\/h2>\n\n\n\n<p>As I mentioned in the intro, for most teams, <strong>Vercel offers great value and a developer experience<\/strong>. It&#8217;s easy to deploy Next.js apps with and offers a wide variety of built-in features. However, as your app hits certain traffic levels, <strong>you might find dependency on Vercel burdensome<\/strong>.&nbsp;<\/p>\n\n\n\n<p>Most companies pick self-hosting a Next.js application because of<strong> the rising hosting costs<\/strong>, but it&#8217;s hardly the only reason. Vendor lock, compliance needs, or a desire for greater control are just as valid and common.<\/p>\n\n\n\n<p>That said, when it comes to speed and convenience, Vercel is hard to beat. Migrating to self-host a <strong><a href=\"https:\/\/pagepro.co\/services\/nextjs-development\" target=\"_blank\" rel=\"noreferrer noopener\">Next.js project<\/a><\/strong> should be a deliberate decision, not a knee-jerk reaction to a single pain point.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"what-youll-miss-when-you-leave-vercel\"><span class=\"underline-accent\">What You&#8217;ll Miss When You Leave Vercel<\/span><\/h3>\n\n\n\n<p>Switching away from Vercel means <strong>giving up a lot of built-in convenience<\/strong>. Out of the box, you lose:<\/p>\n\n\n\n<ul>\n<li><strong>Automatic CI\/CD pipelines<\/strong> and preview deployments<\/li>\n\n\n\n<li><strong>Built-in CDN and edge network<\/strong> for global performance<\/li>\n\n\n\n<li><strong>Auto-scaling <\/strong>infrastructure<\/li>\n\n\n\n<li>One-click <strong>HTTPS and SSL<\/strong> management<\/li>\n\n\n\n<li>N<strong>ative support for the latest Next.js features<\/strong>, including server components, streaming, and app directory routing<\/li>\n<\/ul>\n\n\n\n<p>Vercel acts as a seamless all-in-one DevOps for web applications. Without it, <strong>you\u2019ll need to recreate that setup using custom tooling or third-party services<\/strong>. That means more time spent on infrastructure and maintenance.<\/p>\n\n\n<div class=\"c-newsletter-sendgrid-wrapper js-newsletter-sendgrid-wrapper ga-filedownload-viewed\">\n    <div class=\"c-newsletter-sendgrid\">\n                    <p class=\"c-newsletter-sendgrid__title\">\n                Get Next.js Vercel Cost Optimization Guide            <\/p>\n        \n         \n            <p class=\"c-newsletter-sendgrid__description\">\n                Learn real-life techniques to optimize the hosting costs of your Next.js apps.            <\/p>\n        \n        <form action=\"\" class=\"c-newsletter-sendgrid__form f-form js-newsletter-sendgrid\" data-key=\"e60f07b6-7b2d-4939-88db-8a4715700f39\">\n            <div class=\"c-newsletter-sendgrid__form-mail\">\n                <label class=\"c-label\" for=\"newsletter_email\">Company E-mail address<\/label>\n                <input class=\"c-input js-newsletter-sendgrid-email\" type=\"email\" id=\"newsletter_email\" required>\n                <input class=\"c-newsletter-sendgrid__button ga-cta-filedownload\" type=\"submit\" value=\"Download\">\n            <\/div>\n            <div class=\"c-newsletter-sendgrid__form-consent\">\n                                                        <input class=\"c-checkbox js-newsletter-consent\" type=\"checkbox\" name=\"newsletter_consent\" id=\"newsletter_consent_1\" required>\n                    <label class=\"c-label\" for=\"newsletter_consent_1\">I accept the Privacy Policy and agree to process my personal data by Pagepro for marketing purposes.<\/label>\n                            <\/div>\n        <\/form>\n\n        <div class=\"c-newsletter-sendgrid__cover-container\">\n                            <img decoding=\"async\" class=\"c-newsletter-sendgrid__cover-1\" src=\"https:\/\/pagepro.co\/blog\/wp-content\/uploads\/2025\/04\/Cover-1.jpg\" alt=\"Cover of a guide titled NEXT.JS VERCEL COST OPTIMISATION GUIDE by Jakub Dakowicz and Chris Lojniewski, featuring insights on self-hosting Nextjs, with a red geometric background and Pagepro logo in the top left corner.\" >\n                                            <\/div>\n\n        <div class=\"c-newsletter-sendgrid__popup-wrapper js-newsletter-sendgrid-popup is-hidden\">\n            <div class=\"c-newsletter-sendgrid__popup\">\n                <div class=\"c-newsletter-sendgrid__popup-icon\">\n                    <svg width=\"140\" height=\"140\" viewBox=\"0 0 140 140\" fill=\"none\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\">\n                    <g clip-path=\"url(#clip0_6621_2135)\">\n                    <path d=\"M65.625 100.625C65.625 109.908 69.3125 118.81 75.8763 125.374C82.44 131.938 91.3424 135.625 100.625 135.625C109.908 135.625 118.81 131.938 125.374 125.374C131.938 118.81 135.625 109.908 135.625 100.625C135.625 91.3424 131.938 82.44 125.374 75.8763C118.81 69.3125 109.908 65.625 100.625 65.625C91.3424 65.625 82.44 69.3125 75.8763 75.8763C69.3125 82.44 65.625 91.3424 65.625 100.625Z\" stroke=\"#0A2B3D\" stroke-width=\"8.75\" stroke-linecap=\"round\" stroke-linejoin=\"round\"\/>\n                    <path d=\"M116.223 90.4517L99.2774 113.044C98.9005 113.545 98.4206 113.959 97.8701 114.259C97.3196 114.558 96.7113 114.737 96.0862 114.781C95.461 114.826 94.8335 114.736 94.246 114.518C93.6584 114.3 93.1244 113.959 92.6799 113.517L83.9299 104.767\" stroke=\"#0A2B3D\" stroke-width=\"8.75\" stroke-linecap=\"round\" stroke-linejoin=\"round\"\/>\n                    <path d=\"M48.125 91.875H13.125C10.8044 91.875 8.57876 90.9531 6.93782 89.3122C5.29687 87.6712 4.375 85.4456 4.375 83.125V13.125C4.375 10.8044 5.29687 8.57876 6.93782 6.93782C8.57876 5.29687 10.8044 4.375 13.125 4.375H118.125C120.446 4.375 122.671 5.29687 124.312 6.93782C125.953 8.57876 126.875 10.8044 126.875 13.125V52.5\" stroke=\"#0A2B3D\" stroke-width=\"8.75\" stroke-linecap=\"round\" stroke-linejoin=\"round\"\/>\n                    <path d=\"M124.898 7.5835L77.3909 44.1235C74.0176 46.7185 69.881 48.1255 65.625 48.1255C61.3691 48.1255 57.2325 46.7185 53.8592 44.1235L6.35254 7.5835\" stroke=\"#0A2B3D\" stroke-width=\"8.75\" stroke-linecap=\"round\" stroke-linejoin=\"round\"\/>\n                    <\/g>\n                    <defs>\n                    <clipPath id=\"clip0_6621_2135\">\n                    <rect width=\"140\" height=\"140\" fill=\"white\"\/>\n                    <\/clipPath>\n                    <\/defs>\n                    <\/svg>\n                <\/div>\n                                    <p class=\"c-newsletter-sendgrid__popup-text\">\n                        Thank you for signing up. Check your e-mail for the guide.                    <\/p>\n                                <div class=\"c-newsletter-sendgrid__popup-action\">\n                    <button class=\"c-newsletter-sendgrid__button c-newsletter-sendgrid__button--full-width js-newsletter-sendgrid-popup-close\">Close<\/button>\n                <\/div>\n            <\/div>\n        <\/div>\n    <\/div>\n<\/div>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"is-self-hosting-nextjs-right-for-you\">Is Self-Hosting Nextjs Right for You?<\/h2>\n\n\n\n<p><strong>Self-hosting may be overkill for small projects<\/strong>, but it\u2019s worth considering if:<\/p>\n\n\n\n<ul>\n<li>You have a hobby project and want to <strong>learn more about hosting<\/strong>.<\/li>\n\n\n\n<li>You&#8217;re running a mid-sized app and <strong>need to reduce costs<\/strong>.<\/li>\n\n\n\n<li>You&#8217;re at an enterprise scale <strong>with a dedicated DevOps team<\/strong>.<\/li>\n<\/ul>\n\n\n\n<p>For most production apps, it comes down to <strong>balancing savings against the complexity<\/strong> of setup maintenance.<\/p>\n\n\n\n<div class=\"wp-block-code-mind-cta c-cta-block\" style=\"background-color:#00141F;color:#FFFFFF\"><div class=\"c-cta-block__content\"><p class=\"c-cta-block__title\">Need to optimize your Vercel setup?<\/p><div class=\"c-cta-block__action\"><a href=\"https:\/\/pagepro.co\/contact\" class=\"c-cta-block__button ga-cta ga-cta-consultation theme-bg-3\">Our experts can help<\/a><\/div><\/div><\/div>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"evaluating-your-readiness\">Evaluating Your Readiness<\/h2>\n\n\n\n<p>Once you decide that a self-hosted Next.js app is what you want, <strong>it&#8217;s time to see how prepared you are for a potential migration<\/strong>. <\/p>\n\n\n\n<p>First,&nbsp;check your baseline by answering a few questions to see if you have what\u2019s needed to run your project:<\/p>\n\n\n\n<ul>\n<li>Are you already using a cloud provider like <strong>AWS <\/strong>or<strong> Azure<\/strong>?<\/li>\n\n\n\n<li>Do you have <strong>in-house DevOps knowledge<\/strong> or the time and budget to develop it?<\/li>\n\n\n\n<li>Is your app <strong>high-traffic and performance-sensitive<\/strong>?<\/li>\n<\/ul>\n\n\n\n<p>Once you&#8217;re sure you&#8217;re ready, you can start considering <strong>how to structure your new hosting stack<\/strong>.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"choosing-a-hosting-path-to-deploy-next-js\">Choosing a Hosting Path to Deploy Next.js<\/h2>\n\n\n\n<p>The first step to independence is <strong>choosing the way to self-host your Next.js app<\/strong>. Your choice will shape everything from cost and scalability to how much DevOps expertise you&#8217;ll need.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" loading=\"lazy\" width=\"800\" height=\"418\" src=\"https:\/\/pagepro.co\/blog\/wp-content\/uploads\/2025\/04\/hosting-providers.png\" alt=\"Logos of popular hosting providers: AWS, Cloudflare, Amplify, Google Cloud, Azure, and Netlify.\" class=\"wp-image-19189\" srcset=\"https:\/\/pagepro.co\/blog\/wp-content\/uploads\/2025\/04\/hosting-providers.png 800w, https:\/\/pagepro.co\/blog\/wp-content\/uploads\/2025\/04\/hosting-providers-300x157.png 300w, https:\/\/pagepro.co\/blog\/wp-content\/uploads\/2025\/04\/hosting-providers-768x401.png 768w, https:\/\/pagepro.co\/blog\/wp-content\/uploads\/2025\/04\/hosting-providers-500x261.png 500w, https:\/\/pagepro.co\/blog\/wp-content\/uploads\/2025\/04\/hosting-providers-324x169.png 324w\" sizes=\"(max-width: 800px) 100vw, 800px\" \/><figcaption class=\"wp-element-caption\">Popular hosting providers: AWS, Cloudflare, Amplify, Google Cloud, Azure, and Netlify.<\/figcaption><\/figure>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"vps-or-dedicated-server-digitalocean\">VPS or Dedicated Server (DigitalOcean)<\/h4>\n\n\n\n<p><strong>Ideal for complete control<\/strong>. You handle everything: deployments, builds to SSL and scaling. It\u2019s budget-friendly but time-intensive and best suited for smaller projects.<\/p>\n\n\n\n<p>If you&#8217;re interested in the topic, I highly recommend the guide by <strong><a href=\"https:\/\/x.com\/leerob\" target=\"_blank\" rel=\"noreferrer noopener nofollow\">Lee Robinson<\/a><\/strong>:<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><a href=\"https:\/\/youtu.be\/sIVL4JMqRfc?si=ehv4Yw7Fn93EKuQu\" target=\"_blank\" rel=\"noreferrer noopener\"><img decoding=\"async\" loading=\"lazy\" width=\"700\" height=\"391\" src=\"https:\/\/pagepro.co\/blog\/wp-content\/uploads\/2025\/04\/lee_robinson_thumbnail.png\" alt=\"Lee Robinson on Next.js Self-Hosting \" class=\"wp-image-19185\" srcset=\"https:\/\/pagepro.co\/blog\/wp-content\/uploads\/2025\/04\/lee_robinson_thumbnail.png 700w, https:\/\/pagepro.co\/blog\/wp-content\/uploads\/2025\/04\/lee_robinson_thumbnail-300x168.png 300w, https:\/\/pagepro.co\/blog\/wp-content\/uploads\/2025\/04\/lee_robinson_thumbnail-500x279.png 500w, https:\/\/pagepro.co\/blog\/wp-content\/uploads\/2025\/04\/lee_robinson_thumbnail-324x181.png 324w\" sizes=\"(max-width: 700px) 100vw, 700px\" \/><\/a><\/figure>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"cloud-providers-aws-azure-gcp\">Cloud Providers (AWS, Azure, GCP)<\/h4>\n\n\n\n<p>It offers high scalability and flexibility. You can customize your setup using services like <strong>Lambda<\/strong>,<strong> S3<\/strong>,<strong> DynamoDB<\/strong>, or<strong> RDS<\/strong>. However, managing services, permissions, and cost control requires a learning curve and often some DevOps involvement.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"edge-first-platforms-e-g-cloudflare\">Edge-first Platforms (e.g., Cloudflare)<\/h4>\n\n\n\n<p><strong>Great for performance-driven apps<\/strong>. These platforms bring content closer to users by default but often require more specialized configuration and have limits on certain backend logic or frameworks.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"platform-as-a-service-alternatives-e-g-netlify-amplify\">Platform-as-a-Service Alternatives (e.g., Netlify, Amplify)<\/h4>\n\n\n\n<p>PaaS are platforms like Vercel. <strong>They abstract away most infrastructure concerns but may still lock you into certain workflows or feature sets<\/strong>. A smoother transition, but not as flexible or cost-efficient at scale.<\/p>\n\n\n\n<p>Each route mixes complexity, control, and cost in different ratios. The best choice depends on different factors, mainly your team\u2019s technical comfort, the scale of your project, and whether your priority is performance, flexibility, or ease of use.<\/p>\n\n\n\n<div class=\"c-newsletter-block-acf\">\n    <p class=\"c-newsletter-block-acf__title c-newsletter__header\">\n        EXPERT INSIGHTS, FRICTIONLESSLY DELIVERED!    <\/p>\n    <p class=\"c-newsletter-block-acf__desc c-newsletter__header\">\n        Curated tech news delivered straight to your inbox every month.    <\/p>\n    <form method=\"post\" class=\"c-newsletter-block-acf__form js-newsletter-form c-newsletter__action\" name=\"newsletter-block-form\">\n        <input name=\"newsletter-email\" id=\"newsletter-email\" type=\"text\" class=\"c-newsletter-block-acf__input js-newsletter-input\" placeholder=\"Company Email\" \/>\n        <input name=\"newsletter-campaign\" id=\"newsletter-campaign\" type=\"hidden\" value=\"\" \/>\n        <div class=\"c-newsletter-block-acf__group\">\n            <input name=\"consent\" id=\"consent\" type=\"checkbox\" class=\"js-newsletter-consent\" \/>\n            <label class=\"c-newsletter-block-acf__label\" for=\"consent\">I accept the <a href=\"https:\/\/pagepro.co\/privacy-policy\">Privacy Policy<\/a> and agree to process my personal data by Pagepro for marketing purposes.<\/label>\n        <\/div>\n        <input type=\"submit\" class=\"c-newsletter-block-acf__button button js-newsletter-sub ga-newsletter-form-content\" value=\"Sign up\" \/>\n        <p class=\"theme-size-1 js-message-valid is-hidden is-invalid\"><\/p>\n    <\/form>\n<\/div>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"migration-strategies\">Migration Strategies<\/h2>\n\n\n\n<p><strong>Each migration is a unique case and requires a different approach<\/strong>. However, here are some common practices that can help make your transition smoother.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"move-piece-by-piece\">Move piece by piece<\/h4>\n\n\n\n<p><strong>Trying to migrate everything in one go is a common mistake<\/strong>. A safer approach is to move step by step. Migrate supporting services like background jobs, cron tasks, or file storage once the core of your production environment<strong> <\/strong>is stable and performing well. <strong>Debugging and optimization will be easier and won&#8217;t put your entire production stack at risk<\/strong>.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"start-with-your-next-js-frontend\">Start with your Next.js frontend<\/h4>\n\n\n\n<p>Deploy just the UI and core pages using SST or your chosen setup. <strong>Focus on getting SSR, SSG, middleware, and API routes working first.<\/strong><\/p>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"keep-existing-services-where-they-are\">Keep existing services where they are<\/h4>\n\n\n\n<p>You don\u2019t have to move your database, auth, or CMS immediately. <strong>Treat self-hosting as a gradual shift, not a full rebuild<\/strong>.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"introduce-caching-early\">Introduce caching early<\/h4>\n\n\n\n<p>Tools like CloudFront (for static assets), Redis (for dynamic data), or route-based caching can help keep costs in check, especially <strong>for ISR and apps relying on APIs<\/strong>.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"use-docker-if-needed\">Use Docker if needed<\/h4>\n\n\n\n<p>If you&#8217;re working with a team or using custom server logic, <strong>Docker can make it easier to run your app in consistent environments<\/strong>, both locally and during deployment. It\u2019s not required for every setup, but it is helpful when managing environments across&nbsp;VPS, staging, or Kubernetes.<\/p>\n\n\n\n<div class=\"c-case-study-block js-sticky-wide\">\n    <div class=\"c-case-study-block__content\">\n        <div class=\"c-case-study-block__text\">\n                            <p class=\"c-case-study-block__subtitle\">AMPLIENCE &#8211; GET STARTED GUIDE<\/p>\n                                        <p class=\"c-case-study-block__title\">Next.js in Action: Building an Interactive Guide Demystifying CMS\u2019s Capabilities<\/p>\n                                        <a href=\"https:\/\/pagepro.co\/case-studies\/amplience-get-started\" class=\"c-case-study-block__button\" target=\"_blank\">\n                    Read Case Study                <\/a>\n                    <\/div>\n                    <figure class=\"c-case-study-block__media\">\n                <img decoding=\"async\" class=\"c-case-study-block__image\" src=\"https:\/\/pagepro.co\/blog\/wp-content\/uploads\/2024\/06\/amplience-blog.png\" alt=\"A tablet and smartphone display a website with the heading Generative Content with Shopping Context, showcasing software development outsourcing. A smiling woman with curly hair is featured prominently on the right side of both screens.\" \/>\n            <\/figure>\n            <\/div>\n<\/div>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"deploy-a-next-js-app-with-sst-and-opennext-on-aws\">Deploy a Next.js App with SST and OpenNext on AWS<\/h2>\n\n\n\n<p>To simplify AWS deployment, tools like SST (Infrastructure as Code) and OpenNext (build compatibility for Next.js) are helpful. They enable you to:<\/p>\n\n\n\n<ul>\n<li>Deploy <strong>SSR<\/strong>,<strong> SSG<\/strong>,<strong> middleware<\/strong>, and<strong> API<\/strong> routes.<\/li>\n\n\n\n<li>Connect <strong>AWS<\/strong> resources like <strong>DynamoDB<\/strong> or <strong>S3<\/strong>.<\/li>\n\n\n\n<li>Run <strong>cron jobs<\/strong> and auto-generate <strong>dev\/prod environments<\/strong>.<\/li>\n<\/ul>\n\n\n\n<p>Once configured, <strong>SST uses OpenNext to generate the correct output structure for your Next.js project<\/strong>. That output is then deployed across AWS services like serverless functions (Lambda@Edge), S3, and CloudFront.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"migration-from-vercel-to-aws-with-sst\"><span class=\"underline-accent\">Migration from Vercel to AWS with SST<\/span><\/h3>\n\n\n\n<p>I&#8217;ve prepared a simplified version of what a self-hosted migration might look like:<\/p>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"set-up-your-project-with-sst\">Set up your project with SST<\/h4>\n\n\n\n<p>Run <code>npx create-sst@latest<\/code> or <code>sst init<\/code> to bootstrap your infrastructure-as-code setup. You\u2019ll get a basic config file where you define your cloud provider (e.g., AWS).<\/p>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"configure-your-app\">Configure your app<\/h4>\n\n\n\n<p>Within the SST config, define your Next.js app and its location:<\/p>\n\n\n\n<pre class=\"wp-block-code-mind-code c-code\"><code class=\"javascript\">new sst.aws.Nextjs(\"MyWeb\", {\n\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0path: \".\/nextjs-app\",<\/code><\/pre>\n\n\n\n<p>This is where you <strong>configure Next.js<\/strong> to work with custom services like S3 and DynamoDB.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"use-opennext-under-the-hood\">Use OpenNext under the hood<\/h4>\n\n\n\n<p>OpenNext compiles your app and splits it into separate AWS-compatible outputs: <strong>Lambda functions for SSR and API routes, static assets for S3, and CDN rules for CloudFront<\/strong>. You don\u2019t need to modify OpenNext directly since SST takes care of that.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"run-locally-and-deploy\">Run locally and deploy<\/h4>\n\n\n\n<p>You can test things with sst dev and then deploy to the cloud with <code>sst deploy<\/code>. <strong>SST provides a dashboard-like output in your terminal<\/strong> that shows all services created and URLs for access.<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" loading=\"lazy\" width=\"884\" height=\"577\" src=\"https:\/\/pagepro.co\/blog\/wp-content\/uploads\/2025\/04\/image.png\" alt=\"Screenshot of the terminal in SST\" class=\"wp-image-19192\" srcset=\"https:\/\/pagepro.co\/blog\/wp-content\/uploads\/2025\/04\/image.png 884w, https:\/\/pagepro.co\/blog\/wp-content\/uploads\/2025\/04\/image-300x196.png 300w, https:\/\/pagepro.co\/blog\/wp-content\/uploads\/2025\/04\/image-768x501.png 768w, https:\/\/pagepro.co\/blog\/wp-content\/uploads\/2025\/04\/image-500x326.png 500w, https:\/\/pagepro.co\/blog\/wp-content\/uploads\/2025\/04\/image-324x211.png 324w\" sizes=\"(max-width: 884px) 100vw, 884px\" \/><\/figure>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"add-cron-jobs-and-linked-services\">Add cron jobs and linked services<\/h4>\n\n\n\n<p>You can trigger functions periodically with Cron definitions:<\/p>\n\n\n\n<pre class=\"wp-block-code-mind-code c-code\"><code class=\"javascript\">const site = new sst.aws.Nextjs(\"MyWeb\", {\n\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0path: \".\/nextjs-app\",\n\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0link: [],\n\n\u00a0\u00a0\u00a0\u00a0});\n\n\u00a0\u00a0\u00a0\u00a0const cron = new sst.aws.Cron(\"MyCron\", {\n\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0function: {\n\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0handler: \"functions\/cron.handler\",\n\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0link: [site],\n\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0},\n\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0schedule: \"rate(1 minute)\",\n\n\u00a0\u00a0\u00a0\u00a0});<\/code><\/pre>\n\n\n\n<p>These can call internal API routes or <strong>perform data cleanup tasks<\/strong>.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"test-core-functionality\">Test core functionality<\/h4>\n\n\n\n<p><strong>Be sure to confirm that all your functionalities are working when deployed via SST<\/strong>. In particular, you should check if:<\/p>\n\n\n\n<ul>\n<li><strong>The middleware <\/strong>redirected requests correctly.<\/li>\n\n\n\n<li><strong>SSG pages<\/strong> respected revalidate intervals.<\/li>\n\n\n\n<li><strong>SSR pages<\/strong> pulled fresh CMS content.<\/li>\n\n\n\n<li><strong>API routes<\/strong> handle POST requests and database operations.<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"common-challenges-for-standalone-hosting\">Common Challenges for Standalone Hosting<\/h2>\n\n\n\n<p>Self-hosting gives you more flexibility, but it also <strong>means you\u2019re responsible for everything Vercel used to handle for you<\/strong>. That learning curve can be steep, especially at the beginning.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img decoding=\"async\" loading=\"lazy\" width=\"1024\" height=\"538\" src=\"https:\/\/pagepro.co\/blog\/wp-content\/uploads\/2025\/04\/Self-hosting-problems-1024x538.png\" alt=\"Infographic showing the challenges of self-hosting next.js apps\" class=\"wp-image-19190\" srcset=\"https:\/\/pagepro.co\/blog\/wp-content\/uploads\/2025\/04\/Self-hosting-problems-1024x538.png 1024w, https:\/\/pagepro.co\/blog\/wp-content\/uploads\/2025\/04\/Self-hosting-problems-300x158.png 300w, https:\/\/pagepro.co\/blog\/wp-content\/uploads\/2025\/04\/Self-hosting-problems-768x403.png 768w, https:\/\/pagepro.co\/blog\/wp-content\/uploads\/2025\/04\/Self-hosting-problems-500x263.png 500w, https:\/\/pagepro.co\/blog\/wp-content\/uploads\/2025\/04\/Self-hosting-problems-324x170.png 324w, https:\/\/pagepro.co\/blog\/wp-content\/uploads\/2025\/04\/Self-hosting-problems.png 1200w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p>You can expect friction in a few areas:<\/p>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"setup-and-configuration\">Setup and Configuration<\/h4>\n\n\n\n<p>Tools like SST and <strong>OpenNext<\/strong> simplify the config process, but they still require a working understanding of cloud infrastructure. Small missteps, like misconfigured paths, missing environment variables, or incorrect IAM permissions, can break your app or <strong>derail the&nbsp;deployment process.<\/strong><\/p>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"debugging-and-error-handling\">Debugging and Error Handling<\/h4>\n\n\n\n<p>Unlike Vercel, which gives clear feedback in a unified dashboard,<strong> cloud platforms often scatter logs across multiple services<\/strong> (e.g., CloudWatch, Lambda, S3). Errors can be vague or buried in nested stack traces, which slows down root cause analysis.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"documentation-and-support\">Documentation and Support<\/h4>\n\n\n\n<p>Vercel\u2019s documentation is tightly focused on one framework. AWS documentation, meanwhile, <strong>is broad but fragmented<\/strong>. You\u2019ll spend more time piecing together solutions across blog posts, GitHub issues, and Stack Overflow.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"cost-management\">Cost Management<\/h4>\n\n\n\n<p>Without guardrails, it\u2019s easy to misconfigure services in ways that spike your bill. Common problems include <strong>very long and repetitive cron jobs<\/strong>, functions that don\u2019t terminate properly, or unintentionally high traffic to endpoints that aren\u2019t cached.<\/p>\n\n\n\n<p>If you&#8217;re unsure what a command or config does, pause. <strong>Double-check the docs, test locally first, and don\u2019t be afraid to ask for help or <a href=\"https:\/\/pagepro.co\/contact\">call in a consultant<\/a><\/strong>. It&#8217;s better to lose an hour up front than rack up unexpected costs or burn days debugging an invisible misstep.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"conclusion\">Conclusion<\/h2>\n\n\n\n<p><strong>Self-hosting offers flexibility and cost control<\/strong>, but you also take on the overhead of infrastructure, deployment, and debugging.<\/p>\n\n\n\n<p>For some teams, that\u2019s a worthwhile move, particularly <strong>if you\u2019re scaling quickly<\/strong>, hitting platform limitations, or want to break free from vendor lock-in. For others, a better option might be squeezing more value out of Vercel through <strong>code optimizations and smarter usage of their features<\/strong>.<\/p>\n\n\n\n<p>Either way, the important thing is to be intentional.<strong> Don\u2019t jump ship because of one frustrating bill or performance hiccup<\/strong>. Test assumptions. Plan your migration. Move gradually.<\/p>\n\n\n\n<div class=\"wp-block-code-mind-cta c-cta-block\" style=\"background-color:#00141F;color:#FFFFFF\"><div class=\"c-cta-block__content\"><p class=\"c-cta-block__title\">Ready to start self-hosting your Next.js app?<\/p><div class=\"c-cta-block__action\"><a href=\"https:\/\/pagepro.co\/contact\" class=\"c-cta-block__button ga-cta ga-cta-consultation theme-bg-3\">Let us help<\/a><\/div><\/div><\/div>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"read-more\">Read More<\/h2>\n\n\n\n<ul>\n<li><a href=\"https:\/\/pagepro.co\/blog\/optimizing-vercel-hosting-costs\/\" target=\"_blank\" rel=\"noreferrer noopener\">Optimizing Vercel Hosting Costs<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/pagepro.co\/blog\/vercel-hosting-costs\/\" target=\"_blank\" rel=\"noreferrer noopener\">How to Lower Vercel Hosting Costs by 35%<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/pagepro.co\/blog\/optimizing-next-js-hosting-costs\/\">Optimizing Next.js Hosting Costs<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/pagepro.co\/blog\/optimizing-next-js-hosting-costs\/\">Next.js App Router vs Page Router Comparison<\/a><\/li>\n<\/ul>\n","protected":false},"excerpt":{"rendered":"<p>A practical guide to self hosting Nextjs applications, covering deployment tools and how to move beyond Vercel with confidence.<\/p>\n","protected":false},"author":16,"featured_media":19196,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[659,318],"tags":[360,316],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v21.3 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>How to Self Host Next.js Apps<\/title>\n<meta name=\"description\" content=\"Discover how to self host Next.js apps using servers, Docker, and modern deployment tools. Reduce platform lock-in and move beyond Vercel.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/pagepro.co\/blog\/self-hosting-nextjs-apps\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"How to Self Host Next.js Apps\" \/>\n<meta property=\"og:description\" content=\"Discover how to self host Next.js apps using servers, Docker, and modern deployment tools. Reduce platform lock-in and move beyond Vercel.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/pagepro.co\/blog\/self-hosting-nextjs-apps\/\" \/>\n<meta property=\"og:site_name\" content=\"Pagepro\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/thisispagepro\" \/>\n<meta property=\"article:published_time\" content=\"2025-04-07T12:50:50+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2026-04-22T07:14:22+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/pagepro.co\/blog\/wp-content\/uploads\/2025\/04\/Self-Hosting-Nextjs-Apps-Outside-Vercel-1.png\" \/>\n\t<meta property=\"og:image:width\" content=\"1024\" \/>\n\t<meta property=\"og:image:height\" content=\"582\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"Jakub Dakowicz\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Jakub Dakowicz\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"9 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/pagepro.co\/blog\/self-hosting-nextjs-apps\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/pagepro.co\/blog\/self-hosting-nextjs-apps\/\"},\"author\":{\"name\":\"Jakub Dakowicz\",\"@id\":\"https:\/\/pagepro.co\/blog\/#\/schema\/person\/66e00cf32ef7d2d1b010523eff380caf\"},\"headline\":\"Self Hosting Nextjs Apps\",\"datePublished\":\"2025-04-07T12:50:50+00:00\",\"dateModified\":\"2026-04-22T07:14:22+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/pagepro.co\/blog\/self-hosting-nextjs-apps\/\"},\"wordCount\":1731,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/pagepro.co\/blog\/#organization\"},\"keywords\":[\"next.js\",\"webdev\"],\"articleSection\":[\"Next js\",\"Web Development\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/pagepro.co\/blog\/self-hosting-nextjs-apps\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/pagepro.co\/blog\/self-hosting-nextjs-apps\/\",\"url\":\"https:\/\/pagepro.co\/blog\/self-hosting-nextjs-apps\/\",\"name\":\"How to Self Host Next.js Apps\",\"isPartOf\":{\"@id\":\"https:\/\/pagepro.co\/blog\/#website\"},\"datePublished\":\"2025-04-07T12:50:50+00:00\",\"dateModified\":\"2026-04-22T07:14:22+00:00\",\"description\":\"Discover how to self host Next.js apps using servers, Docker, and modern deployment tools. Reduce platform lock-in and move beyond Vercel.\",\"breadcrumb\":{\"@id\":\"https:\/\/pagepro.co\/blog\/self-hosting-nextjs-apps\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/pagepro.co\/blog\/self-hosting-nextjs-apps\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/pagepro.co\/blog\/self-hosting-nextjs-apps\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/pagepro.co\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Blog\",\"item\":\"https:\/\/pagepro.co\/blog\/\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"Self Hosting Nextjs Apps\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/pagepro.co\/blog\/#website\",\"url\":\"https:\/\/pagepro.co\/blog\/\",\"name\":\"Pagepro\",\"description\":\"Frictionless Next.js, Expo &amp; Sanity Development Blog\",\"publisher\":{\"@id\":\"https:\/\/pagepro.co\/blog\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/pagepro.co\/blog\/?s={search_term_string}\"},\"query-input\":\"required name=search_term_string\"}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/pagepro.co\/blog\/#organization\",\"name\":\"Pagepro\",\"url\":\"https:\/\/pagepro.co\/blog\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/pagepro.co\/blog\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/pagepro.co\/blog\/wp-content\/uploads\/2020\/08\/logo_pagepro-b66d228a1e-1.png\",\"contentUrl\":\"https:\/\/pagepro.co\/blog\/wp-content\/uploads\/2020\/08\/logo_pagepro-b66d228a1e-1.png\",\"width\":440,\"height\":200,\"caption\":\"Pagepro\"},\"image\":{\"@id\":\"https:\/\/pagepro.co\/blog\/#\/schema\/logo\/image\/\"},\"sameAs\":[\"https:\/\/www.facebook.com\/thisispagepro\"]},{\"@type\":\"Person\",\"@id\":\"https:\/\/pagepro.co\/blog\/#\/schema\/person\/66e00cf32ef7d2d1b010523eff380caf\",\"name\":\"Jakub Dakowicz\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/pagepro.co\/blog\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/5e0855c6f563f4e1a4a53206089ce0cc?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/5e0855c6f563f4e1a4a53206089ce0cc?s=96&d=mm&r=g\",\"caption\":\"Jakub Dakowicz\"},\"description\":\"Jakub is the Chief Technology Officer at Pagepro, where he leads technical strategy and oversees the architecture of complex web platforms built with Next.js and headless CMS solutions. With nearly nine years at Pagepro and over five years leading the engineering team, he has been instrumental in shaping the company\u2019s architectural standards, development workflows, and scalability practices. Jakub focuses on building robust, composable systems that balance performance, maintainability, and long-term business flexibility. He drives technical decision-making across projects, ensuring that solutions are not only modern, but strategically aligned with client growth.\",\"sameAs\":[\"https:\/\/www.linkedin.com\/in\/jakub-dakowicz-939838102\/\"],\"url\":\"https:\/\/pagepro.co\/blog\/author\/jakub_dakowicz\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"How to Self Host Next.js Apps","description":"Discover how to self host Next.js apps using servers, Docker, and modern deployment tools. Reduce platform lock-in and move beyond Vercel.","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:\/\/pagepro.co\/blog\/self-hosting-nextjs-apps\/","og_locale":"en_US","og_type":"article","og_title":"How to Self Host Next.js Apps","og_description":"Discover how to self host Next.js apps using servers, Docker, and modern deployment tools. Reduce platform lock-in and move beyond Vercel.","og_url":"https:\/\/pagepro.co\/blog\/self-hosting-nextjs-apps\/","og_site_name":"Pagepro","article_publisher":"https:\/\/www.facebook.com\/thisispagepro","article_published_time":"2025-04-07T12:50:50+00:00","article_modified_time":"2026-04-22T07:14:22+00:00","og_image":[{"width":1024,"height":582,"url":"https:\/\/pagepro.co\/blog\/wp-content\/uploads\/2025\/04\/Self-Hosting-Nextjs-Apps-Outside-Vercel-1.png","type":"image\/png"}],"author":"Jakub Dakowicz","twitter_card":"summary_large_image","twitter_misc":{"Written by":"Jakub Dakowicz","Est. reading time":"9 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/pagepro.co\/blog\/self-hosting-nextjs-apps\/#article","isPartOf":{"@id":"https:\/\/pagepro.co\/blog\/self-hosting-nextjs-apps\/"},"author":{"name":"Jakub Dakowicz","@id":"https:\/\/pagepro.co\/blog\/#\/schema\/person\/66e00cf32ef7d2d1b010523eff380caf"},"headline":"Self Hosting Nextjs Apps","datePublished":"2025-04-07T12:50:50+00:00","dateModified":"2026-04-22T07:14:22+00:00","mainEntityOfPage":{"@id":"https:\/\/pagepro.co\/blog\/self-hosting-nextjs-apps\/"},"wordCount":1731,"commentCount":0,"publisher":{"@id":"https:\/\/pagepro.co\/blog\/#organization"},"keywords":["next.js","webdev"],"articleSection":["Next js","Web Development"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/pagepro.co\/blog\/self-hosting-nextjs-apps\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/pagepro.co\/blog\/self-hosting-nextjs-apps\/","url":"https:\/\/pagepro.co\/blog\/self-hosting-nextjs-apps\/","name":"How to Self Host Next.js Apps","isPartOf":{"@id":"https:\/\/pagepro.co\/blog\/#website"},"datePublished":"2025-04-07T12:50:50+00:00","dateModified":"2026-04-22T07:14:22+00:00","description":"Discover how to self host Next.js apps using servers, Docker, and modern deployment tools. Reduce platform lock-in and move beyond Vercel.","breadcrumb":{"@id":"https:\/\/pagepro.co\/blog\/self-hosting-nextjs-apps\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/pagepro.co\/blog\/self-hosting-nextjs-apps\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/pagepro.co\/blog\/self-hosting-nextjs-apps\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/pagepro.co\/"},{"@type":"ListItem","position":2,"name":"Blog","item":"https:\/\/pagepro.co\/blog\/"},{"@type":"ListItem","position":3,"name":"Self Hosting Nextjs Apps"}]},{"@type":"WebSite","@id":"https:\/\/pagepro.co\/blog\/#website","url":"https:\/\/pagepro.co\/blog\/","name":"Pagepro","description":"Frictionless Next.js, Expo &amp; Sanity Development Blog","publisher":{"@id":"https:\/\/pagepro.co\/blog\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/pagepro.co\/blog\/?s={search_term_string}"},"query-input":"required name=search_term_string"}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/pagepro.co\/blog\/#organization","name":"Pagepro","url":"https:\/\/pagepro.co\/blog\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/pagepro.co\/blog\/#\/schema\/logo\/image\/","url":"https:\/\/pagepro.co\/blog\/wp-content\/uploads\/2020\/08\/logo_pagepro-b66d228a1e-1.png","contentUrl":"https:\/\/pagepro.co\/blog\/wp-content\/uploads\/2020\/08\/logo_pagepro-b66d228a1e-1.png","width":440,"height":200,"caption":"Pagepro"},"image":{"@id":"https:\/\/pagepro.co\/blog\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/thisispagepro"]},{"@type":"Person","@id":"https:\/\/pagepro.co\/blog\/#\/schema\/person\/66e00cf32ef7d2d1b010523eff380caf","name":"Jakub Dakowicz","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/pagepro.co\/blog\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/5e0855c6f563f4e1a4a53206089ce0cc?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/5e0855c6f563f4e1a4a53206089ce0cc?s=96&d=mm&r=g","caption":"Jakub Dakowicz"},"description":"Jakub is the Chief Technology Officer at Pagepro, where he leads technical strategy and oversees the architecture of complex web platforms built with Next.js and headless CMS solutions. With nearly nine years at Pagepro and over five years leading the engineering team, he has been instrumental in shaping the company\u2019s architectural standards, development workflows, and scalability practices. Jakub focuses on building robust, composable systems that balance performance, maintainability, and long-term business flexibility. He drives technical decision-making across projects, ensuring that solutions are not only modern, but strategically aligned with client growth.","sameAs":["https:\/\/www.linkedin.com\/in\/jakub-dakowicz-939838102\/"],"url":"https:\/\/pagepro.co\/blog\/author\/jakub_dakowicz\/"}]}},"acf":[],"_links":{"self":[{"href":"https:\/\/pagepro.co\/blog\/wp-json\/wp\/v2\/posts\/19183"}],"collection":[{"href":"https:\/\/pagepro.co\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/pagepro.co\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/pagepro.co\/blog\/wp-json\/wp\/v2\/users\/16"}],"replies":[{"embeddable":true,"href":"https:\/\/pagepro.co\/blog\/wp-json\/wp\/v2\/comments?post=19183"}],"version-history":[{"count":14,"href":"https:\/\/pagepro.co\/blog\/wp-json\/wp\/v2\/posts\/19183\/revisions"}],"predecessor-version":[{"id":19505,"href":"https:\/\/pagepro.co\/blog\/wp-json\/wp\/v2\/posts\/19183\/revisions\/19505"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/pagepro.co\/blog\/wp-json\/wp\/v2\/media\/19196"}],"wp:attachment":[{"href":"https:\/\/pagepro.co\/blog\/wp-json\/wp\/v2\/media?parent=19183"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/pagepro.co\/blog\/wp-json\/wp\/v2\/categories?post=19183"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/pagepro.co\/blog\/wp-json\/wp\/v2\/tags?post=19183"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}