Index: src/routes/posts.js
===================================================================
--- src/routes/posts.js	(revision f1e0c1fd1bed6e546d243788f1c217d74f043dad)
+++ src/routes/posts.js	(revision 55bba230a2ce508b0cd79ff85d0f16c00382bb9c)
@@ -367,8 +367,9 @@
   }
 
-  // Pin/unpin changed → push an actor Update so Mastodon re-fetches the featured
-  // (pinned) collection promptly instead of waiting for its own actor refresh.
+  // Pin/unpin/reorder → push Add/Remove activities so followers' instances update the
+  // pinned order immediately (reliable, unlike re-fetching the cached featured collection).
   if ((post.pinned || 0) !== parsePinnedRank(pinned)) {
-    ActivityPubService.deliverActorUpdate(site).catch(() => { /* best-effort */ });
+    const unpinned = (post.pinned || 0) > 0 && parsePinnedRank(pinned) === 0 ? [post.id] : [];
+    ActivityPubService.resyncFeaturedPins(site, unpinned).catch(() => { /* best-effort */ });
   }
 
