Repository  -  API  -  Source


  • Pasting into code block should always paste as code #1624
  • Fix removing embed selection when arrow keys change selection #1633
  • Fix selection restoration after image insertion #1649
  • Fix selection-change firing after dragging off screen #1654
  • Fix placeholder text spacing #1677

Thanks to @abramz, @amitm02, @eamodio, @HWliao, @mmitis, @nelsonpecora, @nipunjain87, and @ValueBerry for contributions to this release!


  • Fix placeholder when emptying text #1594
  • Fix inserting newline after header #1616

Thank you @Natim and @stephenLYao for your contributions to this release.


Add matchVisual configuration to Clipboard.

  • Use DOM API to determine selected <select> option #1576
  • Add :focus styles to toolbbar #1540
  • Allow users to undo automatic keyboard completions #1538
  • Use github-pages gem to make development environment consistent #1536 #1544
  • Fix composing Chinese with preformatting #1514
  • Fix example clipboard module in docs #1502
  • Fix list layout in RTL mode #1498
  • Clarify documentation for scrollingContainer #1496
  • Add tel to default link whitelist #1436
  • Fix cursor interaction with custom contenteditable=false embeds #1172 #1181
  • Fix rendered cursor in Chrome when interacting with scrollbar #1114

Thanks to @alexkrolick, @amitm02, @Christilut, @danielschwartz, @emanuelbsilva, @ersommer, @fiurrr, @jackmu95, @jmzhang, @mdpye, @ralrom, @sferoze, @simon-at-fugu, and @yogadzx for contributions to this release!


  • Disable Grammarly by default #574
  • Fix RTL list spacing #1485
  • Add support for mobile Youtube links #1489

Thank you @amitm02, @benbro @nickbaum, @stalniy and @ygrishajev for your contributions to this release.


  • Fix cursor shifting to be exclusive of user cursor #1367
  • Fix iOS hover state on toolbar #1388
  • Fix getText() for Bangla #1427
  • Fix Korean character composition in Safari #1437
  • Fix pasting HTML handling special class names #1445
  • Fix paste or initializing with font-weight #1456
  • Fix updating active picker logic #1468

Thanks to @aliciawood, @benbro, @denis-aes, @despreju, @GlenKPeterson, @haugstrup, @jziggas, @RobAley, @sheley1998, @silverprize, and @yairy for contributions to this release!


  • Fix pasting nested list #906
  • Fix delete key interaction at end of list #1277
  • Fix pasting whitespace prefix #1244
  • Fix file dialog open speed #1265
  • Fix backspace with at beginning of list interaction with meta keys #1307
  • Fix pasting nested styles #1333
  • Fix backspacing into an empty line should keep own formats #1339
  • Fix IE11 autolinking interaction #1390
  • Fix persistent focus interaction with tabbing away #1404

Thanks to @bigggge, @CoenWarmer, @cutteroid, @jay-cox, @kiewic, @kloots, @MichaelTontchev, @montlebalm, @RichardNeill, and @vasconita for your contributions to this release.


  • Fix scrolling when appending new lines #1276 #1361
  • Fix binding to explicit shortcut key #1365
  • Merge clone update #1359

Thank you @artaommahe, @c-w, @EladBet, @emenoh, and @montlebalm for contributions to this release!


  • Fix backspace/delete on Windows/Ubuntu #1334

Thanks to @dinusuresh for your contributions to this release.


  • Fix link removal on Snow theme #1259
  • Fix CMD+backspace on empty editor #1319
  • Fix disabled checklist behavior #1312

Thank you @danielschwartz, @JedWatson, @montlebalm, and @simi for contributions to this release!


Add concept of experimental APIs: they are APIs meant to try out support for use cases we would like to address, but gives flexibility to find the right API interface. As such they are not covered by Semantic Versioning. Several are added to start things off: find, getIndex, getLeaf, getLine, getLines.

  • Merge disabling list keyboard shortcut when list format is disabled #1257

Thanks to @haugstrup for your contributions to this release.


  • Preserve user selection on API changes #1152
  • Fix backspacing into emojis #1230
  • Fix ability to type after emptying line in IE/Firefox #1254
  • Fix whitelisting block formats #1256

