# What changed in pycrdt

> 31 changes in pycrdt 0.12 to 0.14 from its official release notes, upgrade guides and advisories: 9 breaking, 10 new APIs and options. Each one cited. Sources checked 2026-11-12. HTML: https://unstale.sh/pypi/pycrdt/

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

## pycrdt 0.14

### Breaking changes

- 32-bit wheels are no longer published, affecting installation options for 32-bit platforms. (0.14.13) — [release notes](https://github.com/y-crdt/pycrdt/releases/tag/0.14.13)
- Python 3.10 support is dropped and Python 3.15 is added. (0.14.9) — [release notes](https://github.com/y-crdt/pycrdt/releases/tag/0.14.9)
- Text and XmlText diff() return pycrdt types for embeds. (0.14.2) — [release notes](https://github.com/y-crdt/pycrdt/releases/tag/0.14.2)
- The Array.move method was removed. (0.14.0) — [release notes](https://github.com/y-crdt/pycrdt/releases/tag/0.14.0)
- UndoManager no longer accepts a doc. (0.14.0) — [release notes](https://github.com/y-crdt/pycrdt/releases/tag/0.14.0)

### New APIs and options

- Adds a Provider.synced event for initial synchronization. (0.14.10) — [release notes](https://github.com/y-crdt/pycrdt/releases/tag/0.14.10)
- Undo managers now support origins, allowing developers to use origins with undo management. (0.14.5) — [release notes](https://github.com/y-crdt/pycrdt/releases/tag/0.14.5)
- `Doc` now accepts a `guid` argument. (0.14.3) — [release notes](https://github.com/y-crdt/pycrdt/releases/tag/0.14.3)
- Adds AttrRange as a new API. (0.14.1) — [release notes](https://github.com/y-crdt/pycrdt/releases/tag/0.14.1)
- Adds ContentAttribute as a new API. (0.14.1) — [release notes](https://github.com/y-crdt/pycrdt/releases/tag/0.14.1)
- Adds IdMap as a new API. (0.14.1) — [release notes](https://github.com/y-crdt/pycrdt/releases/tag/0.14.1)

### Performance

- XML children iteration performance was improved. (0.14.6) — [release notes](https://github.com/y-crdt/pycrdt/releases/tag/0.14.6)

### Behavior and default changes

- Allows embedding Array, Map and Text shared types in a Text. (0.14.2) — [release notes](https://github.com/y-crdt/pycrdt/releases/tag/0.14.2)

### Fixes and other changes

- Fixes update stream closure during provider shutdown. (0.14.13) — [release notes](https://github.com/y-crdt/pycrdt/releases/tag/0.14.13)
- Invalidates borrowed callback views. (0.14.10) — [release notes](https://github.com/y-crdt/pycrdt/releases/tag/0.14.10)
- Fixes cleanup across threads. (0.14.10) — [release notes](https://github.com/y-crdt/pycrdt/releases/tag/0.14.10)
- Drains pending provider updates on normal context exit. (0.14.10) — [release notes](https://github.com/y-crdt/pycrdt/releases/tag/0.14.10)
- Caches node IDs to fix deleted XML children. (0.14.8) — [release notes](https://github.com/y-crdt/pycrdt/releases/tag/0.14.8)

## pycrdt 0.13

### Breaking changes

- DeleteSet was renamed to IdSet. (0.13.0) — [release notes](https://github.com/y-crdt/pycrdt/releases/tag/0.13.0)
- IdSet replaces DeleteSet. (0.13.0) — [release notes](https://github.com/y-crdt/pycrdt/releases/tag/0.13.0)

### New APIs and options

- Adds insert_xmlelement_prelim to XmlText. (0.13.1) — [release notes](https://github.com/y-crdt/pycrdt/releases/tag/0.13.1)
- Adds insert_xmltext_prelim to XmlText. (0.13.1) — [release notes](https://github.com/y-crdt/pycrdt/releases/tag/0.13.1)
- Events now have a transaction attribute. (0.13.0) — [release notes](https://github.com/y-crdt/pycrdt/releases/tag/0.13.0)

### Behavior and default changes

- Document client IDs are now encoded using 53 bits instead of 64 bits. (0.13.0) — [release notes](https://github.com/y-crdt/pycrdt/releases/tag/0.13.0)

## pycrdt 0.12

### Breaking changes

- Exceptions from observer callbacks are raised together in an exception group. (0.12.45) — [release notes](https://github.com/y-crdt/pycrdt/releases/tag/0.12.45)
- PyPy 3.10 is no longer supported. (0.12.41) — [release notes](https://github.com/y-crdt/pycrdt/releases/tag/0.12.41)

### New APIs and options

- UndoManager stack items are now exposed. (0.12.44) — [release notes](https://github.com/y-crdt/pycrdt/releases/tag/0.12.44)

### Behavior and default changes

- pycrdt is now a namespace package, changing how the package can be structured and distributed. (0.12.43) — [release notes](https://github.com/y-crdt/pycrdt/releases/tag/0.12.43)

### Tooling

- Wheels are now built for musllinux, making the package available as wheels for that platform. (0.12.47) — [release notes](https://github.com/y-crdt/pycrdt/releases/tag/0.12.47)

### Fixes and other changes

- Fixes concurrent async transactions. (0.12.50) — [release notes](https://github.com/y-crdt/pycrdt/releases/tag/0.12.50)
- Tuple handling now converts tuples to lists. (0.12.48) — [release notes](https://github.com/y-crdt/pycrdt/releases/tag/0.12.48)
