Hero slot2 en

No CMS swap, no storefront rewrite: how an FMP differs from a CMS migration

If your competitor is pushing a migration guide at you right now, do not respond with a counter-migration guide. Respond with an architecture approach.

That is not rhetorical. The difference between a Frontend Management Platform and a CMS swap is architectural, not a marketing distinction. A CMS swap replaces one infrastructure component with another. An FMP changes how the frontend layer accesses infrastructure components. That sounds subtle but has fundamentally different consequences - for implementation effort, risk, and optionality.

This post is for solution architects and CTOs who have a concrete decision to make in the next 90 days: do we respond to the Salesforce-Contentful acquisition with a CMS swap, or with an architecture decision?

What a CMS swap actually costs

The competitor pitch promises "simple migration". And for data migration that is often true - Contentful has open export APIs, and tools like `contentful-export` generate valid JSON that is importable into a target CMS with the right converter logic.

The actual cost problem is not the data transfer. It is three other layers:

Layer 1: Frontend code changes

Every CMS swap means that SDK calls in frontend code must change. That sounds like a trivial search-and-replace operation. In practice it means:

// Before: Contentful SDK directly
import { createClient } from 'contentful'

const client = createClient({ space: '...', accessToken: '...' })
const entries = await client.getEntries({ content_type: 'blogPost', 'fields.slug': slug })

// After: Hygraph client
import { GraphQLClient } from 'graphql-request'

const hygraph = new GraphQLClient('https://eu-west-2.cdn.hygraph.com/content/...', {
  headers: { authorization: `Bearer ${token}` }
})
const { blogPost } = await hygraph.request(`query { blogPost(where: { slug: "${slug}" }) { ... } }`)

That is not one change. That is one change per content type per page of the storefront. A mid-market frontend with 15 - 30 different content types and 50 - 80 pages is several weeks of engineering effort.

Layer 2: Content model mapping

Content models are never 1-to-1 compatible. Contentful has rich text as embedded JSON; Hygraph delivers Slate AST; Storyblok works with block-nested components; Sanity has GROQ. Every target CMS has a different model for nested content, cross-entry references, asset delivery, and localisation.

Mapping these differences is the invisible effort in every migration. It is rarely quantified in migration guides.

Layer 3: Editor workflow disruption

Marketing teams have built editor workflows in Contentful: approval processes, scheduled publishing rules, content modelling conventions, preview URLs. Every new CMS has its own editor UX, its own permissions structure, its own preview logic. Training time for marketing teams is not listed as a cost of migration in any migration guide.

The combined effort - frontend changes + content model mapping + editor workflow disruption - in DACH enterprise projects is typically 3 - 6 months. That is the real price of a CMS swap.

What an FMP does instead

A Frontend Management Platform operates on a different layer. It does not replace CMS infrastructure. It abstracts access to that infrastructure - so that the frontend layer becomes CMS-agnostic.

The critical difference is the render boundary. With a directly integrated CMS, every page, every component, every page template has explicit knowledge of which CMS content comes from. The render boundary sits inside the component code itself.

With an FMP, the render boundary sits in the platform layer. The component knows no CMS - it knows a content interface. The CMS is one implementation behind that interface.

// FMP approach: component knows no CMS
interface ContentEntry {
  id: string
  type: string
  fields: Record<string, unknown>
  assets: Asset[]
  locale: string
}

// Hero component: CMS-agnostic
const HeroComponent: React.FC<{ entry: ContentEntry }> = ({ entry }) => {
  const { headline, subtext, ctaUrl, ctaLabel, image } = entry.fields

  return (
    <section className="hero">
      <h1>{String(headline)}</h1>
      <p>{String(subtext)}</p>
      <a href={String(ctaUrl)}>{String(ctaLabel)}</a>
      {image && <Image asset={image as Asset} priority />}
    </section>
  )
}

// Platform layer: handler abstraction
type CMSHandler = {
  fetchEntry(slug: string, type: string, locale: string): Promise<ContentEntry>
  fetchCollection(type: string, locale: string, filter?: Filter): Promise<ContentEntry[]>
}

// Contentful implementation
const contentfulHandler: CMSHandler = {
  async fetchEntry(slug, type, locale) {
    const response = await contentfulClient.getEntries({
      content_type: type, 'fields.slug': slug, locale
    })
    return mapContentfulEntry(response.items[0])
  },
  // ...
}

// Hygraph implementation - same interface
const hygraphHandler: CMSHandler = {
  async fetchEntry(slug, type, locale) {
    const data = await hygraphClient.request(FETCH_ENTRY_QUERY, { slug, type, locale })
    return mapHygraphEntry(data.entry)
  },
  // ...
}

Switching from Contentful to Hygraph in this architecture is: `setCMSHandler(hygraphHandler)`. No component changes. No template updates. No editor workflow disruption when the editor lives on the frontend layer (not in the CMS).

Render boundary semantics: why the line is decisive

The render boundary is the line where frontend code stops having CMS knowledge. The deeper this boundary sits in the component tree, the more expensive a CMS swap becomes.

Three render boundary positions, from expensive to cheap:

Position 1 - in the component (most expensive): Every component contains SDK calls. Content type IDs are hardcoded. A CMS swap requires changes across hundreds of files.

Position 2 - in the page template: SDK calls are bundled in page templates, not in individual components. A CMS swap requires changes in 20 - 40 template files. Better, but still significant effort.

Position 3 - in the platform handler (cheapest): A single handler encapsulates all CMS interactions. Components and templates know only `ContentEntry`. A CMS swap is an implementation change in a single module. The Agentic Frontend Management Platform places the render boundary systematically at Position 3.

This is not just a refactoring goal. It is a strategic architecture decision that determines how high your switching costs are - for CMS, but also for search backends, personalisation engines, and commerce APIs. The Composable Headless Frontend is the layer on which this abstraction holds.

