CASE STUDIES

Why Penasihat Hosting Moved from WordPress to Next.js 16

Willya Randika |
New Penasihat Hosting homepage after moving to Next.js 16

This project started in November 2025 and was completed in January 2026. In terms of timeline, two months for a migration like this is relatively fast, especially because I was working on it while still handling client projects at Harun Studio.

The interesting part is this: the migration did not happen because WordPress failed.

Before the move, PenasihatHosting.com already felt convincing on WordPress. From SEO, content management, stability, to lightweight customization with a stack like GeneratePress and GenerateBlocks, it was still a very workable setup. I had also been using WordPress almost every day for around 10 years, so there was no fundamental problem that made me feel I had to “escape” from WordPress.

The turning point came from product direction.

Penasihat Hosting no longer wanted to stop at being a regular review blog. The direction had changed into a broader hosting ecosystem: reviews, hosting directories, wiki content, blog posts, guides, and tool pages such as an uptime calculator, DNS lookup tool, SSL checker, and more. At that point, I felt the long-term needs for the next 5 to 10 years would be much easier to handle with a more flexible stack.

Short Summary & Key Takeaways

Timeline

November 2025 -> January 2026

Main Driver

Product pivot, not an “escape” from WordPress

New Stack

Next.js 16 + PostgreSQL + custom CMS

Rendering

Static-first, cache-heavy, tag revalidation

PageSpeed

95 mobile / 100 desktop

CWV

Core Web Vitals Assessment: Passed

If your WordPress website is growing beyond a standard content site and starting to feel more like a product platform, start with a free consultation so the stack you choose truly fits the next 5 to 10 years.

The Starting Point: WordPress Was Actually Already Good

I want to make this clear first, because migration stories are often oversimplified, as if moving away from WordPress automatically means WordPress was bad. That is not true.

The previous WordPress stack at Penasihat Hosting was already fairly healthy:

  • GeneratePress as the theme.
  • GenerateBlocks as the builder.
  • ACF for certain structured data.
  • Custom snippets for things that were more appropriate to handle in code.
  • A few support plugins such as NinjaFirewall, AntiSpam Bee, and other utilities in a reasonable amount.

So the problem was not “WordPress is slow,” “WordPress is bad,” or “WordPress is unreliable.”

The real issue was this: the product being built was moving further away from the shape of a typical website.

Once the target becomes a hosting platform with provider directories, categories, data centers, promos, plans, wiki content, blog content, and interactive tool pages, the business logic starts becoming much more complex. At that point, I felt that forcing everything to keep growing inside WordPress would also increase long-term overhead: more manual labor, more architectural compromises, and more areas that would feel like “it works, but it does not feel natural.”

Why Did I Choose Next.js 16?

After considering several options, I chose Next.js 16.

Not because I am a hardcore Next.js developer. In fact, the opposite is closer to the truth: I am still learning and I have not spent that many years living full-time in the React/Next ecosystem. But for the needs of Penasihat Hosting, Next.js felt like the best compromise between flexibility, productivity, and the long-term future of the product.

The main reasons:

  1. One stack for frontend and backend
    I could build the public interface, dynamic routes, server actions, admin CMS, and more custom logic inside one ecosystem.

  2. A more natural fit for a hybrid of content and application logic
    Penasihat Hosting is not just a blog. It has very content-heavy areas, but it also has parts that behave more like an application layer: directories, filtering, comparisons, and various utility tools.

  3. A better foundation for future tool pages
    For features such as an uptime calculator, DNS lookup, SSL checker, .htaccess generator, robots.txt generator, and other tools, Next.js feels cleaner and more flexible than forcing everything into a WordPress plugin and page-builder pattern.

  4. A much better fit for AI-assisted workflows
    With a modern stack like Next.js, TypeScript, and modular components, development with AI feels much more productive. A lot of manual work drops compared with the older workflow of juggling PHP, snippets, hooks, CSS, and plugin behavior.

So if the question is: “Is Next.js actually a better fit than WordPress for a case like this?”

My answer is: yes, for a project like Penasihat Hosting, it is.

If you are only building a company profile, a regular blog, or a straightforward content website, WordPress is still a very rational choice. But for a platform moving toward a product ecosystem with many custom data relationships and interactive tools, Next.js feels more natural.

I Learned While Building, Not After Becoming an “Expert”

I am not a Next.js developer who has spent years living entirely inside this stack. But I was not starting from zero either.

Before this project, I had already built several things with Next.js, including:

  • Harun Studio’s internal app,
  • ImageTools.pro, which I built with Next.js and AI assistance,
  • Pixstack.app, which I later sold on Flippa for USD $400.

That means I was not yet a veteran, but I had enough foundation to know this project was realistic to build while still learning more deeply.

Harun Studio's internal app, which helped shape my foundation in Next.js

And honestly, that is one reason the timing of this migration felt right: AI for coding has become much more reliable. I could focus on architecture, validation, refinement, and quality control, while a lot of repetitive work could be accelerated by tools like Cursor, Codex, and more mature prompt-first workflows.

