Skip to content

penpot

v2.16.0 Breaking

This release includes breaking changes for platform teams planning a safe upgrade.

✓ No known CVEs patched
Read the diff → Tool health → What is this tool? →

✓ No known CVEs patched in this version

Topics

clojure clojurescript design prototyping ui ux-design
+1 more
ux-experience

ReleasePort's take

Light signal
editorial:auto 1mo

Penpot 2.16.0 adds several UI enhancements and introduces a beta WebGL renderer while fixing multiple crash‑related bugs.

Why it matters: Addresses crashes in component paste, selection handling, export pipeline, and library publish flow; enables optional beta WebGL rendering for performance testing.

Summary

AI summary

Broad release touches bug: Bugs fixed, rocket: Epics and highlights, https://github.com/penpot/penpot/issues/9683, and beta.

Changes in this release

Feature Medium

Add delete group to assets panel context menu.

Add delete group to assets panel context menu.

Source: llm_adapter@2026-06-11

Confidence: high

Feature Medium

Show alpha percentage on library color values.

Show alpha percentage on library color values.

Source: llm_adapter@2026-06-11

Confidence: high

Feature Medium

Add loader feedback while importing and exporting files.

Add loader feedback while importing and exporting files.

Source: llm_adapter@2026-06-11

Confidence: high

Feature Medium

Allow duplicating color and typography styles.

Allow duplicating color and typography styles.

Source: llm_adapter@2026-06-11

Confidence: high

Feature Medium

Add woff2 support (woff2) for custom fonts.

Add woff2 support (woff2) for custom fonts.

Source: llm_adapter@2026-06-11

Confidence: high

Feature Medium

Enable WebGL renderer (beta).

Enable WebGL renderer (beta).

Source: llm_adapter@2026-06-11

Confidence: high

Bugfix Medium

Fix crash pasting component variants from external library.

Fix crash pasting component variants from external library.

Source: llm_adapter@2026-06-11

Confidence: high

Bugfix Medium

Fix app crash on multiselection with hidden shapes and mixed opacity.

Fix app crash on multiselection with hidden shapes and mixed opacity.

Source: llm_adapter@2026-06-11

Confidence: high

Bugfix Medium

Fix incorrect rendering when exporting text as SVG, PNG, and JPG.

Fix incorrect rendering when exporting text as SVG, PNG, and JPG.

Source: llm_adapter@2026-06-11

Confidence: high

Bugfix Medium

Fix publishing or unpublishing a file as a library that failed with unexpected state error.

Fix publishing or unpublishing a file as a library that failed with unexpected state error.

Source: llm_adapter@2026-06-11

Confidence: high

Full changelog

:boom: Breaking changes & Deprecations

:rocket: Epics and highlights

  • WebGL rendering (beta) user preference #9683 (PR:9113)
  • Design Tokens at the design tab: numeric fields with token selection in place #9358