The concrete decision tree for solution architects

If you are a solution architect who needs to make a recommendation for the next 90 days:

If the frontend is today directly coupled to Contentful (Position 1 or 2):

  • Short-term recommendation: refactor to handler abstraction before any CMS swap is discussed. A CMS swap in the current state is a 3 - 6 month project. Refactoring to handler abstraction is 4 - 8 weeks.
  • Medium-term: after the refactor, a CMS swap is a 2 - 4 week project if needed.

If the frontend already has an abstract content layer (Position 3 or similar):

  • Short-term: the CMS decision is strategic (pricing, roadmap, sovereignty), not technically driven. You have time for a well-founded evaluation without time pressure.
  • Medium-term: vendor comparison with real terms (renewal pricing, roadmap commitments, data residency) - without implementation costs as the dominant factor.

If the frontend is built on an FMP:

  • The question is not "which CMS do I switch to", but "which CMS delivers the best combination of pricing, roadmap, and compliance short- and medium-term" - because the switch is feasible at any time without a storefront rewrite.

What an FMP is not

For clarity, because the term currently carries many meanings:

An FMP is not a headless CMS. It does not store content. It has no content model system of its own. It is not a DAM. It is not a PIM.

An FMP is the layer between the frontend code and the content/commerce/data backends. It is the rendering layer, the handler layer, the visual editor layer, the component library layer. It makes backends interchangeable - CMS, commerce, search, personalisation.

The difference is conceptual, but it has concrete consequences: whoever buys an FMP does not buy a CMS alternative. They buy the ability to have CMS alternatives without paying for it.

Conclusion

If the answer to a CMS acquisition is a CMS swap, you are solving a symptom, not the problem. The problem is architectural dependency. The solution is a render boundary that eliminates that dependency.

A Frontend Management Platform is the tool that establishes this boundary systematically - and makes a CMS swap a configuration step rather than a project.

More on this capability: Content Management

Related: When your CMS layer changes hands · Salesforce Buys Contentful: The Frontend-Layer Gap · Headless CMS for Next.js eCommerce 2026

Altri articoli interessanti

Conoscenza pratica su sviluppo frontend, agenti intelligenti e headless

App Shopify
Shopify
Shopify è una piattaforma di commerce per vendere online e nei negozi fisici.
App shopware
Shopware
Shopware è una piattaforma e-commerce europea e flessibile per cataloghi prodotto e commerce omnicanale.
App adobe commerce
Adobe Commerce
Adobe Commerce è una piattaforma di enterprise commerce per scenari B2C e B2B complessi e globali.
Planned
App B2B sellers suite
B2Bsellers
Suite B2B per Shopware che trasforma lo shop online in una piattaforma professionale di commerce B2B.
Planned
App commerce layer
Commerce Layer
Commerce Layer è una piattaforma di headless commerce per rendere disponibili online inventari e cataloghi.
App commercetools
Commercetools
Commercetools è una piattaforma e-commerce headless basata su SaaS e utilizzata in tutto il mondo.
App emporix
Emporix
Emporix è una piattaforma di commerce composable e API-first per scenari B2B e B2C scalabili.
Planned
App HCL Software
HCL Software
Suite enterprise per commerce ed esperienze digitali, altamente configurabile.
Planned
App intershop
Intershop
Piattaforma di enterprise commerce per modelli di business B2B e B2C complessi.
Planned
App magento 2
Magento 2
Piattaforma di commerce estendibile e molto diffusa per scenari B2C e B2B.
App Oxid
OXID eShop
OXID eShop è una piattaforma di commerce estendibile per requisiti B2B e B2C complessi.
Planned
App cover patchworks
Patchworks
Patchworks è un iPaaS low-code che collega e-commerce, ERP, WMS, 3PL e marketplace.
Planned
App PRESTASHOP
Prestashop
Piattaforma di commerce open source per merchant piccoli e medi in Europa e oltre.
Planned
App saleor
Saleor
Piattaforma di commerce open source e API-first basata su GraphQL per storefront personalizzati.
Planned
App Commercecloud
Salesforce Commerce Cloud
Salesforce Commerce Cloud è una piattaforma di enterprise commerce basata su cloud per aziende di ogni dimensione.
Planned
App SAP
SAP Commerce Cloud
Piattaforma di enterprise commerce per cataloghi complessi, modelli di prezzo e journey omnicanale.
Planned
App SCAYLE
Scayle
SCAYLE è un commerce engine con cui brand e retailer fanno scalare il proprio business.
Planned
App spryker
Spryker
Piattaforma di commerce composable per modelli di business B2B e B2C esigenti.
App Sylius
Sylius
Sylius è un framework e-commerce developer-friendly per esperienze di shopping B2C e B2B.
Planned
App vendure
Vendure
Vendure è una piattaforma di headless commerce per aziende con requisiti complessi.
Coming Soon
App VTEX
VTEX
Piattaforma di commerce cloud-native e composable per B2B e B2C su larga scala.
Planned
App Websale
Websale
Backend di commerce stabile e adatto all'enterprise per ambienti retail complessi.
Book a demo mobile
Colloquio strategico

Pronti a trasformare il vostro frontend in un livello di controllo?

Mostrateci il vostro stack, la vostra roadmap, il vostro scenario di replatforming: vi mostriamo come si integra Laioutr, quanto costa e quanto velocemente andrete live.

"Dopo 30 minuti abbiamo capito che Laioutr rende fattibile il nostro replatforming." - Daniel B., CEO, hygibox.de

SEO / GEO / AEO Ready
Performance e Core Web Vitals
WCAG 3.0 Ready
Tracciamento & Analytics
Coerenza del brand