{
  "name": "EditorStack visual editor library dataset",
  "license": "CC BY 4.0",
  "attribution": "Data from EditorStack (https://www.editorstack.cc), CC BY 4.0",
  "generated_at": "2026-09-17",
  "documentation": "https://www.editorstack.cc/data",
  "count": 34,
  "libraries": [
    {
      "slug": "beefree-sdk",
      "name": "Beefree SDK",
      "type": "sdk",
      "category": [
        "email",
        "commercial-sdk",
        "embeddable",
        "white-label"
      ],
      "one_liner": "Beefree SDK is a commercial embeddable email, page and popup builder for SaaS applications, published on npm under Apache-2.0 wrapper packaging since October 2023, with paid tiers starting at $350 per month.",
      "license": null,
      "first_release": "2023-10",
      "repo": "https://github.com/BeefreeSDK/beefree-sdk-npm-official",
      "homepage": "https://developers.beefree.io",
      "docs": "https://docs.beefree.io",
      "pricing": {
        "model": "subscription",
        "free_tier": true,
        "paid_from_usd": 350,
        "billing_period": "month",
        "notes": "Vendor-published tiers: free plan, Essentials at $350/month, Core at $1,000/month, Superpowers at $2,500/month and Enterprise around $5,000/month, each with usage-based components. The npm wrapper is Apache-2.0 but the builder service itself is proprietary."
      },
      "tech": {
        "language": "JavaScript",
        "framework_agnostic": true,
        "react_wrapper": "first-party",
        "vue_wrapper": "community",
        "angular_wrapper": "community",
        "ssr_support": "none",
        "bundle_size_min_gzip_kb": null,
        "measurement_ref": null
      },
      "capabilities": {
        "drag_drop": true,
        "responsive_breakpoints": true,
        "style_manager": true,
        "custom_components": true,
        "data_binding": true,
        "ecommerce_blocks": "partial",
        "email_html_export": true,
        "ai_generation": true,
        "i18n": true,
        "white_label": true,
        "self_hosted": false
      },
      "extensibility": {
        "plugin_system": true,
        "plugin_ecosystem_size": null,
        "marketplace": true
      },
      "metrics": {
        "status": "measured",
        "npm_package": "@beefree.io/sdk",
        "npm_weekly_downloads": 105382,
        "github_stars": 30,
        "last_commit": "2026-09-17",
        "open_issues": 24,
        "contributors": 21,
        "latest_version": "11.7.0",
        "updated_at": "2026-09-17"
      },
      "best_for": [
        "Established SaaS platforms embedding a mature email builder with an add-ons marketplace",
        "Products that need email, landing page and popup editing from a single embedded component",
        "Teams that value a large template catalogue as part of the purchase"
      ],
      "worst_for": [
        "Early-stage products, where the entry price is high relative to revenue per customer",
        "Organisations that must self-host the editing service",
        "Simple one-off email editing needs that an open-source engine with an email plugin can cover"
      ],
      "verdict_score": null,
      "verdict_rationale": null,
      "sponsored_disclosure": false,
      "marketplace_url": null,
      "last_verified": "2026-08-19",
      "sources": [
        {
          "url": "https://registry.npmjs.org/@beefree.io/sdk",
          "title": "npm registry metadata for @beefree.io/sdk (licence, first publish date, latest version)",
          "accessed": "2026-08-19"
        },
        {
          "url": "https://developers.beefree.io/pricing-plans",
          "title": "Beefree SDK pricing and plans page (vendor-published)",
          "accessed": "2026-08-19"
        },
        {
          "url": "https://docs.beefree.io",
          "title": "Beefree SDK documentation",
          "accessed": "2026-08-19"
        }
      ]
    },
    {
      "slug": "blocknote",
      "name": "BlockNote",
      "type": "library",
      "category": [
        "rich-text",
        "react",
        "block-editor",
        "embeddable",
        "open-source-core",
        "self-hosted"
      ],
      "one_liner": "BlockNote is a Notion-style block editor for React built on ProseMirror and Tiptap, shipping slash menus, drag handles and formatting toolbars ready-made; its core is MPL-2.0, while AI, multi-column and export packages are GPL-3.0 or commercially licensed.",
      "license": "MPL-2.0",
      "first_release": "2022-08",
      "repo": "https://github.com/TypeCellOS/BlockNote",
      "homepage": "https://www.blocknotejs.org",
      "docs": "https://www.blocknotejs.org/docs",
      "pricing": {
        "model": "freemium",
        "free_tier": true,
        "paid_from_usd": 195,
        "billing_period": "month",
        "notes": "Vendor-published. The core packages are MPL-2.0 and usable in closed-source commercial products without a subscription. The XL packages (AI, multi-column layouts, PDF/DOCX/ODT/email exporters) are GPL-3.0 or commercial. The Business tier, which includes the commercial XL licence for one application, is listed at $195 per month billed yearly ($2,340 per year); a struck-through $390 per month appears beside it, which we do not record because the page does not label it. Enterprise is custom."
      },
      "tech": {
        "language": "TypeScript",
        "framework_agnostic": false,
        "react_wrapper": "first-party",
        "vue_wrapper": "community",
        "angular_wrapper": null,
        "ssr_support": "none",
        "bundle_size_min_gzip_kb": 386.1,
        "measurement_ref": "bundles-2026-09-17"
      },
      "capabilities": {
        "drag_drop": "partial",
        "responsive_breakpoints": false,
        "style_manager": false,
        "custom_components": true,
        "data_binding": false,
        "ecommerce_blocks": false,
        "email_html_export": "plugin",
        "ai_generation": "plugin",
        "i18n": true,
        "white_label": true,
        "self_hosted": true
      },
      "extensibility": {
        "plugin_system": null,
        "plugin_ecosystem_size": null,
        "marketplace": null
      },
      "metrics": {
        "status": "measured",
        "npm_package": "@blocknote/react",
        "npm_weekly_downloads": 545506,
        "github_stars": 10185,
        "last_commit": "2026-09-17",
        "open_issues": 213,
        "contributors": 129,
        "latest_version": "0.54.2",
        "updated_at": "2026-09-17"
      },
      "best_for": [
        "React products that want a Notion-style editing experience — slash menu, drag handles, block toolbars — working on day one",
        "Collaborative documents, since Yjs-based real-time collaboration is in the free tier rather than a paid service",
        "Closed-source products that can accept MPL-2.0 terms for the core and do not need the GPL-licensed XL packages"
      ],
      "worst_for": [
        "Non-React applications, because there is no first-party Vue or Angular package",
        "Bundle-sensitive routes: the documented React and Mantine setup measured 386.1 kB gzip, among the heaviest in our benchmark",
        "Closed-source products that need AI, multi-column layouts or PDF and DOCX export without buying the commercial XL licence"
      ],
      "verdict_score": null,
      "verdict_rationale": null,
      "sponsored_disclosure": false,
      "marketplace_url": null,
      "last_verified": "2026-09-17",
      "sources": [
        {
          "url": "https://registry.npmjs.org/@blocknote/core",
          "title": "npm registry metadata for @blocknote/core (MPL-2.0, first published August 2022, latest 0.54.2)",
          "accessed": "2026-09-17"
        },
        {
          "url": "https://registry.npmjs.org/@blocknote/react",
          "title": "npm registry metadata for @blocknote/react (MPL-2.0, latest 0.54.2)",
          "accessed": "2026-09-17"
        },
        {
          "url": "https://registry.npmjs.org/@blocknote/xl-ai",
          "title": "npm registry metadata for @blocknote/xl-ai (licence 'GPL-3.0 OR PROPRIETARY'; the other xl-* packages carry the same field)",
          "accessed": "2026-09-17"
        },
        {
          "url": "https://www.blocknotejs.org/pricing",
          "title": "BlockNote pricing page (MPL-2.0 core, dual-licensed XL packages, vendor-published Business tier)",
          "accessed": "2026-09-17"
        },
        {
          "url": "https://www.blocknotejs.org/docs",
          "title": "BlockNote documentation introduction (built on ProseMirror and Tiptap; documents organised into blocks)",
          "accessed": "2026-09-17"
        },
        {
          "url": "https://www.blocknotejs.org/docs/getting-started",
          "title": "BlockNote getting started (install command, Mantine peer packages, client-only rendering)",
          "accessed": "2026-09-17"
        },
        {
          "url": "https://www.blocknotejs.org/docs/getting-started/nextjs",
          "title": "BlockNote with Next.js (render client-side only)",
          "accessed": "2026-09-17"
        },
        {
          "url": "https://www.blocknotejs.org/docs/react/components/side-menu",
          "title": "BlockNote side menu (block drag handle)",
          "accessed": "2026-09-17"
        },
        {
          "url": "https://www.blocknotejs.org/docs/features/custom-schemas",
          "title": "BlockNote custom schemas (custom blocks, inline content and styles)",
          "accessed": "2026-09-17"
        },
        {
          "url": "https://www.blocknotejs.org/docs/features/collaboration",
          "title": "BlockNote real-time collaboration with Yjs",
          "accessed": "2026-09-17"
        },
        {
          "url": "https://www.blocknotejs.org/docs/features/localization",
          "title": "BlockNote localisation",
          "accessed": "2026-09-17"
        },
        {
          "url": "https://www.blocknotejs.org/docs/features/ai",
          "title": "BlockNote AI (provided by the copyleft-licensed @blocknote/xl-ai package)",
          "accessed": "2026-09-17"
        },
        {
          "url": "https://registry.npmjs.org/-/v1/search?text=blocknote%20vue&size=10",
          "title": "npm search for BlockNote Vue packages (community packages only; no @blocknote/vue)",
          "accessed": "2026-09-17"
        }
      ]
    },
    {
      "slug": "brizy",
      "name": "Brizy",
      "type": "platform",
      "category": [
        "no-code-platform",
        "white-label",
        "self-hosted"
      ],
      "one_liner": "Brizy is a website builder sold to agencies and SaaS companies as a white-label platform, with a vendor-published White Label plan from $159 per month and an enterprise tier that offers on-premise hosting.",
      "license": null,
      "first_release": null,
      "repo": null,
      "homepage": "https://www.brizy.io/white-label-website-builder",
      "docs": null,
      "pricing": {
        "model": "subscription",
        "free_tier": true,
        "paid_from_usd": 159,
        "billing_period": "month",
        "notes": "Vendor-published: the White Label plan starts at $159 per month and includes ten websites, own logo and domain, and client management. A quote-only Enterprise tier adds API integration, unlimited workspaces, optional on-premise hosting and tiered pricing. Lower-priced non-white-label plans exist for individual site building."
      },
      "tech": {
        "language": null,
        "framework_agnostic": null,
        "react_wrapper": "none",
        "vue_wrapper": "none",
        "angular_wrapper": "none",
        "ssr_support": null,
        "bundle_size_min_gzip_kb": null,
        "measurement_ref": null
      },
      "capabilities": {
        "drag_drop": true,
        "responsive_breakpoints": true,
        "style_manager": true,
        "custom_components": "partial",
        "data_binding": "partial",
        "ecommerce_blocks": true,
        "email_html_export": false,
        "ai_generation": true,
        "i18n": true,
        "white_label": true,
        "self_hosted": "partial"
      },
      "extensibility": {
        "plugin_system": "partial",
        "plugin_ecosystem_size": null,
        "marketplace": false
      },
      "metrics": {
        "status": "not-applicable",
        "npm_package": null,
        "npm_weekly_downloads": null,
        "github_stars": null,
        "last_commit": null,
        "open_issues": null,
        "contributors": null,
        "latest_version": null,
        "updated_at": null
      },
      "best_for": [
        "Agencies that want a branded builder for client sites without building the application themselves",
        "SaaS products adding a website builder as a feature where a hosted platform is acceptable",
        "Teams whose white-label requirement includes the client-management layer, not just the editor"
      ],
      "worst_for": [
        "Products needing an editor embedded inside their own application UI rather than a branded platform",
        "Buyers who need a published enterprise price, since the tier that includes on-premise is quote-only",
        "Teams that require an open-source dependency chain"
      ],
      "verdict_score": null,
      "verdict_rationale": null,
      "sponsored_disclosure": false,
      "marketplace_url": null,
      "last_verified": "2026-08-20",
      "sources": [
        {
          "url": "https://www.brizy.io/white-label-website-builder",
          "title": "Brizy white-label website builder pricing (vendor-published)",
          "accessed": "2026-08-20"
        },
        {
          "url": "https://www.brizy.io/brizy-white-label-and-enterprise-faq-for-agencies-and-saas-businesses",
          "title": "Brizy white-label and enterprise FAQ",
          "accessed": "2026-08-20"
        }
      ]
    },
    {
      "slug": "builder-io",
      "name": "Builder.io",
      "type": "sdk",
      "category": [
        "commercial-sdk",
        "react",
        "embeddable",
        "headless-cms"
      ],
      "one_liner": "Builder.io is a commercial visual development platform whose SDKs let non-developers edit pages built from your own components, and whose 2026 pricing is credit-based rather than seat-based.",
      "license": null,
      "first_release": "2018-08",
      "repo": "https://github.com/BuilderIO/builder",
      "homepage": "https://www.builder.io",
      "docs": "https://www.builder.io/c/docs/developers",
      "pricing": {
        "model": "freemium",
        "free_tier": true,
        "paid_from_usd": 19,
        "billing_period": "month",
        "notes": "2026 pricing is credit-based: a free tier with a monthly credit allowance, Pro from roughly $19 per user per month, a Team tier around $99 per month, and quote-only Enterprise. Credits, not seats, are the main cost driver, so budgets scale with how much design-to-code work you run."
      },
      "tech": {
        "language": "TypeScript",
        "framework_agnostic": false,
        "react_wrapper": "first-party",
        "vue_wrapper": "first-party",
        "angular_wrapper": "first-party",
        "ssr_support": "full",
        "bundle_size_min_gzip_kb": null,
        "measurement_ref": null
      },
      "capabilities": {
        "drag_drop": true,
        "responsive_breakpoints": true,
        "style_manager": true,
        "custom_components": true,
        "data_binding": true,
        "ecommerce_blocks": true,
        "email_html_export": false,
        "ai_generation": true,
        "i18n": true,
        "white_label": "partial",
        "self_hosted": false
      },
      "extensibility": {
        "plugin_system": true,
        "plugin_ecosystem_size": null,
        "marketplace": true
      },
      "metrics": {
        "status": "measured",
        "npm_package": "@builder.io/react",
        "npm_weekly_downloads": 80352,
        "github_stars": 8835,
        "last_commit": "2026-09-17",
        "open_issues": 150,
        "contributors": 111,
        "latest_version": "9.4.6",
        "updated_at": "2026-09-17"
      },
      "best_for": [
        "Marketing teams that must ship landing pages against a developer-owned component library without a deploy",
        "E-commerce storefronts needing personalisation and A/B testing on top of visual editing",
        "Organisations that prefer a hosted content platform over operating editor infrastructure themselves"
      ],
      "worst_for": [
        "Products that resell the editor to their own customers, where the hosted model and branding become awkward",
        "Teams with data-residency rules that rule out storing page content with a vendor",
        "Budgets that need predictability, because credit-based pricing moves with usage rather than headcount"
      ],
      "verdict_score": null,
      "verdict_rationale": null,
      "sponsored_disclosure": false,
      "marketplace_url": null,
      "last_verified": "2026-08-19",
      "sources": [
        {
          "url": "https://registry.npmjs.org/@builder.io/react",
          "title": "npm registry metadata for @builder.io/react (licence, first publish date, latest version)",
          "accessed": "2026-08-19"
        },
        {
          "url": "https://www.builder.io/pricing",
          "title": "Builder.io pricing page (vendor-published plan prices)",
          "accessed": "2026-08-19"
        },
        {
          "url": "https://www.builder.io/c/docs/developers",
          "title": "Builder.io developer documentation",
          "accessed": "2026-08-19"
        }
      ]
    },
    {
      "slug": "ckeditor",
      "name": "CKEditor 5",
      "type": "library",
      "category": [
        "rich-text",
        "framework-agnostic",
        "embeddable",
        "open-source-core",
        "self-hosted"
      ],
      "one_liner": "CKEditor 5 is a finished rich-text editor with a toolbar, a plugin architecture and first-party React, Vue and Angular integrations, dual-licensed under GPL-2.0-or-later for self-hosted use or under commercial terms, with collaboration, AI and email tooling sold as premium features.",
      "license": "GPL-2.0-or-later OR commercial",
      "first_release": "2018-04",
      "repo": "https://github.com/ckeditor/ckeditor5",
      "homepage": "https://ckeditor.com/ckeditor-5/",
      "docs": "https://ckeditor.com/docs/ckeditor5/latest/",
      "pricing": {
        "model": "freemium",
        "free_tier": true,
        "paid_from_usd": 144,
        "billing_period": "month",
        "notes": "Vendor-published. The self-hosted npm distribution can be used under GPL-2.0-or-later by setting licenseKey to 'GPL', which displays a 'Powered by CKEditor' logo; the cloud CDN distribution does not accept the GPL key. The Free plan is cloud-hosted under a commercial licence with 1,000 editor loads per month. Essential lists $160 per month and $144 per month on the page's monthly/annual toggle (annual is marked 10% off, so we record $144 as the annual-billing rate), with 5,000 loads and $45 per extra 1,000; Professional lists $319/$289 with 20,000 loads. Self-hosted commercial use requires contacting sales after a 14-day trial. CKEditor AI and Collaboration are add-ons with their own prices."
      },
      "tech": {
        "language": "TypeScript",
        "framework_agnostic": true,
        "react_wrapper": "first-party",
        "vue_wrapper": "first-party",
        "angular_wrapper": "first-party",
        "ssr_support": "none",
        "bundle_size_min_gzip_kb": 161.2,
        "measurement_ref": "bundles-2026-09-17"
      },
      "capabilities": {
        "drag_drop": "partial",
        "responsive_breakpoints": false,
        "style_manager": false,
        "custom_components": true,
        "data_binding": false,
        "ecommerce_blocks": false,
        "email_html_export": "plugin",
        "ai_generation": "plugin",
        "i18n": true,
        "white_label": null,
        "self_hosted": true
      },
      "extensibility": {
        "plugin_system": true,
        "plugin_ecosystem_size": null,
        "marketplace": null
      },
      "metrics": {
        "status": "measured",
        "npm_package": "ckeditor5",
        "npm_weekly_downloads": 893935,
        "github_stars": 10496,
        "last_commit": "2026-09-17",
        "open_issues": 737,
        "contributors": 209,
        "latest_version": "48.5.1",
        "updated_at": "2026-09-17"
      },
      "best_for": [
        "Products that need a complete WYSIWYG editor with a toolbar on install rather than a framework to build one from",
        "GPL-compatible or commercially licensed products that want real-time collaboration and AI features from the same vendor as the editor, bought as premium add-ons",
        "Enterprise content tools that need many UI languages, right-to-left support and vendor support contracts"
      ],
      "worst_for": [
        "Closed-source SaaS products that cannot comply with the GPL and do not want a per-load commercial contract",
        "Teams expecting collaboration, AI assistance or email export to be free, since those are premium features",
        "Server-rendered pages that must pre-render the editor, because the documentation says it has to load client-side"
      ],
      "verdict_score": null,
      "verdict_rationale": null,
      "sponsored_disclosure": false,
      "marketplace_url": null,
      "last_verified": "2026-09-17",
      "sources": [
        {
          "url": "https://registry.npmjs.org/ckeditor5",
          "title": "npm registry metadata for ckeditor5 (latest 48.5.1; first published version 10.0.0-rc.1 in April 2018; licence field points to LICENSE.md)",
          "accessed": "2026-09-17"
        },
        {
          "url": "https://cdn.jsdelivr.net/npm/ckeditor5@48.5.1/LICENSE.md",
          "title": "ckeditor5 48.5.1 LICENSE.md (dual licence: GPL-2.0-or-later or commercial terms from CKSource)",
          "accessed": "2026-09-17"
        },
        {
          "url": "https://ckeditor.com/legal/ckeditor-licensing-options/",
          "title": "CKEditor licensing options (open-source distribution under GPL 2+, Free plan under a commercial licence)",
          "accessed": "2026-09-17"
        },
        {
          "url": "https://ckeditor.com/docs/ckeditor5/latest/getting-started/licensing/license-key-and-activation.html",
          "title": "CKEditor 5 licence key and activation ('GPL' key for self-hosted use, logo display, cloud requires a commercial key)",
          "accessed": "2026-09-17"
        },
        {
          "url": "https://ckeditor.com/pricing/",
          "title": "CKEditor pricing page (vendor-published Free, Essential, Professional and Custom plans)",
          "accessed": "2026-09-17"
        },
        {
          "url": "https://ckeditor.com/docs/ckeditor5/latest/getting-started/installation/self-hosted/next-js.html",
          "title": "CKEditor 5 Next.js integration (cannot be pre-rendered with SSR or SSG; load client-side)",
          "accessed": "2026-09-17"
        },
        {
          "url": "https://ckeditor.com/docs/ckeditor5/latest/getting-started/setup/ui-language.html",
          "title": "CKEditor 5 UI language (41 fully translated languages, right-to-left support)",
          "accessed": "2026-09-17"
        },
        {
          "url": "https://ckeditor.com/docs/ckeditor5/latest/features/drag-drop.html",
          "title": "CKEditor 5 drag and drop (text and content blocks within the editor)",
          "accessed": "2026-09-17"
        },
        {
          "url": "https://ckeditor.com/docs/ckeditor5/latest/framework/tutorials/widgets/implementing-a-block-widget.html",
          "title": "CKEditor 5 tutorial: implementing a custom block widget",
          "accessed": "2026-09-17"
        },
        {
          "url": "https://ckeditor.com/docs/ckeditor5/latest/features/ai/ckeditor-ai-overview.html",
          "title": "CKEditor AI overview (premium feature)",
          "accessed": "2026-09-17"
        },
        {
          "url": "https://ckeditor.com/docs/ckeditor5/latest/features/collaboration/real-time-collaboration/real-time-collaboration.html",
          "title": "CKEditor 5 real-time collaboration (unlocked with selected CKEditor plans)",
          "accessed": "2026-09-17"
        },
        {
          "url": "https://ckeditor.com/docs/ckeditor5/latest/features/email-editing/email.html",
          "title": "CKEditor 5 email editing (email configuration helper and export with inline styles are premium features)",
          "accessed": "2026-09-17"
        },
        {
          "url": "https://registry.npmjs.org/@ckeditor/ckeditor5-react",
          "title": "npm registry metadata for @ckeditor/ckeditor5-react, published by ckeditor (also checked: ckeditor5-vue, ckeditor5-angular)",
          "accessed": "2026-09-17"
        }
      ]
    },
    {
      "slug": "contentful-studio",
      "name": "Contentful Studio",
      "type": "cms",
      "category": [
        "headless-cms",
        "react"
      ],
      "one_liner": "Contentful Studio is Contentful's visual experience builder, sold as a paid add-on on top of the CMS platform; its React SDK has been on npm under MIT since March 2024 and there is no built-in visual editing without the add-on.",
      "license": "MIT",
      "first_release": "2024-03",
      "repo": "https://github.com/contentful/experience-builder",
      "homepage": "https://www.contentful.com/products/studio/",
      "docs": "https://www.contentful.com/developers/docs/studio/",
      "pricing": {
        "model": "quote-only",
        "free_tier": false,
        "paid_from_usd": null,
        "billing_period": null,
        "notes": "Studio is an add-on rather than a plan tier: the base platform has Free and Lite tiers (Lite reported around $300/month) with quote-only Premium and Enterprise, and Studio is priced separately through sales. We record no add-on price because none is published."
      },
      "tech": {
        "language": "TypeScript",
        "framework_agnostic": false,
        "react_wrapper": "first-party",
        "vue_wrapper": "none",
        "angular_wrapper": "none",
        "ssr_support": "full",
        "bundle_size_min_gzip_kb": null,
        "measurement_ref": null
      },
      "capabilities": {
        "drag_drop": true,
        "responsive_breakpoints": true,
        "style_manager": "partial",
        "custom_components": true,
        "data_binding": true,
        "ecommerce_blocks": false,
        "email_html_export": false,
        "ai_generation": "partial",
        "i18n": true,
        "white_label": false,
        "self_hosted": false
      },
      "extensibility": {
        "plugin_system": true,
        "plugin_ecosystem_size": null,
        "marketplace": true
      },
      "metrics": {
        "status": "measured",
        "npm_package": "@contentful/experiences-sdk-react",
        "npm_weekly_downloads": 23625,
        "github_stars": 18,
        "last_commit": "2026-09-17",
        "open_issues": 28,
        "contributors": 40,
        "latest_version": "3.8.10",
        "updated_at": "2026-09-17"
      },
      "best_for": [
        "Organisations already standardised on Contentful that want layout composition without a second vendor",
        "Enterprise content operations where governance and workflow matter more than editor flexibility",
        "React front ends registering their design-system components as editable building blocks"
      ],
      "worst_for": [
        "Teams with a fixed budget, since the add-on has no published price and requires a sales conversation",
        "Products that embed an editor for external end users",
        "Non-React front ends"
      ],
      "verdict_score": null,
      "verdict_rationale": null,
      "sponsored_disclosure": false,
      "marketplace_url": null,
      "last_verified": "2026-08-19",
      "sources": [
        {
          "url": "https://registry.npmjs.org/@contentful/experiences-sdk-react",
          "title": "npm registry metadata for @contentful/experiences-sdk-react (MIT licence, first publish date, latest version)",
          "accessed": "2026-08-19"
        },
        {
          "url": "https://www.contentful.com/pricing/",
          "title": "Contentful pricing page (vendor-published plan structure)",
          "accessed": "2026-08-19"
        },
        {
          "url": "https://www.contentful.com/developers/docs/studio/",
          "title": "Contentful Studio developer documentation",
          "accessed": "2026-08-19"
        }
      ]
    },
    {
      "slug": "craftjs",
      "name": "Craft.js",
      "type": "library",
      "category": [
        "react",
        "embeddable",
        "open-source-core",
        "self-hosted"
      ],
      "one_liner": "Craft.js is an MIT-licensed React framework for building your own page editor: it supplies the drag-and-drop layer, node tree and state management, and leaves the entire editor UI to you. First published to npm in December 2019.",
      "license": "MIT",
      "first_release": "2019-12",
      "repo": "https://github.com/prevwong/craft.js",
      "homepage": "https://craft.js.org",
      "docs": "https://craft.js.org/docs/overview",
      "pricing": {
        "model": "open-source",
        "free_tier": true,
        "paid_from_usd": 0,
        "billing_period": "n/a",
        "notes": "MIT-licensed. No hosted service and no paid tier."
      },
      "tech": {
        "language": "TypeScript",
        "framework_agnostic": false,
        "react_wrapper": "first-party",
        "vue_wrapper": "none",
        "angular_wrapper": "none",
        "ssr_support": "partial",
        "bundle_size_min_gzip_kb": 29.2,
        "measurement_ref": "bundles-2026-09-17"
      },
      "capabilities": {
        "drag_drop": true,
        "responsive_breakpoints": false,
        "style_manager": false,
        "custom_components": true,
        "data_binding": "partial",
        "ecommerce_blocks": false,
        "email_html_export": false,
        "ai_generation": false,
        "i18n": false,
        "white_label": true,
        "self_hosted": true
      },
      "extensibility": {
        "plugin_system": false,
        "plugin_ecosystem_size": null,
        "marketplace": false
      },
      "metrics": {
        "status": "measured",
        "npm_package": "@craftjs/core",
        "npm_weekly_downloads": 64907,
        "github_stars": null,
        "last_commit": null,
        "open_issues": null,
        "contributors": null,
        "latest_version": "0.2.12",
        "updated_at": "2026-09-17"
      },
      "best_for": [
        "Products where the editor UI must look like the rest of your application rather than like a generic builder",
        "React teams who want full control over the node tree, serialisation format and undo behaviour",
        "Building a narrow, opinionated editor — a form builder, a dashboard composer — rather than a general page builder"
      ],
      "worst_for": [
        "Teams on a deadline who need panels, a layers tree and a toolbar without building them",
        "Non-React stacks, since the node model is built on React context and hooks",
        "Projects that expect a maintained plugin catalogue to fill capability gaps"
      ],
      "verdict_score": {
        "developer_experience": 7.5,
        "extensibility": 9,
        "documentation": 7,
        "ecosystem": 4.5,
        "time_to_production": 5
      },
      "verdict_rationale": {
        "developer_experience": "The hook API — useNode and useEditor — is elegant and small, and connectors make an arbitrary component draggable in a couple of lines. The friction is that nothing is provided visually, so every early hour goes into building UI that other libraries hand you on install.",
        "extensibility": "Because Craft.js only owns the tree and the interaction layer, there is almost nothing to fight: rules control what can be dropped where, custom node types carry their own settings panels, and the serialised state format is yours to shape. It is closer to a toolkit than a product, which is exactly the point.",
        "documentation": "The guided tutorial is genuinely good and takes you from empty page to working editor. Beyond it, reference coverage thins out, and questions about SSR, large trees and state migration are usually answered in GitHub issues rather than in the docs.",
        "ecosystem": "Development has been quiet compared with newer React builders, there is no plugin marketplace, and most integrations you find are one-off examples. Teams adopting it should assume they are on their own for anything beyond core drag-and-drop.",
        "time_to_production": "Expect weeks, not days. You are building the editor, not configuring one — toolbars, layer panels, property editors and persistence are all your code. That is a deliberate trade for control, but it is the slowest route in this dataset to a customer-facing editor."
      },
      "sponsored_disclosure": false,
      "marketplace_url": null,
      "last_verified": "2026-08-19",
      "sources": [
        {
          "url": "https://registry.npmjs.org/@craftjs/core",
          "title": "npm registry metadata for @craftjs/core (licence, first publish date, latest version)",
          "accessed": "2026-08-19"
        },
        {
          "url": "https://github.com/prevwong/craft.js",
          "title": "Craft.js source repository",
          "accessed": "2026-08-19"
        },
        {
          "url": "https://craft.js.org/docs/overview",
          "title": "Craft.js documentation",
          "accessed": "2026-08-19"
        }
      ]
    },
    {
      "slug": "directus",
      "name": "Directus",
      "type": "cms",
      "category": [
        "headless-cms",
        "self-hosted",
        "framework-agnostic"
      ],
      "one_liner": "Directus is a self-hostable data platform and headless CMS licensed under BSL 1.1, free to self-host for organisations under $5M in annual revenue, with visual editing delivered as live-preview and editable-overlay features rather than a drag-and-drop page canvas.",
      "license": "BSL-1.1",
      "first_release": "2020-07",
      "repo": "https://github.com/directus/directus",
      "homepage": "https://directus.io",
      "docs": "https://docs.directus.io",
      "pricing": {
        "model": "freemium",
        "free_tier": true,
        "paid_from_usd": 99,
        "billing_period": "month",
        "notes": "Self-hosting is free under BSL 1.1 for organisations below $5M total annual revenue; above that a commercial licence is required and priced through sales. Managed cloud plans are reported to start around $99/month. BSL code converts to GPLv2 three years after release."
      },
      "tech": {
        "language": "TypeScript",
        "framework_agnostic": true,
        "react_wrapper": "community",
        "vue_wrapper": "first-party",
        "angular_wrapper": "community",
        "ssr_support": "full",
        "bundle_size_min_gzip_kb": null,
        "measurement_ref": null
      },
      "capabilities": {
        "drag_drop": "partial",
        "responsive_breakpoints": false,
        "style_manager": false,
        "custom_components": true,
        "data_binding": true,
        "ecommerce_blocks": false,
        "email_html_export": false,
        "ai_generation": "partial",
        "i18n": true,
        "white_label": true,
        "self_hosted": true
      },
      "extensibility": {
        "plugin_system": true,
        "plugin_ecosystem_size": null,
        "marketplace": true
      },
      "metrics": {
        "status": "measured",
        "npm_package": "directus",
        "npm_weekly_downloads": 15509,
        "github_stars": 37948,
        "last_commit": "2026-09-17",
        "open_issues": 401,
        "contributors": 582,
        "latest_version": "12.3.1",
        "updated_at": "2026-09-17"
      },
      "best_for": [
        "Teams that need a self-hosted content back end wrapping an existing SQL database",
        "White-label admin experiences where the CMS itself must carry the customer's branding",
        "Organisations under the revenue threshold who want enterprise-grade features without a licence fee"
      ],
      "worst_for": [
        "Companies above the BSL revenue threshold who assumed the software was open source in the OSI sense",
        "Page building, since layout composition is not the product's focus",
        "Products embedding an editor for their own end customers"
      ],
      "verdict_score": null,
      "verdict_rationale": null,
      "sponsored_disclosure": false,
      "marketplace_url": null,
      "last_verified": "2026-08-19",
      "sources": [
        {
          "url": "https://registry.npmjs.org/directus",
          "title": "npm registry metadata for directus (licence file reference, first publish date, latest version)",
          "accessed": "2026-08-19"
        },
        {
          "url": "https://directus.io/pricing/self-hosted",
          "title": "Directus self-hosted pricing and licence threshold (vendor-published)",
          "accessed": "2026-08-19"
        },
        {
          "url": "https://directus.io/commercial-license",
          "title": "Directus commercial software licence agreement",
          "accessed": "2026-08-19"
        }
      ]
    },
    {
      "slug": "duda",
      "name": "Duda",
      "type": "platform",
      "category": [
        "no-code-platform",
        "white-label"
      ],
      "one_liner": "Duda is a hosted website platform built for agencies, with vendor-published plans from $19 per month and a White Label tier at $149 per month that removes Duda's branding from the client-facing product.",
      "license": null,
      "first_release": null,
      "repo": null,
      "homepage": "https://www.duda.co",
      "docs": "https://developer.duda.co",
      "pricing": {
        "model": "subscription",
        "free_tier": false,
        "paid_from_usd": 19,
        "billing_period": "month",
        "notes": "Vendor-published tiers: Basic $19/month, Team $29/month, Agency $52/month and White Label $149/month, with Agency and White Label including four sites. Additional sites are reported around $17–19 per month each. Annual billing is discounted roughly 20–24%."
      },
      "tech": {
        "language": null,
        "framework_agnostic": null,
        "react_wrapper": "none",
        "vue_wrapper": "none",
        "angular_wrapper": "none",
        "ssr_support": null,
        "bundle_size_min_gzip_kb": null,
        "measurement_ref": null
      },
      "capabilities": {
        "drag_drop": true,
        "responsive_breakpoints": true,
        "style_manager": true,
        "custom_components": "partial",
        "data_binding": true,
        "ecommerce_blocks": true,
        "email_html_export": false,
        "ai_generation": true,
        "i18n": true,
        "white_label": true,
        "self_hosted": false
      },
      "extensibility": {
        "plugin_system": true,
        "plugin_ecosystem_size": null,
        "marketplace": true
      },
      "metrics": {
        "status": "not-applicable",
        "npm_package": null,
        "npm_weekly_downloads": null,
        "github_stars": null,
        "last_commit": null,
        "open_issues": null,
        "contributors": null,
        "latest_version": null,
        "updated_at": null
      },
      "best_for": [
        "Agencies running many client sites who want client editing, team roles and billing handled by the platform",
        "Resellers who need the platform to carry their brand rather than the vendor's",
        "Teams that want an API for provisioning sites programmatically rather than by hand"
      ],
      "worst_for": [
        "Products that must embed the editor inside their own application rather than send clients to a platform",
        "Buyers with data-residency requirements, since it is hosted only",
        "Very small portfolios, where per-site costs on top of the plan outweigh the platform benefits"
      ],
      "verdict_score": null,
      "verdict_rationale": null,
      "sponsored_disclosure": false,
      "marketplace_url": null,
      "last_verified": "2026-08-20",
      "sources": [
        {
          "url": "https://www.duda.co/pricing",
          "title": "Duda plans and pricing (vendor-published)",
          "accessed": "2026-08-20"
        },
        {
          "url": "https://developer.duda.co",
          "title": "Duda developer documentation",
          "accessed": "2026-08-20"
        }
      ]
    },
    {
      "slug": "editorjs",
      "name": "Editor.js",
      "type": "library",
      "category": [
        "block-editor",
        "framework-agnostic",
        "embeddable",
        "open-source-core",
        "self-hosted",
        "rich-text"
      ],
      "one_liner": "Editor.js is an Apache-2.0 licensed block-style content editor that outputs clean JSON instead of HTML, aimed at article and document authoring rather than page layout. First published to npm in February 2019.",
      "license": "Apache-2.0",
      "first_release": "2019-02",
      "repo": "https://github.com/codex-team/editor.js",
      "homepage": "https://editorjs.io",
      "docs": "https://editorjs.io/base-concepts",
      "pricing": {
        "model": "open-source",
        "free_tier": true,
        "paid_from_usd": 0,
        "billing_period": "n/a",
        "notes": "Apache-2.0 licensed; every official block tool is free."
      },
      "tech": {
        "language": "TypeScript",
        "framework_agnostic": true,
        "react_wrapper": "community",
        "vue_wrapper": "community",
        "angular_wrapper": "community",
        "ssr_support": "none",
        "bundle_size_min_gzip_kb": 64.3,
        "measurement_ref": "bundles-2026-09-17"
      },
      "capabilities": {
        "drag_drop": "partial",
        "responsive_breakpoints": false,
        "style_manager": false,
        "custom_components": true,
        "data_binding": false,
        "ecommerce_blocks": false,
        "email_html_export": false,
        "ai_generation": "plugin",
        "i18n": true,
        "white_label": true,
        "self_hosted": true
      },
      "extensibility": {
        "plugin_system": true,
        "plugin_ecosystem_size": null,
        "marketplace": false
      },
      "metrics": {
        "status": "measured",
        "npm_package": "@editorjs/editorjs",
        "npm_weekly_downloads": 288930,
        "github_stars": null,
        "last_commit": null,
        "open_issues": null,
        "contributors": null,
        "latest_version": "2.31.7",
        "updated_at": "2026-09-17"
      },
      "best_for": [
        "Article, post and knowledge-base authoring where structured JSON output matters more than layout control",
        "Content that must be rendered on several surfaces — web, mobile app, AMP — from one stored representation",
        "Replacing a WYSIWYG textarea in an existing product with something that does not emit unpredictable HTML"
      ],
      "worst_for": [
        "Landing page building, because there are no columns-first layout primitives, breakpoints or style controls in the core",
        "Email templates, since the output is JSON blocks that you must render to email-safe HTML yourself",
        "Teams expecting free-form drag-and-drop positioning rather than a linear stack of blocks"
      ],
      "verdict_score": {
        "developer_experience": 8,
        "extensibility": 8,
        "documentation": 7,
        "ecosystem": 7.5,
        "time_to_production": 8
      },
      "verdict_rationale": {
        "developer_experience": "Initialisation is a few lines and the block tool contract is small enough to implement from memory after writing one. The awkward part is that the editor owns a contenteditable surface, so anything involving selection, paste handling or nested interactivity requires care.",
        "extensibility": "A block tool is a class with render, save and a static toolbox definition, which makes new content types cheap to add and easy to test. Inline tools and block tunes cover the second axis of customisation, though deep changes to the editing surface itself are not part of the contract.",
        "documentation": "Base concepts and the tool API are documented clearly with working examples. Where it thins out is production concerns: sanitisation policy, migrating stored block data between tool versions, and server-side rendering of saved documents are largely left to the reader.",
        "ecosystem": "There is a broad set of first-party and community block tools — image, list, table, embed, code — and the plugin surface is stable enough that older tools generally keep working. Quality outside the official set varies and few tools ship TypeScript types.",
        "time_to_production": "For its actual scope — structured document authoring — it reaches production quickly: install, pick tools, persist JSON. Teams that try to stretch it into a page builder lose that speed immediately, which is a scope mistake rather than a library flaw."
      },
      "sponsored_disclosure": false,
      "marketplace_url": null,
      "last_verified": "2026-08-19",
      "sources": [
        {
          "url": "https://registry.npmjs.org/@editorjs/editorjs",
          "title": "npm registry metadata for @editorjs/editorjs (licence, first publish date, latest version)",
          "accessed": "2026-08-19"
        },
        {
          "url": "https://github.com/codex-team/editor.js",
          "title": "Editor.js source repository",
          "accessed": "2026-08-19"
        },
        {
          "url": "https://editorjs.io/base-concepts",
          "title": "Editor.js base concepts documentation",
          "accessed": "2026-08-19"
        }
      ]
    },
    {
      "slug": "elementor",
      "name": "Elementor",
      "type": "platform",
      "category": [
        "no-code-platform",
        "self-hosted"
      ],
      "one_liner": "Elementor is a WordPress page builder plugin sold as an annual licence from about $59 per year for one site, included here because agencies routinely weigh it against building a builder into their own product.",
      "license": "GPL-3.0",
      "first_release": null,
      "repo": "https://github.com/elementor/elementor",
      "homepage": "https://elementor.com",
      "docs": "https://developers.elementor.com",
      "pricing": {
        "model": "subscription",
        "free_tier": true,
        "paid_from_usd": 59,
        "billing_period": "year",
        "notes": "The free plugin is GPL-licensed on the WordPress plugin directory; Elementor Pro is annual-only, reported at about $59/year for one site, $99/year for three sites, $199/year for 25 sites and $399/year at agency scale. There is no monthly billing option."
      },
      "tech": {
        "language": "PHP",
        "framework_agnostic": false,
        "react_wrapper": "none",
        "vue_wrapper": "none",
        "angular_wrapper": "none",
        "ssr_support": "full",
        "bundle_size_min_gzip_kb": null,
        "measurement_ref": null
      },
      "capabilities": {
        "drag_drop": true,
        "responsive_breakpoints": true,
        "style_manager": true,
        "custom_components": true,
        "data_binding": true,
        "ecommerce_blocks": true,
        "email_html_export": false,
        "ai_generation": true,
        "i18n": true,
        "white_label": "partial",
        "self_hosted": true
      },
      "extensibility": {
        "plugin_system": true,
        "plugin_ecosystem_size": null,
        "marketplace": true
      },
      "metrics": {
        "status": "not-applicable",
        "npm_package": null,
        "npm_weekly_downloads": null,
        "github_stars": null,
        "last_commit": null,
        "open_issues": null,
        "contributors": null,
        "latest_version": null,
        "updated_at": null
      },
      "best_for": [
        "Agencies whose clients are already on WordPress and expect to edit their own pages",
        "Sites where the surrounding WordPress plugin ecosystem does more work than the builder itself",
        "Budgets that prefer a small annual licence over engineering time"
      ],
      "worst_for": [
        "Embedding an editor in a non-WordPress SaaS application, which is out of scope entirely",
        "Teams that need editor branding fully replaced for their own customers on standard tiers",
        "Performance-critical pages, where generated markup and plugin stacking are a known cost"
      ],
      "verdict_score": null,
      "verdict_rationale": null,
      "sponsored_disclosure": false,
      "marketplace_url": null,
      "last_verified": "2026-08-19",
      "sources": [
        {
          "url": "https://elementor.com/pricing/",
          "title": "Elementor pricing page (vendor-published annual licence tiers)",
          "accessed": "2026-08-19"
        },
        {
          "url": "https://github.com/elementor/elementor",
          "title": "Elementor source repository (GPL licence)",
          "accessed": "2026-08-19"
        }
      ]
    },
    {
      "slug": "framer",
      "name": "Framer",
      "type": "platform",
      "category": [
        "no-code-platform"
      ],
      "one_liner": "Framer is a hosted design-and-publish website platform, included as a build-versus-buy reference point: its editor cannot be embedded in another product, and 2026 pricing runs from a free tier to about $10 per month for Basic and $30 per month for Pro on annual billing, plus per-editor seats.",
      "license": null,
      "first_release": null,
      "repo": null,
      "homepage": "https://www.framer.com",
      "docs": "https://www.framer.com/developers/",
      "pricing": {
        "model": "freemium",
        "free_tier": true,
        "paid_from_usd": 10,
        "billing_period": "month",
        "notes": "Vendor-published tiers on annual billing: Free, Basic around $10/month, Pro around $30/month and Scale from about $100/month, with quote-only Enterprise. Editor seats are reported at $20/month on every plan, with a $10/month content-editor seat; monthly billing costs more than the advertised annual rates."
      },
      "tech": {
        "language": null,
        "framework_agnostic": null,
        "react_wrapper": "first-party",
        "vue_wrapper": "none",
        "angular_wrapper": "none",
        "ssr_support": null,
        "bundle_size_min_gzip_kb": null,
        "measurement_ref": null
      },
      "capabilities": {
        "drag_drop": true,
        "responsive_breakpoints": true,
        "style_manager": true,
        "custom_components": true,
        "data_binding": true,
        "ecommerce_blocks": "partial",
        "email_html_export": false,
        "ai_generation": true,
        "i18n": true,
        "white_label": false,
        "self_hosted": false
      },
      "extensibility": {
        "plugin_system": true,
        "plugin_ecosystem_size": null,
        "marketplace": true
      },
      "metrics": {
        "status": "not-applicable",
        "npm_package": null,
        "npm_weekly_downloads": null,
        "github_stars": null,
        "last_commit": null,
        "open_issues": null,
        "contributors": null,
        "latest_version": null,
        "updated_at": null
      },
      "best_for": [
        "Design-led marketing sites where motion and interaction quality are the deciding factor",
        "Small teams that want a site live without a front-end build pipeline",
        "Comparing in-house editor cost against a polished commercial alternative"
      ],
      "worst_for": [
        "Embedding an editor inside your own application, which the platform does not support",
        "White-label delivery to your own customers",
        "Teams that need to own the rendering stack and hosting"
      ],
      "verdict_score": null,
      "verdict_rationale": null,
      "sponsored_disclosure": false,
      "marketplace_url": null,
      "last_verified": "2026-08-19",
      "sources": [
        {
          "url": "https://www.framer.com/pricing/",
          "title": "Framer pricing page (vendor-published plan and seat prices)",
          "accessed": "2026-08-19"
        },
        {
          "url": "https://www.framer.com/developers/",
          "title": "Framer developer documentation",
          "accessed": "2026-08-19"
        }
      ]
    },
    {
      "slug": "grapesjs",
      "name": "GrapesJS",
      "type": "library",
      "category": [
        "open-source-core",
        "framework-agnostic",
        "embeddable",
        "white-label",
        "self-hosted"
      ],
      "one_liner": "GrapesJS is a BSD-3-licensed, framework-agnostic web page builder engine that you embed in your own application and extend through plugins, first published to npm in January 2016.",
      "license": "BSD-3-Clause",
      "first_release": "2016-01",
      "repo": "https://github.com/GrapesJS/grapesjs",
      "homepage": "https://grapesjs.com",
      "docs": "https://grapesjs.com/docs",
      "pricing": {
        "model": "open-source",
        "free_tier": true,
        "paid_from_usd": 0,
        "billing_period": "n/a",
        "notes": "The core engine is free under BSD-3-Clause with no usage ceiling. GrapesJS Studio SDK is a separate commercial product from the same team and is profiled separately."
      },
      "tech": {
        "language": "TypeScript",
        "framework_agnostic": true,
        "react_wrapper": "community",
        "vue_wrapper": "community",
        "angular_wrapper": "community",
        "ssr_support": "none",
        "bundle_size_min_gzip_kb": 294.6,
        "measurement_ref": "bundles-2026-09-17"
      },
      "capabilities": {
        "drag_drop": true,
        "responsive_breakpoints": true,
        "style_manager": true,
        "custom_components": true,
        "data_binding": "plugin",
        "ecommerce_blocks": "plugin",
        "email_html_export": "plugin",
        "ai_generation": "plugin",
        "i18n": true,
        "white_label": true,
        "self_hosted": true
      },
      "extensibility": {
        "plugin_system": true,
        "plugin_ecosystem_size": null,
        "marketplace": true
      },
      "metrics": {
        "status": "measured",
        "npm_package": "grapesjs",
        "npm_weekly_downloads": 269998,
        "github_stars": 26245,
        "last_commit": "2026-08-26",
        "open_issues": 41,
        "contributors": 227,
        "latest_version": "0.23.6",
        "updated_at": "2026-09-17"
      },
      "best_for": [
        "Embedding a page or template editor inside your own SaaS without tying the product to a vendor's hosted service",
        "Email template builders, where the editor must emit standalone HTML rather than a component tree",
        "White-label builders resold to agencies or end customers under your own brand"
      ],
      "worst_for": [
        "Teams that need a polished editor UI out of the box, because the default panels look like a developer tool and need restyling",
        "React applications that want their existing design-system components to render natively inside the canvas",
        "Server-side rendered editing flows, since the editor mounts against a live DOM and an iframe canvas"
      ],
      "verdict_score": {
        "developer_experience": 7,
        "extensibility": 9.5,
        "documentation": 6.5,
        "ecosystem": 8.5,
        "time_to_production": 6
      },
      "verdict_rationale": {
        "developer_experience": "Getting a canvas on screen takes a container element and one init call, and the event API is consistent. The cost is the mental model: components, style manager, device manager and storage manager are separate subsystems, and the defaults produce a developer-looking UI you will replace before shipping to end users.",
        "extensibility": "Every part of the editor is replaceable: component types define their own traits, toolbar, and render behaviour, panels are declarative, and commands can be added or overridden. Very little of what teams build on top of GrapesJS requires forking the core, which is the practical test of an extension system.",
        "documentation": "The API reference covers the managers thoroughly and the plugin guides are accurate, but the documentation assumes you already know the architecture. Recipes for common product requirements — multi-page, asset storage, undo semantics inside custom components — are thinner than the reference material.",
        "ecosystem": "A decade of community plugins covers most common needs, and the plugin naming convention makes them discoverable on npm. Quality is uneven and some widely-linked plugins have not been updated for recent releases, so budget time to audit anything you adopt.",
        "time_to_production": "A demo takes an afternoon; a product takes considerably longer because asset storage, persistence, permissions and a user-facing UI skin are all yours to build. That gap between demo and product is the single most underestimated cost when teams choose this engine."
      },
      "sponsored_disclosure": true,
      "marketplace_url": "https://gjs.market/",
      "last_verified": "2026-08-19",
      "sources": [
        {
          "url": "https://registry.npmjs.org/grapesjs",
          "title": "npm registry metadata for grapesjs (licence, first publish date, latest version)",
          "accessed": "2026-08-19"
        },
        {
          "url": "https://github.com/GrapesJS/grapesjs",
          "title": "GrapesJS source repository",
          "accessed": "2026-08-19"
        },
        {
          "url": "https://grapesjs.com/docs",
          "title": "GrapesJS documentation",
          "accessed": "2026-08-19"
        }
      ]
    },
    {
      "slug": "grapesjs-studio-sdk",
      "name": "GrapesJS Studio SDK",
      "type": "sdk",
      "category": [
        "commercial-sdk",
        "embeddable",
        "framework-agnostic",
        "white-label",
        "self-hosted"
      ],
      "one_liner": "GrapesJS Studio SDK is the commercial, licence-key product from the GrapesJS team: a ready-made editor UI, project storage and asset handling built on the open-source engine, first published to npm in July 2024.",
      "license": null,
      "first_release": "2024-07",
      "repo": null,
      "homepage": "https://grapesjs.com/studio-sdk",
      "docs": "https://app.grapesjs.com/docs-sdk",
      "pricing": {
        "model": "freemium",
        "free_tier": true,
        "paid_from_usd": null,
        "billing_period": null,
        "notes": "A permanently free plan is offered; paid tier prices are published on the vendor's pricing page and were not captured in this verification pass, so we record them as null rather than guess."
      },
      "tech": {
        "language": "TypeScript",
        "framework_agnostic": true,
        "react_wrapper": "first-party",
        "vue_wrapper": "community",
        "angular_wrapper": "community",
        "ssr_support": "none",
        "bundle_size_min_gzip_kb": null,
        "measurement_ref": null
      },
      "capabilities": {
        "drag_drop": true,
        "responsive_breakpoints": true,
        "style_manager": true,
        "custom_components": true,
        "data_binding": true,
        "ecommerce_blocks": false,
        "email_html_export": true,
        "ai_generation": true,
        "i18n": true,
        "white_label": true,
        "self_hosted": true
      },
      "extensibility": {
        "plugin_system": true,
        "plugin_ecosystem_size": null,
        "marketplace": true
      },
      "metrics": {
        "status": "measured",
        "npm_package": "@grapesjs/studio-sdk",
        "npm_weekly_downloads": 11068,
        "github_stars": null,
        "last_commit": null,
        "open_issues": null,
        "contributors": null,
        "latest_version": "1.2.1",
        "updated_at": "2026-09-17"
      },
      "best_for": [
        "Teams that want the GrapesJS engine's flexibility without building panels, asset management and project storage themselves",
        "Products needing both web page and email editing from one embedded editor",
        "Companies that must keep user data on their own infrastructure while still buying a maintained editor UI"
      ],
      "worst_for": [
        "Projects with a hard requirement for a fully open-source dependency chain, since the SDK itself is proprietary",
        "Teams unwilling to manage a licence key in their build and runtime configuration",
        "React applications wanting their own components rendered natively in the canvas rather than HTML"
      ],
      "verdict_score": null,
      "verdict_rationale": null,
      "sponsored_disclosure": true,
      "marketplace_url": "https://gjs.market/",
      "last_verified": "2026-08-19",
      "sources": [
        {
          "url": "https://registry.npmjs.org/@grapesjs/studio-sdk",
          "title": "npm registry metadata for @grapesjs/studio-sdk (first publish date, latest version, proprietary licence file)",
          "accessed": "2026-08-19"
        },
        {
          "url": "https://grapesjs.com/studio-sdk",
          "title": "GrapesJS Studio SDK product page",
          "accessed": "2026-08-19"
        },
        {
          "url": "https://app.grapesjs.com/docs-sdk/overview/licenses",
          "title": "GrapesJS Studio SDK licence documentation",
          "accessed": "2026-08-19"
        }
      ]
    },
    {
      "slug": "lexical",
      "name": "Lexical",
      "type": "library",
      "category": [
        "react",
        "block-editor",
        "embeddable",
        "open-source-core",
        "self-hosted",
        "rich-text"
      ],
      "one_liner": "Lexical is Meta's MIT-licensed extensible text editor framework, published to npm as version 0.1.0 in January 2022 and built around an immutable editor state with a plugin architecture rather than a supplied interface.",
      "license": "MIT",
      "first_release": "2022-01",
      "repo": "https://github.com/facebook/lexical",
      "homepage": "https://lexical.dev",
      "docs": "https://lexical.dev/docs/intro",
      "pricing": {
        "model": "open-source",
        "free_tier": true,
        "paid_from_usd": 0,
        "billing_period": "n/a",
        "notes": "MIT-licensed with no commercial tier and no hosted service. Note that the npm package name carries a 2014 creation date from an unrelated earlier package; Meta's Lexical begins at 0.1.0 in January 2022."
      },
      "tech": {
        "language": "TypeScript",
        "framework_agnostic": true,
        "react_wrapper": "first-party",
        "vue_wrapper": "community",
        "angular_wrapper": "community",
        "ssr_support": "partial",
        "bundle_size_min_gzip_kb": 104.9,
        "measurement_ref": "bundles-2026-09-17"
      },
      "capabilities": {
        "drag_drop": "partial",
        "responsive_breakpoints": false,
        "style_manager": false,
        "custom_components": true,
        "data_binding": false,
        "ecommerce_blocks": false,
        "email_html_export": false,
        "ai_generation": false,
        "i18n": "partial",
        "white_label": true,
        "self_hosted": true
      },
      "extensibility": {
        "plugin_system": true,
        "plugin_ecosystem_size": null,
        "marketplace": false
      },
      "metrics": {
        "status": "measured",
        "npm_package": "@lexical/react",
        "npm_weekly_downloads": 4577452,
        "github_stars": 23866,
        "last_commit": "2026-09-17",
        "open_issues": 295,
        "contributors": 622,
        "latest_version": "0.51.0",
        "updated_at": "2026-09-17"
      },
      "best_for": [
        "Text editing at scale where predictable performance on very large documents is the deciding requirement",
        "Teams that want a framework maintained by the company running it in production at the largest scale in the industry",
        "Products willing to build the entire editor interface in exchange for a small, fast core"
      ],
      "worst_for": [
        "Page building of any kind, since there is no canvas, no layout and no styling model",
        "Teams that need an editor working this week, because every visible control is code you write",
        "Products that need a stable public API today, given the pre-1.0 version line"
      ],
      "verdict_score": {
        "developer_experience": 7.5,
        "extensibility": 9,
        "documentation": 7,
        "ecosystem": 7,
        "time_to_production": 6.5
      },
      "verdict_rationale": {
        "developer_experience": "The editor state model is genuinely well designed — immutable, transactional, and easy to reason about once it clicks. Getting there takes longer than with Tiptap, because the concepts are lower level and the React composer requires assembling several plugins before anything appears on screen.",
        "extensibility": "Nodes, commands, transforms and listeners compose cleanly, and the architecture is deliberately unopinionated about rendering. Anything can be replaced, which is why teams building unusual editing surfaces choose it over frameworks that assume a document shape.",
        "documentation": "Concepts are documented carefully and the playground is a genuine reference implementation. What is thinner is the middle ground: recipes for the features every product needs — mentions, uploads, toolbars — usually mean reading the playground source rather than a guide.",
        "ecosystem": "Meta's production use gives it credibility and a steady release cadence, and the plugin set covers the common node types. Third-party supply is smaller than Tiptap's, and the pre-1.0 version line means community packages break more often than in a settled ecosystem.",
        "time_to_production": "The framework asks for the most assembly of any text editor in this dataset before you have something a user would recognise as an editor. That is a deliberate trade for control and performance, and it is the wrong trade for a team whose editor is a feature rather than a differentiator."
      },
      "sponsored_disclosure": false,
      "marketplace_url": null,
      "last_verified": "2026-08-20",
      "sources": [
        {
          "url": "https://registry.npmjs.org/lexical",
          "title": "npm registry metadata for lexical (MIT licence, version timeline showing 0.1.0 in January 2022)",
          "accessed": "2026-08-20"
        },
        {
          "url": "https://registry.npmjs.org/@lexical/react",
          "title": "npm registry metadata for @lexical/react (first publish date, latest version)",
          "accessed": "2026-08-20"
        },
        {
          "url": "https://lexical.dev/docs/intro",
          "title": "Lexical documentation",
          "accessed": "2026-08-20"
        }
      ]
    },
    {
      "slug": "pagekit",
      "name": "PageKit",
      "type": "sdk",
      "category": [
        "self-hosted",
        "white-label",
        "embeddable",
        "commercial-sdk"
      ],
      "one_liner": "PageKit is a self-hosted, white-label website builder built on GrapesJS and sold by GJS.Market under one-time licence tiers, aimed at agencies and SaaS products that need a branded builder without a per-seat subscription.",
      "license": null,
      "first_release": null,
      "repo": null,
      "homepage": "https://pagekit.gjs.market",
      "docs": null,
      "pricing": {
        "model": "one-time",
        "free_tier": false,
        "paid_from_usd": 199,
        "billing_period": "one-time",
        "notes": "Vendor-stated one-time licence tiers of $199, $449 and $899. EditorStack is funded by GJS.Market, which sells this product, and we have not independently verified these prices against a third-party source — treat them as vendor-published rather than audited."
      },
      "tech": {
        "language": "JavaScript",
        "framework_agnostic": true,
        "react_wrapper": null,
        "vue_wrapper": null,
        "angular_wrapper": null,
        "ssr_support": null,
        "bundle_size_min_gzip_kb": null,
        "measurement_ref": null
      },
      "capabilities": {
        "drag_drop": true,
        "responsive_breakpoints": true,
        "style_manager": true,
        "custom_components": true,
        "data_binding": null,
        "ecommerce_blocks": null,
        "email_html_export": null,
        "ai_generation": null,
        "i18n": null,
        "white_label": true,
        "self_hosted": true
      },
      "extensibility": {
        "plugin_system": true,
        "plugin_ecosystem_size": null,
        "marketplace": true
      },
      "metrics": {
        "status": "not-applicable",
        "npm_package": null,
        "npm_weekly_downloads": null,
        "github_stars": null,
        "last_commit": null,
        "open_issues": null,
        "contributors": null,
        "latest_version": null,
        "updated_at": null
      },
      "best_for": [
        "Agencies that want a branded builder for client sites without paying a monthly platform fee per site",
        "Teams that have chosen GrapesJS as the engine and want the surrounding application already built",
        "Deployments where all page data has to stay on infrastructure the buyer controls"
      ],
      "worst_for": [
        "Teams that want a fully open-source dependency chain with no proprietary licence",
        "Buyers who need published third-party benchmarks, since this is our funder's product and our coverage carries that conflict",
        "React applications that need their own components rendered natively inside the canvas"
      ],
      "verdict_score": null,
      "verdict_rationale": null,
      "sponsored_disclosure": true,
      "marketplace_url": "https://pagekit.gjs.market/",
      "last_verified": "2026-08-19",
      "sources": [
        {
          "url": "https://pagekit.gjs.market",
          "title": "PageKit product page (vendor-published; vendor is this site's funder)",
          "accessed": "2026-08-19"
        }
      ]
    },
    {
      "slug": "plasmic",
      "name": "Plasmic",
      "type": "sdk",
      "category": [
        "commercial-sdk",
        "react",
        "embeddable"
      ],
      "one_liner": "Plasmic is a commercial visual builder for React applications that generates or loads components into your codebase, with a free tier and paid tiers that scale by collaborators and features.",
      "license": null,
      "first_release": "2021-06",
      "repo": "https://github.com/plasmicapp/plasmic",
      "homepage": "https://www.plasmic.app",
      "docs": "https://docs.plasmic.app",
      "pricing": {
        "model": "freemium",
        "free_tier": true,
        "paid_from_usd": 39,
        "billing_period": "month",
        "notes": "Free tier with unlimited projects for a small number of collaborators; paid tiers reported around $39/month (Starter, billed yearly), roughly $103/month (Pro) and roughly $399/month (Scale), with quote-only Enterprise. Per-seat add-ons apply on team plans."
      },
      "tech": {
        "language": "TypeScript",
        "framework_agnostic": false,
        "react_wrapper": "first-party",
        "vue_wrapper": "none",
        "angular_wrapper": "none",
        "ssr_support": "full",
        "bundle_size_min_gzip_kb": null,
        "measurement_ref": null
      },
      "capabilities": {
        "drag_drop": true,
        "responsive_breakpoints": true,
        "style_manager": true,
        "custom_components": true,
        "data_binding": true,
        "ecommerce_blocks": "partial",
        "email_html_export": false,
        "ai_generation": true,
        "i18n": true,
        "white_label": false,
        "self_hosted": false
      },
      "extensibility": {
        "plugin_system": "partial",
        "plugin_ecosystem_size": null,
        "marketplace": false
      },
      "metrics": {
        "status": "measured",
        "npm_package": "@plasmicapp/loader-react",
        "npm_weekly_downloads": 9503,
        "github_stars": 7022,
        "last_commit": "2026-09-17",
        "open_issues": 45,
        "contributors": 88,
        "latest_version": "2.0.23",
        "updated_at": "2026-09-17"
      },
      "best_for": [
        "Design-led React teams that want a Figma-like canvas producing real code or loadable components",
        "Marketing sites attached to a React app where designers own layout and developers own components",
        "Teams that want to keep rendering in their own Next.js deployment rather than on a vendor's edge"
      ],
      "worst_for": [
        "White-label scenarios, since the studio is a vendor-branded product rather than an embeddable editor for your users",
        "Non-React stacks, since both the studio canvas and the loader are React-specific",
        "Teams that need the editing surface itself inside their own application UI"
      ],
      "verdict_score": null,
      "verdict_rationale": null,
      "sponsored_disclosure": false,
      "marketplace_url": null,
      "last_verified": "2026-08-19",
      "sources": [
        {
          "url": "https://registry.npmjs.org/@plasmicapp/loader-react",
          "title": "npm registry metadata for @plasmicapp/loader-react (licence, first publish date, latest version)",
          "accessed": "2026-08-19"
        },
        {
          "url": "https://www.plasmic.app/pricing",
          "title": "Plasmic pricing page (vendor-published plan prices)",
          "accessed": "2026-08-19"
        },
        {
          "url": "https://docs.plasmic.app",
          "title": "Plasmic documentation",
          "accessed": "2026-08-19"
        }
      ]
    },
    {
      "slug": "plate",
      "name": "Plate",
      "type": "library",
      "category": [
        "react",
        "block-editor",
        "embeddable",
        "open-source-core",
        "self-hosted",
        "rich-text"
      ],
      "one_liner": "Plate is an MIT-licensed React rich-text editor framework built on Slate, shipping headless plugins plus copy-in shadcn/ui components for editors that need document editing rather than page layout. First published to npm in July 2021.",
      "license": "MIT",
      "first_release": "2021-07",
      "repo": "https://github.com/udecode/plate",
      "homepage": "https://platejs.org",
      "docs": "https://platejs.org/docs",
      "pricing": {
        "model": "open-source",
        "free_tier": true,
        "paid_from_usd": 0,
        "billing_period": "n/a",
        "notes": "MIT-licensed. Optional paid templates exist but the plugin set is free."
      },
      "tech": {
        "language": "TypeScript",
        "framework_agnostic": false,
        "react_wrapper": "first-party",
        "vue_wrapper": "none",
        "angular_wrapper": "none",
        "ssr_support": "partial",
        "bundle_size_min_gzip_kb": 150.8,
        "measurement_ref": "bundles-2026-09-17"
      },
      "capabilities": {
        "drag_drop": "partial",
        "responsive_breakpoints": false,
        "style_manager": false,
        "custom_components": true,
        "data_binding": false,
        "ecommerce_blocks": false,
        "email_html_export": false,
        "ai_generation": true,
        "i18n": "partial",
        "white_label": true,
        "self_hosted": true
      },
      "extensibility": {
        "plugin_system": true,
        "plugin_ecosystem_size": null,
        "marketplace": false
      },
      "metrics": {
        "status": "measured",
        "npm_package": "@udecode/plate",
        "npm_weekly_downloads": 100638,
        "github_stars": 16599,
        "last_commit": "2026-09-17",
        "open_issues": 16,
        "contributors": 268,
        "latest_version": "49.0.0",
        "updated_at": "2026-09-17"
      },
      "best_for": [
        "Notion-style document editors inside a React product, with comments, mentions and slash commands",
        "Teams already using shadcn/ui who want editor components in the same visual language",
        "AI-assisted writing surfaces, since streaming AI blocks are part of the maintained plugin set"
      ],
      "worst_for": [
        "Page building, because there is no canvas, no breakpoints and no CSS style manager",
        "Non-React stacks, as the whole plugin model is React and Slate specific",
        "Teams that need a stable public API over years, given the pace of major version releases"
      ],
      "verdict_score": {
        "developer_experience": 8,
        "extensibility": 9,
        "documentation": 8,
        "ecosystem": 7.5,
        "time_to_production": 7.5
      },
      "verdict_rationale": {
        "developer_experience": "Plugins compose cleanly and the typed plugin factory removes most of the Slate boilerplate that makes raw Slate painful. The cost is conceptual depth: you still need to understand Slate's document model and normalisation rules when something behaves unexpectedly.",
        "extensibility": "The plugin system reaches every layer — schema, rendering, keyboard handling, serialisation — and components are copied into your repository rather than imported, so nothing is locked behind a package boundary. Few editor frameworks in this dataset give you that much room without a fork.",
        "documentation": "The site documents each plugin with a live example and the installation paths are explicit about peer dependencies. Migration guides between major versions exist but assume familiarity with what changed upstream in Slate, which slows down teams upgrading after a long gap.",
        "ecosystem": "A large first-party plugin catalogue covers most document-editing requirements, and the shadcn/ui alignment means design integration is rarely blocked. Third-party plugin supply is thin, so unusual requirements mean writing your own.",
        "time_to_production": "A capable editor is achievable in days if your requirements match the shipped plugins. Frequent major releases mean upgrade work is a recurring line item, which is the main thing that pushes production timelines out."
      },
      "sponsored_disclosure": false,
      "marketplace_url": null,
      "last_verified": "2026-08-19",
      "sources": [
        {
          "url": "https://registry.npmjs.org/@udecode/plate",
          "title": "npm registry metadata for @udecode/plate (licence, first publish date, latest version)",
          "accessed": "2026-08-19"
        },
        {
          "url": "https://github.com/udecode/plate",
          "title": "Plate source repository",
          "accessed": "2026-08-19"
        },
        {
          "url": "https://platejs.org/docs",
          "title": "Plate documentation",
          "accessed": "2026-08-19"
        }
      ]
    },
    {
      "slug": "puck",
      "name": "Puck",
      "type": "library",
      "category": [
        "react",
        "embeddable",
        "open-source-core",
        "white-label",
        "self-hosted"
      ],
      "one_liner": "Puck is an MIT-licensed visual editor for React that renders your own React components inside the canvas and stores page data as JSON, first published to npm in June 2023.",
      "license": "MIT",
      "first_release": "2023-06",
      "repo": "https://github.com/measuredco/puck",
      "homepage": "https://puckeditor.com",
      "docs": "https://puckeditor.com/docs",
      "pricing": {
        "model": "open-source",
        "free_tier": true,
        "paid_from_usd": 0,
        "billing_period": "n/a",
        "notes": "MIT-licensed with no paid tier for the core editor."
      },
      "tech": {
        "language": "TypeScript",
        "framework_agnostic": false,
        "react_wrapper": "first-party",
        "vue_wrapper": "none",
        "angular_wrapper": "none",
        "ssr_support": "full",
        "bundle_size_min_gzip_kb": 90.4,
        "measurement_ref": "bundles-2026-09-17"
      },
      "capabilities": {
        "drag_drop": true,
        "responsive_breakpoints": "partial",
        "style_manager": false,
        "custom_components": true,
        "data_binding": true,
        "ecommerce_blocks": false,
        "email_html_export": false,
        "ai_generation": false,
        "i18n": "partial",
        "white_label": true,
        "self_hosted": true
      },
      "extensibility": {
        "plugin_system": true,
        "plugin_ecosystem_size": null,
        "marketplace": false
      },
      "metrics": {
        "status": "measured",
        "npm_package": "@measured/puck",
        "npm_weekly_downloads": 146091,
        "github_stars": 13332,
        "last_commit": "2026-09-17",
        "open_issues": 197,
        "contributors": 87,
        "latest_version": "0.20.2",
        "updated_at": "2026-09-17"
      },
      "best_for": [
        "React and Next.js products where marketing pages must be assembled from the app's existing component library",
        "Teams that want page content stored as typed JSON they control rather than as generated HTML",
        "Adding a drag-and-drop layer to an existing design system without rewriting the components"
      ],
      "worst_for": [
        "Applications outside React, since there is no Vue or Angular path and the canvas is React-native by design",
        "Free-form pixel-level design, because there is no CSS style manager — layout comes from the props your components expose",
        "Email template building, where the output must be table-based HTML rather than React components"
      ],
      "verdict_score": {
        "developer_experience": 9,
        "extensibility": 8,
        "documentation": 8.5,
        "ecosystem": 6,
        "time_to_production": 8.5
      },
      "verdict_rationale": {
        "developer_experience": "The config object is the whole API: you describe components, their fields and their defaults, and the editor is generated from that. A React developer who has never seen Puck can add a new editable component in minutes, and the typings catch field mistakes at compile time rather than at runtime.",
        "extensibility": "Custom fields, overrides for editor chrome and a plugin interface cover most product requirements without forking. The ceiling is lower than a full engine: you are shaping an editor around React components, not building an arbitrary design surface with its own style engine.",
        "documentation": "Docs are task-shaped rather than reference-shaped, with runnable examples for the paths teams actually take — Next.js App Router, custom fields, external data sources. Gaps appear in the advanced areas such as multi-user editing and large-document performance.",
        "ecosystem": "Younger than the alternatives, so third-party plugin choice is limited and most teams write their own field types. That is less costly than it sounds because the component contract is small, but it is a real difference against a decade-old plugin catalogue.",
        "time_to_production": "Because the editor renders your production components directly, there is no export step and no HTML-to-component translation to maintain. For a React team this is the fastest route in the dataset from install to something you can put in front of a customer."
      },
      "sponsored_disclosure": false,
      "marketplace_url": null,
      "last_verified": "2026-08-19",
      "sources": [
        {
          "url": "https://registry.npmjs.org/@measured/puck",
          "title": "npm registry metadata for @measured/puck (licence, first publish date, latest version)",
          "accessed": "2026-08-19"
        },
        {
          "url": "https://github.com/measuredco/puck",
          "title": "Puck source repository",
          "accessed": "2026-08-19"
        },
        {
          "url": "https://puckeditor.com/docs",
          "title": "Puck documentation",
          "accessed": "2026-08-19"
        }
      ]
    },
    {
      "slug": "quill",
      "name": "Quill",
      "type": "library",
      "category": [
        "rich-text",
        "framework-agnostic",
        "embeddable",
        "open-source-core",
        "self-hosted"
      ],
      "one_liner": "Quill is a BSD-3-Clause rich-text editor maintained by Slab, with a built-in toolbar and themes, a Delta document format and a module API; version 2.0, rewritten in TypeScript, shipped in April 2024, and every framework wrapper for it is community-maintained.",
      "license": "BSD-3-Clause",
      "first_release": "2014-11",
      "repo": "https://github.com/slab/quill",
      "homepage": "https://quilljs.com",
      "docs": "https://quilljs.com/docs/quickstart",
      "pricing": {
        "model": "open-source",
        "free_tier": true,
        "paid_from_usd": 0,
        "billing_period": "n/a",
        "notes": "BSD-3-Clause licensed with no commercial tier or hosted service that we could find on quilljs.com."
      },
      "tech": {
        "language": "TypeScript",
        "framework_agnostic": true,
        "react_wrapper": "community",
        "vue_wrapper": "community",
        "angular_wrapper": "community",
        "ssr_support": null,
        "bundle_size_min_gzip_kb": 58.7,
        "measurement_ref": "bundles-2026-09-17"
      },
      "capabilities": {
        "drag_drop": null,
        "responsive_breakpoints": false,
        "style_manager": false,
        "custom_components": true,
        "data_binding": false,
        "ecommerce_blocks": false,
        "email_html_export": false,
        "ai_generation": null,
        "i18n": null,
        "white_label": true,
        "self_hosted": true
      },
      "extensibility": {
        "plugin_system": true,
        "plugin_ecosystem_size": null,
        "marketplace": false
      },
      "metrics": {
        "status": "measured",
        "npm_package": "quill",
        "npm_weekly_downloads": 6600547,
        "github_stars": 47348,
        "last_commit": "2025-07-25",
        "open_issues": 658,
        "contributors": 161,
        "latest_version": "2.0.3",
        "updated_at": "2026-09-17"
      },
      "best_for": [
        "Comment boxes, notes fields and simple article bodies where a small, permissively licensed editor with a toolbar is enough",
        "Framework-agnostic products that want one editor in plain JavaScript and are willing to wrap it themselves",
        "Applications that benefit from Quill's Delta format, which describes both documents and changes to them as JSON operations"
      ],
      "worst_for": [
        "React teams wanting a maintained first-party binding: the original react-quill package was last published in August 2022",
        "Block-style editing with drag handles, nested blocks or slash menus, which Quill does not provide out of the box",
        "Teams that need a steady release cadence, since the latest quill release on npm is from November 2024"
      ],
      "verdict_score": null,
      "verdict_rationale": null,
      "sponsored_disclosure": false,
      "marketplace_url": null,
      "last_verified": "2026-09-17",
      "sources": [
        {
          "url": "https://registry.npmjs.org/quill",
          "title": "npm registry metadata for quill (BSD-3-Clause; 2.0.0 on 17 April 2024 UTC; latest 2.0.3 on 30 November 2024; the name belonged to an unrelated package in 2012, and Quill's own releases begin at 0.19.0 in November 2014)",
          "accessed": "2026-09-17"
        },
        {
          "url": "https://raw.githubusercontent.com/slab/quill/main/LICENSE",
          "title": "Quill LICENSE (BSD 3-clause, copyright Slab, Jason Chen and salesforce.com)",
          "accessed": "2026-09-17"
        },
        {
          "url": "https://slab.com/blog/announcing-quill-2-0/",
          "title": "Slab blog: announcing Quill 2.0 (source fully transitioned to TypeScript)",
          "accessed": "2026-09-17"
        },
        {
          "url": "https://quilljs.com/docs/delta",
          "title": "Quill Delta documentation (a format describing Quill's contents and changes)",
          "accessed": "2026-09-17"
        },
        {
          "url": "https://quilljs.com/docs/modules",
          "title": "Quill modules documentation (clipboard, keyboard, history, toolbar, syntax)",
          "accessed": "2026-09-17"
        },
        {
          "url": "https://quilljs.com/docs/customization/registries",
          "title": "Quill registries documentation (custom formats)",
          "accessed": "2026-09-17"
        },
        {
          "url": "https://registry.npmjs.org/react-quill",
          "title": "npm registry metadata for react-quill (community wrapper, 2.0.0 last published August 2022)",
          "accessed": "2026-09-17"
        },
        {
          "url": "https://registry.npmjs.org/ngx-quill",
          "title": "npm registry metadata for ngx-quill (community Angular wrapper)",
          "accessed": "2026-09-17"
        },
        {
          "url": "https://registry.npmjs.org/@vueup/vue-quill",
          "title": "npm registry metadata for @vueup/vue-quill (community Vue wrapper)",
          "accessed": "2026-09-17"
        }
      ]
    },
    {
      "slug": "react-page",
      "name": "React Page",
      "type": "library",
      "category": [
        "react",
        "embeddable",
        "open-source-core",
        "self-hosted"
      ],
      "one_liner": "React Page is an MIT-licensed, cell-and-row based content editor for React that ships a grid layout system and a plugin API, first published to npm in November 2019.",
      "license": "MIT",
      "first_release": "2019-11",
      "repo": "https://github.com/react-page/react-page",
      "homepage": "https://react-page.github.io",
      "docs": "https://react-page.github.io/docs/",
      "pricing": {
        "model": "open-source",
        "free_tier": true,
        "paid_from_usd": 0,
        "billing_period": "n/a",
        "notes": "MIT-licensed with no commercial tier."
      },
      "tech": {
        "language": "TypeScript",
        "framework_agnostic": false,
        "react_wrapper": "first-party",
        "vue_wrapper": "none",
        "angular_wrapper": "none",
        "ssr_support": "partial",
        "bundle_size_min_gzip_kb": 377.2,
        "measurement_ref": "bundles-2026-09-17"
      },
      "capabilities": {
        "drag_drop": true,
        "responsive_breakpoints": "partial",
        "style_manager": "partial",
        "custom_components": true,
        "data_binding": "partial",
        "ecommerce_blocks": false,
        "email_html_export": false,
        "ai_generation": false,
        "i18n": true,
        "white_label": true,
        "self_hosted": true
      },
      "extensibility": {
        "plugin_system": true,
        "plugin_ecosystem_size": null,
        "marketplace": false
      },
      "metrics": {
        "status": "measured",
        "npm_package": "@react-page/editor",
        "npm_weekly_downloads": 4544,
        "github_stars": 9538,
        "last_commit": "2026-07-28",
        "open_issues": 11,
        "contributors": 65,
        "latest_version": "5.4.6",
        "updated_at": "2026-09-17"
      },
      "best_for": [
        "React content sites that need a row-and-column layout editor with per-language content out of the box",
        "Teams replacing a legacy WYSIWYG in an internal CMS where multilingual content is a hard requirement",
        "Projects that want both a layout grid and custom React plugins without building the grid themselves"
      ],
      "worst_for": [
        "Products needing an active, fast-moving upstream, since release cadence is slow compared with newer React builders",
        "Non-React stacks and server-rendered templating engines",
        "Design-heavy landing pages that need arbitrary positioning rather than a cell grid"
      ],
      "verdict_score": {
        "developer_experience": 6.5,
        "extensibility": 7.5,
        "documentation": 6,
        "ecosystem": 5,
        "time_to_production": 7
      },
      "verdict_rationale": {
        "developer_experience": "The editor mounts with a value and an onChange, which is familiar to any React developer, and the cell plugin contract is straightforward. Type ergonomics are dated in places and error messages from invalid plugin definitions are not always specific enough to locate the mistake quickly.",
        "extensibility": "Cell plugins define their own controls, serialisation and rendering, and layout plugins can wrap groups of cells, which covers most structural requirements. Deeper changes to the drag-and-drop behaviour or grid semantics are harder because those live inside the core.",
        "documentation": "Concepts are explained with runnable examples and the multilingual story is documented, which is unusual. Some pages lag behind the current major version, so a portion of integration work is reading the examples directory in the repository instead.",
        "ecosystem": "A small set of official plugins covers text, image, video and spacer, and third-party contributions are rare. Teams should plan to write the plugins their product needs rather than shop for them.",
        "time_to_production": "The built-in grid and language handling remove two chunks of work that other React libraries leave to you, so a straightforward content editor lands quickly. Anything requiring modification of core drag behaviour extends the timeline sharply."
      },
      "sponsored_disclosure": false,
      "marketplace_url": null,
      "last_verified": "2026-08-19",
      "sources": [
        {
          "url": "https://registry.npmjs.org/@react-page/editor",
          "title": "npm registry metadata for @react-page/editor (licence, first publish date, latest version)",
          "accessed": "2026-08-19"
        },
        {
          "url": "https://github.com/react-page/react-page",
          "title": "React Page source repository",
          "accessed": "2026-08-19"
        },
        {
          "url": "https://react-page.github.io/docs/",
          "title": "React Page documentation",
          "accessed": "2026-08-19"
        }
      ]
    },
    {
      "slug": "sanity",
      "name": "Sanity Visual Editing",
      "type": "cms",
      "category": [
        "headless-cms",
        "react"
      ],
      "one_liner": "Sanity is a headless content platform whose Presentation tool adds click-to-edit visual editing over a live preview of your front end; the @sanity/visual-editing package has been on npm under MIT since February 2024 and visual editing is available on every plan including the free tier.",
      "license": "MIT",
      "first_release": "2024-02",
      "repo": "https://github.com/sanity-io/visual-editing",
      "homepage": "https://www.sanity.io",
      "docs": "https://www.sanity.io/docs/visual-editing",
      "pricing": {
        "model": "freemium",
        "free_tier": true,
        "paid_from_usd": 15,
        "billing_period": "month",
        "notes": "Vendor-published tiers: a free plan supporting up to 20 seats, Growth at about $15 per seat per month billed monthly (around $12 annually) and quote-only Enterprise. Visual editing is included on the free plan; the visual-editing package itself is MIT-licensed open source."
      },
      "tech": {
        "language": "TypeScript",
        "framework_agnostic": false,
        "react_wrapper": "first-party",
        "vue_wrapper": "community",
        "angular_wrapper": "none",
        "ssr_support": "full",
        "bundle_size_min_gzip_kb": null,
        "measurement_ref": null
      },
      "capabilities": {
        "drag_drop": false,
        "responsive_breakpoints": false,
        "style_manager": false,
        "custom_components": true,
        "data_binding": true,
        "ecommerce_blocks": false,
        "email_html_export": false,
        "ai_generation": "partial",
        "i18n": true,
        "white_label": false,
        "self_hosted": "partial"
      },
      "extensibility": {
        "plugin_system": true,
        "plugin_ecosystem_size": null,
        "marketplace": true
      },
      "metrics": {
        "status": "measured",
        "npm_package": "@sanity/visual-editing",
        "npm_weekly_downloads": 664282,
        "github_stars": 64,
        "last_commit": "2026-09-10",
        "open_issues": 61,
        "contributors": 39,
        "latest_version": "6.1.2",
        "updated_at": "2026-09-17"
      },
      "best_for": [
        "React and Next.js teams that want overlay-based click-to-edit on top of an existing front end",
        "Content models that are genuinely structured, where free-form page building would be a regression",
        "Teams that want the editing studio itself version-controlled in their own repository"
      ],
      "worst_for": [
        "Drag-and-drop page composition, which the Presentation tool deliberately does not provide",
        "Products embedding an editor for external end users",
        "Teams needing the content lake self-hosted, since the hosted dataset is the product"
      ],
      "verdict_score": null,
      "verdict_rationale": null,
      "sponsored_disclosure": false,
      "marketplace_url": null,
      "last_verified": "2026-08-19",
      "sources": [
        {
          "url": "https://registry.npmjs.org/@sanity/visual-editing",
          "title": "npm registry metadata for @sanity/visual-editing (MIT licence, first publish date, latest version)",
          "accessed": "2026-08-19"
        },
        {
          "url": "https://www.sanity.io/pricing",
          "title": "Sanity pricing page (vendor-published plan prices)",
          "accessed": "2026-08-19"
        },
        {
          "url": "https://www.sanity.io/docs/visual-editing",
          "title": "Sanity visual editing documentation",
          "accessed": "2026-08-19"
        }
      ]
    },
    {
      "slug": "silex",
      "name": "Silex",
      "type": "library",
      "category": [
        "open-source-core",
        "framework-agnostic",
        "self-hosted",
        "white-label"
      ],
      "one_liner": "Silex is a free/libre website builder from the non-profit Silex Labs, dual-licensed GPL-3.0 or MPL-2.0 and built on top of GrapesJS, aimed at static sites with dynamic data.",
      "license": "GPL-3.0 OR MPL-2.0",
      "first_release": "2019-04",
      "repo": "https://github.com/silexlabs/Silex",
      "homepage": "https://www.silex.me",
      "docs": "https://docs.silex.me",
      "pricing": {
        "model": "open-source",
        "free_tier": true,
        "paid_from_usd": 0,
        "billing_period": "n/a",
        "notes": "Free software maintained by Silex Labs, a French non-profit; an optional paid cloud instance funds the project."
      },
      "tech": {
        "language": "TypeScript",
        "framework_agnostic": true,
        "react_wrapper": "none",
        "vue_wrapper": "none",
        "angular_wrapper": "none",
        "ssr_support": "none",
        "bundle_size_min_gzip_kb": null,
        "measurement_ref": null
      },
      "capabilities": {
        "drag_drop": true,
        "responsive_breakpoints": true,
        "style_manager": true,
        "custom_components": true,
        "data_binding": true,
        "ecommerce_blocks": false,
        "email_html_export": false,
        "ai_generation": false,
        "i18n": true,
        "white_label": true,
        "self_hosted": true
      },
      "extensibility": {
        "plugin_system": true,
        "plugin_ecosystem_size": null,
        "marketplace": false
      },
      "metrics": {
        "status": "measured",
        "npm_package": "silex-website-builder",
        "npm_weekly_downloads": 159,
        "github_stars": 2973,
        "last_commit": "2026-09-16",
        "open_issues": 62,
        "contributors": 50,
        "latest_version": "3.0.0-alpha.17",
        "updated_at": "2026-09-17"
      },
      "best_for": [
        "Agencies and non-profits that need a complete free website builder application rather than an editor library",
        "Static site workflows where the output is published to a host or a git repository rather than served from a vendor",
        "Organisations with a policy preference for copyleft-licensed, non-profit maintained software"
      ],
      "worst_for": [
        "Embedding an editor inside another SaaS product, which is what the underlying GrapesJS engine is for",
        "Teams that need commercial support with a contractual response time",
        "React-native component editing, since the canvas is DOM and HTML based"
      ],
      "verdict_score": null,
      "verdict_rationale": null,
      "sponsored_disclosure": false,
      "marketplace_url": null,
      "last_verified": "2026-08-19",
      "sources": [
        {
          "url": "https://registry.npmjs.org/silex-website-builder",
          "title": "npm registry metadata for silex-website-builder (licence, first publish date)",
          "accessed": "2026-08-19"
        },
        {
          "url": "https://github.com/silexlabs/Silex",
          "title": "Silex source repository",
          "accessed": "2026-08-19"
        },
        {
          "url": "https://www.silex.me",
          "title": "Silex project website",
          "accessed": "2026-08-19"
        }
      ]
    },
    {
      "slug": "sitejet",
      "name": "Sitejet",
      "type": "platform",
      "category": [
        "no-code-platform",
        "white-label"
      ],
      "one_liner": "Sitejet is a hosted website builder aimed at agencies and web professionals, with a vendor-published Agency plan reported at $89 per month and additional hosted sites charged per site.",
      "license": null,
      "first_release": null,
      "repo": null,
      "homepage": "https://www.sitejet.io",
      "docs": null,
      "pricing": {
        "model": "subscription",
        "free_tier": true,
        "paid_from_usd": 89,
        "billing_period": "month",
        "notes": "Vendor-published: an Agency plan reported at $89 per month including the first website, with additional hosted websites reported at roughly $5 per site on annual billing or $7 monthly. Three plan levels exist and pricing differs between monthly and annual billing; figures below the Agency tier were not captured in this verification pass."
      },
      "tech": {
        "language": null,
        "framework_agnostic": null,
        "react_wrapper": "none",
        "vue_wrapper": "none",
        "angular_wrapper": "none",
        "ssr_support": null,
        "bundle_size_min_gzip_kb": null,
        "measurement_ref": null
      },
      "capabilities": {
        "drag_drop": true,
        "responsive_breakpoints": true,
        "style_manager": true,
        "custom_components": null,
        "data_binding": null,
        "ecommerce_blocks": "partial",
        "email_html_export": false,
        "ai_generation": true,
        "i18n": true,
        "white_label": "partial",
        "self_hosted": false
      },
      "extensibility": {
        "plugin_system": null,
        "plugin_ecosystem_size": null,
        "marketplace": false
      },
      "metrics": {
        "status": "not-applicable",
        "npm_package": null,
        "npm_weekly_downloads": null,
        "github_stars": null,
        "last_commit": null,
        "open_issues": null,
        "contributors": null,
        "latest_version": null,
        "updated_at": null
      },
      "best_for": [
        "Agencies producing a high volume of client sites where per-site cost matters more than editor flexibility",
        "Teams that want templates and a production workflow rather than a component-level editor"
      ],
      "worst_for": [
        "Products embedding an editor in their own application, which this platform does not support",
        "Buyers who need every plan tier published, since our verification pass could only confirm the agency tier",
        "Teams with data-residency requirements, as it is hosted only"
      ],
      "verdict_score": null,
      "verdict_rationale": null,
      "sponsored_disclosure": false,
      "marketplace_url": null,
      "last_verified": "2026-08-20",
      "sources": [
        {
          "url": "https://www.sitejet.io/en/pricing",
          "title": "Sitejet pricing page (vendor-published)",
          "accessed": "2026-08-20"
        },
        {
          "url": "https://www.sitejet.io/en/website-builder-for-agencies",
          "title": "Sitejet Studio for agencies",
          "accessed": "2026-08-20"
        }
      ]
    },
    {
      "slug": "storyblok",
      "name": "Storyblok",
      "type": "cms",
      "category": [
        "headless-cms",
        "react",
        "vue"
      ],
      "one_liner": "Storyblok is a headless CMS whose visual editor renders a live preview of your own front end and lets editors click a component to edit its fields, with a free Starter plan and paid plans from about €99 per month per space.",
      "license": null,
      "first_release": "2022-03",
      "repo": "https://github.com/storyblok/monoblok",
      "homepage": "https://www.storyblok.com",
      "docs": "https://www.storyblok.com/docs",
      "pricing": {
        "model": "freemium",
        "free_tier": true,
        "paid_from_usd": null,
        "billing_period": "month",
        "notes": "Vendor-published tiers are quoted in euros: free Starter, Growth around €99/month, Growth Plus around €349/month and quote-only Elite. Plans attach to a space, so multiple projects mean multiple subscriptions. We record paid_from_usd as null because the published figure is not in US dollars."
      },
      "tech": {
        "language": "TypeScript",
        "framework_agnostic": true,
        "react_wrapper": "first-party",
        "vue_wrapper": "first-party",
        "angular_wrapper": "community",
        "ssr_support": "full",
        "bundle_size_min_gzip_kb": null,
        "measurement_ref": null
      },
      "capabilities": {
        "drag_drop": "partial",
        "responsive_breakpoints": false,
        "style_manager": false,
        "custom_components": true,
        "data_binding": true,
        "ecommerce_blocks": "partial",
        "email_html_export": false,
        "ai_generation": true,
        "i18n": true,
        "white_label": false,
        "self_hosted": false
      },
      "extensibility": {
        "plugin_system": true,
        "plugin_ecosystem_size": null,
        "marketplace": true
      },
      "metrics": {
        "status": "measured",
        "npm_package": "@storyblok/react",
        "npm_weekly_downloads": 106460,
        "github_stars": 68,
        "last_commit": "2026-09-17",
        "open_issues": 70,
        "contributors": 135,
        "latest_version": "7.3.1",
        "updated_at": "2026-09-17"
      },
      "best_for": [
        "Marketing sites where a content team needs click-to-edit preview of a developer-built front end",
        "Multilingual content operations that need translation workflow alongside visual editing",
        "Teams that want structured, typed content rather than stored HTML"
      ],
      "worst_for": [
        "Embedding an editor that your own customers use inside your product, which is not what a CMS visual editor is",
        "Free-form page design, since layout comes from components developers ship",
        "Organisations that must keep content on their own infrastructure"
      ],
      "verdict_score": null,
      "verdict_rationale": null,
      "sponsored_disclosure": false,
      "marketplace_url": null,
      "last_verified": "2026-08-19",
      "sources": [
        {
          "url": "https://registry.npmjs.org/@storyblok/react",
          "title": "npm registry metadata for @storyblok/react (licence, first publish date, latest version)",
          "accessed": "2026-08-19"
        },
        {
          "url": "https://www.storyblok.com/pricing",
          "title": "Storyblok pricing page (vendor-published plan prices)",
          "accessed": "2026-08-19"
        },
        {
          "url": "https://www.storyblok.com/docs",
          "title": "Storyblok documentation",
          "accessed": "2026-08-19"
        }
      ]
    },
    {
      "slug": "stripo",
      "name": "Stripo Plugin",
      "type": "sdk",
      "category": [
        "email",
        "commercial-sdk",
        "embeddable",
        "white-label"
      ],
      "one_liner": "Stripo Plugin is the embeddable, white-label version of the Stripo email editor, sold separately from the Stripo web app with published plugin plans starting at $100 per month.",
      "license": null,
      "first_release": null,
      "repo": null,
      "homepage": "https://stripo.email/plugin/",
      "docs": "https://plugin.stripo.email/",
      "pricing": {
        "model": "subscription",
        "free_tier": true,
        "paid_from_usd": 100,
        "billing_period": "month",
        "notes": "Vendor-published plugin tiers: a free plan for integration testing, Startup at $100/month covering 400 unique emails per month, and Business at $550/month covering 15,000 unique emails per month, with custom terms above that. Pricing is metered by emails rather than seats."
      },
      "tech": {
        "language": "JavaScript",
        "framework_agnostic": true,
        "react_wrapper": "community",
        "vue_wrapper": "community",
        "angular_wrapper": "community",
        "ssr_support": "none",
        "bundle_size_min_gzip_kb": null,
        "measurement_ref": null
      },
      "capabilities": {
        "drag_drop": true,
        "responsive_breakpoints": true,
        "style_manager": true,
        "custom_components": true,
        "data_binding": true,
        "ecommerce_blocks": "partial",
        "email_html_export": true,
        "ai_generation": true,
        "i18n": true,
        "white_label": true,
        "self_hosted": false
      },
      "extensibility": {
        "plugin_system": "partial",
        "plugin_ecosystem_size": null,
        "marketplace": false
      },
      "metrics": {
        "status": "not-applicable",
        "npm_package": null,
        "npm_weekly_downloads": null,
        "github_stars": null,
        "last_commit": null,
        "open_issues": null,
        "contributors": null,
        "latest_version": null,
        "updated_at": null
      },
      "best_for": [
        "Email service providers and CRMs adding a branded email builder with AMP and interactive module support",
        "Teams whose usage is naturally capped, since pricing is metered per unique email rather than per seat",
        "Products that want a large ready-made template library alongside the editor"
      ],
      "worst_for": [
        "High-volume platforms where per-email metering becomes expensive relative to a flat platform fee",
        "Self-hosting requirements, as the editor runs as a vendor-hosted component",
        "Non-email page building, which is outside the product's scope"
      ],
      "verdict_score": null,
      "verdict_rationale": null,
      "sponsored_disclosure": false,
      "marketplace_url": null,
      "last_verified": "2026-08-19",
      "sources": [
        {
          "url": "https://stripo.email/plugin/",
          "title": "Stripo Plugin product page (vendor-published)",
          "accessed": "2026-08-19"
        },
        {
          "url": "https://plugin.stripo.email/",
          "title": "Stripo Plugin integration documentation",
          "accessed": "2026-08-19"
        }
      ]
    },
    {
      "slug": "teleporthq",
      "name": "TeleportHQ",
      "type": "sdk",
      "category": [
        "commercial-sdk",
        "react",
        "embeddable"
      ],
      "one_liner": "TeleportHQ is a low-code front-end platform that turns a visual canvas into exportable React, Vue or Angular code, with an MIT-licensed open-source code generator on npm since September 2019 and a free tier plus paid plans from $9 per editor per month billed annually.",
      "license": null,
      "first_release": "2019-09",
      "repo": "https://github.com/teleporthq/teleport-code-generators",
      "homepage": "https://teleporthq.io",
      "docs": "https://docs.teleporthq.io",
      "pricing": {
        "model": "freemium",
        "free_tier": true,
        "paid_from_usd": 9,
        "billing_period": "month",
        "notes": "Vendor-published tiers: a free plan limited to one project, Professional at $18 per editor per month billed monthly or roughly $9 per editor per month billed annually, and a quote-only Agency tier. The code generation libraries are separately open source under MIT."
      },
      "tech": {
        "language": "TypeScript",
        "framework_agnostic": true,
        "react_wrapper": "first-party",
        "vue_wrapper": "first-party",
        "angular_wrapper": "first-party",
        "ssr_support": "partial",
        "bundle_size_min_gzip_kb": null,
        "measurement_ref": null
      },
      "capabilities": {
        "drag_drop": true,
        "responsive_breakpoints": true,
        "style_manager": true,
        "custom_components": true,
        "data_binding": true,
        "ecommerce_blocks": false,
        "email_html_export": false,
        "ai_generation": true,
        "i18n": "partial",
        "white_label": "partial",
        "self_hosted": false
      },
      "extensibility": {
        "plugin_system": true,
        "plugin_ecosystem_size": null,
        "marketplace": false
      },
      "metrics": {
        "status": "measured",
        "npm_package": "@teleporthq/teleport-code-generator",
        "npm_weekly_downloads": 1165,
        "github_stars": 1116,
        "last_commit": "2026-09-17",
        "open_issues": 55,
        "contributors": 39,
        "latest_version": "0.43.65",
        "updated_at": "2026-09-17"
      },
      "best_for": [
        "Teams that want design-to-code output they can commit to a repository rather than a runtime dependency",
        "Agencies producing static marketing sites across several front-end frameworks",
        "Projects that want to use the open-source code generators independently of the hosted studio"
      ],
      "worst_for": [
        "Embedding an editor for your own end customers, which is not the product's shape",
        "Applications needing a runtime editing surface inside the product UI",
        "Complex application state, since generated code is presentation-focused"
      ],
      "verdict_score": null,
      "verdict_rationale": null,
      "sponsored_disclosure": false,
      "marketplace_url": null,
      "last_verified": "2026-08-19",
      "sources": [
        {
          "url": "https://registry.npmjs.org/@teleporthq/teleport-code-generator",
          "title": "npm registry metadata for @teleporthq/teleport-code-generator (MIT licence, first publish date, latest version)",
          "accessed": "2026-08-19"
        },
        {
          "url": "https://teleporthq.io/pricing",
          "title": "TeleportHQ pricing page (vendor-published plan prices)",
          "accessed": "2026-08-19"
        },
        {
          "url": "https://docs.teleporthq.io",
          "title": "TeleportHQ documentation",
          "accessed": "2026-08-19"
        }
      ]
    },
    {
      "slug": "tinymce",
      "name": "TinyMCE",
      "type": "library",
      "category": [
        "rich-text",
        "framework-agnostic",
        "embeddable",
        "open-source-core",
        "self-hosted"
      ],
      "one_liner": "TinyMCE is a long-established WYSIWYG editor whose licence moved from MIT in version 6 to GPL-2.0-or-later in version 7, and since 8.3 to GPL-2.0-or-later or Tiny's self-hosted commercial terms, with every self-hosted TinyMCE 8 install required to set a licence key.",
      "license": "GPL-2.0-or-later OR commercial",
      "first_release": "2014-05",
      "repo": "https://github.com/tinymce/tinymce",
      "homepage": "https://www.tiny.cloud/",
      "docs": "https://www.tiny.cloud/docs/tinymce/latest/",
      "pricing": {
        "model": "freemium",
        "free_tier": true,
        "paid_from_usd": 79,
        "billing_period": "month",
        "notes": "Vendor-published. Self-hosting under GPL-2.0-or-later is free with license_key set to 'gpl'; self-hosted commercial use needs a commercial licence key. The cloud Free plan includes 1,000 editor loads per month, then $40 per 1,000. Essential is $79 per month paid annually with 5,000 loads; Professional is $145 per month paid annually with 20,000 loads; Enterprise is by quote. Monthly-billing prices were not shown in the page source we could read, so only the annual rates are recorded. Suggested Edits and Revision History are separate add-ons."
      },
      "tech": {
        "language": "TypeScript",
        "framework_agnostic": true,
        "react_wrapper": "first-party",
        "vue_wrapper": "first-party",
        "angular_wrapper": "first-party",
        "ssr_support": null,
        "bundle_size_min_gzip_kb": 393.9,
        "measurement_ref": "bundles-2026-09-17"
      },
      "capabilities": {
        "drag_drop": null,
        "responsive_breakpoints": false,
        "style_manager": false,
        "custom_components": null,
        "data_binding": false,
        "ecommerce_blocks": false,
        "email_html_export": null,
        "ai_generation": "plugin",
        "i18n": true,
        "white_label": null,
        "self_hosted": true
      },
      "extensibility": {
        "plugin_system": true,
        "plugin_ecosystem_size": null,
        "marketplace": null
      },
      "metrics": {
        "status": "measured",
        "npm_package": "tinymce",
        "npm_weekly_downloads": 1025945,
        "github_stars": 16298,
        "last_commit": "2026-09-16",
        "open_issues": 420,
        "contributors": 330,
        "latest_version": "8.9.1",
        "updated_at": "2026-09-17"
      },
      "best_for": [
        "Replacing a textarea with a familiar word-processor interface — menus, toolbar, tables — without designing any editor UI",
        "Products already on TinyMCE that are GPL-compatible or can budget for a commercial licence, where migrating content would cost more than the licence",
        "Teams that want first-party React, Vue and Angular integrations maintained by the same vendor as the editor"
      ],
      "worst_for": [
        "Closed-source products still on TinyMCE 6 expecting MIT terms on upgrade, since versions 7 and 8 are GPL or commercial",
        "Bundle-sensitive routes: the self-hosted core, theme, model and icons measured the heaviest JavaScript in our benchmark",
        "Structured, block-based content models where stored HTML is a liability rather than the goal"
      ],
      "verdict_score": null,
      "verdict_rationale": null,
      "sponsored_disclosure": false,
      "marketplace_url": null,
      "last_verified": "2026-09-17",
      "sources": [
        {
          "url": "https://registry.npmjs.org/tinymce",
          "title": "npm registry metadata for tinymce (first publish May 2014; licence field MIT for 6.8.x, GPL-2.0-or-later from 7.0.0, 'SEE LICENSE IN license.md' from 8.3.0; latest 8.9.1)",
          "accessed": "2026-09-17"
        },
        {
          "url": "https://cdn.jsdelivr.net/npm/tinymce@8.9.1/license.md",
          "title": "tinymce 8.9.1 license.md (GPL-2.0-or-later or the Tiny Self-Hosted License Agreement)",
          "accessed": "2026-09-17"
        },
        {
          "url": "https://cdn.jsdelivr.net/npm/tinymce@7.0.0/license.md",
          "title": "tinymce 7.0.0 license.md (GPL-2.0-or-later)",
          "accessed": "2026-09-17"
        },
        {
          "url": "https://www.tiny.cloud/docs/tinymce/latest/license-key/",
          "title": "TinyMCE licence key documentation (self-hosted TinyMCE 8 requires a valid key; 'gpl' for GPL use)",
          "accessed": "2026-09-17"
        },
        {
          "url": "https://www.tiny.cloud/pricing/",
          "title": "TinyMCE pricing page (vendor-published Free, Essential, Professional and Enterprise plans)",
          "accessed": "2026-09-17"
        },
        {
          "url": "https://www.tiny.cloud/docs/tinymce/latest/vite-es6-npm/",
          "title": "Bundling TinyMCE with Vite (required icons, theme, model and skin imports)",
          "accessed": "2026-09-17"
        },
        {
          "url": "https://www.tiny.cloud/docs/tinymce/latest/tinymceai/",
          "title": "TinyMCE AI plugin (only available for paid subscriptions)",
          "accessed": "2026-09-17"
        },
        {
          "url": "https://www.tiny.cloud/docs/tinymce/latest/ui-localization/",
          "title": "TinyMCE UI localisation (premium and community language packs)",
          "accessed": "2026-09-17"
        },
        {
          "url": "https://www.tiny.cloud/docs/tinymce/latest/creating-a-plugin/",
          "title": "TinyMCE documentation: creating a plugin",
          "accessed": "2026-09-17"
        },
        {
          "url": "https://registry.npmjs.org/@tinymce/tinymce-react",
          "title": "npm registry metadata for @tinymce/tinymce-react, published by tinymce (also checked: tinymce-vue, tinymce-angular)",
          "accessed": "2026-09-17"
        }
      ]
    },
    {
      "slug": "tiptap",
      "name": "Tiptap",
      "type": "library",
      "category": [
        "react",
        "block-editor",
        "embeddable",
        "open-source-core",
        "self-hosted",
        "rich-text"
      ],
      "one_liner": "Tiptap is an MIT-licensed headless rich-text editor framework built on ProseMirror, shipping no UI of its own and exposing extensions instead; its React binding first appeared on npm in February 2021.",
      "license": "MIT",
      "first_release": "2020-11",
      "repo": "https://github.com/ueberdosis/tiptap",
      "homepage": "https://tiptap.dev",
      "docs": "https://tiptap.dev/docs",
      "pricing": {
        "model": "freemium",
        "free_tier": true,
        "paid_from_usd": null,
        "billing_period": "month",
        "notes": "The editor framework and its open-source extensions are MIT-licensed with no usage ceiling. Tiptap sells separate hosted collaboration, comments, AI and document services on paid plans; those prices were not captured in this verification pass, so we record null rather than guessing."
      },
      "tech": {
        "language": "TypeScript",
        "framework_agnostic": true,
        "react_wrapper": "first-party",
        "vue_wrapper": "first-party",
        "angular_wrapper": "community",
        "ssr_support": "partial",
        "bundle_size_min_gzip_kb": 123.3,
        "measurement_ref": "bundles-2026-09-17"
      },
      "capabilities": {
        "drag_drop": "partial",
        "responsive_breakpoints": false,
        "style_manager": false,
        "custom_components": true,
        "data_binding": false,
        "ecommerce_blocks": false,
        "email_html_export": false,
        "ai_generation": "plugin",
        "i18n": "partial",
        "white_label": true,
        "self_hosted": true
      },
      "extensibility": {
        "plugin_system": true,
        "plugin_ecosystem_size": null,
        "marketplace": false
      },
      "metrics": {
        "status": "measured",
        "npm_package": "@tiptap/react",
        "npm_weekly_downloads": 13973443,
        "github_stars": 38426,
        "last_commit": "2026-09-17",
        "open_issues": 846,
        "contributors": 529,
        "latest_version": "3.31.3",
        "updated_at": "2026-09-17"
      },
      "best_for": [
        "Products that need a rich-text editor whose interface is entirely their own, because Tiptap ships no UI to override",
        "Teams that want the same editing core across React and Vue rather than one library per framework",
        "Editors that will grow collaborative features later, since real-time editing is a supported path rather than a rewrite"
      ],
      "worst_for": [
        "Page building, because there is no canvas, no layout primitives and no style manager anywhere in the framework",
        "Teams that want a toolbar and menus on install, since building the interface is the deal Tiptap offers",
        "Products that need email-safe HTML output rather than structured document content"
      ],
      "verdict_score": {
        "developer_experience": 8.5,
        "extensibility": 9,
        "documentation": 8.5,
        "ecosystem": 8,
        "time_to_production": 7.5
      },
      "verdict_rationale": {
        "developer_experience": "The extension model is the whole API and it is coherent: configure a set of extensions, get an editor instance, render it where you like. Our benchmark reached a working editor in eleven lines. The friction is that being headless means every visible control is your code, and that reality arrives immediately after the first render.",
        "extensibility": "Extensions reach schema, keyboard handling, input rules, commands and rendering, and ProseMirror sits underneath for anything the extension API does not cover. Very little requires a fork, and the escape hatch to raw ProseMirror plugins means the ceiling is effectively the ceiling of ProseMirror itself.",
        "documentation": "Documentation is organised by task with runnable examples per extension and explicit installation paths, which is unusual in this category. It thins out where ProseMirror concepts leak through — schema design and transaction handling assume you will read upstream documentation eventually.",
        "ecosystem": "A large first-party extension catalogue covers most document requirements, and community extensions are plentiful because the ProseMirror community overlaps. Some capabilities teams expect for free — collaboration, comments, AI — are commercial services rather than open extensions, which is worth establishing before adopting.",
        "time_to_production": "A functional editing surface takes hours; a product takes longer because toolbars, bubble menus, slash commands and upload handling are all yours. That is the same trade Craft.js makes for page building, and it prices out similarly: fast to something working, slower to something shippable."
      },
      "sponsored_disclosure": false,
      "marketplace_url": null,
      "last_verified": "2026-08-20",
      "sources": [
        {
          "url": "https://registry.npmjs.org/@tiptap/react",
          "title": "npm registry metadata for @tiptap/react (MIT licence, first publish date, latest version)",
          "accessed": "2026-08-20"
        },
        {
          "url": "https://registry.npmjs.org/@tiptap/core",
          "title": "npm registry metadata for @tiptap/core (first publish date November 2020)",
          "accessed": "2026-08-20"
        },
        {
          "url": "https://tiptap.dev/docs",
          "title": "Tiptap documentation",
          "accessed": "2026-08-20"
        }
      ]
    },
    {
      "slug": "topol-io",
      "name": "Topol Plugin",
      "type": "sdk",
      "category": [
        "email",
        "commercial-sdk",
        "embeddable",
        "white-label"
      ],
      "one_liner": "Topol Plugin is an embeddable white-label email editor priced per prepaid end-user account rather than per seat, with published plans from $60 per month.",
      "license": null,
      "first_release": null,
      "repo": null,
      "homepage": "https://topol.io/tariff-plugin",
      "docs": "https://docs.topol.io",
      "pricing": {
        "model": "subscription",
        "free_tier": false,
        "paid_from_usd": 60,
        "billing_period": "month",
        "notes": "Vendor-published plugin tiers: Startup around $60/month including 50 prepaid users with roughly $1.20 per extra user, Business at $300/month including 500 prepaid users, and Unlimited at $600/month. A 14-day trial is offered. A prepaid user is a customer account that opens the editor in a billing month, not an individual person."
      },
      "tech": {
        "language": "JavaScript",
        "framework_agnostic": true,
        "react_wrapper": "community",
        "vue_wrapper": "community",
        "angular_wrapper": "community",
        "ssr_support": "none",
        "bundle_size_min_gzip_kb": null,
        "measurement_ref": null
      },
      "capabilities": {
        "drag_drop": true,
        "responsive_breakpoints": true,
        "style_manager": true,
        "custom_components": true,
        "data_binding": true,
        "ecommerce_blocks": false,
        "email_html_export": true,
        "ai_generation": true,
        "i18n": true,
        "white_label": true,
        "self_hosted": false
      },
      "extensibility": {
        "plugin_system": "partial",
        "plugin_ecosystem_size": null,
        "marketplace": false
      },
      "metrics": {
        "status": "not-applicable",
        "npm_package": null,
        "npm_weekly_downloads": null,
        "github_stars": null,
        "last_commit": null,
        "open_issues": null,
        "contributors": null,
        "latest_version": null,
        "updated_at": null
      },
      "best_for": [
        "Small and mid-sized SaaS products that need an embedded email builder at a lower entry price than the market leaders",
        "Platforms with a predictable number of customer accounts using the editor each month",
        "Teams that want unlimited exports without API call caps"
      ],
      "worst_for": [
        "Products with a very large number of low-activity accounts, where per-user pricing works against you",
        "Self-hosted deployments",
        "Requirements beyond email, such as full website page building"
      ],
      "verdict_score": null,
      "verdict_rationale": null,
      "sponsored_disclosure": false,
      "marketplace_url": null,
      "last_verified": "2026-08-19",
      "sources": [
        {
          "url": "https://topol.io/tariff-plugin",
          "title": "Topol Plugin pricing page (vendor-published)",
          "accessed": "2026-08-19"
        },
        {
          "url": "https://topol.io/compare",
          "title": "Topol comparison page listing plugin plan inclusions",
          "accessed": "2026-08-19"
        }
      ]
    },
    {
      "slug": "unlayer",
      "name": "Unlayer",
      "type": "sdk",
      "category": [
        "email",
        "commercial-sdk",
        "embeddable",
        "white-label"
      ],
      "one_liner": "Unlayer is a commercial embeddable email and page builder for SaaS products, whose React wrapper react-email-editor has been on npm since October 2017 and whose embed plans start at $250 per month.",
      "license": null,
      "first_release": "2017-10",
      "repo": "https://github.com/unlayer/react-email-editor",
      "homepage": "https://unlayer.com",
      "docs": "https://docs.unlayer.com",
      "pricing": {
        "model": "subscription",
        "free_tier": true,
        "paid_from_usd": 250,
        "billing_period": "month",
        "notes": "Vendor-published tiers: a free plan, Launch at $250/month, Scale at $750/month and Optimize at $2,000/month, with a reported $149/month startup option and quote-only enterprise terms including on-premise deployment. White-labelling is included from the first paid tier."
      },
      "tech": {
        "language": "JavaScript",
        "framework_agnostic": true,
        "react_wrapper": "first-party",
        "vue_wrapper": "community",
        "angular_wrapper": "community",
        "ssr_support": "none",
        "bundle_size_min_gzip_kb": null,
        "measurement_ref": null
      },
      "capabilities": {
        "drag_drop": true,
        "responsive_breakpoints": true,
        "style_manager": true,
        "custom_components": true,
        "data_binding": true,
        "ecommerce_blocks": "partial",
        "email_html_export": true,
        "ai_generation": true,
        "i18n": true,
        "white_label": true,
        "self_hosted": "partial"
      },
      "extensibility": {
        "plugin_system": true,
        "plugin_ecosystem_size": null,
        "marketplace": false
      },
      "metrics": {
        "status": "measured",
        "npm_package": "react-email-editor",
        "npm_weekly_downloads": 196459,
        "github_stars": 5223,
        "last_commit": "2026-09-16",
        "open_issues": 245,
        "contributors": 13,
        "latest_version": "2.1.2",
        "updated_at": "2026-09-17"
      },
      "best_for": [
        "SaaS products that need an email builder inside their app in weeks rather than quarters",
        "Teams that want email HTML which has been tested against real mail clients by someone else",
        "Marketing platforms needing both email and landing page editing from one vendor"
      ],
      "worst_for": [
        "Products whose unit economics cannot absorb a four-figure monthly platform fee at low customer counts",
        "Teams requiring the editor itself to run fully inside their own infrastructure on standard plans",
        "Use cases that are page building only, where a general-purpose engine costs nothing"
      ],
      "verdict_score": null,
      "verdict_rationale": null,
      "sponsored_disclosure": false,
      "marketplace_url": null,
      "last_verified": "2026-08-19",
      "sources": [
        {
          "url": "https://registry.npmjs.org/react-email-editor",
          "title": "npm registry metadata for react-email-editor (licence, first publish date, latest version)",
          "accessed": "2026-08-19"
        },
        {
          "url": "https://unlayer.com/pricing",
          "title": "Unlayer pricing page (vendor-published plan prices)",
          "accessed": "2026-08-19"
        },
        {
          "url": "https://docs.unlayer.com",
          "title": "Unlayer embed documentation",
          "accessed": "2026-08-19"
        }
      ]
    },
    {
      "slug": "webflow",
      "name": "Webflow",
      "type": "platform",
      "category": [
        "no-code-platform"
      ],
      "one_liner": "Webflow is a hosted visual website platform, included here as the build-versus-buy reference point rather than as an embeddable library: you cannot mount its editor inside your own product, and its 2026 pricing splits into per-site plans from $15 per month and per-workspace seats.",
      "license": null,
      "first_release": null,
      "repo": null,
      "homepage": "https://webflow.com",
      "docs": "https://university.webflow.com",
      "pricing": {
        "model": "subscription",
        "free_tier": true,
        "paid_from_usd": 15,
        "billing_period": "month",
        "notes": "Two stacked layers: Site plans (Starter free, Basic around $15/month and Premium around $25/month billed yearly, plus a Team plan reported at $2,500/month annually) and Workspace plans for collaborators (free tier, Freelancer around $16/month, Core around $19 per seat per month, Growth around $60/month). Budget both layers, not one."
      },
      "tech": {
        "language": null,
        "framework_agnostic": null,
        "react_wrapper": "none",
        "vue_wrapper": "none",
        "angular_wrapper": "none",
        "ssr_support": null,
        "bundle_size_min_gzip_kb": null,
        "measurement_ref": null
      },
      "capabilities": {
        "drag_drop": true,
        "responsive_breakpoints": true,
        "style_manager": true,
        "custom_components": true,
        "data_binding": true,
        "ecommerce_blocks": true,
        "email_html_export": false,
        "ai_generation": true,
        "i18n": true,
        "white_label": false,
        "self_hosted": false
      },
      "extensibility": {
        "plugin_system": "partial",
        "plugin_ecosystem_size": null,
        "marketplace": true
      },
      "metrics": {
        "status": "not-applicable",
        "npm_package": null,
        "npm_weekly_downloads": null,
        "github_stars": null,
        "last_commit": null,
        "open_issues": null,
        "contributors": null,
        "latest_version": null,
        "updated_at": null
      },
      "best_for": [
        "Marketing sites that a design team owns end to end without engineering involvement",
        "Teams comparing the cost of buying a finished platform against building an editor in-house",
        "Agencies delivering client sites where the client accepts Webflow branding in the admin experience"
      ],
      "worst_for": [
        "Embedding an editor in your own SaaS, which Webflow's model does not allow at all",
        "White-label resale, since customers see Webflow's editor and account system",
        "Applications needing the page data in your own database rather than on the vendor's platform"
      ],
      "verdict_score": null,
      "verdict_rationale": null,
      "sponsored_disclosure": false,
      "marketplace_url": null,
      "last_verified": "2026-08-19",
      "sources": [
        {
          "url": "https://webflow.com/pricing",
          "title": "Webflow pricing page (vendor-published site and workspace plan prices)",
          "accessed": "2026-08-19"
        },
        {
          "url": "https://university.webflow.com",
          "title": "Webflow University documentation",
          "accessed": "2026-08-19"
        }
      ]
    },
    {
      "slug": "wix-studio",
      "name": "Wix Studio",
      "type": "platform",
      "category": [
        "no-code-platform"
      ],
      "one_liner": "Wix Studio is Wix's platform for agencies and designers, priced per site on vendor-published tiers from $19 to $159 per month, and included here as a build-versus-buy reference point rather than as an embeddable option.",
      "license": null,
      "first_release": null,
      "repo": null,
      "homepage": "https://www.wix.com/studio",
      "docs": "https://dev.wix.com",
      "pricing": {
        "model": "subscription",
        "free_tier": true,
        "paid_from_usd": 19,
        "billing_period": "month",
        "notes": "Vendor-published site tiers reported as Basic $19/month, Standard $27/month, Plus $34/month and Elite $159/month, with a quote-only Enterprise tier. Annual billing is reported at roughly half the monthly rate. Pricing attaches per site, so an agency portfolio multiplies it."
      },
      "tech": {
        "language": null,
        "framework_agnostic": null,
        "react_wrapper": "none",
        "vue_wrapper": "none",
        "angular_wrapper": "none",
        "ssr_support": null,
        "bundle_size_min_gzip_kb": null,
        "measurement_ref": null
      },
      "capabilities": {
        "drag_drop": true,
        "responsive_breakpoints": true,
        "style_manager": true,
        "custom_components": "partial",
        "data_binding": true,
        "ecommerce_blocks": true,
        "email_html_export": false,
        "ai_generation": true,
        "i18n": true,
        "white_label": false,
        "self_hosted": false
      },
      "extensibility": {
        "plugin_system": true,
        "plugin_ecosystem_size": null,
        "marketplace": true
      },
      "metrics": {
        "status": "not-applicable",
        "npm_package": null,
        "npm_weekly_downloads": null,
        "github_stars": null,
        "last_commit": null,
        "open_issues": null,
        "contributors": null,
        "latest_version": null,
        "updated_at": null
      },
      "best_for": [
        "Agencies already delivering on Wix who want a more capable canvas and developer tooling",
        "Projects where the client will maintain the site themselves in a familiar consumer product",
        "Comparing what a mature hosted platform costs against building an editor in-house"
      ],
      "worst_for": [
        "Embedding an editor in your own product, which the platform does not offer at any tier",
        "White-label delivery, since clients see Wix throughout",
        "Agencies with large portfolios, where per-site pricing compounds"
      ],
      "verdict_score": null,
      "verdict_rationale": null,
      "sponsored_disclosure": false,
      "marketplace_url": null,
      "last_verified": "2026-08-20",
      "sources": [
        {
          "url": "https://www.wix.com/studio",
          "title": "Wix Studio product page (vendor-published)",
          "accessed": "2026-08-20"
        },
        {
          "url": "https://dev.wix.com",
          "title": "Wix developer documentation",
          "accessed": "2026-08-20"
        }
      ]
    },
    {
      "slug": "zillapage",
      "name": "Zillapage",
      "type": "platform",
      "category": [
        "self-hosted",
        "no-code-platform"
      ],
      "one_liner": "Zillapage is a self-hosted PHP landing page and e-commerce builder sold as a one-time-licence script through code marketplaces, rather than a library you embed in an application.",
      "license": null,
      "first_release": null,
      "repo": null,
      "homepage": "https://codecanyon.net/item/zillapage-landing-page-and-ecommerce-builder/25567789",
      "docs": null,
      "pricing": {
        "model": "one-time",
        "free_tier": false,
        "paid_from_usd": null,
        "billing_period": "one-time",
        "notes": "Sold as a one-time-licence script through code marketplaces. Our verification pass found only resale listings rather than a canonical vendor pricing page, so we record the price as null instead of quoting a reseller."
      },
      "tech": {
        "language": "PHP",
        "framework_agnostic": null,
        "react_wrapper": "none",
        "vue_wrapper": "none",
        "angular_wrapper": "none",
        "ssr_support": null,
        "bundle_size_min_gzip_kb": null,
        "measurement_ref": null
      },
      "capabilities": {
        "drag_drop": true,
        "responsive_breakpoints": null,
        "style_manager": null,
        "custom_components": null,
        "data_binding": null,
        "ecommerce_blocks": true,
        "email_html_export": null,
        "ai_generation": null,
        "i18n": null,
        "white_label": null,
        "self_hosted": true
      },
      "extensibility": {
        "plugin_system": null,
        "plugin_ecosystem_size": null,
        "marketplace": false
      },
      "metrics": {
        "status": "not-applicable",
        "npm_package": null,
        "npm_weekly_downloads": null,
        "github_stars": null,
        "last_commit": null,
        "open_issues": null,
        "contributors": null,
        "latest_version": null,
        "updated_at": null
      },
      "best_for": [
        "Single-operator projects that want a complete hosted-on-your-server funnel builder for a one-off payment",
        "Sales funnel and upsell pages with built-in payment integration and no monthly fee"
      ],
      "worst_for": [
        "Any project that needs the editor embedded inside another application, which this script does not offer",
        "Teams with security review requirements, since marketplace scripts rarely publish an audit or a patch policy",
        "Buyers who need verifiable vendor information, which we were unable to establish for this product"
      ],
      "verdict_score": null,
      "verdict_rationale": null,
      "sponsored_disclosure": false,
      "marketplace_url": null,
      "last_verified": "2026-08-19",
      "sources": [
        {
          "url": "https://codecanyon.net/item/zillapage-landing-page-and-ecommerce-builder/25567789",
          "title": "Zillapage marketplace listing",
          "accessed": "2026-08-19"
        }
      ]
    }
  ],
  "measurements": {
    "bundles": {
      "run_id": "bundles-2026-09-17",
      "measured_at": "2026-09-17",
      "method": {
        "bundler": "esbuild 0.25.10",
        "node": "v22.19.0",
        "settings": "bundle, minify, format=esm, platform=browser, target=es2020, NODE_ENV=production",
        "gzip": "zlib level 9",
        "css_excluded": true
      },
      "results": [
        {
          "slug": "craftjs",
          "package": "@craftjs/core",
          "version": "0.2.12",
          "external": [
            "react",
            "react-dom",
            "react/jsx-runtime"
          ],
          "raw_kb": 89.3,
          "gzip_kb": 29.2,
          "note": "Core only; @craftjs/layers and any UI you build are extra."
        },
        {
          "slug": "quill",
          "package": "quill",
          "version": "2.0.3",
          "external": [],
          "raw_kb": 200.6,
          "gzip_kb": 58.7,
          "note": "The default quill entry, which registers the standard formats, modules and the Snow and Bubble themes; no CSS."
        },
        {
          "slug": "editorjs",
          "package": "@editorjs/editorjs",
          "version": "2.31.7",
          "external": [],
          "raw_kb": 237.9,
          "gzip_kb": 64.3,
          "note": "Core editor with no block tools installed."
        },
        {
          "slug": "puck",
          "package": "@measured/puck",
          "version": "0.20.2",
          "external": [
            "react",
            "react-dom",
            "react/jsx-runtime"
          ],
          "raw_kb": 282.3,
          "gzip_kb": 90.4,
          "note": "Editor and renderer exports; React treated as already present in the host app."
        },
        {
          "slug": "lexical",
          "package": "@lexical/react",
          "version": "0.50.0",
          "external": [
            "react",
            "react-dom",
            "react/jsx-runtime"
          ],
          "raw_kb": 317.6,
          "gzip_kb": 104.9,
          "note": "Composer plus the rich-text and history plugins — the minimum for a usable editor."
        },
        {
          "slug": "tiptap",
          "package": "@tiptap/react",
          "version": "3.31.3",
          "external": [
            "react",
            "react-dom",
            "react/jsx-runtime"
          ],
          "raw_kb": 389.9,
          "gzip_kb": 123.3,
          "note": "React binding plus the StarterKit extension bundle, which is the documented starting point."
        },
        {
          "slug": "plate",
          "package": "@udecode/plate",
          "version": "48.0.5",
          "external": [
            "react",
            "react-dom",
            "react/jsx-runtime"
          ],
          "raw_kb": 500.5,
          "gzip_kb": 150.8,
          "note": "Editor factory only; each plugin and every UI component adds to this."
        },
        {
          "slug": "ckeditor",
          "package": "ckeditor5",
          "version": "48.5.1",
          "external": [],
          "raw_kb": 629.9,
          "gzip_kb": 161.2,
          "note": "ClassicEditor with the Essentials, Paragraph, Bold and Italic plugins imported from the ckeditor5 aggregate package; no framework wrapper, no CSS."
        },
        {
          "slug": "grapesjs",
          "package": "grapesjs",
          "version": "0.23.6",
          "external": [],
          "raw_kb": 1115.7,
          "gzip_kb": 294.6,
          "note": "Core engine only, no plugins, no CSS."
        },
        {
          "slug": "react-page",
          "package": "@react-page/editor",
          "version": "5.4.6",
          "external": [
            "react",
            "react-dom",
            "react/jsx-runtime"
          ],
          "raw_kb": 1279.3,
          "gzip_kb": 377.2,
          "note": "Editor shell without cell plugins."
        },
        {
          "slug": "blocknote",
          "package": "@blocknote/react",
          "version": "0.54.2",
          "external": [
            "react",
            "react-dom",
            "react/jsx-runtime"
          ],
          "raw_kb": 1428.2,
          "gzip_kb": 386.1,
          "note": "The documented quick start: useCreateBlockNote plus the Mantine-based BlockNoteView, with Mantine bundled because the default UI needs it; React treated as already present.",
          "install_flags": [
            "--legacy-peer-deps"
          ]
        },
        {
          "slug": "tinymce",
          "package": "tinymce",
          "version": "8.9.1",
          "external": [],
          "raw_kb": 1130.2,
          "gzip_kb": 393.9,
          "note": "Self-hosted core plus the default icons, Silver theme and DOM model the bundling guide lists as required; no plugins, and the skin modules (CSS wrapped in JS) excluded under the CSS rule."
        }
      ]
    },
    "time_to_editor": {
      "run_id": "tte-2026-08-20",
      "measured_at": "2026-08-20",
      "method": {
        "browser": "Chromium (Playwright build 1194), headless",
        "runs_per_app": 5,
        "statistic": "median",
        "definition": "Time from navigation start until the editor’s own root element is present in the DOM, measured with performance.now() inside the page.",
        "caveat": "Measured on a warm local HTTP server with no network latency and no CPU throttling. Treat these as relative costs between libraries, not as field performance.",
        "loc_definition": "Non-blank, non-comment lines in the app entry file; the apps live in benchmarks/time-to-editor/."
      },
      "results": [
        {
          "slug": "grapesjs",
          "loc": 14,
          "packages": 1,
          "screenshot": "/screenshots/grapesjs-minimal.png",
          "first_editor_ms": 309,
          "runs": 5,
          "status": "measured"
        },
        {
          "slug": "editorjs",
          "loc": 5,
          "packages": 1,
          "screenshot": "/screenshots/editorjs-minimal.png",
          "first_editor_ms": 70,
          "runs": 5,
          "status": "measured"
        },
        {
          "slug": "puck",
          "loc": 16,
          "packages": 3,
          "screenshot": "/screenshots/puck-minimal.png",
          "first_editor_ms": 852,
          "runs": 5,
          "status": "measured"
        },
        {
          "slug": "craftjs",
          "loc": 21,
          "packages": 3,
          "screenshot": "/screenshots/craftjs-minimal.png",
          "first_editor_ms": 94,
          "runs": 5,
          "status": "measured"
        },
        {
          "slug": "plate",
          "loc": 13,
          "packages": 8,
          "screenshot": "/screenshots/plate-minimal.png",
          "first_editor_ms": 209,
          "runs": 5,
          "status": "measured"
        },
        {
          "slug": "tiptap",
          "loc": 11,
          "packages": 4,
          "screenshot": "/screenshots/tiptap-minimal.png",
          "first_editor_ms": 171,
          "runs": 5,
          "status": "measured"
        },
        {
          "slug": "lexical",
          "loc": 25,
          "packages": 4,
          "screenshot": "/screenshots/lexical-minimal.png",
          "first_editor_ms": 159,
          "runs": 5,
          "status": "measured"
        },
        {
          "slug": "react-page",
          "loc": 12,
          "packages": 6,
          "workaround": "Requires a bundler alias for react/jsx-runtime.js (react-dnd + React 19).",
          "screenshot": "/screenshots/react-page-minimal.png",
          "first_editor_ms": 1004,
          "runs": 5,
          "status": "measured"
        }
      ]
    }
  }
}
