Skip to content
CAI
Software that uses CAICheck a score

slab/quill

46.6

Weak · 28 September 2026

10.6k

lines of production code

TypeScript

with JavaScript

4

measurements over time

CAI band scale
CAI trend line
CAI lens gauges

What this system is

This release delivers a comprehensive modernization of the Quill editor, featuring a full migration to ESM and TypeScript across the codebase, alongside a significant architectural overhaul of the core editor logic, blots, and UI components. The update introduces improved paste handling for Google Docs and Microsoft Word, smooth scrolling, and a more modular theme system. Additionally, the project transitions to a monorepo structure, updates the official website to Next.js, and expands test coverage with new E2E, unit, and fuzz tests.

Features

Add interactive playground examples for Quill 2

The website's playground section now includes four new interactive examples demonstrating Quill 2 usage: a basic editor with the Snow theme, a form integration example, a custom font formatting demo, and a React component example. These additions provide users with practical templates for integrating Quill into standard web forms, applying custom styles, and using Quill within a React application.

packages/website/src/playground · high confidence

Added blog posts about Quill's evolution and features

The website content now includes a series of blog posts detailing Quill's history and technical milestones. These posts cover the introduction of the new Delta format, the release of Quill 1.0 and its new features like syntax highlighting and formulas, the removal of iframes in v0.19, and the roadmap for 2.0. This provides users with a comprehensive history of the editor's capabilities and changes.

packages/website/content/blog · high confidence

Automated release and changelog update scripts

New scripts have been added to automate the release process and update the CHANGELOG. The release script (scripts/release.js) now supports dry-run mode and handles experimental versions by generating unique version strings and skipping git pushes and GitHub releases for them. The changelog script (scripts/changelog.mjs) automatically fetches the latest GitHub release, formats the release notes, and prepends them to CHANGELOG.md, while also linking contributor usernames to their GitHub profiles. A utility script (scripts/utils/configGit.mjs) is also added to configure Git user details for these scripts.

scripts · high confidence

Introduce new dynamic playground page component

Added a new dynamic playground page component (\[...id\].jsx) that renders a code editor and preview using Sandpack, supporting URL-based state via hash parameters. The component reads static paths and props at build time, allowing each playground instance to load its own set of files and metadata. A corresponding SCSS file provides layout styling for the editor and preview panes.

packages/website/src/pages/playground · high confidence

Migrate website components to Next.js and React

The website's component layer has been rebuilt for the new Next.js-based site. This introduces a suite of new React components including ActiveLink, ClickOutsideHandler, Editor, GitHub, Header, Heading, Hint, Layout, Link, MDX, NoSSR, OpenSource, PlaygroundLayout, PostLayout, SEO, and Sandpack, alongside their corresponding SCSS stylesheets and utility functions (flattenData, replaceCDN, slug). These components provide the structural and interactive foundation for the documentation pages, header navigation, code playgrounds, and search integration.

packages/website/src/components · high confidence

New standalone editor demos for Bubble, Snow, and Stress tests

The website now includes interactive, standalone demos for the Bubble and Snow editor themes, as well as a Stress test page. These pages provide live, editable examples of Quill in action, allowing users to see and modify the editor configurations directly in the browser.

packages/website/src/pages/standalone · high confidence

Quill editor assets reorganized into src/assets

The Quill editor's styling and icon assets have been reorganized into the \src/assets\ directory. This includes the core styles (\core.styl\), shared base styles (\base.styl\), and theme-specific styles for the 'bubble' editor (\bubble.styl\, \bubble/toolbar.styl\, \bubble/tooltip.styl\). Additionally, a comprehensive set of SVG icons for toolbar buttons (e.g., \bold.svg\, \italic.svg\, \header.svg\, \list-bullet.svg\) and table border options have been added to \src/assets/icons/\. These changes provide the visual foundation for the Quill editor's appearance and toolbar interface.

packages/quill/src/assets · high confidence

Quill package configuration and build setup

The Quill package now includes a full build and development configuration, including Webpack (webpack.common.cjs, webpack.config.cjs), TypeScript (tsconfig.json), ESLint (.eslintrc.json), Babel (babel.config.cjs), and Playwright (playwright.config.ts) files. This establishes the tooling for compiling, linting, and testing the Quill editor, supporting both development and production workflows.

packages/quill · high confidence

Quill source code restructured into src directory with explicit type and module exports

The Quill library's source code has been reorganized into a new \src\ directory, establishing a cleaner package structure. This change introduces explicit exports for core types and classes—including \Delta\, \AttributeMap\, \Parchment\, \Range\, and various options and debug levels—making them directly accessible to consumers. Additionally, a TypeScript declaration file (\types.d.ts\) is added to support SVG imports and define the \QUILL\_VERSION\ constant, improving type safety and build compatibility for TypeScript users.

packages/quill/src · medium confidence

Behavioural changes

Improved support for pasting from Google Docs and Microsoft Word

