Customers

Share this article

Moving to Next.js 16 and React 19: Our major step in building a stable and secure platform

Why upgrading our frameworks to Next.js 16 and React 19 helped improve security, stability, and engineering velocity.

At Atomicwork, we’re laser-focused in building an AI-native ITSM platform that extends a seamless user experience to high-velocity IT teams. When our customers log into our product every day, we’recommitted to giving them a stable and frictionless interface that empowers them to provide faster resolutions.  

With this goal in mind, last month, we completed a significant upgrade to a core component of the technology stack that powers our platform. We moved from Next.js 14 to Next.js 16, and from React 18 to React 19 for a faster, more stable, and secure platform under the hood.  

If those names aren't familiar, here's why they matter: these are the core frameworks that determine how fast our platform loads, how smoothly it responds when you navigate between screens, and how securely your data is handled. Upgrading them was our way of making sure the experience improved both for our users and our engineers who can now ship features faster.

Why the upgrade?

From the beginning, my team and I were clear about our goal: we weren’t upgrading just to chase the latest release.  

Tracking the performance of the platform, we observed that:

  • There was an ongoing flow of security advisories that required constant remediation
  • We couldn’t leverge performance improvements in the ecosystem
  • There was increased friction in adopting modern tooling  
  • Our legacy patterns — code and conventions that once made sense— had outlived their usefulness  

For a product that helps IT teams promise reliability to their users, we couldn't afford to let our own platform lag behind.

And the decision to upgrade, paid off big time in three main aspects.

Rapid build times

First, speed.

A big part of this came from Turbopack, the new build tool that ships with Next.js 16. In earlier versions it felt experimental but now it's firmly production ready. Dev server cold starts went from roughly 45–60 seconds down to under 12 seconds.  

Incremental rebuilds, which are the small compilations that happen each time an engineer tweaks a component, dropped to under half a second. That's the kind of feedback loop that changes how people work.  

Engineers spend less time waiting and more time iterating, and over the course of a day, that compounds into real velocity. To be more precise, we noticed that the production build times dropped from 27 minutes to 14 minutes. And we’re not done here yet; the team is still working on bringing that number down further.

Towards a secure and reliable platform

One of the less glamorous but most important wins of this migration was how cleanly it addressed a whole range of known vulnerabilities without any custom middleware, manual patching, no forked dependencies. Security improvements were baked straight into the baseline of React 19 and Next.js 16.

Finally, we sharpened our stability. This is where React 19's upgrades to concurrent rendering really started to shine. Let me break that down.

Concurrent rendering is React's ability to juggle multiple updates at once without freezing the page. React 19 made this behavior significantly more predictable which translates to:

  • Fewer hydration mismatches - those are the glitches that happen when what the server builds and what the browser expects don't quite line up  
  • Fewer rendering-related bugs reaching production  
  • A cleaner, more consistent experience for users

The platform simply behaves more reliably now, reducing any sort of friction or inconsistencies from a user’s point of view.  

Impact that matters beyond the numbers

We achieved faster initial page loads and smoother client-side navigation on the user interface, but our real win was nailing reliability and predictability at scale.

For our engineers, we were able to deliver:

Metric
Before
After
Improvement
Dev server cold start
~45–60s
~8–12s
~6× faster
Incremental rebuild (component change)
2–4s
<500ms
Near-instant
Route change during dev
Noticeable reload
Instant
Qualitative win
CPU usage during dev
High & spiky
Lower & stable
More predictable

More than the metrics, this upgrade gave our team something arguably more valuable: a cleaner mental model. We were able to remove legacy abstractions, delete workaround code, and standardize how we handle server-side rendering and data fetching across the app.

All this translating to less code, fewer special cases, and more confidence that what we ship will behave the way we expect.

Upgrades like this are rarely observable from the outside. However, for a product built on the promise of seamless, reliable experiences, a migration of this scale is foundational.  

I’ve dived deeper into the technical details of the migration here for those interested 😊 And do reach out to me on LinkedIn if you have any questions on how we went about it!

No items found.
Get a demo
Meet 100+
tech-forward CIOs
Sept 24, 2025
Palace Hotel, SF
Request an invite
Summarize with:

You may also like...

When AI stops being magic: Rethinking how IT teams should evaluate conversational tools
Why most AI demos wow, but daily usage wears users down and what IT leaders should really be evaluating instead.
Enterprise knowledge graphs: Why in the age of AI agents, context is king
Why enterprise knowledge graphs are needed to give AI agents the context they need for intelligent and high-quality employee support.
Designing Atomicwork’s customized agentic framework for enterprise needs
In our effort to scale the deployment of AI agents for diverse enterprise service management use cases, we've developed our own version of the agentic framework. Here's how we did it.

See Atomicwork in action now.