We accept USD, EUR, PLN and 19 other currencies
Seamless communication in English and Polish
We always meet deadlines - no more dragging projects

Next.js to Astro migration Less JavaScript and lower bills - without rewriting the frontend

Faster. Cheaper to run. No vendor lock-in. Your React components stay - we move them into Astro as islands and serve the rest of the site as static HTML.

Book a meeting
Next.js
Astro
/ they trusted us

What is holding your website back today?

Next.js is a good application framework. The problem starts when a content website pays the full cost of an application it does not need.

The whole site is a React application

Even a page with text and one image loads and hydrates React instead of being plain HTML.

The bundle grows with every library

Each new dependency stretches time to interactive, and INP and TBT get worse despite optimizations.

The bill grows with your traffic

On-⁠demand rendering, ISR and serverless functions cost money on every page view - including the ones whose content never changes.

Complexity the site does not need

App Router, Server Components, cache layers and revalidate are architectural decisions on a site whose job is to sell.

Some features keep you on one provider

ISR, middleware and image optimization work best on a single platform, so changing hosting stops being a free choice.

Every change needs a developer

A layout fix is a frontend task, and every major Next.js release means rewriting code that already works.

What do you gain after the migration?

Every benefit comes from a concrete technical change - not from marketing promises.

  • Zero JavaScript where it is not needed

    Astro renders pages to HTML and ships JavaScript only for the elements that are genuinely interactive.

    Shorter time to interactive and better INP without cutting features.

  • Your React components stay

    Astro runs React natively. We move existing components over as islands and load them where they are actually needed.

    The migration moves your code instead of rewriting the frontend from scratch.

  • Predictable hosting costs

    Static HTML served from a CDN needs no serverless function to render every page view.

    Traffic growth stops being its own line in the budget.

  • No dependency on a single platform

    The build output is a set of files you can host on Cloudflare, any CDN or your own server.

    Switching providers becomes a business decision, not a migration project.

  • A simpler architecture

    No cache layers to reason about in application code, and no splitting every section into a server and a client part.

    Fewer places where things can go wrong, and faster onboarding for a new developer.

  • Updates without rewrites

    Astro owns the view layer rather than the entire application rendering model, so new versions do not force you to change how pages are written.

    Maintaining the site stops competing with growing it.

Before

Next.js (SSR / App Router)

  • The whole site runs as a React application
  • JavaScript hydrates the whole layout
  • On-⁠demand rendering or ISR
  • A serverless function on every page view
  • Caching resolved in application code
  • Some features tied to the hosting platform
After

Astro + headless CMS

  • Static HTML by default
  • JavaScript only inside interactive islands
  • React components where they make sense
  • CDN/edge hosting (Cloudflare)
  • Caching at the CDN level
  • Code portable between providers

You are not starting from scratch

Migrating from Next.js is closer to moving your code than to building a new website. We keep or migrate:

  • React components
  • Content and posts
  • Media
  • URLs - usually 1:1
  • Metadata and schema
  • Analytics (GA4 / GTM)
  • Forms and API endpoints
  • Third-party integrations
  • The design, 1:1

What about the CMS? You have two paths

Option 1 - our recommendation

Sanity - a modern headless CMS

Content models designed around your business, live preview editing and no CMS server to maintain. We recommend this path when content currently lives in MDX files in the repository or in a panel your editors do not want to work in.

Option 2 - nothing changes

Your current headless CMS stays

Sanity, Contentful, Strapi or headless WordPress - Astro reads content from the same API. On Next.js sites this is the most common scenario, and content migration effectively does not happen.

We migrate the technology, not the visibility you earned

Migrating from Next.js usually keeps your URLs unchanged, but we assume nothing up front - every URL has its place in the new architecture before we switch production over.

SEO safety

SEO under control at every stage

SEO safety is not an add-on to the migration, it is a permanent part of it - from the first crawl to post-launch monitoring.

  1. 01 Full crawl of the current site
  2. 02 URL inventory
  3. 03 Old → new mapping
  4. 04 301 redirects
  5. 05 Canonicals and metadata
  6. 06 Schema.org
  7. 07 Sitemap and robots.txt
  8. 08 Search Console before and after
  9. 09 404 and indexing monitoring

Not sure whether a migration makes sense for you?

Show us your current Next.js site - we will assess the scope, the risks and the possible gains before you decide.

Book a meeting

How does the migration work?

1

Step 1

Audit and inventory

Routing, use of SSR and Server Components, API endpoints, integrations, forms and analytics.

2

Step 2

Architecture design

What stays static, what needs interactivity, where content lives and how hosting is set up.

3

Step 3

Moving the frontend

Layouts and templates in Astro, React components as islands where they are needed.

4

Step 4

Content and data

Connecting the current CMS or migrating content, media and data models.

5

Step 5

SEO and testing

URL parity, 301 redirects where needed, canonicals, schema, Core Web Vitals, GA4/GTM and QA.