Thank you @benbro, @haugstrup, @peterweck and @sbevels for contributions to this release!


  • Flip tooltips when vertically out of bounds #851
  • Fix IE11 autolinking and control backspace #1028
  • Only show tooltip when user initiates selection change #1193
  • Fix bug needing to click twice on align #1220
  • Fix cut + pasting videos #1222

Thanks to @amitguptagwl, @antonlabunets, @benbro, @eamodio and @ygrishajev for your contributions to this release.


  • Support pasting italics from Google Docs #1185
  • Fix setting dropdown picker back to default #1191
  • Fix code-block formatting on empty first line in Firefox #1195
  • Prevent formatting via keyboard shortcuts when not whitelisted #1197
  • Fix select-all copy and overwrite paste in Firefox #1202

Thank you @adfaure, @berndschimmer, @CoenWarmer, @montlebalm, and @TraceyYau for contributions to this release!


  • Fix dropdown values reverting to default #901
  • Add config to prevent scroll jumping on paste #1082
  • Prevent scrolling on API source calls #1152
  • Fix tsconfig build error #1165
  • Fix delete and formatting interaction in Firefox #1171
  • Fix cursor jump on formatting in middle of text #1176

Thanks to @cutteroid, @houxg, @jasongisstl, @nikparo, @sbevels, and sferoze for your contributions to this release.



Checklists #759 support has been added to the API. UI and relevant interactions are still forthcoming.

Bug Fixes

  • Fix bug that allowed edits in readOnly mode #1151
  • Fix max call stack bug on large paste #1123

Thank you @jgmediadesign and @julienbmobile for contributions to this release!


  • Remove unnecessary type attribute in documentation #1087
  • Fix chrome 52+ input file label open slow #1090
  • Only query the last op's insertion string if it's actually an insert #1095

Thank you @jleen, @kaelig, and @YouHan26 for your contributions to this release.


Thanks to @eamodio and @metsavir for contributions to this release!


  • Fix setContents on already formatted text #1065
  • Fix regression #1067
  • Improve documentation #1069 #1070

Thank you @benbro, @derickruiz, @eamodio, @hallaathrad, and @philly385 for your contributions to this release.


Bug fixes

  • TEXT_CHANGE event now use cursor position to inform change location #746
  • Fix inconsistent cursor reporting between browsers #1007
  • Fix tooltip overflow in docs #1060
  • Fix naming #1063
  • Fix Medium example #1064

Thanks to @artaommahe, @benbro, @fuffalist, @sachinrekhi, @sergop321, and @tlg for contributions to this release!

Special thanks to @DadaMonad for contributions on fast-diff that enabled the #746 fix.



Quill has always allowed API calls, even when the editor is in readOnly mode. All API calls also took a source parameter to indicate the origin of the change. For example, a click handler in the toolbar would call formatText with source set to "user". When the editor is in readOnly mode, it would make sense for user initiated actions to be ignored. For example the user cannot focus or type into the editor. However because API calls are allowed, the user could still modify the editor contents #909. The natural fix is to ignore user initiated actions, even if it came through an API call, when the editor is in readOnly mode.

However, the documentation never stated API calls with source set to "user" would be ignored sometimes, so this would be a breaking change under semver. Some could argue this is a bug fix and would only warrant a patch version bump, but this seems disingenuous for this particular case. The fact that almost no one took advantage of the source beyond default values is irrelevant under the eyes of semver.

So a strict configuration option has been added. It is true by default so the above behavior is unchanged, and #909 is unfixed. Changing this to false, will use new behavior of ignoring user initiated changes on a disabled editor, even if through an API call.


  • Fix undo when preformatted text inserted before plain text #1019
  • Add focus indicator on toolbar buttons #1020
  • Do not steal focus on API calls #1029
  • Disable paste when Quill is disabled #1038
  • Fix blank detection #1043
  • Enable yarn #1041
  • Documentation fixes #1026, #1027, #1032

