---
title: "What are the difference between my indiekit-syndicator-bluesky fork and…"
date: 2026-09-02T15:42:25.203Z
author: Ricardo Mendes
url: https://rmendes.net/notes/2026/09/02/b77fd/
type: notes
categories:
  - "bluesky"
  - "indiekit"
ai_text_level: "0"
tokens: 499
content_signal: ai-train=yes, search=yes, ai-input=yes
---

# What are the difference between my indiekit-syndicator-bluesky fork and…

What are the difference between my indiekit-syndicator-bluesky fork and upstream core package ? 

@rmdes/indiekit-syndicator-bluesky was cut from @indiekit/syndicator-bluesky around February 2026 and has since roughly doubled in size — about 1,050 lines against upstream's 620 — while gaining no upstream commits back. 

> Upstream remains a deliberately minimal syndicator: it posts notes and photos, natively likes and reposts Bluesky URLs, and silently declines anything else, returning undefined for likes or reposts of non-Bluesky links. 

The fork's entire reason for existing is that last case: it turns external likes, reposts, and bookmarks into real Bluesky posts carrying an Open Graph link card, fetching the card metadata itself with jsdom and synthesising an SVG-to-PNG thumbnail through sharp when the target page has no OG image. 

On top of that it adds reply threading (in-reply-to → resolveReplyRef(), which upstream has no equivalent for), quote-post and recordWithMedia embeds, manual link facets so anchor text in HTML content stays clickable, and an own-domain-aware URL extractor that decides whether the OG card should show an external link or the post's own permalink. 

Upstream, meanwhile, has not stood still: it added a includeCategories option that renders JF2 categories as trailing hashtags, moved to @atproto/api 0.20 / sharp 0.35 / html-to-text 10 and Node ≥ 24 — none of which the fork has picked up, and it still pins @atproto/api ^0.19.3. 

The one place the two actively disagree rather than merely differ is text truncation: upstream delegates to the brevity package for permashortlink-aware shortening, whereas the fork dropped that dependency and hand-rolls a 300-character slice. The fork also dropped upstream's three test files and the plugin icon asset, so it carries the larger surface area with none of the automated coverage.

> Very soon some of these features will be ported to upstream core package, this is a work in progress.