6

Step 6

Launch and monitoring

Production switch, DNS, Search Console and post-launch checks.

From the audit to stable operation after launch - without chaos and without downtime.

/ case studies

See our migrations.

When is moving to Astro worth it?

If you recognize several of the points below, your site is probably paying for capabilities it never uses.

Checklist

Does this sound familiar?

  • The site is mostly content, yet it runs as a full React application
  • The hosting bill grows faster than your traffic
  • INP and TBT do not improve despite round after round of optimization
  • Changing a section or a layout always needs a developer and a deploy
  • Every major Next.js release means rewriting code that works
  • You want the site to stop depending on a single hosting platform
  • Your team maintains complexity this website does not need
An honest assessment

When we advise against migrating

  • The site is an application - logins, user dashboards, carts or content that depends on who is signed in are areas where Next.js has the advantage - there we stay with it.
  • An audit before the decision - we analyze the current project before recommending a migration.
  • A clear recommendation - if the migration will not deliver enough value, we say so before the project starts.

When Next.js is the right choice, and when it is not

Next.js was built for applications, and in that role it is hard to replace. Logins, user dashboards, carts, admin panels, content that depends on who is signed in - server-side rendering and the full React model genuinely earn their place there.

A company website, a blog, a landing page or a content platform work differently. Their content is the same for every visitor and changes rarely, yet every page view still goes through the same rendering and hydration machinery.

Migrating to Astro makes sense in exactly that second case - not because Next.js is bad, but because a content site is paying for capabilities it never uses. We build applications in Next.js ourselves and we keep doing it, so the recommendation depends on what your project actually is.

What happens to your React components?

Astro runs React components natively, so existing code does not get thrown away. During the audit we split components into two groups: the ones that only render content, and the ones that genuinely need interactivity in the browser.

The first group is rendered to HTML at build time and ships no JavaScript at all. The second stays a React component but loads as its own island - when it is needed, rather than together with the entire page.

In practice the largest part of the work is not rewriting components, it is deciding which one belongs in which group.

What does the architecture look like after the migration?

In Next.js the view, routing, rendering and data layer are all part of one application, and hosting has to be able to run it. After the migration those layers are separated.

Content lives in a headless CMS, usually the same one as today, the frontend is Astro and React components in a repository, and the build output is static files served from Cloudflare infrastructure. The parts that genuinely have to be dynamic stay on the edge - as a deliberate exception rather than the default mode for the whole site.

Forms and API endpoints move to edge functions, so none of your current functionality disappears.

What drives the scope and the price?

Every migration is different, which is why we do not work from off-the-shelf price lists. The scope depends mostly on the number of page types, the number of components and the state of their code, the number of API endpoints, and the integrations and forms that have to move.

It also depends on how much of the site truly needs on-⁠demand rendering, whether the design stays as it is, and where the content should live in the end.

After the audit we prepare a concrete scope, the risks, a recommended architecture, a timeline and a quote. Only then do you decide whether to start.

What happens after launch?

The migration does not end on the day we switch DNS. For the first weeks we monitor indexing, 404 errors and Core Web Vitals to make sure Google has moved cleanly to the new version.

From there the site grows through a controlled process: changes go through the repository, code review and staging, and deployments are automated and reversible.

Frequently asked questions about migrating

The goal of the migration is to keep your visibility. Moving from Next.js usually leaves the URL structure unchanged, and we still run a full crawl and URL mapping before launch, then monitor indexing and 404 errors in Search Console afterwards.

No. Astro runs React natively, so we move components over and load them as islands. We only change the ones that do not need interactivity - those become plain HTML and stop shipping JavaScript to the browser.

They stay dynamic. Astro can render selected pages and fragments on demand, and forms and API endpoints move to edge functions. The difference is that dynamic becomes the exception rather than the whole site.

When the site is really an application - with logins, a user dashboard, a cart or content that depends on who is signed in. Next.js has the advantage in those projects, and we say so before any work starts.

No. If your content already lives in a headless CMS, Astro reads it from the same API and there is no content migration at all. We propose a new CMS only when the current one genuinely limits your editors.

The build output is static files served from Cloudflare. A page view no longer starts a server function, so cost stops scaling linearly with traffic and the site is not tied to one provider.

It depends on the number of pages, components, integrations and the scope of design changes. After the audit we prepare a concrete scope, timeline and quote.

So, shall
we begin?

Book a meeting

93% of our clients come from recommendations

Łukasz Błocki, Co-Founder & CTO

Łukasz Błocki

Co-Founder & CTO

Rafał Adamski, Co-Founder & CEO

Rafał Adamski

Co-Founder & CEO

  • Free consultation with the CEO & CTO
  • Clear recommendations and expert guidance
  • Initial estimate with multiple pricing options
  • Clear direction and action plan

Free 30-⁠min consultation

Book a meeting

We'll respond even in 2 hours

Drop us a message!