# What changed in @betteroffice/pptx

> 70 changes in @betteroffice/pptx 0.2 to 0.5 from its official release notes, upgrade guides and advisories: 4 breaking, 1 deprecations, 36 new APIs and options. Each one cited. Sources checked 2026-10-28. HTML: https://unstale.sh/npm/@betteroffice/pptx/

To see which of these apply to a repository, run `npx @unstale/cli init` in it.

## @betteroffice/pptx 0.5

### Breaking changes

- Non-PPTX or malformed packages now fail to open. (0.5.0) — [release notes](https://github.com/openooxml/betteroffice/releases/tag/%40betteroffice/pptx%400.5.0)

### New APIs and options

- The new opt-in width value copy preserves existing column widths and refits the table frame; omitting width or choosing split keeps current behavior. (0.5.1) — [release notes](https://github.com/openooxml/betteroffice/releases/tag/%40betteroffice/pptx%400.5.1)
- The new opt-in width value copy preserves existing column widths and refits the table frame; omitting width or choosing split keeps current behavior. (0.5.1) — [release notes](https://github.com/openooxml/betteroffice/releases/tag/%40betteroffice/pptx%400.5.1)
- Adds optional chunked update application for asynchronous collaboration replicas. (0.5.0) — [release notes](https://github.com/openooxml/betteroffice/releases/tag/%40betteroffice/pptx%400.5.0)
- Adds optional chunked state encoding for asynchronous collaboration replicas. (0.5.0) — [release notes](https://github.com/openooxml/betteroffice/releases/tag/%40betteroffice/pptx%400.5.0)
- Adds a collaboration entry point for `CollaborationProvider` and presence helpers. (0.5.0) — [release notes](https://github.com/openooxml/betteroffice/releases/tag/%40betteroffice/pptx%400.5.0)
- Adds the worker entry point for the worker command session and worker editor and session exports. (0.5.0) — [release notes](https://github.com/openooxml/betteroffice/releases/tag/%40betteroffice/pptx%400.5.0)
- Adds an operation to delete a table column. (0.5.0) — [release notes](https://github.com/openooxml/betteroffice/releases/tag/%40betteroffice/pptx%400.5.0)
- Adds an operation to delete a table row. (0.5.0) — [release notes](https://github.com/openooxml/betteroffice/releases/tag/%40betteroffice/pptx%400.5.0)
- Adds an engine API to duplicate a slide. (0.5.0) — [release notes](https://github.com/openooxml/betteroffice/releases/tag/%40betteroffice/pptx%400.5.0)
- Adds `fork` to the engine. (0.5.0) — [release notes](https://github.com/openooxml/betteroffice/releases/tag/%40betteroffice/pptx%400.5.0)
- Adds an operation to insert a table column. (0.5.0) — [release notes](https://github.com/openooxml/betteroffice/releases/tag/%40betteroffice/pptx%400.5.0)
- Adds an operation to insert a table row. (0.5.0) — [release notes](https://github.com/openooxml/betteroffice/releases/tag/%40betteroffice/pptx%400.5.0)
- Supports `includeMedia: false` to omit media bytes from inspection results. (0.5.0) — [release notes](https://github.com/openooxml/betteroffice/releases/tag/%40betteroffice/pptx%400.5.0)
- Layout inventories include placeholder IDs and names, enabling explicit placeholder mapping. (0.5.0) — [release notes](https://github.com/openooxml/betteroffice/releases/tag/%40betteroffice/pptx%400.5.0)
- Adds `layouts` to the engine. (0.5.0) — [release notes](https://github.com/openooxml/betteroffice/releases/tag/%40betteroffice/pptx%400.5.0)
- Adds an experimental worker session for async reads, version-checked edits, saving, and per-slide `call.frame` display lists. (0.5.0) — [release notes](https://github.com/openooxml/betteroffice/releases/tag/%40betteroffice/pptx%400.5.0)
- Adds a `pptx_edit` operation to change a slide’s layout with explicit placeholder mappings. (0.5.0) — [release notes](https://github.com/openooxml/betteroffice/releases/tag/%40betteroffice/pptx%400.5.0)
- Adds a `setShapeAdjust` step to edit batches. (0.5.0) — [release notes](https://github.com/openooxml/betteroffice/releases/tag/%40betteroffice/pptx%400.5.0)
- Adds a `setSlideBackground` step to edit batches. (0.5.0) — [release notes](https://github.com/openooxml/betteroffice/releases/tag/%40betteroffice/pptx%400.5.0)
- Adds an opt-in API to change a slide’s layout with explicit placeholder mappings. (0.5.0) — [release notes](https://github.com/openooxml/betteroffice/releases/tag/%40betteroffice/pptx%400.5.0)
- Adds an engine API for setting story paragraphs. (0.5.0) — [release notes](https://github.com/openooxml/betteroffice/releases/tag/%40betteroffice/pptx%400.5.0)

### Performance

- Worker editors join collaboration rooms faster without visibly replaying each retained edit. (0.5.0) — [release notes](https://github.com/openooxml/betteroffice/releases/tag/%40betteroffice/pptx%400.5.0)
- Incoming update bursts merge together to keep the interface responsive and reduce repeated paints. (0.5.0) — [release notes](https://github.com/openooxml/betteroffice/releases/tag/%40betteroffice/pptx%400.5.0)
- Large decks open, render, and edit faster with bounded image memory. (0.5.0) — [release notes](https://github.com/openooxml/betteroffice/releases/tag/%40betteroffice/pptx%400.5.0)

### Behavior and default changes

- Plugin content reads now include effective paragraph lists and slide titles, visibility and layout details by default, with optional fields for compatibility with older engines. (0.5.1) — [release notes](https://github.com/openooxml/betteroffice/releases/tag/%40betteroffice/pptx%400.5.1)
- Duplicated slides receive an independent copy of their comments and replies. (0.5.0) — [release notes](https://github.com/openooxml/betteroffice/releases/tag/%40betteroffice/pptx%400.5.0)
- Now supports legacy PowerPoint threads. (0.5.0) — [release notes](https://github.com/openooxml/betteroffice/releases/tag/%40betteroffice/pptx%400.5.0)
- Now accepts line feeds within runs as soft line breaks. (0.5.0) — [release notes](https://github.com/openooxml/betteroffice/releases/tag/%40betteroffice/pptx%400.5.0)
- Worker-editor refusals of synchronous access report this error code. (0.5.0) — [release notes](https://github.com/openooxml/betteroffice/releases/tag/%40betteroffice/pptx%400.5.0)
- Tab and Shift+Tab in a table cell select the next or previous cell’s text, wrapping across rows; Tab in the last cell keeps the selection there, and adding a row from it is unsupported. (0.5.0) — [release notes](https://github.com/openooxml/betteroffice/releases/tag/%40betteroffice/pptx%400.5.0)
- Table edits preserve formatting, refresh refs, and support undo; they are refused in collaborative sessions, on merged tables, and for cells with text fields. New cells take one line. (0.5.0) — [release notes](https://github.com/openooxml/betteroffice/releases/tag/%40betteroffice/pptx%400.5.0)
- Collaboration now runs inside the presentation worker by default for worker editors. (0.5.0) — [release notes](https://github.com/openooxml/betteroffice/releases/tag/%40betteroffice/pptx%400.5.0)

### Fixes and other changes

- Bar and column data labels now follow PowerPoint and Excel placement, including placement for negative bars, horizontal bars and stacked charts. (0.5.1) — [release notes](https://github.com/openooxml/betteroffice/releases/tag/%40betteroffice/pptx%400.5.1)
- Chart axes now honor tick label position: none hides labels and frees plot space, high moves labels to the far side, and a deleted category axis draws no labels. (0.5.1) — [release notes](https://github.com/openooxml/betteroffice/releases/tag/%40betteroffice/pptx%400.5.1)
- Presentations now open and show every slide when font downloads fail; text falls back to available fonts and the editor logs one console warning. (0.5.1) — [release notes](https://github.com/openooxml/betteroffice/releases/tag/%40betteroffice/pptx%400.5.1)
- Pie and doughnut data labels now follow PowerPoint and Excel placement, including placement inside or outside slices and within a doughnut ring. (0.5.1) — [release notes](https://github.com/openooxml/betteroffice/releases/tag/%40betteroffice/pptx%400.5.1)
- Duplicating slides now preserves legacy and modern comment extensions and reply threading, keeping replies added to copied comments attached to the copied discussion. (0.5.1) — [release notes](https://github.com/openooxml/betteroffice/releases/tag/%40betteroffice/pptx%400.5.1)
- Slide text is now drawn word by word at layout positions to preserve PowerPoint word placement despite browser font metric differences, while retaining shaping, combining marks and right-to-left text. (0.5.1) — [release notes](https://github.com/openooxml/betteroffice/releases/tag/%40betteroffice/pptx%400.5.1)
- Table cell text without its own size or formatting now inherits the slide master's other text style, using the presentation default only for levels the master omits. (0.5.1) — [release notes](https://github.com/openooxml/betteroffice/releases/tag/%40betteroffice/pptx%400.5.1)
- Shapes with a theme effect reference now draw the theme's outer shadow; sessions from earlier versions recover shadows when their source is attached without changing the stored format. (0.5.1) — [release notes](https://github.com/openooxml/betteroffice/releases/tag/%40betteroffice/pptx%400.5.1)
- Zero-valued bar and column labels now sit on the side indicated by the value axis, including when the axis is reversed. (0.5.1) — [release notes](https://github.com/openooxml/betteroffice/releases/tag/%40betteroffice/pptx%400.5.1)
- The default editor shows a proposals button with the pending count and opens the panel; it is hidden in read-only viewers and when proposals are unavailable. (0.5.0) — [release notes](https://github.com/openooxml/betteroffice/releases/tag/%40betteroffice/pptx%400.5.0)
- Text edits avoid unnecessary inherited autofit overrides and save changed fits for overflowing text. (0.5.0) — [release notes](https://github.com/openooxml/betteroffice/releases/tag/%40betteroffice/pptx%400.5.0)
- Collaborative decks converge on concurrent shape, slide, and text edits. (0.5.0) — [release notes](https://github.com/openooxml/betteroffice/releases/tag/%40betteroffice/pptx%400.5.0)
- Opening or saving very large documents reports progress, so the watchdog no longer ends sessions merely because work exceeds 60 seconds. (0.5.0) — [release notes](https://github.com/openooxml/betteroffice/releases/tag/%40betteroffice/pptx%400.5.0)
- Charts now render quoted or escaped percent signs as literal text instead of scaling values and adding another percent sign. (0.5.0) — [release notes](https://github.com/openooxml/betteroffice/releases/tag/%40betteroffice/pptx%400.5.0)
- Rendering more faithfully covers preset and custom geometry, pictures, SmartArt fallbacks, text layout, shadows, and legacy embedded object previews. (0.5.0) — [release notes](https://github.com/openooxml/betteroffice/releases/tag/%40betteroffice/pptx%400.5.0)
- The presentation editor draws shadows at their offset again instead of shifting them up and left or cutting them off. (0.5.0) — [release notes](https://github.com/openooxml/betteroffice/releases/tag/%40betteroffice/pptx%400.5.0)
- Text edits keep authored formatting. (0.5.0) — [release notes](https://github.com/openooxml/betteroffice/releases/tag/%40betteroffice/pptx%400.5.0)

## @betteroffice/pptx 0.2

### Breaking changes

- Collaboration updates now carry deck schema 2.2, and opening a 0.1.x update migrates it to 2.2; mixed-version collaboration across the upgrade is unsupported. (0.2.0) — [release notes](https://github.com/openooxml/betteroffice/releases/tag/%40betteroffice/pptx%400.2.0)
- Adds awaited input flushing; save now throws while input or a pointer gesture is pending, so callers must flush first. (0.2.0) — [release notes](https://github.com/openooxml/betteroffice/releases/tag/%40betteroffice/pptx%400.2.0)
- PptxEditorApi.save() now throws after the presentation is replaced instead of returning bytes that may omit accepted input. (0.2.0) — [release notes](https://github.com/openooxml/betteroffice/releases/tag/%40betteroffice/pptx%400.2.0)

### Deprecations

- The prop-based EditorToolbar, Toolbar, and useEditorToolbar continue to work but are deprecated in favor of command and toolbar composition. (0.2.0) — [release notes](https://github.com/openooxml/betteroffice/releases/tag/%40betteroffice/pptx%400.2.0)

### New APIs and options

- Adds pictures to a slide from PNG, JPEG, GIF, BMP, TIFF, WebP, or SVG images up to 8 MiB, checked before the picture reaches the deck. (0.2.0) — [release notes](https://github.com/openooxml/betteroffice/releases/tag/%40betteroffice/pptx%400.2.0)
- Adds plain-data caret positions that follow later edits, undo, redo, and remote updates. (0.2.0) — [release notes](https://github.com/openooxml/betteroffice/releases/tag/%40betteroffice/pptx%400.2.0)
- Applies version-checked edit batches as one transaction and undo step, or returns a typed refusal without changing the deck; batches can exclude themselves from undo history with history: "none". (0.2.0) — [release notes](https://github.com/openooxml/betteroffice/releases/tag/%40betteroffice/pptx%400.2.0)
- Adds APIs to reorder a shape's paint order on its slide. (0.2.0) — [release notes](https://github.com/openooxml/betteroffice/releases/tag/%40betteroffice/pptx%400.2.0)
- Exports presentation content as Markdown; headless rendering from exported content is also available. (0.2.0) — [release notes](https://github.com/openooxml/betteroffice/releases/tag/%40betteroffice/pptx%400.2.0)
- Exports the committed deck as read-only structured content with deterministic IDs, anchors, diagnostics, and optional hidden content, notes, and comments. (0.2.0) — [release notes](https://github.com/openooxml/betteroffice/releases/tag/%40betteroffice/pptx%400.2.0)
- Adds a format-owned text search API to presentation handles. (0.2.0) — [release notes](https://github.com/openooxml/betteroffice/releases/tag/%40betteroffice/pptx%400.2.0)
- Exposes geometry fallback diagnostics on shapes, picture fills, and masks. (0.2.0) — [release notes](https://github.com/openooxml/betteroffice/releases/tag/%40betteroffice/pptx%400.2.0)
- Adds manual undo capture, explicit boundaries, and undoable comment repositioning. (0.2.0) — [release notes](https://github.com/openooxml/betteroffice/releases/tag/%40betteroffice/pptx%400.2.0)
- Opt-in operation profiles are exposed for XLSX edits and display lists, and PPTX layout, edits, and history operations. (0.2.0) — [release notes](https://github.com/openooxml/betteroffice/releases/tag/%40betteroffice/pptx%400.2.0)
- Exposes serializable command state, disabled reasons, platform-aware shortcuts, and an execute method that checks availability after pending input is processed. (0.2.0) — [release notes](https://github.com/openooxml/betteroffice/releases/tag/%40betteroffice/pptx%400.2.0)
- Returns the session version associated with content and search results, enabling version-checked edit batches. (0.2.0) — [release notes](https://github.com/openooxml/betteroffice/releases/tag/%40betteroffice/pptx%400.2.0)
- Allows a missing character to be drawn from a script fallback face registered with this API. (0.2.0) — [release notes](https://github.com/openooxml/betteroffice/releases/tag/%40betteroffice/pptx%400.2.0)
- Hosts can compose built-in controls with their own actions through the toolbar composition API, inside or outside the editor. (0.2.0) — [release notes](https://github.com/openooxml/betteroffice/releases/tag/%40betteroffice/pptx%400.2.0)
- Validates every step of an edit batch against the version it was read at and returns typed refusals for batches that cannot be applied. (0.2.0) — [release notes](https://github.com/openooxml/betteroffice/releases/tag/%40betteroffice/pptx%400.2.0)

### Behavior and default changes

- PPTX pictures stored as SVG are rendered in both backends; browser packages use browser SVG support and Rust and Python rasterize natively. (0.2.0) — [release notes](https://github.com/openooxml/betteroffice/releases/tag/%40betteroffice/pptx%400.2.0)
