Skip to content
CODELAND

For AEM people

AEM → Sanity

Every AEM concept, its Sanity (and Strapi) equivalent, how Sanity provides it, and where to see it in this demo. Editable in the Studio.

Native
22
Equivalent
21
Partial
7
Gap
1

Tried in Sanity

Tested
43
Built
6
Try in Studio
0
Not on our plan
2

Content modelling

Content modelling
AEMSanityFitStrapiTried
Content Fragment Models / Content FragmentsStructured, channel-neutral content defined by a modelDocument types (schema as code) and documentsNativeBuilt inCollection typesTested15 document types; 161 documents pass `sanity documents validate`; website tests render them
Experience FragmentsReusable groups of components shared across pages and channels"Reusable section" documents referenced from any page; edit once, update everywhereEquivalentCustomComponents / dynamic zones (copied, not shared) or relationsTestedOne shared CTA rendered on 4 pages (Playwright)
Component dialogs (cq:dialog)Author form for a component, defined in XMLFields, groups, fieldsets and conditional fields in TypeScriptNativeBuilt inContent-Type Builder fieldsTestedEditor flow fills grouped fields, reference picker, PT editor, select, date; publish blocked until valid (Playwright)
Page propertiesMetadata tabs on a page (title, SEO, thumbnail…)Field groups (e.g. SEO tab) on the page documentNativeBuilt inFields on the typeTestedSEO tab with custom snippet-preview input + page template choice (Playwright)
Tags / taxonomy (cq:tags)Central tag namespacesTaxonomy as documents and references; tag fields; media tags for assetsEquivalentBuilt inRelations to a tag typeTestedMedia browser shows tagged assets; article tags rendered (Playwright)
Validation (component/field constraints)Required fields, patterns in dialogsValidation rules with custom async logic (e.g. max 3 featured, slug unique per language)NativeBuilt inBasic field validationTestedValidation rules + template policy caught by `sanity documents validate` (docs/tries/08)

Authoring experience

Authoring experience
AEMSanityFitStrapiTried
Page Editor / Universal EditorWYSIWYG editing on the rendered pagePresentation tool: click-to-edit on your own frontend with live draft previewEquivalentBuilt inLive Preview (Growth)TestedPresentation: overlays over every editable element, live draft preview (public site unchanged), navigation follows (Playwright)
Templates and editable templatesPage structure + initial content defined by template authorsInitial value templates: "Landing page" and "Campaign page" (EN/IT) prefill sectionsEquivalentBuilt inNone (manual)TestedCampaign page created from the template; landing/campaign templates in + New
Template policies (allowed components)Which components are allowed in a containerArray member types + validation rules per template (e.g. campaign pages: max one hero)EquivalentBuilt inDynamic zone allowed componentsTestedPolicy violation reported by validation (docs/tries/08)
Components (apps/…/components)HTL + Sling Model + dialog per componentSchema object (content) + React component (rendering) in the frontendEquivalentBuilt inComponents + frontend codeTested14 page-builder blocks rendered; 18 pages pass axe WCAG 2.2 AA
Rich Text EditorHTML-based RTE with pluginsPortable Text: structured rich text with custom blocks (code, tables, callouts, video)NativeBuilt inBlocks editorTestedArticle with callout, table, code (Playwright)
Real-time collaborationPage locking; one author at a timeNative co-editing with presenceNativeBuilt inNot nativeTestedTwo browser sessions co-edit one document live, no locking (Playwright)
Annotations / Inbox tasksComments and tasks on pagesComments and TasksNativeHigher planNoneTestedTask and field comment created in the Studio UI, stored in production-comments (Playwright)

Assets (DAM)

Assets (DAM)
AEMSanityFitStrapiTried
AEM Assets (DAM)Enterprise DAM: folders, metadata schemas, renditions, workflowsImage and file assets (PDF fact sheet on the CMS service) + Media plugin (tags, search, metadata); Media Library on EnterprisePartialPluginMedia LibraryTestedPDF file asset downloadable from CDN; images + media tags (Playwright)
Renditions / Dynamic MediaPre-generated or dynamic image renditionsImage pipeline: crop, resize, format, blur, hotspot on the fly by URLNativeBuilt inFormats generated on uploadTested6 on-the-fly renditions checked (Playwright)
Asset metadata extractionXMP/EXIF, colour, dimensionsAutomatic metadata: dimensions, palette, LQIP, EXIF (opt-in)NativeBuilt inBasic metadataTestedDimensions, palette, LQIP shown on /image-pipeline (Playwright)
Video (Dynamic Media)Video encoding and streamingMedia Library video (Enterprise) or Mux / YouTube embedsPartialHigher planUpload or providersBuiltVideo embed block (YouTube/Vimeo); Media Library video is Enterprise