The Quill editor now includes dedicated HTML normalization modules for content pasted from Google Docs and Microsoft Word. This change introduces new logic to clean up and structure HTML from these sources, specifically handling Google Docs' font-weight styles and empty lines, and converting Microsoft Word's custom list formatting into standard HTML lists. Users will experience more accurate and consistent formatting when pasting content from these applications.

packages/quill/src/modules/normalizeExternalHTML · high confidence

Major overhaul of paste, keyboard, and history modules

The editor's behavior for pasting, keyboard shortcuts, and undo/redo has been significantly improved. Pasting from external sources (Google Docs, Microsoft Word, iOS share sheets) now results in cleaner content with fewer redundant newlines and better style preservation. Keyboard shortcuts for undo/redo are more reliable across operating systems, and the history module has been refactored to better handle composition events and selection states. Additionally, the codebase has been migrated to ESM and TypeScript.

packages/quill/src/modules · medium confidence

Migrate Quill format implementations to TypeScript

The Quill editor's format definitions (including alignment, bold, italic, headers, lists, tables, and media embeds) have been converted from JavaScript to TypeScript. This change improves type safety and provides better IDE support for these core editing features.

packages/quill/src/formats · high confidence

Migrate official website to Next.js

The Quill official website has been migrated from Gatsby to Next.js. This change updates the build configuration and tooling to use Next.js, including an ESLint configuration extending the Next.js preset, a new Next.js configuration file that handles MDX support, SVG imports, and URL redirects, and an environment configuration file that defines site metadata and CDN links. Users will experience the same content and functionality, but the underlying framework powering the site has changed.

packages/website · high confidence

Migrate website to Next.js

The website has been migrated from Gatsby to Next.js, introducing new page components for the 404, app shell, document head, and styles. The migration includes setting up Google Analytics via the @next/third-parties/google package, integrating Radix UI themes, and updating the homepage and playground pages to use Next.js routing and server-side rendering capabilities.

packages/website/src/pages · high confidence

Quill themes restructured into a shared base and distinct Snow/Bubble implementations

The Quill editor's theming system has been refactored to use a shared \BaseTheme\ that handles common UI components like pickers, buttons, and tooltips, while \SnowTheme\ and \BubbleTheme\ now extend this base to provide their specific default configurations and behaviors. This change means that the visual appearance and interaction of the editor's toolbar and tooltips are now managed through a more modular theme architecture, where users can rely on the standard Snow or Bubble themes for their respective default toolbars and tooltip behaviors.

packages/quill/src/themes · high confidence

Refactored Quill UI components into modular TypeScript classes

The Quill UI layer has been refactored into distinct, reusable TypeScript classes (Picker, ColorPicker, IconPicker, Tooltip) with improved accessibility support (ARIA attributes, keyboard navigation) and cleaner separation of concerns. This change improves maintainability and ensures consistent behavior across all UI elements like dropdowns and tooltips.

packages/quill/src/ui · medium confidence

Refactored Quill blot implementations into modular TypeScript files

The Quill editor's core blot classes (Block, Break, Container, Cursor, Embed, Inline, Scroll, and Text) have been reorganized from a single monolithic file into separate, modular TypeScript files. This change improves code maintainability and aligns with modern ESM package structure, though the functional behavior for users remains unchanged.

packages/quill/src/blots · high confidence

Refactored core editor architecture and added smooth scrolling

The Quill core logic has been restructured into new, dedicated files (composition.ts, editor.ts, emitter.ts, etc.) within the src/core directory, improving code organization and type safety. Additionally, the editor now supports smooth scrolling when the 'smooth' option is enabled, providing a more polished user experience during text selection and editing.

packages/quill/src/core · medium confidence

Updated Quill 2.0 documentation and API reference

The website's data files have been updated to reflect Quill 2.0. The API reference now includes new methods such as \getSemanticHTML\ and \scrollSelectionIntoView\, alongside existing content, formatting, selection, editor, events, model, and extension categories. Documentation links have been refreshed to cover the new \Upgrading to 2.0\ guide, updated module pages (Toolbar, Keyboard, History, Clipboard, Syntax), and customization sections (Themes, Registries). Additionally, the playground section now includes an example for using Quill with React.

packages/website/src/data · high confidence

Updated build scripts for ESM package structure

The build process has been updated to support the new ESM package structure. A new Babel plugin (babel-svg-inline-import.cjs) was added to inline SVG imports during the build, and the main build script (build) was reconfigured to compile TypeScript, run Babel, and bundle the output into the dist folder, including copying package.json, README, and LICENSE files.

packages/quill/scripts · medium confidence

Updated website assets and configuration for the new site

The website's public directory now includes a CNAME file for domain configuration, a new SVG logo asset, and a robots.txt file to control search engine indexing. These changes support the migration to a new site structure, ensuring proper domain resolution, branding, and SEO control.

packages/website/public · high confidence

Test coverage

