Penpot 2.19 release: Is This It

Penpot 2.19 adds stroke width per side, custom keyboard shortcuts, a reworked path editor and design tokens in shared libraries. WebGL rendering improves in large files, text editing and exports. The release also includes performance improvements, many bug fixes, security changes and smaller improvements, several of them from community contributors. Thank you to everyone who reported, reviewed and merged.

Let’s dive in!


Stroke width per side

Rectangles and boards can now have a different stroke width on each side (top, right, bottom and left). In the Stroke section, switch from uniform to per-side, the same way you set independent border radius. A bottom divider or a left accent no longer needs an extra shape or a mask. (#9854)

We know this one kept you waiting: it was requested looooong ago and is the second most voted request on GitHub (#3005). It took this long because drawing strokes per side needed the new render engine first, which we launched as WebGL rendering. For the same reason, per-side strokes only work with WebGL rendering turned on.

You can apply design tokens to all sides or a different token to each side (#9842). Inspect shows the value or token of each side, as CSS borders do.


Custom keyboard shortcuts

You can now reassign any keyboard shortcut. Search by action or by key combination, record a new binding, and Penpot warns you if it is already in use. You can reset one shortcut or all of them. (#9924)

This helps if you use AZERTY, QWERTZ or another layout where the default shortcuts are awkward, or if you are used to the shortcuts of another tool. You can export and import your setup to use it on another machine.


Path editor, refreshed

The path editor has been reworked (#10889):

• Freehand curves are smoother and keep sharp corners
• The path toolbar is available while you draw
• Node snapping is on by default
• You can continue drawing from existing nodes and segments
• Hold Shift to snap angles in 15° steps
• Delete selected handles with Backspace or Delete (#11858)

You can also resize the bounds of an image independently from its content, to reframe a photo without distorting it. (#11516)


Design tokens in shared libraries

Tokens can now live in a shared library and be used in every file that links it. When the library changes, the tokens update in those files, as components and colors already do. (#9334)

In the consuming file you can apply tokens and switch themes. Tokens are edited in the library, so there is one source for them. The Assets tab shows where the tokens of a file come from. (#11365)

Color tokens can now be used for the canvas background too. (#11791)


WebGL rendering

This release includes several changes to WebGL rendering:

• Better tile rendering, so large files stay smoother while you move around the canvas
• A new text editor built for WebGL rendering, more precise and faster
• Exports use the same engine, so they are faster and closer to what you see on the canvas. Single-file SVG export now works with WebGL rendering (#10546)
• Fix when scrolling works in prototypes (#11684)

WebGL rendering is still in beta and off by default. You can turn it on from user settings. If you find problems, please report them: What’s next for the Penpot WebGL renderer.


Organizations and teams in one menu

Since 2.18 you can belong to several organizations, each with its own teams. Until now, organizations and teams had separate menus. Now the menu at the top of the dashboard sidebar shows both: organizations (plus Other teams, for teams outside any organization) on the left, and the teams of the one you point at on the right. Switching to a team takes one step, and you can create a team or an organization from the same menu.


Other improvements

• Right-click menu (Cut, Copy, Paste, Select all) while editing text (#10914)
• The selection size badge updates while you resize, and stays readable when the shape is rotated or flipped (#10259, #10264)
• Board presets for Penpot assets: file thumbnail, template cover, plugin icon and cover (#11561)
• Link previews when you share a Penpot link (#10699)
• The hide resolved comments option is remembered (#10686)
• The token tree expands after import (by @AKnassa) (#9819)
• 3x export scale option (#10740)


Security and self-hosting

• Accounts lock after repeated failed login attempts (#11397), you get an email when your password changes (#11392), and sessions have a maximum duration (#11444).
• The Plugin API applies the same permission checks and validation rules as the UI (#11137, #11586).
• Self-hosted instances warn when the Penpot version is outdated and list what is missing (#10497).
• Backend storage handles interrupted writes and missing files better (#11344), exports run as jobs (#11133), and there are new Prometheus metrics for storage operations (#11676).
• The MCP server moves to SDK v2 and the new protocol version, and drops legacy SSE support (#11827, #11846). Setup: Penpot MCP server.


Community contributions

• MCP: no more endless reconnects in inactive tabs (by @breken-ai), and no crash when changing pages while connected (by @makesomethingshit)
• Tap area when zoomed out in WebGL rendering, Plugin API fontFamilies tokens, and share link fixes (by @makesomethingshit)
• Stroke to path with path ends, prototype interactions kept when toggling visibility in flex layouts, inline email validation, and MCP environment docs (by @ShreyashAgare26)
• Windows build fixes, disable-registration on shared prototypes, the font size dropdown in Firefox, and the alt-drag cursor (by @0xTHAC0)
• Overlay alignment in the viewer, the Mixed label in 24 languages, and binfile export through the API (by @filipsajdak)
• Dashed strokes keeping their properties when changing color (by @Shlok1729)
• Token tree expanded after import (by @AKnassa)

Thanks to everyone credited in the changelog and to everyone who reported bugs.


Bug fixes and performance

This release fixes a long list of bugs and includes performance work in WebGL rendering, strokes, tokens, paths, the Plugin API, MCP and the dashboard. Some examples: copying text to the clipboard works again on Windows, comment bubbles no longer cover dropdown menus, and boards no longer lose their content when dragged near another board. The 2.18 patch releases added faster version saves, more reliable storage cleanup and an access fix for removed team members.

The full list is in CHANGES.md.


Links

• User Guide
• MCP server
• What’s next for the Penpot WebGL renderer
• CHANGES.md