Thank you @benbro, @cutteroid, @evansolomon, @felipeochoa, jackmu95, @joedynamite, @lance13c, @leebenson, @maartenvanvliet, @sarbbottam, @viljark, @w00fz for their contributions to this release.


Documentation clarifications and bug fixes.

  • Fix attaching toolbar to <select> without themes #997
  • Link code icon to code-block #998
  • Fix undo stack when at size limit #1001
  • Fix bug where formatLine did not ignore inline formats 8a7190

Thanks to @dropfen, @evansolomon, @hallaathrad, @janyksteenbeek, @jackmu95, @marktron, @mcat-ee, @unhammer, and @zeke for contributions to this release!


Became 1.0.6 with a build/deploy fix.


  • Fix bubble theme defaults #963
  • Fix browsers modifying inline nesting order #971
  • Do not fire selection-change event on paste #974
  • Support alt attribute in images #975
  • Deprecate pasteHTML for removal in Quill 2.0 #981

Thank you jackmu95, kristeehan, ruffle1986, sergop321, sferoze, and sijad for contributions to this release.


Thank you @scottmessinger for the bug report.


  • Fix building quill.core.js docs #11
  • Fix regression of #793

Thanks to @eamodio and @neandrake for their contributions to this release.


Quill 1.0 is released! Read the official announcement.


Fix one important bug fdd920


A few bug fixes, one with with possibly significant implications. See the issue #889 and commit fix for more details.

Bug Fixes

  • Fix indenting beyond first level with toolbar #882
  • Fix toolbar font/size display on Safari #884
  • Fix pasting from Gmail from on different browser #886
  • Fix undo/redo consistency #889
  • Fix null error when selecting all on Firefox #891
  • Fix merging keyboard options twice #897

Thank you @benbro, @cgilboy, @cutteroid, and @routman for contributions to this release!


A few bug fixes, including one significant one

Bug Fixes

  • Fix icon picker rendering in MS Edge #877
  • Add back minified build to release #881
  • Fix optimized change calculation with preformatted text #883

Thanks to benbro, cutteroid, and CapTec for their contributions to this release.


A few bug fixes and performance improvements.


  • Source maps now available from CDN for minified build

Bug Fixes

  • Fix scroll interaction between two Quill editors #855
  • Fix scroll on paste #856
  • Fix native iOS tooltip formatting #862
  • Remove comments from pasting from Word #872
  • Fix indent at all supported indent levels #873
  • Fix indent interaction with text direction #874

Thank you @benbro, @fernandogmar, @sachinrekhi, @sferoze, and @stalniy for contributions to this release!


Take a look at Quill 1.0 Release Candidate for more details.


  • Going forward the minimal stylesheet build will be named quill.core.css, instead of quill.css

Bug Fixes

  • Fix identifying ordered and bulletd lists #846 #847
  • Fix bullet interaction with text direction #848

A huge thank you to all contributors to through the beta! Special thanks goes to @benbro and @sachinrekhi who together submitted submitted almost 50 Issues and Pull Requests!


Fixed some regressive bugs from previous release.

Bug Fixes

  • Fix activating more than one format before typing #841
  • Run default matchers before before user defined ones #843
  • Fix merging theme configurations #844, #845

Thanks benbro, jackmu95, and george-norris-salesforce for the bug reports.


Lots of bug fixes and performance improvements.

Breaking Changes

  • Keyboard handler format in initial configuration has changed. addBinding is overloaded to be backwards compatible.

Bug Fixes

  • Preserve last bullet on paste #696
  • Fix getBounds calculation for lists #765
  • Escape quotes in font value #769
  • Fix spacing calculation on paste #797
  • Fix Snow tooltip label #798
  • Fix link tooltip showing up on long click #799
  • Fix entering code block in IE and Firefox #803
  • Fix opening image dialog on Firefox #805
  • Fix focus loss on updateContents #809
  • Reset toolbar of blur #810
  • Fix cursor position calculation on delete #811
  • Fix highlighting across different alignment values #815
  • Allow default active button #816
  • Fix deleting last character of formatted text on Firefox #824
  • Fix Youtube regex #826
  • Fix missing imports when Quill not global #836