The Old Stack vs The New Stack

The Previous WordPress Stack

Like most of my WordPress projects, the old Penasihat Hosting stack was built with a lightweight approach:

  • GeneratePress
  • GenerateBlocks
  • ACF
  • custom snippets
  • a reasonable set of security and utility plugins

This was still a good WordPress stack. So once again, the real issue was not the quality of the old stack, but the fact that the product had grown beyond the shape of a typical WordPress site.

The New Next.js Stack

The new architecture is built around these main components:

  • Next.js 16 with App Router
  • React 19
  • TypeScript
  • Tailwind CSS 4
  • Prisma ORM
  • PostgreSQL
  • PM2 to run the app on a VPS
  • Cloudflare R2 for image storage and backup
  • Upstash for rate limiting and certain session-related workloads
  • Resend for the contact form and newsletter
  • Umami Analytics for analytics

I chose to run this website on a Singapore VPS, which is very close to the main audience in Indonesia. For me, this is a comfortable combination: I still keep server control, performance feels fast for the Indonesian market, and I am not dependent on too many third parties for core hosting and the database.

Penasihat Hosting homepage after being rebuilt with Next.js 16

The Internal CMS: Why Did I Build My Own?

One of the boldest decisions in this project, and one I am very glad I made, was building an internal CMS.

Technically, I understand why this sounds like more work. WordPress already gives you Gutenberg, a visual editor, a huge plugin ecosystem, and a far more mature publishing workflow. But for me personally, a very beginner-friendly editor was not essential, because I am a developer and I am already comfortable with MDX.

So the goal was not to build a general-purpose CMS like WordPress. I only wanted to build a CMS that fits my own workflow.

The internal structure I built includes:

  • an admin dashboard,
  • blog post management,
  • category management,
  • provider management,
  • badges,
  • widgets,
  • and structured forms for hosting directory data.

Penasihat Hosting internal CMS dashboard

For content editing, I used an MDX editor based on CodeMirror, complete with a toolbar for inserting frequently used elements. It is not as beginner-friendly as Gutenberg, but it fits my workflow much better.

MDX editor inside the Penasihat Hosting CMS

On the other hand, categories are also no longer handled as a shallow taxonomy. I built a more serious category management area because categories in this project play an important role in the structure of the directory and the broader product navigation.

Category management inside the Penasihat Hosting CMS

The main advantages:

  • I only built admin features that are truly needed,
  • the publishing workflow became more focused,
  • content data and directory data live in one system,
  • and I do not have to carry the weight of a large CMS for needs that are actually very specific.

From Review Blog to a Broader Hosting Ecosystem

This is probably the most important business reason behind the migration.

Previously, Penasihat Hosting was strongly associated with a homepage that performed well for keywords like “best hosting” and related terms. After the pivot, the homepage was no longer positioned as the single landing page for that keyword.

The homepage now acts more like a gateway into the broader ecosystem, which includes:

  • hosting directories,
  • reviews,
  • guides,
  • wiki content,
  • hosting promos,
  • data center information,
  • and tool pages.

Tool pages as part of the new direction of Penasihat Hosting

This is a major change in information architecture, and it naturally has consequences.

The page that previously functioned as the center for the keyword “best hosting” was moved to /hosting-terbaik. At the moment, that page is still around rank #11, and I consider that a normal transition phase. My current focus is on strengthening internal linking and helping Google understand that the keyword intent is no longer tied to the homepage, but to the /hosting-terbaik page.

For me, this is important to explain honestly: if there is any traffic decline, it is not purely because of the technical migration, but also because of a change in product strategy and keyword architecture.

Content Migration, Redirects, and SEO Protection

In a migration like this, the most sensitive part is usually not design or stack choice, but SEO continuity.

Because of that, I kept several principles:

  1. If an old URL is still relevant, keep it.
  2. If a URL changes, add a 301 redirect.
  3. Keep canonical URLs consistent without trailing slashes.
  4. Maintain sitemap and robots properly.
  5. Handle metadata seriously for each page.
  6. Improve internal linking to reflect the new keyword intent after the pivot.

For redirects, I chose to place them directly in Nginx, not in Cloudflare Rules or in the Next.js redirect config. For me, that is faster, more flexible, and easier to manage directly on the VPS.

Redirect rules in Nginx to preserve old URL structure

From an implementation point of view, I migrated old content with a mix of AI assistance, manual input through the CMS, and gradual database refinement. This was not a “one click and done” migration. It was more like a curation process while making sure the final result stayed clean.

Technical Optimizations I Applied

Even though Next.js is already fast by default, I did not want to rely only on the framework’s defaults.

Some of the optimizations I applied:

1. Static-first and cache-heavy rendering

Key pages were built with a strongly cache-oriented approach. Many stable pieces of data are stored with long-lived cache profiles and invalidated through tags when changes come from the admin area. This keeps marketing pages lightweight while still allowing controlled updates for data that changes.

2. Partial Prerendering and cache components

