Alpine.js 3.16.1
Alpine.js 3.16 is out — and 3.16.1 landed a day later with a quick compatibility fix. Two releases, one week, and a whole pile of polish for the 15 KB framework that keeps winning over backend devs who refuse to learn React.
🎯 New Moves
- .parent modifier for x-intersect — watch intersection on the parent element without extra boilerplate.
- Store cleanup callbacks — direct store interceptors can now pass a cleanup callback.
🐛 Bug Bashes
- Fixed data loss when binding objects to regular attributes.
- Fixed x-if and x-for content duplicating during morph.
- Fixed x-model select value syncing after x-for renders options.
- Fixed x-bind:value on option elements losing the attribute when the value is an empty string.
- Fixed :value bindings not updating custom elements when bound object data mutates.
- Fixed the mask plugin resurrecting keys in objects after they are cleared.
- Fixed persisted single-value stores.
- Preserved x-data scope when its expression changes.
🔧 Quick Follow-up
Alpine 3.16.1 (August 11, 2026) fixes Persist compatibility with older Alpine versions — if you use the persist plugin across mixed versions, grab this one.
⬆️ Upgrade At Your Own Pace
npm i alpinejs — a minor bump plus a patch, no breaking changes in sight. Smooth sailing for most projects.