Skip to main content

Features

This document provides an overview of features supported by the Strapi CMS integration.

Overview

FeatureStatusNotes
GraphQL APIPrimary API for all content operations
Content LocalizationFull multi-locale support
Dynamic RoutingRegex-based slug matching for dynamic pages
Themes/LayoutsSupported via OneColumn and TwoColumn templates
Media ManagementVia Strapi media library
SEO MetadataSupported via ComponentSeo
Field MappingSupported via ComponentFieldMapping for custom labels
Table ConfigurationSupported via ComponentTable for data table setup
PaginationSupported via ComponentPagination
Cache IntegrationFull cache support for optimized performance
Code GenerationTypeScript types and SDK generated from GraphQL schema via graphql-codegen
Type SafetyFull TypeScript type safety from GraphQL schema
Permissions/RolesRole-based content access control
Survey FormsSurveyJS integration for dynamic forms
Organization ListMulti-organization support
Login PageCustomizable login page content
Not Found PageCustomizable 404 page content
Live PreviewNot supported
Live UpdatesNot supported

Feature details

GraphQL API

GraphQL is the primary API for all content operations, providing type-safe queries, efficient data fetching, and automatic SDK generation.

For detailed information, see the GraphQL documentation.

Content Localization

Strapi supports multiple locales out of the box through its i18n plugin. The integration:

  • Fetches content for the specified locale
  • Supports locale fallback (if content is not available in the requested locale)
  • Handles locale-specific slugs for pages
  • Maintains locale context throughout the data flow
  • Retrieves available locales via the getLocales operation

Dynamic Routing

The integration supports dynamic routing with regex-based slug matching. This allows:

  • Pages with dynamic segments like /tickets/{.+} to be defined in Strapi
  • Matching URLs with dynamic IDs (e.g., /tickets/123)
  • Flexible URL patterns for various content types

The matching process works by fetching all pages for a locale and finding one whose slug matches the requested URL using a regex pattern.

Themes/Layouts

Page layouts are defined through Template content types:

  • OneColumnTemplate - Single column layout with top, main, and bottom slots
  • TwoColumnTemplate - Two column layout with top, left, right, and bottom slots

Templates can be extended with additional layout variants as needed.

Media Management

Media assets are managed through Strapi's built-in Media Library:

  • Image optimization and responsive images
  • Asset metadata (alt text, title, caption)
  • Multiple format support
  • Centralized media management

SEO Metadata

SEO metadata is managed through the ComponentSeo content type, which includes:

  • Page title
  • Meta description
  • Keywords
  • Open Graph image
  • Additional SEO fields

Field Mapping

Field mapping allows customizing labels for API field values. This is useful for:

  • Displaying user-friendly labels for enum values
  • Localizing field labels
  • Customizing table column headers

Implemented via ComponentFieldMapping and related content types.

Table Configuration

Table configuration allows defining which columns to display and how to display them. This is useful for:

  • Data tables (invoices, orders, tickets, etc.)
  • Customizable column visibility
  • Sortable and filterable tables

Implemented via ComponentTable content type.

Pagination

Pagination is supported through the ComponentPagination content type, which allows:

  • Configuring items per page
  • Enabling/disabling pagination controls
  • Custom pagination settings per block

Cache Integration

The integration uses the framework's cache module for:

  • Caching page data
  • Caching component data
  • Cache invalidation on content updates
  • Performance optimization

Cached entries are stringified and stored using {id}-{locale} keys to ensure uniqueness.

Code Generation

TypeScript types and SDK methods are automatically generated from GraphQL queries using graphql-codegen. For detailed information, see the GraphQL documentation.

Type Safety

Full TypeScript type safety is provided through generated types from the GraphQL schema, ensuring compile-time validation. For detailed information, see the GraphQL documentation.

Permissions/Roles

Role-based content access control is fully supported in the Strapi integration. The permissions field on Pages, Articles, and Navigation Items allows content editors to restrict access based on user roles.

Supported roles:

  • prospect - Maps to PROSPECT role
  • user - Maps to ORG_USER role
  • admin - Maps to ORG_ADMIN role

The roles are defined in Strapi via ComponentSeoUserRoles and mapped to the framework's authentication constants, enabling seamless integration with the frontend's access control system.

Survey Forms

The integration includes support for SurveyJS forms:

  • Dynamic form definitions stored in Strapi
  • Survey retrieval via getSurvey operation
  • Integration with the SurveyJS module for form rendering

Organization List

Multi-organization support is available through:

  • getOrganizationList operation for retrieving organization data
  • Organization-specific content management
  • Multi-tenant content capabilities

Login Page

Customizable login page content is supported via:

  • getLoginPage operation for fetching login page content
  • Localized login page content
  • Custom branding and messaging for the authentication flow

Not Found Page

Customizable 404 page content is supported via:

  • getNotFoundPage operation for fetching 404 page content
  • Localized error page content
  • Custom messaging for missing pages

Live Preview

Live Preview is not supported in the Strapi integration. Unlike the Contentful integration, Strapi does not provide native Live Preview capabilities. The LivePreviewProvider and useInspector hook exist in the codebase as no-op placeholders to maintain API compatibility with other CMS integrations.

Live Updates

Live updates are currently not supported. The integration does not provide real-time content synchronization when content is updated in Strapi. Content changes require a page refresh or cache invalidation to be visible.