What a Strapi development company does
Strapi is an open source headless CMS written in Node.js. It gives editors an admin panel and gives developers a REST or GraphQL API that any front end can read. A Strapi development company designs the content model, writes the code Strapi does not ship with, connects the front end, and keeps the project upgraded.
Two kinds of teams usually call us. One is a CTO moving a marketing site off WordPress or Drupal who wants the data on infrastructure they control. The other is a head of marketing whose editors wait on developers for every change. If the model is new to you, our guide on what a headless CMS is explains it.
Strapi development services we deliver
Custom Strapi development
We start with the content model: collection types, single types, components and dynamic zones, with relations that match how your editors think. Then we add custom controllers, services, policies and middlewares. The schema lives in git, so every change gets a code review.
Strapi plugin development
When the Marketplace has nothing that fits, we write the plugin. Common cases are an import job from a legacy system, a custom field type, or a sync to a search index. We build against Strapi 5 APIs, since the v4 helper-plugin package is gone and older plugins often break on upgrade.
API design with REST and GraphQL
Strapi generates REST endpoints for every content type, and the GraphQL plugin adds a schema on top. We pick the right one per client, set population rules so responses stay small, and set permissions per endpoint. Our Node.js developers write the custom endpoints the generated API does not cover.
CMS migration to Strapi
Most Strapi work starts with an existing site. We map old content types to the new model, write repeatable import scripts, move media, and keep URLs and redirects intact so search traffic survives. If you are leaving WordPress, our WordPress to headless CMS migration page covers the process, and we run the same playbook for Drupal migrations. The full list of checks is in our CMS migration checklist.
Strapi v4 to v5 upgrade
Plenty of projects still run Strapi 4. Strapi 5 changes the API response shape, the identifiers your front end uses, and the internal APIs custom code depends on. We audit the project, run the official upgrade tool, fix what the codemods leave behind, and test every client that reads the API.
Maintenance and support
After launch we patch Strapi and Node.js, watch error logs and add content types as needs grow. A named engineer who knows the codebase handles your requests.
Strapi v4 to v5 upgrade: what changes
Each row was checked against the breaking changes list and the step by step upgrade guide on docs.strapi.io in October 2026.
| Area | Strapi 4 | Strapi 5 | What we check |
|---|---|---|---|
| Content API response | Fields sit inside an attributes object under data | Flattened format: fields sit directly under data | Every front end query and type definition that reads attributes |
| Entry identifiers | Numeric id | documentId is used in API calls | Links, caches and stored references that use numeric ids |
| Backend data access | Entity Service API | Entity Service is deprecated, replaced by the Document Service API | Custom controllers, services and cron jobs |
| Lifecycle hooks | Database lifecycle hooks | Hooks trigger differently based on Document Service methods; codemods comment out lifecycle files in favor of Document Service middlewares | Any logic that runs on create, update or publish |
| Draft and publish | publicationState query parameter | status parameter; a document can hold a draft and a published version at once | Preview flows and queries that filter by publish state |
| Admin bundler | webpack | Vite is the default bundler; webpack aliases are removed | Admin customizations and custom fields |
| Plugins | helper-plugin available | helper-plugin is removed | Each plugin’s Strapi 5 support on the Marketplace |
| Internationalization | Separate i18n plugin | i18n is part of the Strapi core | Locale fields and localized queries |
| Database clients | MySQL 5 supported, several client packages | MySQL 5 is not supported; only mysql2 for MySQL and better-sqlite3 for SQLite | Database version and drivers in every environment |
| GraphQL | Apollo Server v3 | Apollo Server v4, updated GraphQL API | Every GraphQL query in the front end |
Two things make the upgrade safer. Strapi accepts a Strapi-Response-Format: v4 header on REST calls, so old clients keep the v4 shape while you move them one at a time. The GraphQL plugin has a v4CompatibilityMode setting for the same purpose. We use both to upgrade the backend first and the front ends later. Before running npx @strapi/upgrade major we back up the database and work on a separate git branch.
Our Strapi development process
- Discovery and audit. We review your content, traffic data and integrations, and write a scope with risks and a cost estimate.
- Content model. We design types, components and relations with your editors and get the model document signed off.
- Schema repository. We set up the project in git with local, staging and production environments and CI. Your editors get a staging login.
- Build and migration. We write custom code, run import scripts against staging and connect the front end, so you review a staging site with real content.
- Launch. We freeze content, run the final import, switch DNS and check redirects in Search Console. You get a launch report.
- Support. We hand over documentation and keep maintaining the project if you want us to.
Strapi with Next.js, Astro and Nuxt
Strapi does not render pages. A front end calls the Content API and builds the HTML. We usually pair Strapi with Next.js, using static generation for marketing pages and Strapi webhooks to trigger revalidation when an editor publishes. Our Next.js development team owns that layer, or you can hire a Next.js frontend developer for Strapi to join your team.
Astro suits content sites that need little client side JavaScript. Nuxt suits teams that already write Vue. All three read the same API, so pick the one your team knows. Our headless CMS development page explains how we choose a stack.
Strapi development cost
Strapi itself can be free. The self hosted Community plan is open source under the MIT licence and includes role based access control and both APIs. As of October 2026, Strapi’s pricing page lists these paid options:
| Option | Price as of October 2026 | Notes |
|---|---|---|
| Self hosted Community | Free | MIT licence, RBAC, REST and GraphQL |
| Self hosted Growth | $45 per month | 3 users, extra users $15 per month each; adds Releases, Content History, Live Preview |
| Self hosted Enterprise | Custom | SSO, Review Workflows, Audit Logs |
| Strapi Cloud Starter | $35 per month per project | Sleeps when idle |
| Strapi Cloud Pro | $90 per month per project | Always on, weekly backups |
| Strapi Cloud Business | $450 per month per project | Daily backups, 99.9% uptime SLA |
Development cost depends on scope: the number of content types, how much content and media you migrate, custom plugins, permission rules, locales, and how many front ends read the API. Self hosting saves licence fees but needs DevOps time; Strapi Cloud costs more per month and removes that work. We scope each project after a short audit. Time and material work uses the same $50 to $150 per hour range we publish for Next.js developers.
When Strapi is the wrong choice
We build on several platforms and will say so when Strapi does not fit.
If your team writes TypeScript and wants the CMS inside the Next.js app, Payload often fits better. Read Strapi vs Payload or see our Payload CMS development services. You can also hire a Payload developer.
If you already have a SQL database and want an admin panel and API on top of it, Directus is the stronger option. Our Strapi vs Directus comparison covers the tradeoffs.
If you want nothing to host and your editors need real time collaboration, look at a hosted platform. See Strapi vs Sanity and Strapi vs Contentful.
Engagement models
| Model | Best for | Team | Billing |
|---|---|---|---|
| Fixed scope | A migration or upgrade with a clear end | Lead engineer plus developers for the project | Fixed price after the audit |
| Dedicated team | Long product work on Strapi and the front end | Engineers who work only on your project | Monthly |
| Time and material | Ongoing changes, support, small features | Engineers as needed | Hourly |
If you only need extra hands on an existing team, hire Strapi developers instead.
Industries we have shipped for
We have not published a Strapi case study yet. The headless CMS projects below ran on Payload with Next.js and followed the same steps we use on Strapi.
- Fintech: a headless CMS replatform for a US-based Series-B fintech moved the marketing site off WordPress, cutting publish time by about two thirds.
- Retail: an omnichannel CMS for a US-based enterprise multi-brand retail group replaced separate CMS instances per brand and cut average publish time by about 65%.
- B2B SaaS: a marketing site build for a European mid-market B2B SaaS cut publish time by roughly two thirds.
- Healthtech: a Drupal replatform for a European enterprise healthtech organization, where LCP dropped from 4.3s to 1.5s.