Thanks to benbro, clemmy, crisbeto, cutteroid, jackmu95, kylebragger, sachinrekhi, stalniy, and tOgg1 for their contributions to this release.


Potentially the final beta before a release candidate, if no major issues are discovered.

Breaking Changes

  • No longer expose ui/link-tooltip through import as implementation is now Snow specific
  • Significant refactoring of ui/tooltip
  • Syntax module now autodetects language, instead of defaulting to Javascript


  • Formula and video insertion UI added to Snow and Bubble themes

Bug Fixes

  • Fix toolbar active state after backspacing to previous line #730
  • User selection is now preserved various API calls #731
  • Fix long click on link-tooltip #747
  • Fix ordered list and text-align right interaction #784
  • Fix toggling code block off #789
  • Scroll position is now automatically preserved between editor blur and focus

Thank you @benbro, @KameSama, and @sachinrekhi for contributions to this release!


Weekly beta preview release. The editor is almost ready for release candidacy but a couple cycles will be spent on the Snow and Bubble interfaces.

Work in Progress

Image insertion is being reworked in the provided Snow and Bubble themes. The old image-tooltip has been removed in favor of a simpler and native interaction. By default clicking the image icon on the toolbar will open the OS file picker to convert and that into a base64 image. This will allow for a more natural hook to upload to a remote server instead. Some changes to the link tooltip is also being made to accommodate formula and video insertion, currently only available through the API.

Breaking Changes

  • Image tooltip UI has been removed, see above
  • Code blocks now use a single <pre> tag, instead of one per line #723

Bug Fixes

  • Fix multiline syntax highlighting #723
  • Keep pickers open on api text-change #734
  • Emit correct source for text-change #760
  • Emit correct parameters in selection-change #762
  • Fix error redoing line insertion #767
  • Better emitted Deltas for text-change #768
  • Better Array.prototype.find polyfill for IE11 #776
  • Fix Parchment errors in replacing text #779 #783
  • Fix align button active state #780
  • Fix format text on falsy value #782
  • Use native cut #785
  • Fix initializing document where last line is formatted #786

Thanks to benbro, bram2w, clemmy, DadaMonad, ersommer, michaeljosephrosenthal, mmorearty, mshamaiev-intel471, and sachinrekhi for their contributions to this release.


Became 1.0.0-beta.8 with a fix.


Weekly beta preview release.


  • Pickers can now be used and is styled in Bubble theme

Bug Fixes

  • Fix editing within formula #702
  • Fix adding new line when deleting across lists #741
  • Fix placeholder when default block tag is changed #743
  • Keep Bubble tooltip open on format #744
  • Fix format loss when copying from Quill #748 #750
  • Break long lines in Firefox #751
  • Fix cursor position being off after formatting and typing quickly #752
  • Remove image resizing handles on Firefox #753
  • Fix removing blockquote on initialization #754
  • Fix adding blank lines on initialization #756

Thank you abejdaniels, benbro, davelozier, fernandogmar, KameSama, and WriterStat for contributions to this release.


Weekly beta preview release.


Bug Fixes

  • Fix null error #728
  • Fix building with Node v6 #732
  • Ensure button type for supplied buttons #733
  • Fix line break pasting on Firefox #735
  • Fix 'user' source on API calls #739

Thanks to benbro, lukechapman, sachinrekhi, and saw for their contributions to this release.


Weekly beta preview release.

Breaking Changes

  • Headers no longer generates id attribute #700
  • Add Control+Y hotkey on Windows #705
  • BlockEmbed Blots are now length 1 and represented in a Delta the same as an inline embed
    • value() used to return object and newline, newline is now removed
    • formats used to be attributed on the newline character, it is now attributed on the object


  • Enter on empty and indented list removes indent #707
  • Allow base64 images to be inserted via APIs #721

Bug Fixes

  • Fix typing after clearing inline format #703
  • Correctly position Bubble tooltip when selecting multiple lines #706
  • Fix typing after link format #708
  • Fix loss of selection on using link tooltip #709
  • Fix setSelection(null) #722

Thank you @benbro, @brynjagr, and @sachinrekhi for contributions to this release.