Add e2e test fixtures for clipboard and composition; Added E2E test dev server infrastructure; Added TypeScript type tests for Quill API methods; Added end-to-end tests for Quill editor interactions; Added fuzz testing for Quill editor and table embeds; Added test helper utilities for Quill unit tests; Added unit tests for Quill core and blot components; Added unit tests for Quill formats, themes, and UI components; Added unit tests for Quill modules.

Dependencies

Migrate to a monorepo structure

The project has been reorganized into a monorepo with separate packages for the core editor, the website, and shared utilities. This change introduces a root \package.json\ to manage workspaces, updates the \quill\ package to use ESM and modern dependencies like \parchet\ 3.0 and \quill-delta\ 5.1, and sets up build and test scripts for each sub-package.

(dependencies) · high confidence

Written by watchdog.canine.dev from the codebase's own history, inside the signed delivery this page is composed from.

How this codebase got here

Score

  • CAI 35 → 47 (+11.7)
  • Rubric changed (rubric-2026.08.15 → rubric-2026.09.16) — scores are not directly comparable.

Lenses

  • Code Health 78 → 85 (+6.9)
  • Architecture 99 (new)
  • Maturity 47 → 49 (+1.7)
  • Readiness 28 → 39 (+11.6)
  • Security 28 → 49 (+21.1)
  • Accessibility 50 (new)
  • Performance 60 (new)

Resolved (72)

  • Change coupling: GitHub.jsx ↔ index.jsx (packages/website/src/components/GitHub.jsx)
  • Change coupling: Header.jsx ↔ index.jsx (packages/website/src/components/Header.jsx)
  • Critical CVE: [GHSA redacted] (package-lock.json)
  • Critical CVE: [GHSA redacted] (package-lock.json)
  • Critical CVE: [GHSA redacted] (package-lock.json)
  • Critical CVE: [GHSA redacted] (package-lock.json)
  • Critical CVE: [GHSA redacted] (package-lock.json)
  • Critical CVE: [GHSA redacted] (package-lock.json)
  • Critical CVE: [GHSA redacted] (package-lock.json)
  • Dimension evaluation failed
  • High CVE: [GHSA redacted] (package-lock.json)
  • High CVE: [GHSA redacted] (package-lock.json)
  • High CVE: [GHSA redacted] (package-lock.json)
  • High CVE: [GHSA redacted] (package-lock.json)
  • High CVE: [GHSA redacted] (package-lock.json)
  • High CVE: [GHSA redacted] (package-lock.json)
  • High CVE: [GHSA redacted] (package-lock.json)
  • High CVE: [GHSA redacted] (package-lock.json)
  • High CVE: [GHSA redacted] (package-lock.json)
  • High CVE: [GHSA redacted] (package-lock.json)
  • …and 52 more

New (163)

  • ClassTooLong: Quill (packages/quill/src/core/quill.ts)
  • Coverage not measured — JavaScript/TypeScript suite
  • Critical CVE: [GHSA redacted] (package-lock.json)
  • Critical CVE: [GHSA redacted] (package-lock.json)
  • Critical CVE: [GHSA redacted] (package-lock.json)
  • Critical CVE: [GHSA redacted] (package-lock.json)
  • Critical CVE: [GHSA redacted] (package-lock.json)
  • Critical vulnerability: [GHSA redacted] (package-lock.json)
  • Cursor.restore (cognitive 29) (packages/quill/src/blots/cursor.ts)
  • Cursor.restore (cyclomatic 22) (packages/quill/src/blots/cursor.ts)
  • Documentation: no project overview (README.md)
  • Dormant codebase
  • Editor.applyDelta (cognitive 56) (packages/quill/src/core/editor.ts)
  • Editor.applyDelta (cyclomatic 28) (packages/quill/src/core/editor.ts)
  • FileTooLong: core/quill.ts (packages/quill/src/core/quill.ts)
  • FileTooLong: modules/keyboard.ts (packages/quill/src/modules/keyboard.ts)
  • Flaky test: packages/quill/test/fuzz/tableEmbed.spec.ts::tableEmbed delta
  • FunctionTooLong: index.IndexPage (packages/website/src/pages/index.jsx)
  • High CVE: [GHSA redacted] (package-lock.json)
  • High CVE: [GHSA redacted] (package-lock.json)
  • …and 143 more

Written by watchdog.canine.dev from the codebase's own history, inside the signed delivery this page is composed from.

Survey your own repository

slab/quill was measured the same way every project in this corpus was: the same rubric, at a pinned commit, with the result published in full. Point a surveyor at a repository you know and see whether you agree with it.

About this page

  • The score is its most recent published measurement, taken on 28 September 2026 at a pinned commit. It is not a live figure and does not change until the project is measured again.
  • Measured at commit 539cbffd0a13b18e9c65eb84dd35e6596e403158 — the exact code this score is about.
  • Scored under rubric-2026.09.16 — the same rubric and the same method as every other entry in this index.
  • Measured by watchdog.canine.dev using codehealth-analyzer preprod-eb9197011364.