Author: Matthias Pfefferle

  • WordPress Federation: Recap of 2025

    WordPress Federation: Recap of 2025

    In June, we published our 2025 roadmap: Building the Future of WordPress Federation, outlining the areas we wanted to focus on for the rest of the year.

    As we step into 2026, it’s time to look back at how the roadmap held up and what we shipped in 2025.

    2025 at a Glance

    2025 turned out to be an ambitious and, at times, challenging timeline. Even so, we were able to make meaningful progress across most of the areas we set out to work on.

    Over the course of the year, we introduced the Following feature, significantly expanded moderation tooling, refined actor handling, and improved the reliability and performance of core federation workflows. Along the way, we also shipped a first experimental draft of the Reader, offering an early look at what reading the Fediverse inside WordPress could become.

    Not everything on the roadmap was completed, but we’re happy with how much we were able to achieve and with the foundations that are now in place for what comes next.

    Roadmap

    Below is a review of the roadmap topics we outlined for 2025, what we worked on, and what remains open.

    Followers / Following ✅

    Work in 2025 expanded ActivityPub beyond followers by introducing the Following feature, allowing WordPress sites and users to actively follow accounts on the Fediverse.

    WordPress admin Followings page showing a list of 3 accepted follows: notiz.blog, pfefferle (Matthias Pfefferle), and obenland (Konstantin Obenland). The page includes a Follow form for adding new followers via username or profile link, bulk actions dropdown, and an explanation of the ActivityPub follow request protocol.

    Alongside this, we improved the reliability and performance of both follower and following lists, including better synchronization across instances and faster resolution and display of large collections.

    This work also laid the foundation for later features, such as the experimental Reader.

    Related release posts:

    Actors ✅

    We continued refining how local and remote actors are represented and resolved. Internal refactors reduced special-case handling and improved consistency and performance across actor resolution, including follower, following, and block lists.

    This work primarily affected internal behavior rather than user-facing UI.

    Related release posts:

    Moderation ✅

    In 2025, ActivityPub-specific moderation was significantly expanded. Site-wide and personal blocking now cover domains, keywords, and individual actors, with consistent checks applied to incoming activities.

    User profile settings in WordPress displaying options to block ActivityPub domains and keywords, with fields to add or remove entries.

    We added blocklist subscriptions with scheduled syncing and bulk domain imports, including support for community-maintained lists such as the IFTAS DNI list. Moderation handling was also refined with improved reject behavior for quote interactions.

    Related release posts:

    Reader 🧪

    A screenshot of the reader implementation.

    An experimental Reader UI was introduced behind a feature flag. When enabled, it adds a “Social Web” area to the dashboard where posts and shares from followed accounts can be read inside WordPress.

    The feature is disabled by default and explicitly marked as experimental.

    Related release posts:

    Direct Messages ⏸️

    Direct Messages were not implemented in 2025. This remains an open roadmap topic for future consideration once related foundations mature further.

    Fully Delete Profiles ✅

    Deletion semantics were improved to better support explicit federated cleanup. Delete activities are now sent when WordPress users are removed, and deletion-related handling was aligned across activity processing.

    A CLI-based self-destruct command was introduced to allow site owners to explicitly remove their site’s federated presence.

    Related release posts:

    Client-to-Server API ⏸️

    Client-to-Server API support was not implemented in 2025. No user-facing features shipped under this topic.

    Beyond the Roadmap

    While the roadmap helped guide our focus in 2025, not everything that shipped was planned from the start. Some features emerged from day-to-day usage, feedback, and practical needs that became clearer over time.

    A few of those are worth highlighting.

    Quotes

    Support for quote interactions improved significantly over the year. We refined detection and handling of quoted replies and links, added proper handling for quote comments, and improved how quote permissions are revoked when quoted content is deleted. This made quoted interactions more reliable and consistent across instances.

    Related release posts:

    Onboarding

    We also improved onboarding for new users by adding clearer guidance and better defaults after plugin activation. This helped reduce friction for sites federating for the first time and made initial setup more approachable.

    Related release posts:

    Extra Fields UI

    While not originally planned as a roadmap item, work on Extra Fields resulted in a more flexible and user-friendly UI. New blocks and layout options made it easier to display federated profile data in different formats, allowing themes to choose how much structured information to surface.

    Related release posts:

    Wrapping up

    Looking back, 2025 was a year of steady progress. We focused on the foundations we set out to improve, shipped meaningful features along the way, and left room for unplanned work that addressed real needs as they came up.

    Now we’d love to hear from you: What was your favorite feature this year? What are you most excited about and what do you still miss or hope to see next?

    Your feedback has shaped this project throughout 2025, and it continues to guide where we go from here. We’re already working on our 2026 timeline, and your ideas, experiences, and questions are an important part of that process.

    Thanks for being part of the journey and see you on the Fediverse.

  • 7.8.0 – Happy Holidays

    7.8.0 – Happy Holidays

    As the year winds down, we’ve wrapped up a release that brings better moderation tools, a new way to display reactions, and a small surprise, just in time for the holidays.

    Stronger Tools for Moderation

    Moderation can be hard work, especially on the Fediverse, where conversations flow in from all directions. This release introduces new tools that help you stay in control with less manual effort.

    You can now subscribe to shared blocklists and let the plugin keep them up to date automatically. Subscribed lists are synced on a weekly cadence, so changes made upstream are reflected on your site without you having to lift a finger.

    A screenshot of the block list subscription feature.

    On top of that, we’ve added a bulk domain blocklist importer. You can upload a CSV or plain text file, including Mastodon-style exports, and quickly add large numbers of domains at once. To make it even easier to get started, the importer includes a one-click option for the popular community-maintained IFTAS DNI list (@about.iftas.org).

    A screenshot of the block list importer feature.

    Together, these features make moderation more scalable and less stressful, so you can spend more time engaging and less time firefighting.

    Reactions, Your Way

    Reactions are a big part of how conversations feel alive on the Fediverse, and now you have more control over how they appear on your site.

    The Fediverse Reactions block gained a new Summary display style. Instead of showing a facepile of avatars, this option presents reactions as clean, inline counters for comments, likes, boosts, and replies. It’s a great fit for minimal layouts, feeds, or sites where avatars are disabled.

    A screenshot of the compact reactions.

    You can switch between the classic facepile and the new summary style directly in the block settings. And if avatars are turned off in discussion settings, the block automatically falls back to the summary view.

    A Sneak Peek at the Reader (Experimental)

    One more thing, for the curious among you, there’s now an early preview of the ActivityPub Reader, hidden behind a feature flag in the Advanced settings tab. If you don’t see it yet, open Screen Options at the top right of the ActivityPub settings page, check “Advanced Settings,” and save. That reveals the Advanced tab where you can enable the Reader.

    A screenshot of the reader implementation.

    When enabled, this adds a new “Social Web” submenu to your Dashboard menu item. An place where you can read posts and shares from accounts you follow, turning your WordPress admin into a lightweight Fediverse reader.

    Because this is still very much a work in progress, the Reader is disabled by default and clearly marked as experimental. The UI, behavior, and feature set will change significantly in future releases as we explore what a great native Fediverse reading experience inside WordPress could look like.

    If you enjoy testing new ideas, we’d love to hear your feedback, whether it’s bug reports, rough edges you’ve noticed, or ideas about what this Reader should become. Early input helps shape where this goes next, so feel free to share your thoughts in whatever form works best for you.

    Changelog

    Added

    • Add blocklist subscriptions for automatic weekly synchronization of remote blocklists.
    • Add compact display style to Reactions block that hides avatars.
    • Add domain blocklist importer for bulk importing blocked domains.
    • Add image optimization for imported attachments (resize to 1200px max, convert to WebP).
    • Add local caching for remote actor avatars.
    • Add relay mode to forward public activities to all followers.
    • Add scheduled cleanup for remote posts, preserving posts with local user interactions.
    • Add site health check to warn when DISABLE_WP_CRON may impact ActivityPub functionality.
    • Add Social Web Reader for browsing ActivityPub content directly in WordPress admin.
    • Delete remote posts on plugin uninstall.
    • Mastodon importer now imports self-replies as comments, preserving thread structure.

    Changed

    • Cache expensive operations in Post transformer to improve performance.
    • Improve performance and reliability of @-mention detection.
    • Reduce federated content size by removing unnecessary HTML attributes.
    • Skip downloading video and audio attachments, embedding remote URLs directly to avoid storage limits.
    • Use stable term_id-based IDs for Term transformer to ensure federation consistency.
    • Wrap blocked domains and keywords tables in collapsible details element.

    Fixed

    • Respect WordPress “show avatars” setting for remote actor avatars.
    • Ensure NodeInfo accurately represents site administrators to the Fediverse.
    • Fediverse Followers block now works correctly when the “Hide Social Graph” privacy option is enabled.
    • Fix NodeInfo documents to comply with schema specification.
    • Follow Me block button-only style now respects width settings from the inner Button block.
    • Preserve whitespace inside preformatted elements when federating content.

    Downloads

    Holiday Thanks

    A special thank-you to everyone who joined us during the recent office hours — for the questions, the thoughtful feedback, and the great conversations about where ActivityPub for WordPress should go next. Talking directly with you helps shape these releases more than any roadmap ever could.

    See you in 2026 — and happy holidays!

  • 7.6.0 — Command, Sync & Go

    This release puts speed and control right at your fingertips. Whether you’re jumping between settings, syncing followers, or handling quotes in real time, version 7.6.0 makes managing your Fediverse presence faster and more intuitive than ever.

    Wapuu, the yellow WordPress mascot, pilots a small spaceship shaped like the WordPress ‘W’ through a glowing Fediverse nebula. Light trails and floating ActivityPub icons surround the ship, symbolizing fast, effortless navigation through connected worlds.

    Navigate in a Flash

    Say hello to the quickest way to move around your ActivityPub settings.

    In preparation for WordPress 6.9, which brings the Command Palette (Cmd/Ctrl + K) to the entire wp-admin, the plugin now adds its own commands, giving you instant, keyboard-driven access to your workflows anywhere in WordPress.

    Type “ActivityPub” and you’ll see context-aware commands that adapt to your site setup and user role. Whether you’re managing a blog actor or a user actor, you can open followers and following lists, check blocked actors, jump straight to your settings, or even search and edit extra fields — all without ever leaving the Command Palette.

    A screenshot of the Command Palette in action.

    Every command includes the ActivityPub icon for easy recognition. Just press Cmd + K or Ctrl + K, start typing, and go — it’s the smoothest way yet to pilot your Fediverse setup.

    Stay in Sync Across the Fediverse

    Your follower lists now stay accurate wherever you connect.
    With support for Follower Synchronization (FEP-8fcf), the plugin automatically keeps your followers collection in step with other servers — even when things drift out of sync.

    If differences appear, background tasks quietly reconcile them, keeping your lists clean and consistent. The result is a smoother, more reliable experience across the entire Fediverse — no manual fixes required.

    Speed When It Counts

    Quoted posts and follow confirmations now move at the speed of conversation.

    A new immediate Accept dispatch system sends responses as soon as they’re created, instead of waiting for the next scheduled queue.

    That means faster follow confirmations and quicker quote acknowledgments, making interactions feel more natural across the Fediverse. Behind the scenes, those Accept messages go straight to the right inboxes — including mentioned and replied-to users — while a scheduled backup ensures full compatibility with slower servers.

    It’s a smart balance between speed and reliability, helping your posts and follows appear almost instantly.

    Privacy, Your Way

    Want to keep your social graph private? You can now hide your followers and following lists from public view while keeping all relationships intact. Your followers still follow — they’re just hidden when you prefer a little more privacy.

    Full Changelog

    Added

    • Add bidirectional transforms between reply and embed blocks for improved user experience.
    • Add Command Palette integration for quick navigation to ActivityPub admin pages
    • Added a new ap_object post type and taxonomies for storing and managing incoming ActivityPub objects, with updated handlers
    • Added a privacy option to hide followers and following lists from profiles while keeping follow relationships intact.
    • Added a scheduled task and setting to automatically purge old inbox items, helping maintain site performance and storage control.
    • Added fallback to trigger create handling when updates fail for missing posts or comments, ensuring objects are properly created.
    • Added immediate dispatch for Accept activities to speed up quoted posts while keeping scheduled processing for compatibility with other instances.
    • Added new configuration options to better manage traffic spikes when federating posts, allowing finer control over retry limits, delays, and batch pauses.
    • Added support for FEP-8fcf follower synchronization, improving data consistency across servers with new sync headers, digest checks, and reconciliation tasks.
    • Add LiteSpeed Cache integration to prevent ActivityPub JSON responses from being cached incorrectly. Includes automatic .htaccess rules and Site Health check to ensure proper configuration.
    • Add quote visibility setting for Classic Editor users.
    • Add unified attachment processor for handling ActivityPub media imports from both remote URLs and local files, with automatic media block generation and Classic Editor support.
    • Integrate Federated Reply block with WP.com Reader’s post share functionality, allowing users to reply to ActivityPub posts directly from the Reader.

    Changed

    • Added support for FEP-3b86 Activity Intents, extending WebFinger and REST interactions with new Create and Follow intent links.
    • Added support for the latest NodeInfo (FEP-0151), with improved federation details, staff info, and software metadata for better ActivityPub compliance.
    • Extended inbox support for undoing Like, Create, and Announce activities, with refactored undo logic and improved activity persistence.
    • Improved Classic Editor integration by adding better media handling and full test coverage for attachments, permissions, and metadata.
    • Improved delivery of public and follower activities by expanding local recipient handling to include all ActivityPub-capable users and follower collections.
    • Improved inbox performance by batching and deduplicating activities, reducing redundant processing and improving handling during high activity periods.
    • Improved REST API responses with smarter context handling.
    • Improved REST collection pagination by using explicit total item counts for more accurate results.
    • Moved default visibility handling from the server to the editor UI, ensuring consistent and flexible ActivityPub visibility settings across both block and classic editors.
    • Prevented self-announcing by ignoring announces from the blog actor, while still processing announces from user and external actors.
    • Refactored activity handling to support multiple recipients per activity, allowing posts and interactions to be linked to several local users at once.
    • Refactored avatar handling into a new system that stores and manages avatars per remote actor, improving reliability and preparing for future caching support.
    • Refactored the inbox system to use a shared inbox, storing activities once with multiple recipients for improved efficiency and reduced duplication.
    • Reorganize integration loader and move Stream integration into dedicated folder structure.
    • Reply posts: do not display post title before @mentions in posts that are replies to somebody else
    • Simplified configuration by always enabling the shared inbox and removing its separate setting, UI field, and related logic.
    • Simplified inbox storage settings, allowing certain activities (like deletes) to be skipped to reduce unnecessary database use.
    • Simplify follow() API return types to int|WP_Error for better predictability.
    • Updated inbox handling to support multiple users receiving the same activity and improve overall data consistency.
    • Updated mailer hooks to send notifications only when activities are successfully handled, preventing emails for failed events.
    • Update plugin short description to be more user-friendly.

    Fixed

    • Reply block now properly validates ActivityPub URLs before setting inReplyTo field
    • Added a safeguard to ensure the plugin works correctly even when no post types are selected.
    • Added a safety check to prevent errors when resolving comment author hostnames without a valid IP address.
    • Fixed activity processing to handle QuoteRequest and other edge cases more reliably.
    • Fixed an issue with post content templates to ensure the correct fallback is always applied.
    • Fixed fatal error when transformer Factory receives WP_Error objects.
    • Fixed HTML entity encoding in extra field names when displayed on ActivityPub platforms
    • Fixed typo in example, improve quoting description.
    • Fix Following table error message to display user input instead of empty string when webfinger lookup fails.
    • Fix infinite recursion when storing remote actors with mentions in their bios
    • Fix local inbox delivery to use internal REST API instead of HTTP, enabling local follows and proper boost counting.
    • Fix logic errors in Move handler: remove redundant assignment and fix variable name collision.
    • Fix public key retrieval for GoToSocial profiles with path-based key URLs.
    • Improved actor resolution by prioritizing blog actor detection before remote actor checks and refining home page URL handling.
    • Improved handling of empty fields for better compatibility with Pixelfed and more consistent fallback behavior across actor names, URLs, and related data.
    • Improved hashtag encoding for consistent formatting.
    • Improved Jetpack integration by initializing it during the WordPress startup process.
    • Refactored Mastodon import handling to use consistent array-based data, improving reliability and compatibility across all import scenarios.

    Downloads

    Thanks, Crew!

    Big thanks to everyone who contributed code, feedback, and testing to make this release possible. You keep ActivityPub evolving with every version.

    Version 7.6.0 is now live — update today and enjoy lightning-fast navigation, smarter synchronization, and smoother federation! ❤️

  • 7.4.0 – More Control, Less Waiting

    Fediverse life just got a little easier! This release is all about giving you more confidence in how you manage your users — and making your follower, following, and block lists feel lightning fast. Let’s dive in.

    Wapuu, the yellow WordPress mascot, floats in space wearing a gray astronaut suit. In front of Wapuu is a spaceship control panel with the WordPress logo and the Fediverse logo, each with checkboxes. Below them is a large glowing orange ‘CONFIRM’ button. Wapuu points toward the panel, symbolizing making a choice.

    Clean Breaks, Done Right

    Until now, removing someone’s ActivityPub capability in WordPress only affected their local account. Their presence in the Fediverse lingered on. With this release, you’re in charge of what happens next.

    When you remove ActivityPub capabilities from users on your site, you’ll now see a confirmation step:

    A screenshot of the confirmation step that shows after removing the ActivityPub capability from users.

    With this change, you can decide whether you’re simply adjusting roles inside WordPress, or making a complete exit across the network.

    We’ve also expanded delete handling to cover more scenarios:

    • Comment removal: Permanently deleted federated comments now send a Delete activity across the Fediverse.
    • Virtual deletes & restores: You can now remove objects from the Fediverse without deleting them locally — and bring them back if needed.
    • WP-CLI command for Actors: A new command makes it easier to manage and clean up Actors directly from the command line.

    Together, these tools make sure your Fediverse presence stays consistent with the choices you make in WordPress.

    Lists That Load in a Snap

    Managing your Fediverse connections shouldn’t feel slow — and now it doesn’t. The follower, following, and block lists are noticeably faster and more reliable in this release.

    Behind the scenes, we cleaned up and centralized how account information is resolved. Instead of each list handling things in its own way, they now all share a single, streamlined method with built-in caching. That means less duplication, less waiting, and a smoother experience every time you browse your lists — even on larger sites.

    Full Changelog

    Added

    • Add activitypub_json REST field for ap_actor posts to access raw JSON data.
    • Add Delete activity support for permanently deleted federated comments.
    • Added a new WP-CLI command to manage Actors.
    • Added confirmation step for bulk removal of ActivityPub capability, asking whether to also delete users from the Fediverse.
    • Adds support for virtual deletes and restores, allowing objects to be removed from the fediverse without being deleted locally.
    • Add Yoast SEO integration for media pages site health check.
    • Optimized WebFinger lookups by centralizing and caching account resolution for faster, more consistent handling across lists.

    Changed

    • Clarified the ‘attachment’ post type description to explain it refers to media library uploads and recommend disabling federation in most cases.
    • Hide site-wide checkbox in block confirmations when accessed from ActivityPub settings page.
    • Improved ActivityPub compatibility by aligning with Mastodon’s Application Actor.
    • It’s now possible to reply to multiple posts using multiple reply blocks.
    • Refactored Reply block to use WordPress core embed functionality for better compatibility and performance.
    • Use wp_interactivity_config() for static values instead of wp_interactivity_state() to improve performance and code clarity.

    Deprecated

    • ActivityPub now defaults to automated object type selection, with the old manual option moved to Advanced settings for compatibility.

    Fixed

    • Fix content visibility override issue preventing authors from changing visibility on older posts.
    • Fix PHP warning when saving ActivityPub settings.
    • Fix query args preservation in collection pagination links.
    • Fix release script to catch more ‘unreleased’ deprecation patterns that were previously missed during version updates.
    • Fix reply block rendering inconsistency where blocks were always converted to @-mentions in ActivityPub content. Now only first reply blocks become @-mentions, others remain as regular links.
    • Stop sending follow notifications to the Application user, since system-level accounts cannot be followed.

    Downloads

    Thanks

    High-fives to everyone who helped chart the course, whether you coded, tested, spotted bugs, or just cheered from the sidelines. You keep this ship flying! 🚀

    Version 7.4.0 has just landed—jump in and tell us how it feels out there in the Fediverse.

  • Help Shape the Future of Moderation in the Fediverse

    Running a community in the Fediverse means balancing openness with safety. Every year, @iftas takes the pulse of administrators, moderators, and community managers with their Annual Needs Assessment. This survey helps identify what’s working, where support is needed, and which tools can make a difference for those keeping decentralized spaces safe.

    The 2025 survey is now open

    Take part in the IFTAS Needs Assessment (5–10 minutes).

    (If you haven’t seen them before, you can also take a look at last year’s report)

    Last year’s responses represented moderators of over 4.3 million accounts across ActivityPub platforms. With WordPress now the largest group of federating instances, it’s especially important for our community of hosts, site admins, and moderators to be heard.

    Moderation in WordPress: From Site-Wide to Personal Controls

    We recently introduced a major update to the ActivityPub plugin for WordPress: personalized and site-wide moderation tools.

    • Site administrators can now set domain, keyword, and actor-level blocks that protect the entire site.
    • Individual users can fine-tune their own experience with personal blocks, managed directly from their profiles.
    • Content is checked against both global and personal rules—so moderation works at every level.

    These improvements directly address needs raised in previous IFTAS surveys, making moderation more discoverable, flexible, and effective for WordPress communities in the Fediverse.

    Your Input Matters

    IFTAS uses the Needs Assessment to guide tools, policies, and advocacy that reflect the real-world challenges of moderators—especially those in under-resourced communities. The more representative the responses, the stronger the outcomes for everyone.

    If you’re running a federating WordPress site, please consider:

    1. Filling out the survey yourself.
    2. Sharing it with other admins, moderators, and community organizers.
    3. Reminding folks that it’s anonymous, quick, and impactful.

    Together, we can keep building a safer, healthier Fediverse—one that reflects the needs of its communities.

  • Bridging the gap

    The image shows the fediverse Wapuu is building a bridge from the Bluesky Space Station to the Fediverse Space Station.

    The Fediverse is intended to be an interoperable, decentralized social network where users can connect across platforms and tools. In practice, though, the reality is more fragmented.

    According to Wikipedia:

    The majority of Fediverse platforms are based on free and open-source software, and create connections between servers using the ActivityPub protocol.

    Still, networks like Bluesky, Nostr, and Diaspora take their own technical paths toward the same vision, which means the fediverse isn’t fully connected just yet.

    Bridgy Fed

    To help address this gap, Ryan Barrett (@snarfed.org) began developing Bridgy Fed, a tool designed to connect these otherwise separate networks:

    Bridgy Fed connects web sites, the fediverse, and Bluesky. You can use it to make your profile on one visible in another, follow people, see their posts, and reply and like and repost them. Interactions work in both directions as much as possible.

    With even more networks on the list.

    While it’s not a native solution, it does help connect people today—and I really appreciate the perspective of Anuj Ahooja (@quillmatiq), CEO of A New Social, the organization behind Bridgy Fed:

    The future of the open social web is people connecting with people no matter what technology they happen to choose. And if bridges and duct tape is what’s necessary, then we’ll continue building bridges, because it’s connections and community over everything.

    You can easily connect your blog to Bluesky using Bridgy by following a few simple steps.

    Bridge your Blog

    You can connect your blog to Bluesky using any self-hosted WordPress site or a paid WordPress.com plan.

    First, go to the ActivityPub settings and open the Screen Options at the top right. Enable the Advanced Settings checkbox and click Save.

    This will reveal the Advanced tab in the settings, where you’ll find the Following User Interface option. Enable that as well.

    Once this feature is active, you’ll be able to access the Following subpage.

    To follow the Bluesky account, enter bsky.brid.gy@bsky.brid.gy into the input box on the left and click Follow. The account should appear in your list shortly. After a few minutes, your follow request will be accepted, and the account will follow your blog back.

    You can verify the connection by checking your Followers list. From this point on, all your new blog posts will also be published on Bluesky. You’ll receive reactions to your posts and even follow requests from Bluesky users.

    That’s it! All your upcoming posts will also be published on Bluesky, you will receive all reactions to your posts and even follow requests.

    If you ever want to stop the bridge from publishing, simply unfollow the Bridgy account and remove it from your Followers list.

    Happy cross-posting bridging :)

    Be Aware

    Even though following other accounts is now possible, there is currently no way to view their incoming posts. Aside from the specific use case described above, following others doesn’t offer much benefit at this stage. Please be cautious if you think you need to follow more people, as it may increase traffic to your site without a clear purpose.

    We’ll let you know as soon as the full reader experience is implemented and will enable all necessary (currently hidden) features at that time.

    Follow us!

    As a proof of concept, you can now also follow our updates on Bluesky via @activitypub.blog.activitypub.blog.ap.brid.gy‬

  • 7.2.0 – Follow ups

    A Wapuu in a spacesuit, equipped with a tool, repairing a spaceship engine.

    We’ve rolled out an update that makes sharing content to the fediverse via ActivityPub even better—especially when it comes to images in comments. Now, when you include an HTML <img> tag that points to a file in your WordPress media library, that image is bundled as a proper attachment in the ActivityStreams payload. This means your followers on other platforms will see both your comment and its image, making conversations more vivid and engaging.

    To protect your privacy and security, only images hosted in your own WordPress media library are supported. Images from external sources are intentionally skipped.

    Smoother Following, Better Interactions

    If you’ve turned on the “Following User Interface” feature in the advanced settings, you’ll see a few nice improvements. The followers list now shows whether you’re already following someone—and if not, you can follow them back with just one click.

    Followers list screenshot showing the "Follow Back" button.

    We’ve also made it easier to follow people from other sites. When you click “Follow” on someone else’s blog, you’ll now be taken to your own site to complete it. It keeps things simple and familiar, even when you start following someone from another site.

    Better Support for Multibyte Text

    Finally, we’ve improved how multibyte characters (like those in Greek and other non-Latin scripts) are handled when generating post summaries for the fediverse. We’ve replaced byte-based string functions with multibyte-safe alternatives and reordered text processing steps to avoid errors.

    Full Changelog

    Added

    • Add image attachment support to federated comments – HTML images in comment content now include proper ActivityStreams attachment fields.
    • Link to the following internal dialog for remote interactions, if the feature is enabled.
    • The followers list now shows follow status and allows quick follow-back actions.
    • Trigger Actor updates on (un)setting a post as sticky.
    • You can now use OrderedCollections as starter packs — just drop in the output from a Follower or Following endpoint.

    Changed

    • Ensure that tests run in production-like conditions, avoiding interference from local development tools.
    • Moved HTTP request signing to a filter instead of calling it directly.

    Fixed

    • Allow non-administrator users to use Follow Me and Followers blocks.
    • Correct linking from followers to the following list.
    • Fix avatar rendering for followers with missing icon property.
    • Fix multibyte character corruption in post summaries, preventing Greek and other non-ASCII text from being garbled during text processing.
    • Informational Fediverse blocks are no longer rendered when posts get added to the Outbox.

    Downloads

    Thank you!

    Huge thanks to everyone who shared code, gave feedback, tested, or simply cheered us on! Together, we’re building a more connected fediverse, one release at a time. ❤️

    We’ve just released version 7.2.0, give it a spin and let us know what you think!

  • 7.0.0 – I will follow you!

    Just when you thought things were settling down… boom 💥 — the ActivityPub plugin gets another big upgrade. Say hello to version 7.0.0, a release packed with new features, polish, and under-the-hood improvements to help your WordPress site federate smoother, smarter, and more securely than ever.

    Let’s dive into what’s new.

    Following the Fediverse

    We’ve added the initial building blocks for Following support — both sending and managing follow requests for remote actors. It’s not in the UI just yet (we’re rolling it out carefully), but that’s not far away. A big step toward richer, two-way federation.

    Wapuu that "follows" a Mastodon, Pixelfed and Ghost mascot.

    We’ll work with developers of third-party plugins — including those behind Friends and Event Bridge — to migrate their custom follow implementations to this new core feature. This collaboration helps ensure a consistent, reliable follow experience across the ecosystem.

    This foundational support for following is also the first step toward a full-featured reader experience right inside WordPress — something we’re excited to keep building toward.

    Refined Signature

    This release brings support for RFC-9421-style HTTP signatures, both incoming and (optionally) outgoing. That’s a mouthful, but it basically means supporting the latest standard in how we verify and send activities — including a fallback to good old Draft Cavage when needed.

    Check out the blog post to learn more: HTTP Signature Upgrades Coming Soon

    Full Changelog

    Added

    • Added basic support for handling remote rejections of follow requests.
    • Added basic support for RFC-9421 style signatures for incoming activities.
    • Added initial Following support for Actors, hidden for now until plugins add support.
    • Added missing “Advanced Settings” details to Site Health debug information.
    • Added option to auto-approve reactions like likes and reposts.
    • Added support for namespaced attributes and the dcterms:subject field (FEP-b2b8), as a first step toward phasing out summary-based content warnings.
    • Added support for the WP Rest Cache plugin to help with caching REST API responses.
    • Documented support for FEP-844e.
    • Optional support for RFC-9421 style signatures for outgoing activities, including retry with Draft-Cavage-style signature.
    • Reactions block now supports customizing colors, borders, box-shadows, and typography.
    • Support for sending follow requests to remote actors is now in place, including outbox delivery and status updates—UI integration will follow later.

    Changed

    • Comment feeds now show only comments by default, with a new type filter (e.g., like, all) to customize which reactions appear.
    • Consistent naming of Blog user in Block settings.
    • hs2019 signatures for incoming REST API requests now have their algorithm determined based on their public key.
    • Likes, comments, and reposts from the Fediverse now require either a name or preferredUsername to be set when the Discussion option require_name_email is set to true. It falls back to “Anonymous”, if not.
    • Management of public/private keys for Actors now lives in the Actors collection, in preparation for Signature improvements down the line.
    • Notification emails for new reactions received from the Fediverse now link to the moderation page instead of the edit page, preventing errors and making comment management smoother.
    • Plugins now have full control over which Settings tabs are shown in Settings > Activitypub.
    • Reworked follower structure to simplify handling and enable reuse for following mechanism.
    • Screen options in the Activitypub settings page are now filterable.
    • Setting the blog identifier to empty will no longer trigger an error message about it being the same as an existing user name.
    • Step completion tracking in the Welcome tab now even works when the number of steps gets reduced.
    • The image attachment setting is no longer saved to the database if it matches the default value.
    • The welcome page now links to the correct profile when Blog Only mode was selected in the profile mode step.
    • Unified retrieval of comment avatars and re-used core filters to give access to third-part plugins.

    Fixed

    • Allow interaction redirect URLs that contain an ampersand.
    • Comments received from the Fediverse no longer show an Edit link in the comment list, despite not being editable.
    • Fixed an issue where links to remote likes and boosts could open raw JSON instead of a proper page.
    • Fixed a potential error when getting an Activitypub ID based on a user ID.
    • HTTP signatures using the hs2019 algorithm now get accepted without error.
    • Improved compatibility with older follower data.
    • Inbox requests that are missing an algorithm parameter in their signature no longer create a PHP warning.
    • Interaction attempts that pass a webfinger ID instead of a URL will work again.
    • Names containing HTML entities now get displayed correctly in the Reactions block’s list of users.
    • Prevent storage of empty or default post meta values.
    • The amount of avatars shown in the Reactions block no longer depends on the amount of likes, but is comment type agnostic.
    • The command-line interface extension, accidentally removed in a recent cleanup, has been restored.
    • The image attachment setting now correctly respects a value of 0, instead of falling back to the default.
    • The Welcome screen now loads with proper styling when shown as a fallback.
    • Using categories as hashtags has been removed to prevent conflicts with tags of the same name.
    • When verifying signatures on incoming requests, the digest header now gets checked as expected.

    Downloads

    Thank you!

    Huge thanks to everyone who contributed code, feedback, tests, or moral support. This community makes the fediverse feel a little more federated with every release. ❤️

    Update now, test things out, and let us know how 7.0.0 works for you!


  • What we shipped so far in 2025

    A Wapuu holding a Fediverse-Ball while sitting on a spaceship.

    Alongside our upcoming plans, we’ve already shipped several important features in recent releases. Here are some highlights of what’s now available in the ActivityPub plugin.


    Onboarding

    We’ve added an onboarding flow after plugin activation to help guide new users through key decisions — such as selecting the Actor Mode.

    A screenshot of the onboarding launchpad.

    It’s also a great opportunity to explain Fediverse concepts for users who are new to them.

    More details:

    👉 5.9.0 — Easier onboarding for your Fediverse experience


    Move

    The Move Activity is used by Mastodon to migrate accounts to different servers — and can also be used for domain or username changes.

    In the WordPress ecosystem, one of the main motivations for implementing Move was to support changing the domain of a WordPress blog — a common scenario for WordPress site owners.

    We’ve built a solid foundation in the plugin to both send and receive Move Activities. However, because Move is not yet widely adopted across the Fediverse, we’ve decided to pause further work on this feature until there is broader ecosystem support.

    Account migration remains a crucial capability for a healthier, more portable social web. If you’re interested in the broader context and challenges around this, we recommend watching Cory Doctorow’s keynote from the June FediForum:

    We’ll revisit this as the standard matures and more servers implement consistent handling of Move.

    More details:

    👉 GitHub — Move Milestone


    Outbox

    Earlier versions of the plugin supported only the federation of custom post types, sending all messages in one bulk.

    That approach works up to about 1000 followers, but does not support retries, logging, or error handling.

    To support larger blogs or news sites — we needed a more robust system.

    We now have mechanisms to:

    • Federate activities to more than 1000 followers.
    • Use a staggered delivery system that prioritizes servers.
    • Provide a stable and scalable architecture.
    • Support retries and error reporting.

    This improved Outbox system also makes it easier for third-party plugin developers to federate their own content types in a reliable and scalable way.

    More details:

    👉 GitHub — Outbox Milestone


    Changelogs

    These are just the major milestones. If you’re interested in everything we ship, be sure to subscribe or follow the blog — we publish detailed changelog posts with every new plugin release, listing all new features and improvements.

    ActivityPub for WordPress
    ActivityPub for WordPress
    @activitypub.blog@activitypub.blog

    News about the ActivityPub plugin for WordPress.

    22 posts
    540 followers

    As always, we welcome your feedback and ideas — they help shape the future of the ActivityPub plugin and the growing WordPress Fediverse community! 🚀

  • Our 2025 Roadmap: Building the Future of WordPress Federation

    A Wapuu in a spacesuit flying through the space holding a ball with the fediverse logo.

    We’re excited to share this roadmap — there’s a lot happening with the ActivityPub plugin, and we can’t wait to show you what’s coming next.

    We often refer to this roadmap in GitHub issues and discussions, but until now, we haven’t published a full roadmap post — nor a formal changelog. This post is a first step toward keeping the community more informed about what’s planned and what’s coming up next.

    Our goal for this year is to finalize the full ActivityPub experience — so that WordPress can be used as a first-class citizen of the Fediverse. This means enabling not only publishing to the network, but also following, reading, interacting, and moderating — all in a seamless way that feels natural for WordPress users.

    This roadmap is not set in stone — priorities may shift based on community feedback, WordPress updates, or changes in the wider Fediverse. But it should give you a good sense of where we’re going.

    Followers/Following

    This is what we’re currently working on. You can follow the progress on GitHub.

    Right now, the plugin supports only Followers. It doesn’t yet offer a way for your site to follow others in the Fediverse. But with new initiatives like the “Reader Experience,” this will need to change.

    To support true two-way relationships — both Followers and Following — we need a database model that can clearly represent both types of connections. The current system, which relies on GUIDs to track remote actors, wasn’t designed for this. At the moment, it can store a remote actor as a follower of your site, but it doesn’t easily support the ability for your site to follow them back.

    Implementing Following cleanly will require rethinking how this data is stored and connected.

    Actors

    This ties into a broader challenge with how the plugin currently models actors — both local users on your site and remote users from other Fediverse servers.

    Today, the plugin uses virtual users to represent these actors. This was a practical choice early on to get federation working without rewriting how WordPress manages users.

    But as the plugin grows — especially with features like Following and the Reader Experience — this approach is creating friction. Virtual users don’t behave exactly like regular WordPress users, so each time we add new features, we end up writing special workarounds.

    Over time, this adds complexity and makes the system harder to maintain. Moving toward a more unified model for actors — one that integrates more naturally with WordPress’s existing structures — will keep the plugin flexible and reliable.

    Moderation

    Currently, the plugin relies on WordPress’s built-in “Disallowed Comment Keys” system to filter unwanted content at the inbox endpoint — before any ActivityPub request is processed. This mechanism allows you to block activities based on keywords or domains, using the same rules you’d apply to comments.

    However, this approach is fairly blunt: it’s a simple keyword filter, not a nuanced moderation tool. This limitation will become more important as the plugin expands — for example, when adding support for image-based comments or richer media interactions.

    Building a dedicated filtering mechanism is an important step toward giving site owners fine-grained moderation tools that are tailored to the unique challenges of federated content.

    More details:

    👉 GitHub — Question: How does this plugin interact with moderation and trust & safety on the fediverse?

    Reader

    A full Reader experience is one of our long-term goals — it’s the final big feature needed to give WordPress sites a complete ActivityPub/Fediverse experience.

    Today, the plugin lets others follow your site, but there’s no built-in way for you to subscribe to and read content from others — in other words, there’s no “timeline” yet inside WordPress.

    We plan to start with a simple, flexible approach: focusing first on storing remote posts in a way that’s compatible with tools like the WordPress.com Reader or third-party plugins like Friends or the Event Bridge for ActivityPub.

    Once this foundation is in place, we’ll iterate on direct support — making it possible for site owners and users to follow and read Fediverse posts right inside WordPress.

    Direct Messages

    As part of this evolution toward a full Reader experience, we’re also exploring support for Direct Messages.

    This is a frequently requested feature and an important part of richer Fediverse interactions. We plan to start with an initial implementation that enables private messaging — and then build on it as we learn from real-world use.

    Fully delete profiles

    One key principle of the GDPR is the “right to be forgotten.”

    Currently, the plugin supports remote deletions, but does not trigger Delete Activities for local user actions.

    The challenge is that WordPress operates differently from most federated social networks. Users might expect Delete Activities for certain actions that could have major consequences — for example, deactivating the plugin.

    But deactivating a plugin is also a common troubleshooting step in WordPress.

    To address this, we first need to define different use cases and guide users on how to trigger Delete Activities appropriately.

    More details:

    👉 GitHub — User Delete Milestone

    Client-to-Server API (exploration)

    In addition to the way servers communicate with each other across the Fediverse, ActivityPub also defines a “Client-to-Server” API.

    This API is mainly designed to allow apps and clients (such as mobile apps) to publish content to a Fediverse server.

    In the future, this could open up interesting possibilities for WordPress — for example, allowing WordPress to act as a bridge or proxy, making it easier to bring in and federate content from other tools or platforms.

    At this stage, we’re exploring and evaluating this based on community interest and potential use cases.

    Staying Informed

    We’ll continue to keep you informed about the progress of this roadmap.

    For each new release, we’ll publish posts highlighting the latest features and improvements. For larger projects — like the Reader experience or expanded moderation tools — we’ll also share regular updates so you can follow along as the work evolves.

    As always, we welcome your feedback and ideas — they help shape the future of the ActivityPub plugin and the growing WordPress Fediverse community! 🚀