Weekly beta preview release.

Breaking Changes

  • Keyboard was incorrectly using metaKey to refer to the control key on Windows. It now correctly refers to the Window key and shortKey has been added to refer the common platform specific modifier for hotkeys (metaKey for Mac, ctrlKey for Windows/Linux)
  • Formula is now a module, since it uses KaTeX


  • Picker now uses text from original <option> if available
  • Tabbing inside code blocks inserts tab to each line

Bug Fixes

  • Enter preserves inline formats #666
  • Fix resetting format button with no selection #667
  • Fix paste interpretation from Word #668
  • Focus scrolls to correct cursor position #669
  • Fix deleting image on otherwise empty document #670
  • Fix bubble toolbar formatting #679
  • Fix pasting ql-indent lines #681
  • Fix getting into state with double underline tag #695
  • Fix source type on delete #697
  • Fix indent becoming NaN #698

Thanks to @benbro, @Cinamonas, @emanuelbsilva, @jasonmng, @jonnolen, @LucVanPelt, @sachinrekhi, @sagacitysite, @WriterStat for their contributions to this release.


Weekly beta preview release. Major emphasis on keyboard API and customization.

Breaking Changes

  • Rename code highlighter module to syntax
  • Clipboard matchers specified in configuration appends to instead of replaces default matchers
  • Change video embed to use <iframe> instead of <video> enabling Youtube/Vimeo links


  • Add contextual keyboard listeners
  • Allow indent format to take +1/-1 in addition to target indent level
  • Shortcuts for creating ordered or bulleted lists
  • Autofill mailto for email links #278
  • Enter does not continue header format #540

Bug Fixes

  • Allow native handling of backspace #473 #548 #565
  • removeFormat() removes last line block formats #649
  • Fix text direction icon direction #654
  • Fix text insertion into root scroll #655
  • Fix focusing on placeholder text in FF #656
  • Hide placeholder on formatted line #657
  • Fix selection handling on focus and blur #664

Thanks to @anovi, @benbro, @jbrowning, @kei-ito, @quentez, @u9520107 for their contributions to this release!


Weekly beta preview release.

Breaking Changes

  • Toolbar only attaches to <button> and <select> elements
  • Toolbar uses button value attribute, instead of data-value
  • Toolbar handlers overwrite default handlers instead of possibly cascading
  • Deprecate keyboard removeBinding and removeAllBindings


  • Expose default keyboard bindings in configuration
  • Add context listener to keyboard bindings

Bug Fixes

  • Error when cursor places next to video embed #644
  • Selection removed when clicking on a menu button in the toolbar #645
  • Editor looses focus in FF after typing two bold characters #646
  • Get rid of resize boxes in code in IE11 0ad636
  • Text direction icon should flip the arrow when pressed #651
  • Not possible to combine direction:rtl with text-align:left #652

Thanks to @benbro for the bug reports for this release!


Please see the Upgrading to 1.0 guide.


Patch release for everything prior to Parchment's integration into Quill.


Bug Fixes

  • Editor jumps to top when clicking formatting buttons #288
  • Editor does not preserve bold text when pasted from itself #306
  • Focus issues when scrolled down in IE10+ #415
  • Error if keyboard shortcut used for unavailable format #432
  • Scrolls to cursor if not visible after enter/deletion/paste #433

Thanks to @devtimi, @emannes, @ivan-i, @magus, @Nick-The-Uncharted, @rlivsey, @thomsbg, @wallylawless for their bug reports and pull requests!


Breaking Changes

  • getBounds now returns null instead of throwing an error #412


  • Allow Document module to be Quill.require'd #400
  • Paste manager can optionally accept a custom conversion function #401
  • Undo manager can optionally only affect user initiated changes #413

Bug Fixes

  • Retain formats between lines #403
  • Fix bug that allows nested format tags #406
  • Flatten nested list instead of truncating on paste #421
  • Fix handling Chrome's usage of font-weight instead of tags #423
  • Fix bug that allows nested parent tags #426

Thank you @thomsbg, @yyjhao, @willrowe, @hryanjones, @nickretallack for your contributions to this release!