Sites & languages

Sites & languages
AEMSanityFitStrapiTried
Sites console / multiple sitesSeveral sites in one instanceDatasets or a site field + Studio workspacesEquivalentBuilt inSeparate instances or custom fieldTestedProduction and Staging workspaces on two datasets (Playwright)
Language copiesA page tree per languageDocument-level localisation (one document per language, linked)NativePlugini18n (built in)TestedEN/IT documents linked; switcher follows translated slugs (Playwright)
Live copies / MSM rolloutInherit and roll out changes from a blueprintA Function rolls shared fields (image, services, dates) from EN to IT on publishPartialCustomNoneTestedRollout Function e2e: IT copy updated in ~5 s, IT text untouched
Translation integration frameworkConnectors to translation vendorsAI Assist translate, Agent Actions Translate, Function automation; vendor connectors via APIEquivalentBuilt inStrapi AI localisation (Growth)TestedTranslate Function e2e: IT draft in ~6–12 s; AI Assist configured

Publishing & workflow

Publishing & workflow
AEMSanityFitStrapiTried
Activate / deactivate (replication)Push content author → publish tierPublish / unpublish; the same API serves drafts and publishedNativeBuilt inDraft & PublishTestedPublish via API → page updates without reload (Live API test)
Page versioning / timelineVersions, restore, compareHistory: every change tracked, compare and restore (3/90/365 days by plan)NativeBuilt inContent History (Growth, 14 days)TestedAccidental edit restored from history by point in time (docs/tries/04)
LaunchesPrepare a future version of many pagesContent Releases: create, add versions, publish together. Worked on our Growth trial; pricing lists it as EnterpriseNativeHigher planReleases (Growth)TestedRelease created, version added, published (docs/tries/03, staging)
Scheduled activationPublish at a date/timeScheduled drafts / scheduled releases (published automatically at the set time)NativeHigher planReleases schedulingTestedScheduled release published automatically at the set time (docs/tries/09)
Workflows (Granite)Approval and processing workflowsContributor role (write, no publish) + Tasks; Workflows in beta; Functions for automationPartialHigher planReview Workflows (Enterprise)BuiltFunctions automation + Contributor role; Workflows beta not used

Search & SEO

Search & SEO
AEMSanityFitStrapiTried
Search with Oak indexesLucene/property indexes you define and maintainGROQ match + score, indexed automatically; semantic search via dataset embeddings (4/4 questions answered, keyword search: 0)EquivalentBuilt inFilters; external search engineTestedKeyword search (Playwright) + semantic search on staging (docs/tries/07)
Sitemap / SEOSitemap generator, SEO propertiesSEO fields with live snippet preview; sitemap.xml and robots.txt generated from contentEquivalentCustomPluginsTestedsitemap.xml (40+ URLs) and robots.txt (Playwright)
Vanity URLs / redirect managerRedirects maintained by authorsRedirect documents enforced by the websiteEquivalentCustomPluginTested307 and 308 redirects from Studio documents (Playwright)

Development

Development
AEMSanityFitStrapiTried
ui.apps / apps componentsComponents, HTL, Sling ModelsSchema types in git + React components in the frontendEquivalentBuilt inAPI code + frontendBuiltschemaTypes/ + React components; built in CI
ui.frontend / clientlibsFrontend build and client library categoriesAny frontend framework (here Next.js + Tailwind)NativeBuilt inAny frontendTestedNext.js build (66 pages) in the local CI run
Custom Sling servletsServer endpoints bound to paths/resource typesFrontend route handlers + Sanity Functions (event-driven serverless)EquivalentBuilt inCustom controllers/routesTested/api/revalidate (signed), /api/switch-language, Functions
Custom authoring UI (Granite/Coral)Custom consoles, dialogs widgetsStudio is React: custom tools, inputs, actions, dashboards; App SDK for full appsNativeBuilt inAdmin panel pluginsTestedDemo guide tool, SEO preview input, "Open on website" action (Playwright)
OSGi bundles / installed packagesJava bundles and content packagesnpm plugins in the Studio (package.json); Sanity ExchangeEquivalentBuilt innpm plugins / MarketplaceBuiltStudio plugins in package.json (media, assist, table, code, colour, dashboard)
GraphQL / headless deliveryGraphQL for Content Fragments, persisted queriesGROQ (typed with TypeGen) and a deployable GraphQL APINativeBuilt inREST + GraphQLTestedGraphQL API deployed; query test (Playwright)

