chore(deps): update dependency konva to v10 - #77
Open
renovate[bot] wants to merge 1 commit into
Open
renovate[bot] wants to merge 1 commit into
renovate[bot] wants to merge 1 commit into
Conversation
|
renovate
Bot
force-pushed
the
renovate/konva-10.x
branch
2 times, most recently
from
July 30, 2026 17:54
0235d99 to
ccf5db8
Compare
renovate
Bot
force-pushed
the
renovate/konva-10.x
branch
2 times, most recently
from
August 14, 2026 22:10
7e30362 to
8292762
Compare
renovate
Bot
force-pushed
the
renovate/konva-10.x
branch
2 times, most recently
from
September 7, 2026 22:16
1d9377c to
152208f
Compare
renovate
Bot
force-pushed
the
renovate/konva-10.x
branch
from
September 24, 2026 04:03
152208f to
6d1c66f
Compare
This branch has not been deployed
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
This PR contains the following updates:
^9.3.0→^10.0.0Release Notes
konvajs/konva (konva)
v10.7.0Compare Source
Group.isolated(). An isolated group draws its children into a transparent canvas, then applies itsopacityandglobalCompositeOperationonce to the result, like SVG<g opacity>. Child blend modes and erasing stay inside the group. Unlikecache(), the content stays liveShape.selfRectFunc()for custom shapes: returns the local area itssceneFuncpaints, so bounds,cache(), isolated groups and perfect drawing include paint outsidewidthandheightKonva.pixelRatiogetClientRect()ofArc,RingandStarwhen the inner radius is larger than the outer radius or a radius is negativeTextPathwithstrokeScaleEnabled(false)drawing its stroke near the canvas origin. LikeText, it now always scales its strokeTagbounds when its pointer is wider than its sidesceneFuncthrewStage.bufferCanvasand the thirdbufferCanvasargument ofdrawScene()v10.6.0Compare Source
Patharc performance: bounds of an arc segment are computed exactly instead of sampled every degree, and a point on a circular arc is found with a closed form instead of walking the arcText.getClientRect()andgetSelfRect()of underlined text, which no longer measure the font on every callblurRadius,pixelSizeand CSS filter lengths (for exampleblur(8px)) being applied in cache pixels instead of node coordinates, so a filtered node looked less blurred at a higher cachepixelRatio. Note: custom filter functions now receive(imageData, pixelRatio); use the ratio to convert node lengths to pixelspointerdownhandler (startDrag(e), for example react-konvaonPointerDown) never moving or ending and leaving the node stuck as draggingstopDrag()ending every active drag instead of only the drags of its own gesture, so a node dragged by another finger stopped too. Note:stopDrag()on a node that is not dragging is now a no-optouchstarton empty stage area reporting thepointerIdof the oldest active touch instead of the finger that just touched downgotpointercaptureandlostpointercapturealways reportingpointerId0 instead of the captured pointerTransformerresetting a manually setrotation()back to zero on the nextupdate()whenuseSingleNodeRotationis offTransformerrotating by the wrong amount whenrotateAnchorAngleis used withKonva.angleDeg = falsenode.remove()leaving a stale absolute transform when a listener or aTransformerread the node's position during removaltoObject(),toJSON()andclone()dropping an explicitwidth,heightordragDistancethat happened to equal the computed value, so a restoredTextre-flowed. Note: such attributes are now present in the serialized outputKonva.TextandtoImage()/toBlob()mutating the configuration object passed by the caller, which broke frozen and reused configurationspoints(),enabledAnchors()orrotationSnaps()corrupting every other node that used the same default. Note: an unset array attribute now returns a new array on each readscaleChange,offsetChangeandskewChangereportingoldValasundefinedcache()andtoCanvas()/toDataURL()/toImage()cropping the last pixel row and column of content at a fractional position. Note: an automatically sized cache or export can now be one pixel larger, and a cache whose origin is past the content is skipped instead of built with a negative sizelayer.remove()andlayer.destroy()leaving the layer canvases in the stage content when the stage container is not in the document, and never removing a hit canvas shown withtoggleHitCanvas()rgba(0, 0, 0, 2)orrgb(120%, 0, 0), distorting shadow opacity and color tweensposition(),absolutePosition(),size()andStage.container()acceptingnullandundefined, which throw at runtime. Note:node.absolutePosition(stage.getPointerPosition())no longer compiles, because the pointer position can benullTextreporting a width smaller than it paints withletterSpacing,align: 'justify'orcharRenderFunc, because measurement used kerning while drawing does notTextbounds ignoring the underline, socache(),getClientRect()andtoDataURL()clipped it. Note: bounds of underlined text are now taller thanheight()Textwithdirection: 'ltr'inheriting the direction of an RTL canvas, because only'rtl'was appliedTextunderline and line-through ignoringfillPriority, radial gradients and patterns instead of using the fill the text is drawn withTextPathkerningFuncmoving glyphs off curved and vertical paths, and not being counted in the text widthTextPathdropping its last character withalign: 'right'and a positiveletterSpacing, and adding a phantom trailing spacing to its boundsz) inPathdata not travelling back to the start of the subpath. Note:getLength()of a closed path now includes the closing edge, as in SVG, and a relative command afterzstarts from the subpath startPath.getSelfRect()of an arc segment missing its end point, which reported an empty rect for a sub-degree arcPath.getPointAtLength()on a non-circular arc interpolating the angle instead of the distance, which bunchedTextPathglyphs on ovals and made path animations change speedPathdata throwing during a draw and aborting the layer. Note: an arc is now drawn with a singleellipse()callInfinityand madeTextPathtext disappearArrowpointing its head horizontally when the line has repeated endpoints, for example a polyline finished by a double clickKonva.Imagecreated from a freshnew Image()never redrawing when itssrcis assigned afterwardsKonva.Image.fromURL()calling its callback again, and creating a duplicate node, when thesrcof the loaded image is changed laterLabelstacking a new set of listeners on a child every time it is re-added, which multiplied its internal work and kept a removed child calling a destroyedLabelKonva.Filters.Pixelatedarkening blocks that mix opaque and transparent pixels, such as the edges of circles, text and images with alphaTweenrestarting its animation whenpause()ordestroy()is called fromonUpdate, and throwing fromfinish()/reset()after such adestroy()strokeLinearGradientColorStopsproducing invalid colors such asredNaNand breaking every following drawdashto a shorter array writingNaN, and tweening between a scalar and an arraycornerRadiusthrowingv10.5.0Compare Source
Features
Bug Fixes
Documentation
Performance Improvements
Commits
8225a78: update CHANGELOG with new version (Anton Lavrevov)9008123: build for 10.5.0 (Anton Lavrevov)v10.4.0Compare Source
destroyevent, fired at the start ofnode.destroy().Transformerdrops a destroyed node fromnodes()andTweenstops the tweens of a destroyed nodewidth()andheight()toPathKonva.Transform#isInvertible()letterSpacing,charRenderFuncand wrapping.letterSpacingnow adds one spacing per grapheme instead of per UTF-16 code unitTransformerperformance: anchors are resolved directly instead of by selectorTextperformance withcharRenderFuncand when wrapping a long text (both were quadratic in text length)TextandTextPathcreation performance. Note: relayout listeners now live on the prototype, sotext.off('textChange.konva')no longer removes themTextPathlayout performance on paths with many segmentscontainer.getClientRect(), drag and drop,Animationstart/stop, component getters andImagedrawing performance. Note:Konva.Animation.animationsis now aSetcache(),toCanvas(),toDataURL(),toImage()andtoBlob(). Note: a cropped export no longer includes shadows of shapes lying fully outside the crophasStroke()returns a boolean instead of the stroke widthText,TextPathand CSS filter strings, and fixed a canvas leak on every draw of a node with CSS filtersTransformerignoring changes of attached nodes made between pointer moves during a resize (regression in 10.3.1)Transformerfollowing the wrong finger during a pinch, writingNaNwhen resizing a zero-size node, not refreshing onpaddingchange, blanking the hit graph of unrelated layers, and being misplaced inside a cached or transformed containerlayer.size()shrinking the layer canvas. A layer follows the stage sizecontainer.getChildren()andstage.getLayers()returning the internal array. They return a copyclearCache()of a container un-caching every descendant and leaking their canvasescache(),setAttrs()andsetPosition()leaving a node in a broken state after an exception in asceneFunc, a filter or a settersetAbsolutePosition()and dragging writingNaNunder an ancestor with a zero scaleradiusorcornerRadiusthrowing during draw and blanking the shapes after itlayer.batchDraw()never drawing again after a draw threwtoObject()andtoJSON()modifying the node: circular or DOM attributes were lost, frozen state threw, and a custom attribute named like a node method invoked itTransformerof a node inside a cached container. Note:getClientRect()under a cached ancestor is now absolute like everywhere elsehasShadow()not updating when onlyshadowOffsetXorshadowOffsetYchangesnode.fire(type, null, true)throwingnode.clone()sharing nested array attributes with the originalTween: component attributes (scale,offset...) wrote junk attributes, gradient color stops were replaced in the node's own array,onUpdate/onResetwere tweened, the first tween of a page could not be cancelled, andnode.to()modified its params.node.to()returns the tweensetDashArray()setting nothing and deprecated aliases returning nothingPathbounds for rotated elliptical arcs and empty paths, parsing of SVGO-compressed arcs and00coordinates, andgetPointAtLength()past the end of an arc. Degenerate data (truncated commands, zero-radius arcs, a number afterz) follows SVG instead of producingNaNor hangingSpritekeeping its interval afterdestroy(), throwing on an unknown animation or frame, and missinggetSelfRect()RegularPolygonwithoutsidesthrowing from every drawTag.getSelfRect()withpointerDirectionleftorrightTextPathwith akerningFunc, and its underline thickness now matchesTextisLastInLineofcharRenderFuncfor the last character of every lineBlurfilter darkening semi-transparent pixels and producing an empty image for a largeblurRadius(now capped at 180)hueof the HSL and HSV filters mirroring outside -360..360, and the exact reference matrix is usedtransparentfading through whiteKonva.pixelRatioset to0orundefinednot falling back to the device pixel ratiodrawHitFromCache()with ahitCanvasPixelRatioother than 1releaseCapture()releasing a pointer held by another shapedragBoundFuncblocked a new drag,startDrag()off stage threw, lifting one finger cancelled the drags of other fingers, andstartDrag()without an event never endeddragBoundFuncresult or export rect silently blanking a layer or exporting the wrong image. An error is logged insteadclipFunccontext,line.points()typed arrays,text.width('auto'),tag.cornerRadius()array,stage.container('id'),getClientRect()config,oldVal/newValon change events, namespace types,new Konva.FastLayer()without config. Removed thefillLinearRadial*declarations that had no implementationv10.3.3Compare Source
v10.3.2Compare Source
listening: false(and every layer of a non-listening stage) now releases its stage-sized hit canvas instead of keeping it allocated, and re-creates it when it starts listening again. The two stage-sized buffer canvases of everyKonva.Stageare now created empty and only allocated by the first feature that needs them ("perfect drawing" andshape.intersects()).node.cache()of a non-listening node skips its cached hit canvas the same way, building it only if the node starts listening (previously such a node kept an empty cached hit graph and stayed unhittable until re-cached). Note: after turninglisteningback on, the hit graph appears on the next layer draw (automatic unlessKonva.autoDrawEnabledis off - then calllayer.draw(), as a singleshape.draw()is not enough to re-create the layer hit canvas)charRenderFuncofKonva.TextignoringfillStyle/strokeStyleset on the context by the callback. A style set for a character now wins over the shape attributes for that character, as documentedsetPointerCapture()not capturing the pointer on the stage container, so the stage kept missing pointer events outside of its bounds. A captured pointer now keeps sendingpointermove/pointerupto the stage beyond its edges, like pointer capture on plain HTML elementspointerclickfiring after a drag and drop, whileclickcorrectly did notTransformershaking the shape when a corner anchor withkeepRatiowas dragged across the shape withpaddingenabledTransformerswitching its active anchor whenboundBoxFuncrejects a flip. A rejected flip now keeps the grabbed anchor active, so resizing keeps following the pointer — andgetActiveAnchor()insideboundBoxFuncnow reports the anchor being held instead of the prematurely flipped onewindow.open. Such a stage now uses the pointer events of its own window, and a pointer move in another window no longer drags its nodesTransformerof such a stage, which got no pointer move or release events at alllayer.batchDraw()of such a stage, which asked the window Konva was imported into for the frame and stopped drawing when that window was not visiblestage.destroy()leaving the content of such a stage in the containerv10.3.1Compare Source
hsla()support and the space-separated CSS Color 4 syntax toKonva.Util.colorToRGBA()canvasandskia-canvasas optional peer dependencies, so the node backends resolve under strict package managersTransformerperformance with many attached nodesTextperformance when a long text is resizedPath.getSelfRect()now solves the bounds of a cubic segment exactly instead of sampling it at 100 points. Reported boxes get slightly larger and more accurate, and the calculation is about 9 times fasterLine.getSelfRect()now solves the bounds of a line with atensionexactly, instead of using the box around its tension control points. Reported boxes get smaller and tighter, by about 19% of their area on a typical linePath.getSelfRect()now also solves the bounds of a quadratic segment (Q,q,Tandt) exactly, instead of using the box around its control points. Reported boxes get smaller and tighterdarkgoldenrod,floralwhite,plum,slategray,slategrey,snowandyellowgreentransparent, so a tween to or from it fades againrgb()colors with percentage componentshsl()colors with a non-integer hue or extra whitespacefillPatternImageignoringimageSmoothingEnabledArc.getSelfRect()for a zero-degree clockwise arc and for any full-turn anglePath.getPointAtLength()returningundefinedpast the end of a closed pathNaNbounding rect on a closedLinewith a tension and coincident pointsgetSelfRect()on aLinewithbezier: true, which read only the first curve segment and could report a box of zero heightValidatorFunctype used by customFactoryvalidatorsv10.3.0Compare Source
directionproperty toTextPathshape for better RTL supportv10.2.5Compare Source
v10.2.4Compare Source
v10.2.3Compare Source
v10.2.1Compare Source
v10.2.0Compare Source
rotateAnchorAngleproperty toTransformerto control the position of the rotation anchor around the bounding boxv10.1.0Compare Source
v10.0.12Compare Source
v10.0.11Compare Source
v10.0.10Compare Source
v10.0.9Compare Source
v10.0.8Compare Source
v10.0.7Compare Source
v10.0.6Compare Source
Image.getClientRect()calculation if an instance has no image attached yetv10.0.5Compare Source
v10.0.4Compare Source
v10.0.3Compare Source
v10.0.2Compare Source
TextPathto return correct width and heightv10.0.1Compare Source
v10.0.0Compare Source
Breaking Changes
Motivation: With increased usage of
konvain SSR environments like Next.js, loading native canvas rendering on the server is unnecessary since we don't render canvas content server-side. Removing this requirement simplifies setup by avoiding native modules when they aren't needed.Konva.legacyTextRendering = true. This should NOT break major part of the apps. But if you care about pixel-perfect position of text elements, that change may effect you.New Features
skiarender backend for node.js:node.filters(['blur(10px)']). Native fitlers works MUCH faster if supported nativily (Chrome, Firefox). If there is no native support, Konva will automatially fallback to functional filter (on Safari).charRenderFuncforKonva.Textfor controlling "per-character-render". May be useful any character animations:Konva.Filters.Brightnessfilter in replace of deprecatedKonva.Filters.Brightento better match with css filters logic.cornerRadiussupport forKonva.RegularPolygonmiterLimitproperty support forKonva.Shapeto control line join appearanceBug Fixes
Konva.Rectwhen negative width or height are usedTechnical Improvements
node.toImage()Configuration
📅 Schedule: (UTC)
🚦 Automerge: Disabled by config. Please merge this manually once you are satisfied.
♻ Rebasing: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.
🔕 Ignore: Close this PR and you won't be reminded about this update again.
This PR was generated by Mend Renovate. View the repository job log.