All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
Note
The previous CHANGELOG.md has been archived.
- Added
QuillEditorConfig.showCodeBlockLineNumbers(defaults totrue). When set tofalse, code-block line numbers are hidden and the left gutter shrinks to match the code block's right indent, giving the block symmetric horizontal padding instead of a flush-left edge.customLeadingBlockBuilderremains available for finer control and still takes precedence when both are set.
- Fixed an issue where bullet points became visually detached from the text body when toggling text direction formatting (RTL) by locking the list leading block to the editor's base text direction.
- Fixed a brief toolbar flicker when tapping a checkbox: the header, inline, and color buttons momentarily reflected the tapped line's style and the checklist button briefly toggled before the selection was restored. The checkbox tap's gesture-driven caret move is now ignored and the checkbox is formatted silently.
- Fixed typed text being inserted at the previous caret position on Android after moving the caret with a tap/mouse by keeping the platform IME's editing state in sync with the selection even when the keyboard is hidden.
- Added
transformLinkcallback toQuillEditorConfig(andRawEditorConfig) to allow customizing how a link string is transformed before it is launched on tap. Whennull, the previous default behavior (prependinghttps://to scheme-less links) is preserved #2727. - Whole-word search now matches non-ASCII text (Cyrillic, CJK, accented Latin).
- Fixed dragging the right selection handle horizontally extends the selection into the line below instead of staying on the current line.
- Code block line numbers were not visible for non-indented code blocks because the leading-gutter width was reserved at zero pixels in
TextBlockUtils.defaultIndentWidthBuilder. The gutter is now sized correctly so line numbers are visible by default. Nested indent levels continue to rotate the numbering style through Arabic, lowercase letters, and lowercase Roman numerals, matching ordered-list behavior. - Fixed the selection (Cut/Copy/Paste) context menu not appearing when the selection extends beyond the visible viewport — e.g. selecting a range taller than the viewport, scrolling a selection out of view, or Select All on a long document. The context menu anchors are now clamped into the editor's visible region so it stays on-screen, matching the behavior of a multiline
TextField. - Reveal the caret when the bottom view inset (on-screen keyboard) changes, so it is no longer hidden behind the keyboard when it appears or changes height mid-edit (e.g. on app resume, IME/emoji switch, rotation, split-screen or foldable resize).
QuillRawEditorStatenow overridesdidChangeMetricsand re-reveals the caret once the inset settles.
- Deprecated
QuillController.toolbarButtonToggler. It was an internal-only workaround for syncing a few toolbar block buttons during checkbox taps and no longer has any effect now that the flicker is fixed at its source. Toolbar button state derives fromgetSelectionStyle(). It will be removed in future versions.
- Removed the already-
@Deprecatedand@internallinkPrefixesconstant from the public API surface (it is hidden from theflutter_quill.dartexport). UseLinkValidator.linkPrefixesinstead.
- Search dialog buttons now adopt the toolbar's
QuillIconTheme; bar height and spacing tightened. - Tightened the code-block leading gutter: its reserved width is now slightly narrower than the ordered-list gutter (by
fontSize / 4), pulling the right-aligned line number closer to the left edge of the block. - Reduced the right-side padding inside the code-block leading container from
fontSizetofontSize / 2, shrinking the gap between the line number and the code text to match ordered/unordered lists. - Reduced the left content padding inside the code-block decoration from
16to4, so the line number sits closer to the left edge of the grey code-block box. - Made the code-block content padding symmetric (
EdgeInsets.symmetric(horizontal: 4, vertical: 16), previously16on the right), and added afontSize / 2right indent to code blocks inTextBlockUtils.defaultIndentWidthBuilderso the code text no longer runs to the right edge of the box. The right indent is part of the defaultindentWidthBuilder, so a customindentWidthBuildercan override it.
11.5.1 - 2026-05-20
- Added localization support for
mn(Mongolian, Mongolia)
- Updated minimum supported SDK version to Flutter 3.44/Dart 3.12.
- Implemented the new TextInputClient.onFocusReceived method required by Flutter SDK 3.44+ (
returns false).
11.5.0 - 2025-10-18
- Fixed
View.of(context)calls throwing when used with thescreenshotpackage #2662.
- Add missing Brazilian Portuguese translations
11.4.2 - 2025-07-22
- App crash on desktop platforms when using Flutter
3.32.0-0.5.preand newer.
Fixed by passing the requiredviewIdfor experimental multi-window support #2579.
11.4.1 - 2025-05-15
copyWithmethods toHorizontalSpacing,VerticalSpacing,DefaultTextBlockStyle, andDefaultListBlockStylefor immutable updates of properties #2550.- Finnish (fi) language translation #2564.
11.4.0 - 2025-04-23
- Accept
mailto,tel,sms, and other link prefixes by default in the insert link toolbar button #2525. validateLinkinQuillToolbarLinkStyleButtonOptionsto allow overriding the link validation #2525.
- Improve doc comment of
customLinkPrefixesinQuillEditor#2525.
- Deprecate
linkRegExpin favor of the new callbackvalidateLink#2525.
11.3.0 - 2025-04-23
- Can't select text when
readOnlyis true #2529.
- Display magnifier using
RawMagnifierwidget when dragging on iOS/Android #2529.
11.2.0 - 2025-03-26
- Cache for
toPlainTextinDocumentclass to avoid unnecessary text computing #2482.
11.1.2 - 2025-03-24
- [iOS]
QuillEditordoesn't respect the system keyboard brightness by default #2522. - Add a default empty list for
characterShortcutEventsandspaceShortcutEventsinQuillRawEditorConfig#2522. - Deprecate
QuillEditorState.configurationsin favor ofQuillEditorState.config#2522.
11.1.1 - 2025-03-19
- Explicitly schedule frame on secondary click to ensure context menu is shown on Windows #2507.
11.1.0 - 2025-03-11
- Remove unnecessary content change listeners in read-only mode to avoid triggering infinite loops of FocusNode callbacks #2488.
- Remove unicode from
QuillTextelement that causes weird caret behavior on empty lines #2453. - Focus and open context menu on right click if unfocused #2477.
- Update QuillController
lengthextension method deprecation message #2483.
Ruleis now part of the public API, so thatDocument.setCustomRulescan be used.decorationproperty inDefaultTextBlockStylefor theheaderattribute to customize headers with borders, background colors, and other styles usingBoxDecoration#2429.
11.0.0 - 2025-02-16
Important
See the migration guide from 10.0.0 to 11.0.0 for the full breaking changes and migration. Ensure to read the breaking behavior section to avoid unexpected changes.
- [iOS] Localize the Cupertino link menu actions.
- Export
QuillToolbarSelectLineHeightStyleDropdownButtonOptions, fixing #2333. - Clipboard images pasting as plain text on Android #2384.
- Avoid using
url_launcher_string.dartwhich is strongly discouraged #2403. - The color picker dialog's hex field does not use the correct value of the selected text in the editor #2415.
- New localization strings for the image save functionality #2403.
Insert videostring inquill_en.arbto support localization forflutter_quill_extensions. Currently available only in English.QuillClipboardConfigclass with customizable clipboard paste handling callbacks, partial fix to #2350.- The option to enable/disable rich text paste (from other apps) in
QuillClipboardConfig. Insert videostring inquill_en.arbto support localization forflutter_quill_extensions. Currently available only in English.onKeyPressedinQuillEditorConfigto customize key press handling in the editor #2368.- Croatian (hr) language translation #2431.
enableClipboardPasteflag inQuillToolbarClipboardButtonto determine if the button defaults tonull,which will useClipboardMonitor, which checks every second if the clipboard has content to paste #2427.
- Rewrite the image save functionality for
flutter_quill_extensions#2403. - Migrate quill_native_bridge to
11.0.0#2403. - Avoid using deprecated APIs in Flutter 3.27.0 #2416:
- Migrate from
withOpacitytowithValuesaccording to Color wide gamut - Opacity migration. - Avoid using the deprecated
Color.valuegetter.
- Migrate from
- Ignore
unreachable_switch_defaultwarning (introduced in Dart 3.6) #2416. - Update
intldependency to support versions0.19.0and0.20.0#2416. - Restore base button options, now works without the inherited widgets, and support buttons of
flutter_quill_extensions. - The option to enable/disable rich text paste (from other apps) in
QuillClipboardConfig. - Improve
README.md. - Simplify the
exampleapp. - Update the minimum supported SDK version to Flutter 3.0/Dart 3.0 for compatibility, fixing #2347.
- Improve dependencies constraints for compatibility.
- Improve
README.md. - Always call
setState()in_markNeedsBuild()inQuillRawEditorState(revert to the old behavior). - BREAKING: Update configuration class names to use the suffix
Configinstead ofConfigurations. - BREAKING: Refactor embed block interface for both the
EmbedBuilder.build()andEmbedButtonBuilder. - Minor cleanup to magnifier feature.
- The
QuillSimpleToolbarbase button options now support buttons offlutter_quill_extensions. - Mark
shouldNotifyListenersas experimental inQuillController.replaceText(). - Mark the method
QuillController.clipboardSelection()as experimental. - Improve pub topics in package metadata.
- Update the minimum required version of the dependency quill_native_bridge from
10.7.9to10.7.11. - Address warnings of
unreachable_switch_default(introduced in Dart 3.6). - BREAKING: Clipboard action buttons in
QuillSimpleToolbarare now disabled by default. To enable them, setshowClipboardCut,showClipboardCopy, andshowClipboardPastetotrueinQuillSimpleToolbarConfig. - BREAKING: Change the
optionsparameter class type fromQuillToolbarToggleStyleButtonOptionstoQuillToolbarClipboardButtonOptionsinQuillToolbarClipboardButton. To migrate, useQuillToolbarClipboardButtonOptionsinstead ofQuillToolbarToggleStyleButtonOptions#2433. This change was made for the PR #2427. - BREAKING: Change the
onTapDownto acceptTapDownDetailsinstead ofTapDragDownDetails(revert #2128 due to regressions). - BREAKING: Change the
onTapUpto acceptTapUpDetailsinstead ofTapDragUpDetails(revert #2128 due to regressions). - BREAKING: Revert
Copy TapAndPanGestureRecognizer from TextFieldPR #2128, restoring editor behavior to match versions before10.4.0due to the regressions #2413. - BREAKING: Replace
QuillClipboardConfig.onDeltaPastewithQuillClipboardConfig.onRichTextPastewhich is more specific and provides an additional parameterisExternalto determine whether theDeltacontent is from an external app. - Bosnian (bs), Macedonian (mk) and Gujarati (gu) language translations #2455.
textSpanBuildertoQuillEditorConfigto allow overriding how text content is rendered.
- BREAKING: The quill shared configuration class.
- The dependency equatable.
- The experimental support for spell checking. See #2246.
- BREAKING: The magnifier feature due to buggy behavior #2413. See #2406 for a list of reasons.
10.8.5 - 2024-10-24
- Allow all correct URLs to be formatted #2328.
- [macOS] Implement actions for
ExpandSelectionToDocumentBoundaryIntentandExpandSelectionToLineBreakIntentto use keyboard shortcuts, along with unrelated cleanup #2279.
9.4.0 - 2024-06-13
- Korean translations #1911.
- Rework search bar/dialog for Material 3 UI with on-the-fly search #1904.
- Support for subscript and superscript across all languages.
- Improve pasting of Markdown and HTML file content from the system clipboard #1915.
- Apple-specific font dependency for subscript and superscript functionality from the example.
- BREAKING: The
super_clipboardplugin, To restore legacy behavior forsuper_clipboard, useflutter_quill_extensionspackage andFlutterQuillExtensions.useSuperClipboardPlugin().