npm / @betteroffice/pptx
@betteroffice/pptx
What changed in @betteroffice/pptx 0.2 to 0.5, from its official release notes, upgrade guides and advisories. Sources checked 2026-10-28.
4 breaking1 deprecations36 new APIs and options3 performance9 behavior and defaults17 fixes and other
See which of these apply to your code, ranked, in your agent:
npx @unstale/cli init@betteroffice/pptx 0.550 changes
Breaking changes 1
Non-PPTX or malformed packages now fail to open.
New APIs and options 21
The new opt-in width value copy preserves existing column widths and refits the table frame; omitting width or choosing split keeps current behavior.
The new opt-in width value copy preserves existing column widths and refits the table frame; omitting width or choosing split keeps current behavior.
Adds optional chunked update application for asynchronous collaboration replicas.
Adds optional chunked state encoding for asynchronous collaboration replicas.
Adds a collaboration entry point for
CollaborationProviderand presence helpers.Adds the worker entry point for the worker command session and worker editor and session exports.
Adds an operation to delete a table column.
Adds an operation to delete a table row.
Adds an engine API to duplicate a slide.
Adds
forkto the engine.Adds an operation to insert a table column.
Adds an operation to insert a table row.
Supports
includeMedia: falseto omit media bytes from inspection results.Layout inventories include placeholder IDs and names, enabling explicit placeholder mapping.
Adds
layoutsto the engine.Adds an experimental worker session for async reads, version-checked edits, saving, and per-slide
call.framedisplay lists.Adds a
pptx_editoperation to change a slide’s layout with explicit placeholder mappings.Adds a
setShapeAdjuststep to edit batches.Adds a
setSlideBackgroundstep to edit batches.Adds an opt-in API to change a slide’s layout with explicit placeholder mappings.
Adds an engine API for setting story paragraphs.
Performance 3
Worker editors join collaboration rooms faster without visibly replaying each retained edit.
Incoming update bursts merge together to keep the interface responsive and reduce repeated paints.
Large decks open, render, and edit faster with bounded image memory.
Behavior and default changes 8
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.
Duplicated slides receive an independent copy of their comments and replies.
Now supports legacy PowerPoint threads.
Now accepts line feeds within runs as soft line breaks.
Worker-editor refusals of synchronous access report this error code.
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.
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.
Collaboration now runs inside the presentation worker by default for worker editors.
Fixes and other changes 17
Bar and column data labels now follow PowerPoint and Excel placement, including placement for negative bars, horizontal bars and stacked charts.
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.
Presentations now open and show every slide when font downloads fail; text falls back to available fonts and the editor logs one console warning.
Pie and doughnut data labels now follow PowerPoint and Excel placement, including placement inside or outside slices and within a doughnut ring.
Duplicating slides now preserves legacy and modern comment extensions and reply threading, keeping replies added to copied comments attached to the copied discussion.
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.
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.
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.
Zero-valued bar and column labels now sit on the side indicated by the value axis, including when the axis is reversed.
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.
Text edits avoid unnecessary inherited autofit overrides and save changed fits for overflowing text.
Collaborative decks converge on concurrent shape, slide, and text edits.
Opening or saving very large documents reports progress, so the watchdog no longer ends sessions merely because work exceeds 60 seconds.
Charts now render quoted or escaped percent signs as literal text instead of scaling values and adding another percent sign.
Rendering more faithfully covers preset and custom geometry, pictures, SmartArt fallbacks, text layout, shadows, and legacy embedded object previews.
The presentation editor draws shadows at their offset again instead of shifting them up and left or cutting them off.
Text edits keep authored formatting.
@betteroffice/pptx 0.220 changes
Breaking changes 3
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.
Adds awaited input flushing; save now throws while input or a pointer gesture is pending, so callers must flush first.
PptxEditorApi.save() now throws after the presentation is replaced instead of returning bytes that may omit accepted input.
Deprecations 1
The prop-based EditorToolbar, Toolbar, and useEditorToolbar continue to work but are deprecated in favor of command and toolbar composition.
New APIs and options 15
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.
Adds plain-data caret positions that follow later edits, undo, redo, and remote updates.
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".
Adds APIs to reorder a shape's paint order on its slide.
Exports presentation content as Markdown; headless rendering from exported content is also available.
Exports the committed deck as read-only structured content with deterministic IDs, anchors, diagnostics, and optional hidden content, notes, and comments.
Adds a format-owned text search API to presentation handles.
Exposes geometry fallback diagnostics on shapes, picture fills, and masks.
Adds manual undo capture, explicit boundaries, and undoable comment repositioning.
Opt-in operation profiles are exposed for XLSX edits and display lists, and PPTX layout, edits, and history operations.
Exposes serializable command state, disabled reasons, platform-aware shortcuts, and an execute method that checks availability after pending input is processed.
Returns the session version associated with content and search results, enabling version-checked edit batches.
Allows a missing character to be drawn from a script fallback face registered with this API.
Hosts can compose built-in controls with their own actions through the toolbar composition API, inside or outside the editor.
Validates every step of an edit batch against the version it was read at and returns typed refusals for batches that cannot be applied.
Behavior and default changes 1
PPTX pictures stored as SVG are rendered in both backends; browser packages use browser SVG support and Rust and Python rasterize natively.