Configuration & environments

Configuration & environments
AEMSanityFitStrapiTried
OSGi configurations (run modes)Service configs per environmentsanity.config.ts + environment variables (SANITY_STUDIO_*); Functions envEquivalentBuilt inconfig/*.ts + envTestedSANITY_STUDIO_ENABLE_VISION=false build for self-hosting; env-driven preview origin
Environments (dev / stage / prod)Cloud Manager environmentsDatasets per environment + Studio workspaces; hot swap with aliases on EnterpriseEquivalentBuilt inSeparate deploymentsTestedstaging dataset + workspace; migration run on staging only
Environment variables and secretsCloud Manager variables and secretsAPI tokens with roles, CORS origins, Functions env vars; app secrets in your hostEquivalentBuilt inEnv varsTestedFunction runtime variables read from env (docs/tries/06); tokens with roles
Cloud Manager pipelinesBuild, test and deploy pipelinesAny CI: schema deploy, Studio deploy, Blueprints deploy; example GitHub Actions workflowEquivalentCustomAny CITestedPipeline steps pass locally in 160 s, 48 tests (docs/tries/11); GitHub runner not used

Delivery & performance

Delivery & performance
AEMSanityFitStrapiTried
Dispatcher (cache + security filters)Apache module caching and filtering publishGlobal API CDN + frontend caching (ISR/Live API); security via tokens, CORS, CSPEquivalentBuilt inYour CDN/proxyTestednginx + CSP served locally: 0 CSP errors
Publish tier / CDNPublish instances behind CDNNo publish servers: Content Lake + CDN serve content globallyNativeBuilt inYour serversTestedContent served from Sanity API CDN; no publish servers
Edge Delivery ServicesDocument-based authoring with edge renderingNo direct equivalent; frontend of choice on any edge hostGapNot availableNoneNot on our planNo equivalent

Operations & tooling

Operations & tooling
AEMSanityFitStrapiTried
CRXDE LiteBrowse and edit the JCRVision (GROQ), document Inspect (raw JSON), CLI "documents get/query"EquivalentBuilt inDatabase clientTestedContent inspected and queried via CLI/API throughout (Vision in the Studio)
Package ManagerExport/import content packagesDataset export/import (NDJSON + assets), migration scripts in code; cloud copy is Enterprise (refused on our plan)NativeBuilt inTransfer / export toolsTestedExport 173 docs → import into staging; cloud copy refused on plan (docs/tries/10)
Adobe Admin/Developer ConsoleProducts, users, API credentialssanity.io/manage: members, roles, tokens, CORS, datasets, webhooks, usageNativeBuilt inAdmin settingsTestedCORS, tokens, datasets, members managed via CLI
Upgrades / service packsPlanned upgrades (6.5) or continuous (AEMaaCS)Content Lake is managed; Studio auto-updatesNativeBuilt inYour upgradesBuiltStudio auto-updates enabled (Studio v6.16)
Guides / onboardingIn-product guidesCustom "Demo guide" Studio tool; Sanity LearnEquivalentCustomDocsTested"Demo guide" Studio tool renders all steps (Playwright)

Security & governance

Security & governance
AEMSanityFitStrapiTried
Users and groupsUsers, groups, IMSProject members with roles; no groups below EnterprisePartialBuilt inUsers + rolesTestedMembers listed with roles (docs/tries/01a); groups need Enterprise
Permissions / ACLsFine-grained ACLs per pathRoles per plan; custom roles and GROQ-filtered content resources on EnterprisePartialHigher planRBAC custom roles (all tiers)TestedViewer/anonymous writes → 403, Editor → 200 (docs/tries/02); custom roles Enterprise
SSO (Adobe IMS / SAML)Enterprise identitySAML SSONativeHigher planSSO add-on / EnterpriseNot on our planEnterprise only (pricing)
Audit logWho changed whatDocument history for everyone; full audit trail on EnterprisePartialHigher planAudit logs (Enterprise)BuiltDocument history tested; full audit trail Enterprise only