I enabled cache components so pages could take advantage of more efficient rendering. For blocks that are largely static, this helps keep responses fast without making every request behave like a fully dynamic page.

3. More serious image handling

Remote images are restricted to domains I control, while still using Next.js image optimization with modern formats like AVIF and WebP. Because the application runs on my own VPS, I can keep full image optimization active without worrying too much about third-party transformation costs.

4. Nginx redirects for performance and control

Instead of stacking redirects inside the application layer, I handled them through Nginx. For a migration with a fair number of redirects, this felt faster and cleaner.

5. Security headers

I also applied security headers at the application level for things like clickjacking protection, MIME sniffing prevention, referrer policy, HSTS, permissions policy, and a stricter CSP.

6. Rate limiting with Upstash

I use Upstash for rate limiting in areas that are more exposed to abuse: the contact form, newsletter, admin login, search, API endpoints, and certain tools.

Upstash implementation for rate limiting in Penasihat Hosting

7. Lightweight analytics and form handling

I use Umami for analytics, while the contact form and newsletter use Resend. This choice keeps development faster, cleaner, and avoids making the system feel bloated.

Measurable Results

For me personally, the best result of this migration is not just a high PageSpeed score, but the fact that the website now feels fast and passes Core Web Vitals while also having a foundation that is much more ready to grow.

The PageSpeed Insights results I recorded:

  • Mobile: Performance 97 | Accessibility 100 | Best Practices 100 | SEO 100
  • Desktop: Performance 100 | Accessibility 97 | Best Practices 100 | SEO 100

Most importantly:

  • Core Web Vitals Assessment: Passed

Penasihat Hosting PageSpeed Insights results after migration

Because the server is in Singapore and the main visitors are in Indonesia, the real-world experience also feels very fast. So I am not obsessed with always seeing a perfect 100 across every device combination. As long as Core Web Vitals are passing, the pages feel fast, and the user experience is consistent, that matters much more.

Development and Maintenance Workflow

My development workflow now feels much cleaner:

  • development on localhost,
  • push to GitHub,
  • then deploy to the VPS using a deployment script I prepared.

On the maintenance side, the truly routine work is basically just:

  • monitoring server uptime,
  • updating when development needs arise,
  • and basic operational monitoring.

This is different from the WordPress maintenance pattern, which almost always comes with a checklist of core, theme, plugin, and compatibility updates.

From a cost perspective, it is also relatively efficient. There was no dramatic infrastructure cost jump because of this migration. The main additions are more about work tools like monthly AI editors or coding assistants, while I still control the core infrastructure myself.

Business and Operational Impact

After the migration, the biggest effects I felt were:

  • publishing content became faster for my workflow,
  • maintenance became lighter,
  • the product structure became much more ready to grow,
  • the foundation for directories and tools became far more reasonable,
  • and I feel much more comfortable building new features without constantly thinking about plugin-related compromises.

For SEO, I did not see dramatic damage caused by the technical migration itself. URL mapping and 301 redirects helped keep the transition reasonable.

If there is any traffic decline, the main cause is actually the pivot in content strategy and keyword structure. The homepage, which used to be strong for the keyword “best hosting,” now functions as an ecosystem gateway, while that keyword intent was moved to /hosting-terbaik.

So I see that decline more as an effect of repositioning, not as a sign that the migration failed.

Lessons from This Project

  1. Do not migrate just because the old stack feels less “cool.”
    Migration should happen because the product requirements have truly changed.

  2. WordPress is still very strong for many use cases.
    But for a hybrid platform that combines content, directories, tools, and fairly custom admin logic, Next.js can become a more natural choice.

  3. A custom CMS does not need to be fancy.
    Sometimes what you need is not a universal CMS, but the right CMS for your own workflow.

  4. AI changes the economics of development.
    Projects like this are much more realistic to execute now because AI can remove a lot of manual work that used to drain time and energy.

  5. SEO migration is not just about copying content.
    What matters more is preserving intent, URL mapping, internal linking, redirects, and information structure in a way search engines can still understand.

Do I Regret Moving Penasihat Hosting to Next.js?

Not at all.

In fact, after finishing it, I feel even more certain that this was the right decision for where Penasihat Hosting is going next. I feel more productive, it is easier to bring AI into my daily workflow, I have more freedom to build custom features, and I feel calmer because the foundation is now much better aligned with the complexity of the product I am building.

If Penasihat Hosting had remained just a regular review blog, I probably would not have made this migration.

But for a platform that wants to grow into a complete hosting ecosystem, I think this decision was exactly the right one.

Thinking About Moving WordPress to a More Flexible Stack?

If your website is growing beyond a standard content site and starting to look more like a product platform, we can first audit whether a stack migration is really necessary, or whether the current system simply needs a cleaner architecture.

Start with a free consultation or see our website development service if you need a rebuild on a foundation that is easier to scale.

Willya Randika

Willya Randika

Founder of Harun Studio, web developer, blogger, and hosting reviewer. He helps business owners build healthier websites through design, development, and long-term maintenance.

Related Articles

Explore more insights that connect closely with this topic.