SAP Commerce + Angular gets pitched as the enterprise standard, and almost nobody opens the full bill while doing it. The expensive part is not the licence. It is the quiet belief that "safe" and "SAP" mean the same thing.
We build commerce stacks ourselves, run them on our own infrastructure, and sit in the pitches where a CFO eventually wants to see the numbers. From that seat, "Next.js + Medusa over SAP Commerce" is not a matter of taste between two frameworks. It is a decision about total cost of ownership, vendor lock-in, and how many people will still be able to touch your code in five years. All three are settled before the first product page ever renders.
Why Next.js + Medusa vs SAP Commerce is a strategic question, not a technical one
You can build an excellent shop on SAP Commerce Cloud. That is not the argument. SAP has sat as a Leader in the Gartner Magic Quadrant for Digital Commerce for years running, and anyone claiming SAP Commerce is a bad product has never actually run it.
The point sits elsewhere. A technology decision is always also a strategic, cultural and political decision about power. Choose SAP Commerce + Angular and you are not just buying software. You are buying an operating model, a licence path, a certification market for your service providers, and a hiring market for your developers. Those four things shape your cost curve for years, and none of them shows up in an architecture diagram.
The architecture of SAP Commerce is itself part of the argument. At its core, CCv2 is a Java/Spring application, the former Hybris, on embedded Tomcat, with the OCC REST API as its interface. The composable storefront, Spartacus, is an Angular frontend that talks exclusively through that commerce REST API. So in practice you need Java/Spring competence in the backend and Angular competence in the frontend at the same time. That is not a detail, that is your staffing plan for the next several years.
The full bill: licence, operations, agency dependency
Start with the licence, because it is the most honest signal. The official SAP pricing page for Commerce Cloud names no edition or price information whatsoever. It points you to "Request a demo" and "Request a quote". That is not a marketing oversight, it is the business model: a negotiation-based, opaque enterprise licence.
For a decision-maker who has to defend a TCO case to the board, that is a structural problem. You are budgeting against a number you only learn after contract negotiation, typically tied to your gross merchandise volume, so it rises with your success. The circulating estimates of six- to seven-figure annual sums plus implementation costs come, without exception, from SAP partners rather than SAP itself. I deliberately treat them not as fact but as what they are: ranges from parties with an interest in the answer. That opacity is itself part of the bill.
Operations are elegantly solved inside the licence model and, at the same time, the heart of the dependency. CCv2 runs as a managed PaaS on Microsoft Azure, with Kubernetes and Azure SQL, and SAP runs the build and deploy pipelines. Hosting is included. That sounds convenient, and it is. You pay for that convenience by never holding the infrastructure your revenue runs on in your own hands. Data sovereignty and data localisation stop being settings you control and become contract annexes, and in a third-country transfer they quickly turn into a NIS2 and GDPR question you do not own yourself.
Then the agency dependency. SAP runs its own Build/Sell/Service/Run programme through PartnerEdge, and both rollout and operations run in practice through certified system integrators. That is a structural cost factor: you do not pick from the open market, you pick from a certified pool. A proprietary format like ImpEx, SAP's model-aware import/export format that understands type hierarchies and catalogue versions, reinforces it. It is technically sensible and at the same time a data structure that binds your institutional knowledge to one ecosystem.
Set the other side against that. Medusa is available under a genuine MIT licence, no open-core, no BSL, no licence bait-and-switch. The core is fully self-hostable, and PostgreSQL is the production database. On a self-hosted stack on your own infrastructure, and we run exactly this GDPR-compliant in Germany on Hetzner, entry sits in the low tens of euros per month, while a high-availability setup with redundant instances and a separate database lands roughly in the low hundreds of euros per month. A clean initial implementation costs a one-off five-figure sum, and ongoing operations take a few hours a month. We ran the same mechanics through in the Hetzner instead of Vercel comparison.
The decisive difference is the direction of the cost curve. Self-hosted costs fall over time, because hardware gets cheaper and your team gets more practised. Licence and managed costs rise with project success, because they hang off volume, users or GMV. That mechanic often only tips a make-or-buy decision in the second or third year.
Angular vs React: a developer market that does not keep up
The framework question gets waved off as a holy war. It is in fact a hard question of developer availability, and therefore a FinOps and risk question.
The numbers are unambiguous. The Stack Overflow Developer Survey 2025 puts React at roughly 45 percent of all respondents and Angular at roughly 18 percent, so React is used about two and a half times as often. Among professional developers the ratio barely shifts. In State of JS 2024 React leads clearly, and Angular was pushed to third place on usage by Vue. The npm download and GitHub figures point the same way, though raw npm numbers are inflated by CI pipelines and give you an order of magnitude, not an exact adoption measure. Several independent sources, the same convergence: React is carried more broadly.
What does that mean operationally? Bet on Angular and you recruit from a smaller pool, tend to pay more for specialists, and are more tightly bound to a provider that keeps the skill set on hand. Bet on React/Next.js and you reach the largest frontend developer market in the world: easier hiring, a bigger freelancer pool, lower risk that an agency switch leaves you paralysed for months. For a CIO who tracks developer availability as a run-the-business risk, that is not a nice-to-have, it is vendor risk management.
I want to stay fair, because there is a real strength here. Angular is opinionated, stable and maintained for the long term. In large, governance-driven organisations that is precisely an advantage: less sprawl, clear conventions, a framework that dictates decisions instead of leaving them to every team. If you have to keep a 200-strong frontend team consistent over five years, Angular gives you good reasons. That strength is real. It just does not justify every greenfield decision, where you are starting fresh anyway and could take the broader market with you.
What Next.js + Medusa actually delivers technically
So this does not stay an abstract sovereignty argument: the stack carries functionally too. Next.js with React Server Components measurably cuts the JavaScript shipped to the browser, because only components explicitly marked as client land in the client bundle. According to the documentation that improves First Contentful Paint. Incremental Static Regeneration serves pre-rendered static pages for most requests on a stale-while-revalidate basis and lowers server load, which matters once performance turns into conversion.
On self-hosting the good news is concrete: the official Next.js self-hosting docs confirm that a Node.js server and Docker support all features. next/image optimisation runs self-hosted with no extra configuration, and so does middleware. What you lose without Vercel is not the feature but the globally distributed edge execution. That is an honest, small price for most DACH shops whose traffic is regional anyway.
I will not hide the genuinely hard part: ISR caching only works automatically on a single instance with a persistent disk. The moment you scale across several instances behind a CDN, you need a custom cache handler, on Redis or S3 for example, plus shared encryption keys and stable deployment IDs. That is exactly the value proposition that makes Vercel hard to rebuild. It is solvable, with Coolify, Docker and a bit of operational discipline, but it is operational responsibility that you delegate to the licence with SAP. Anyone re-evaluating Medusa and Next.js should first be clear on what Medusa.js actually is and which commerce profiles it is built for.
The uncomfortable point: when SAP stays the economically correct call
Now the honest complication, without which any recommendation would just be marketing.
If your organisation already sits deep inside an SAP-ERP landscape, with Medusa you pay for exactly the integration work that SAP Commerce ships. SAP Commerce is natively embedded in an existing SAP world: inventory, prices, orders, customers. That integration is real and expensive to rebuild. With Medusa you build the bridge between shop and ERP yourself, and that is not a weekend project but an integration project with its own risk profile.
Second, Medusa is younger. The 2.0 GA landed in October 2024, and the jump from v1 to v2 brought breaking changes and migration effort. More important still: for deep B2B processes the core only ships limited building blocks, sales channels, customer groups, price lists. Features like company management, spending limits or quote and approval workflows come from the official b2b-starter. And that is explicitly boilerplate and reference code, not a maintained out-of-the-box product feature. That distinction is decisive: you get a starting point, not a product. Whatever you build with it, you maintain yourself.
For highly complex B2B commerce processes with deep ERP integration, SAP Commerce can therefore stay the economically correct call. Not because it sounds "safer", but because the sum of bundled integration and mature enterprise modules outweighs the build-it-yourself effort. That is a rare but real constellation. Anyone who has it should take SAP, with open eyes for the lock-in, not in spite of it. Which commerce profiles fit Medusa well and which do not can be worked through cleanly against concrete requirements; we sorted that by the question of whom headless commerce with Medusa actually suits.
What I tell decision-makers
Separate two questions that pitches systematically blur: "Is SAP Commerce a good product?" and "Is SAP Commerce the right decision for us?". The first answer is often yes. The second hangs on your starting position, not on SAP's Gartner placement.
Open the full bill before you sign. Licence plus renewals plus implementation plus certified operations plus a tight, expensive Angular-and-Java hiring market, against an MIT-licensed, PostgreSQL-native, self-hostable stack with the largest frontend developer pool in the world. Calculate over three years, not the first one. And factor in the direction of the cost curve, not just the starting point.
If you have a greenfield project without deep SAP-ERP ties, Next.js + Medusa is my default, for strategic reasons, not technical fashion. You buy investment security, technological sovereignty and developer availability instead of a contract that gets more expensive as you succeed. If you sit deep inside SAP and run highly complex B2B processes, SAP stays a defensible choice, as long as you know what you buy along with the convenience. What you should not do is buy the decision as a "safe standard" without having seen the bill. Buy an architecture without knowing its total cost, and you buy your service provider's interests right along with it. How a stack like this fits into the wider Next.js picture, we pulled together on our Next.js overview.