:sparkles: New features & Enhancements

  • Add delete group to assets panel context menu (by @FairyPigDev) #9141 (PR: #9151, #9211)
  • Show alpha percentage on library color values (by @rockchris099) #6328
  • Add clear artboard guides to frame context menu (by @eureka0928) #6987 (PR: #8936)
  • Add loader feedback while importing and exporting files (by @moorsecopers99) #9020 (PR: #9024)
  • Allow duplicating color and typography styles (by @MkDev11) #2912 (PR: #8449)
  • Add woff2 support on user uploaded fonts (by @Nivl) #3521 (PR: #8367)
  • Import Tokens from linked library (by @dfelinto) #9635 (PR: #8439)
  • Option to download custom fonts (by @dfelinto) #9672 (PR: #8335)
  • Add copy as image to workspace context menu (by @dfelinto) #9607 (PR: #8364, #9586)
  • Add Tab/Shift+Tab navigation to rename layers sequentially (by @bittoby) #2569 (PR: #8506)
  • Copy and paste entire rows in existing table (by @bittoby) #5969 (PR: #8498)
  • Rename token group #9637 (PR: #8275)
  • Duplicate token group #9638 (PR: #8886)
  • Copy token name from contextual menu #9639 (PR: #8566)
  • Add drag-to-change for numeric inputs in workspace sidebar (by @RenzoMXD) #2466 (PR: #8536)
  • Add per-group add button for typographies (by @eureka0928) #5275 (PR: #8895)
  • Add Find & Replace for text content and layer names (by @statxc) #7108 (PR: #8899, #9687)
  • Use page name for multi-export ZIP/PDF downloads (by @Dexterity104) #8773 (PR: #8874)
  • Make links in comments clickable (by @eureka0928) #1602 (PR: #8894)
  • Add visibility toggle for strokes (by @eureka0928) #7438 (PR: #8913)
  • Sort asset library subfolders alphabetically at every nesting level (by @eureka0928) #2572 (PR: #8952)
  • Add Paste to replace (Cmd+Shift+V) for selected shapes (by @eureka0928) #4240 (PR: #9033)
  • Differentiate incoming and outgoing interaction link colors (by @claytonlin1110) #7794 (PR: #8923)
  • Reorder prototyping overlay options to show Position before Relative to (by @rockchris099) #2910
  • Add customizable colors for ruler guides (by @Dexterity104) #5199 (PR: #8986)
  • Persist asset search and section filter across sidebar tabs (by @eureka0928) #2913 (PR: #8985)
  • Add delete and duplicate buttons to typography dialog (by @eureka0928) #5270 (PR: #8983)
  • Edit ruler guide position by double-clicking the guide pill (by @eureka0928) #2311 (PR: #8987)
  • Add search bar to color palette (by @eureka0928) #7653 (PR: #8994)
  • Add search bar to board size presets (by @eureka0928) #4658 (PR: #9117)
  • Allow customising the OIDC login button label (by @wdeveloper16) #7027 (PR: #9026)
  • Add page separators in Workspace #9180 (PR: #8561)
  • Preserve vector content when pasting SVG from external tools (by @RenzoMXD) #546 (PR: #9182)
  • Add pixel grid color picker in viewport settings (by @jack-stormentswe) #7750 (PR: #9155)
  • Add HEX/HSB/HSL support to color picker with persistent model switcher (by @edwin-rivera-dev) #9133 (PR: #9134)
  • Show specific invitation-link error messages (by @niwinz) #9220 (PR: #9223)
  • Show detailed file import error messages (by @jsdevninja) #8212 (PR: #9004)
  • Add read-only preview mode for saved versions (by @wdeveloper16) #7622 (PR: #8976, #9514)
  • Add clipboard read/write permissions to the plugin system (by @wdeveloper16) #6980 (PR: #9053)
  • Update auth hero illustration on login screen #9532 (PR: #9552)
  • Update Open Graph link preview metadata #9555 (PR: #9557)
  • Restore deleted team files in bulk instead of per file (by @Dexterity104) #9246 (PR: #9248)
  • Preserve Inkscape labels when pasting SVGs (by @jeffrey701) #7869 (PR: #9252)
  • Add Alt+click to expand layer subtree (by @MilosM348) #7736 (PR: #9179)
  • Allow deleting the profile avatar after uploading (by @moorsecopers99) #9067 (PR: #9068)
  • Improve file validation performance and fix orphan shape detection #9790 (PR: #9789)
  • Add v2.16 release notes (What's new modal) #9945 (PR: #9940)
  • Enable multi-instance horizontal scaling for MCP server #10000 (PR: #10013)

:bug: Bugs fixed

  • Add Shift+Numpad aliases for zoom shortcuts (by @RenzoMXD) #2457 (PR: #9063)
  • Save and restore selection state in undo/redo (by @eureka0928) #6007 (PR: #8652)
  • Add guide locking and fix locked element selection in viewer (by @Dexterity104) #8358 (PR: #8949)
  • Add natural sorting on token names #8635 (PR: #8672)
  • Fix warnings for unsupported token $type (by @Dexterity104) #8790 (PR: #8873)
  • Apply styles to selection (by @AzazelN28) #9661 (PR: #8625)
  • Fix Alt/Option to draw shapes from center point (by @offreal) #8360 (PR: #8381)
  • Fix library update button freezing #9330 (PR: #9513)
  • Fix typo in subscription settings success key (by @jack-stormentswe) #9203 (PR: #9204)
  • Add token name on broken token pill on sidebar #9534 (PR: #8527)
  • Fix tooltip activated when tab change #9539 (PR: #8719)
  • Fix title on shared button #9541 (PR: #8696)
  • Fix hover on layers #9542 (PR: #8885)
  • Fix highlight after name edition #9537 (PR: #8890)
  • Fix multiple small UI bugs — id prop, update copy, library modal scroll #9536 (PR: #8604)
  • Fix themes modal height #9535 (PR: #9105)
  • Fix layers panel rename showing default type name (by @jack-stormentswe) #9230 (PR: #9231)
  • Suppress browser context menu on workspace sidebar right-click (by @sujyotraut) #5127 (PR: #9196)
  • Fix plugin API fileVersion.restore() hanging on failure (by @thomascolden585-svg) #9092 (PR: #9111)
  • Fix stroke-only SVG paths losing rounded join on split (by @Chrissi2812) #5283 (PR: #9156)
  • Fix plugin API library.connectLibrary() not returning Promise (by @boskodev790) #9646 (PR: #9158)
  • Fix LDAP provider schema typo in malli migration (by @boskodev790) #9531 (PR: #9165)
  • Fix login-with-ldap dropping error on uninitialized LDAP (by @boskodev790) #9533 (PR: #9159)
  • Fix OIDC_USER_INFO_SOURCE flag being ignored (by @GeekClassy) #9108 (PR: #9114)
  • Fix share-link viewer crash on malformed email (by @boskodev790) #9530 (PR: #9120)
  • Fix crash pasting component variants from external library (by @FairyPigDev) #8144 (PR: #9136)
  • Remove corepack from MCP launcher for Node.js 25+ (by @TheAifam5) #8877 (PR: #9119)
  • Fix Copy as SVG for multi-shape selections (by @RenzoMXD) #9088 (PR: #9066)
  • Preserve OpenType variant name table for custom fonts in the dashboard (by @rutherfordcraze) #8924 (PR: #9193)
  • Add export panel to inspect styles tab #9660 (PR: #8645)
  • Fix styles between grid layout inputs #9656 (PR: #8673)
  • Fix dates to avoid show them in english when browser is in auto #8709 (PR: #8775)
  • Fix focus radio button #9657 (PR: #8774)
  • Token tree should be expanded by default #9662 (PR: #8799)
  • Fix opacity incorrectly disabled for visible shapes #9658 (PR: #8854)
  • Fix plugin modal drag over iframe and close button (by @marekhrabe) #9529 (PR: #8871)
  • Fix hot update on color-row on texts #9664 (PR: #8880)
  • Fix selected color tokens #9655 (PR: #8889)
  • Fix dashboard Recent/Deleted titles overlapped by scrolling content (by @rockchris099) #8577
  • Display resolved values of inactive tokens #9665 (PR: #8589)
  • Fix hyphens stripped from export filenames (by @jamesrayammons) #8901 (PR: #8944)
  • Fix app crash on multiselection with hidden shapes and opacity mixed value #9666 (PR: #8932)
  • Fix gap input throwing an error #9667 (PR: #8984)
  • Fix copy to be more specific #9668 (PR: #9028)
  • Fix incorrect rendering when exporting text as SVG, PNG and JPG (by @edwin-rivera-dev) #8516 (PR: #9094)
  • Fix typography style creation with tokenized line-height (by @juan-flores077) #8479 (PR: #9121)
  • Fix colorpicker layout hiding eyedropper button #9669 (PR: #9125)
  • Fix restore-deleted-team-files reduce typo (by @Dexterity104) #9240 (PR: #9241)
  • Fix internal error on layer prev/next sibling selection (by @jsdevninja) #7064 (PR: #9003)
  • Fix tooltip appearing two times when nested elements #9674 (PR: #9031)
  • Fix broken update library notification link in the UI #9673 (PR: #9070)
  • Fix plugin API ShapeBase.component() returning outermost instead of immediate component #9183 (PR: #9298)
  • Fix content attribute sync group resolution by shape type #9527 (PR: #8724)
  • Fix plugin parse-point returning plain map instead of Point record (by @FairyPigDev) #8409 (PR: #9129)
  • Fix :heigth typo in clipboard frame-same-size? (by @iot2edge) #9249 (PR: #9250)
  • Fix Settings Update button enabled state (by @moorsecopers99) #9090 (PR: #9091)
  • Fix library updates reappearing after reload #9326 (PR: #9563)
  • Fix internal error on margins #9309 (PR: #9311)
  • Remove drag-to-change when token applied on numeric input #9313 (PR: #9314)
  • Fix extra input on canvas background #9359 (PR: #9360)
  • Fix frame selection highlight persists after rename #9538 (PR: #8938)
  • Fix several color picker issues #9556 (PR: #9558)
  • Fix asset icon broken on Asset tab #9587 (PR: #9612)
  • Fix text fill color stops updating in multiselect with texts #9608 (PR: #9549)
  • Fix standalone tokens ordering separated from token groups #9733 (PR: #9736)
  • Fix delete invitation modal readability in light theme #9737 (PR: #9747)
  • Fix team invitation not automatically accepted after account validation #9776 (PR: #9782)
  • Fix Plugin API addRulerGuide creating guides on page instead of board (by @girafic) #8225 (PR: #8632)
  • Fix text editor not swapping correctly when enabling/disabling WebGL #10015
  • Fix WebGL renderer focus mode leaving artefacts #10061 (PR: #10091)
  • Fix double click on text selecting underlying element when WebGL render is enabled #10080 (PR: #10123)
  • Fix publishing or unpublishing file as library failing with unexpected state found error #10094 (PR: #10093)
  • Fix team invitation failing when email address contains consecutive dots in domain #10097 (PR: #10096)
  • Add detailed error messages for unspecified import errors #9759 (PR: #9886)

Weekly OSS security release digest.

The CVE patches and breaking changes that affected production tools this week. One email, every Sunday.

No spam, unsubscribe anytime.

Share this release

Track penpot

Get notified when new releases ship.

Sign up free

About penpot

Penpot: The open-source design tool for design and code collaboration

All releases →

Related context

Beta — feedback welcome: [email protected]