Skip to main content
Research · May 6, 2026 · 4 min

Highlight: A Week We Won't Get Back

Session replay, distributed tracing, one tool — it looked perfect. A week later, the metrics were lying.

We said we’d move to one tool. A week later, the metrics were lying.

Why We Chose It #

The team was already running an observability setup — it worked, but it was fragmented. Session replay in one place, tracing in another, error monitoring somewhere else. Highlight’s pitch was clean: consolidate everything, write one integration, look at one dashboard. Session replay being included in the package sealed it.

This was also the team’s first OpenTelemetry experience.

OpenTelemetryOpenTelemetryvendor-neutral, open-source observability framework for generating, collecting, and exporting telemetry data — traces, metrics, logs

OTEL’s promise made Highlight’s appeal even stronger: built on an open standard, self-hostable, open source. We like getting in early on projects like this — we ran a PoC, liked what we saw, and committed to the migration. opentelemetry.io 1 source 1 OpenTelemetryopentelemetry.io

What We Found #

Deployment and initial configuration took a week. Highlight’s self-host setup looks straightforward in the docs — until you get close to production. Environment variables, Clickhouse connections, making backend services find each other, SSL, ingestion endpoints. After a week we had a running instance. That’s when the real problems started. Wikipedia 1 source 2 Transport Layer SecurityWikipedia

Integrations hit a wall.

The OTEL integration path was our first stop — we wanted traces on a reliable binary transport for richer metadata and efficiency. The DevOps side did everything right: read the source, ran deployment tests, configured the ports. Other tools ran fine in the same environment. But the self-host instance couldn’t produce a single test trace over our preferred transport. We fell back to HTTP/JSON. Wikipedia 1 source 3 HTTPWikipedia

When a feature works in cloud but not in self-host, that’s not a bug — it’s a decision.

The charts were lying.

Dashboard shows count: 10. Filter the same metric in traces: 4. Same pattern across sum and avg aggregations. You can’t tell whether error counts are rising or falling. When an observability tool can’t be trusted to observe itself, it’s not observability — it’s decoration.

Trace analysis became unmanageable.

When pods restarted, duplicate traces appeared — the same request logged multiple times, nested inside each other. It broke the view and made analysis painful. On top of that, search depth was insufficient. You can’t filter down to nested attributes like http.request.payload.object. Filters stay on the surface. When you’re trying to trace a bug to its source and the tool stops halfway, you’re not doing analysis — you’re doing cleanup.

Self-host is second class.

Retention period can’t be configured — this isn’t unique to Highlight, it’s a common limitation across self-hosted observability tools, but it’s still a problem. The rest, however, are deliberate choices: Slack integration is completely closed, hardcoded to cloud URLs. SMTP sender address can’t be changed — it comes preset with their own. Custom dashboard limit is 3 — you can’t open a fourth. These aren’t missing features. Each one is a separate line in a “make self-host harder, push to cloud” policy. Wikipedia 1 source 4 Simple Mail Transfer ProtocolWikipedia

Open the code. Lock the usable product behind managed SaaS.

What We Learned #

In April 2025, LaunchDarkly acquired Highlight. The announcement framed it as “Guarded Software Releases” — feature flags meeting observability. For self-host users, the meaning was simpler: the team is no longer working on an independent product. Upstream is now tied to LaunchDarkly’s roadmap.

Updates stopped. The hosted service shut down on February 28, 2026. The self-host repo is technically still there — no active development, no official support. The code is open. The infrastructure behind it is dead.

“Open source” sometimes means: you can read the code, but you can’t use the product.

Before making a similar decision, ask these questions first:

  • Integrations: cloud vs self-host. If it works in cloud but not self-host, that’s a decision, not a bug.
  • Are aggregations accurate? Cross-check the dashboard number against trace filters — if they don’t match, you can’t trust the tool.
  • Is there trace deduplication? If pod restarts generate duplicates, you’re doing cleanup, not analysis.
  • How deep does search go? If you can’t reach nested attributes, the tool will stop you halfway.
  • What’s the gap between self-host and cloud? That gap is never accidental.
  • When was the last commit? If the repo went quiet after an acquisition, upstream is dead.

If you’re looking for an alternative: the next post in this series covers Uptrace. No session replay — if that’s non-negotiable, I understand the appeal of Highlight. But if you can trade session replay for a tool that actually works without artificial limits, it’s worth it.

We made that trade. We dropped the one-tool dream and chose a stack that works.