v31.0.0 shipped on March 13. The headline is <wy-feed> — a proper feed component with search, consolidated sources, and a dedicated post editor. A handful of smaller things round it out: follow/unfollow, a user details overlay, a whenReady() method on every component, and the backend moved to .NET 10.
The feed, reorganized
Until v31, <wy-posts> was both a renderer and an editor crammed into one component. In v31 those jobs split. <wy-posts> renders. <wy-post-editor> posts. And <wy-feed> is the new consolidated surface that renders posts from one or many sources with built-in search.
<wy-feed uid="announcements releases team"></wy-feed>
Pass a single uid or space-separated uids. Toggle the search input on or off via features. Drop <wy-post-editor> next to it if you want users to publish into a specific app.
Migrating from wy-posts
If you used <wy-posts> as the full widget — render + editor in one — the smoothest path is a rename to <wy-feed>:
<!-- before -->
<wy-posts uid="company-updates"></wy-posts>
<!-- after -->
<wy-feed uid="company-updates"></wy-feed>
For views where users publish into a specific app, add the editor next to it:
<wy-feed uid="team-announcements"></wy-feed>
<wy-post-editor uid="team-announcements"></wy-post-editor>
The features prop is now additive
Another breaking change worth flagging: the features attribute is now relative to each component's defaults instead of replacing them. Opt out of a default with a - prefix.
<wy-chat features="meetings -reactions"></wy-chat>
Turn meetings on, keep everything else that's on by default, disable reactions. No more enumerating the full feature list every time you want to toggle one thing.
Follow users, see their details
Follow/unfollow is in, gated behind the follow feature flag. Click a user's name or avatar anywhere in a Weavy component and a details overlay slides in — useful for directory-style navigation without a separate profile page.
whenReady() on every component
Every Weavy component now exposes a whenReady() method that resolves after the component's first render. Handy when you want to imperatively focus an input, scroll to a message, or defer an effect until the component is actually on screen.
const copilot = document.querySelector('wy-copilot');
await copilot.whenReady();
copilot.focus();
And the plumbing
Backend is now on .NET 10. On-prem installations can — experimentally — run on Linux and macOS in addition to Windows. Avatar loading falls back to name initials when the image isn't available. Error handling when the Weavy server is unreachable is cleaner.
Upgrading
-
Rename
<wy-posts>to<wy-feed>where you used it as the full widget. -
Audit your
featuresprops — the semantics are now additive with-to opt out. - Re-check any CSS shadow-part overrides you had on the editor — some names changed.
Full list of changes and breaking notes in the v31.0.0 changelog.