Highlights - July 2026
A tour of major features shipped since our last highlights post, plus CI improvements for external contributors.
It has been a while since our February 2025 highlights. In this post we cover the most impactful features shipped across 0.46 through 0.56, and a set of CI improvements that make life easier for external contributors.
Features
New components
| Component | Kind | Description | Author | PR |
|---|---|---|---|---|
mqtt | Source | Ingest from MQTT brokers | @StormStake | #22752 |
okta | Source | Consume Okta system logs | @sonnens | #22968 |
websocket | Source | Real-time ingestion from WebSocket APIs | @benjamin-awd | #23449 |
windows_event_log | Source | Native Windows Event Log with bookmark-based checkpointing | @tot19 | #24305 |
delay | Transform | Delay events by a fixed duration or VRL condition | @esensar, @Quad9DNS | #25407 |
incremental_to_absolute | Transform | Reconstruct absolute metrics from incremental data | @GreyLilac09 | #23374 |
trace_to_log | Transform | Convert traces to logs | @spencerho777 | #24168 |
window | Transform | Sliding-window ring-buffer for noise reduction | @ilinas | #22609 |
azure_logs_ingestion | Sink | Send logs to Azure Monitor via the Logs Ingestion API | @jlaundry | #22912 |
databricks_zerobus | Sink | Stream to Databricks Unity Catalog via Zerobus | @flaviofcruz | #24840 |
doris | Sink | Apache Doris via the Stream Load API | @bingquanzhao | #23117 |
postgres | Sink | Send logs, metrics, and traces to Postgres | @jorgehermo9 | #21248 |
otlp | Codec | Bidirectional Vector <-> OTLP conversion (logs and traces) | @pront | #24003 |
syslog | Encoder | Encode Vector events as syslog (RFC5424 and RFC3164) | @vparfonov | #23777 |
varint_length_delimited | Framer | Varint length-delimited framing for protobuf streaming (ClickHouse-compatible) | @modev2301 | #23352 |
Source improvements
- The
opentelemetrysource gained metrics ingestion and now performs full OTLP decoding for logs, metrics, and traces, removing the need for complex remap steps in OTEL -> Vector -> OTEL pipelines. - The
docker_logssource retries Docker daemon communication failures with exponential backoff instead of giving up on transient hiccups. - A performance regression that inflated CPU usage in the
fileandkubernetes_logssources (introduced in0.50.0) was found and fixed.
Transform improvements
- The
tag_cardinality_limittransform gained several new controls: per-tag cardinality overrides (per_tag_limits), per-metric tracking isolation (tracking_scope: per_metric), a global key cap (max_tracked_keys), and the ability to opt entire metrics out of cardinality tracking. - The
syslogencoding transform gained improved RFC compliance, support for scalars, nested objects, and arrays in structured data, and better UTF-8 safety.
Sink improvements
- A configurable
retry_strategyfor HTTP-based sinks gives users control over which response codes are retried (default/none/all/custom). - The
aws_s3sink gained Apache Parquet batch encoding. - The
datadog_metricssink switched to the Series v2 endpoint with zstd compression by default, anddatadog_logsswitched its default tozstdas well.
Operations and observability
--watch-confignow also watches enrichment table files.vector topgained scrollable, sortable, and filterable views (press?for keybinds).- Unit tests support an
expected_event_countfield on outputs to assert on emitted event counts. - Task-transform
utilizationno longer counts downstream wait time, giving a more accurate saturation view. - New internal metrics for capacity planning and backpressure detection:
source_buffer_max_size_bytes,source_buffer_max_size_eventstransform_buffer_max_size_bytes,transform_buffer_max_size_eventssource_buffer_utilization_mean,transform_buffer_utilization_mean(EWMA-smoothed)component_latency_seconds(histogram),component_latency_mean_seconds(gauge)source_send_latency_seconds,source_send_batch_latency_seconds
For the complete list of changes, breaking changes, and upgrade steps, see the releases page.
VRL
Features
New functions
Syntax
elseandelse ifcan now appear on a new line after the closing}of anifblock. Previously the newline terminated the expression, forcing} else if {on a single line.- String literals now support
\u{HEX}Unicode escape sequences ("hello\u{1F30E}world"). Invalid sequences (empty braces, non-hex digits, surrogate codepoints, or values above U+10FFFF) fail at compile time with a specific error.
Type system and function surface
findnow returnsnullwhen no match is found, instead of-1. Audit existing programs that branch onfind(...) < 0.- Vector-specific VRL functions are now available in the standalone VRL CLI (
vector vrl) and in codec VRL transforms, closing a long-standing surface gap. - Enrichment functions gained bounded date range filtering (
from/to) and wildcard match support. encode_protogained looser scalar coercion: integers and strings are accepted forboolfields, integers forfloatanddoublefields, and integer or boolean map keys are stringified per the protobuf JSON mapping. A newallow_lossy_string_coercionflag lets strict callers opt back into spec-only encoding.
Performance
encode_gzip/decode_gzip/encode_zlib/decode_zlibswitched to the zlib-rs backend for significantly faster compression and decompression.encode_base64/decode_base64/decode_mime_qmoved to a SIMD backend.parse_regex_allreuses the compiled regex across invocations.
VRL in more places
- HTTP client sources accept VRL expressions in query parameters and in the request body, enabling dynamic request construction (e.g. embedding
now()or environment variables in outgoing requests). - Custom auth strategies expose the client address and URL path to VRL scripts, and can now write scalar values back into the auth context via
%field = valuewrites. - Templating landed on the
httpsink’suriandrequest.headersfields.
Live reload
--watch-configalso watches external VRL files referenced byremaptransforms.- Vector reloads external VRL files on
SIGHUP.
VRL Playground
The VRL Playground gained a timezone selector, performance timing display, output-panel line wrap, and a series of dropdown and rendering fixes.
Fixes
- The compiler now reports every unhandled-error in a single compilation pass instead of stopping at the first. Fix all your fallible calls in one go rather than a compile-fix-compile loop.
- Fallible-call error location is now correct. Previously, a missing
!or, err =on an earlier call could cause the diagnostic to point at a later, unrelated assignment. Now the error is reported on the actual fallible expression, including insidefor_eachandmap_valuesclosures. - False positive in the unused-variable diagnostic (
E900) fixed. A variable used before being reassigned (shadowed) is no longer flagged as unused at its original assignment. - Lexer errors surface specific error codes (e.g.
E209 invalid escape character) instead of the genericE202 syntax error, and their spans now point at the exact character rather than the whole call. vector testoutput honors--color {auto|always|never}andVECTOR_COLOR; VRL diagnostics stop emitting stray ANSI escape sequences when color is disabled or when running non-interactively.
CI and developer ergonomics
A recurring source of friction for contributors was hitting CI failures that were hard to reproduce locally or caused by false positives. Several checks were replaced or improved to reduce that gap. We also fixed long-standing flaky tests.
All of the following checks can be run locally before pushing, so there are no surprises on the PR.
- Simpler PR title check. The semantic PR title action was replaced with a small inline script. Contributors are no longer blocked by a 180-entry hardcoded scope allowlist that drifted every time a component was added or renamed.
typosreplacescheck-spelling. The oldcheck-spellingworkflow produced enough false positives to be a constant source of friction on PRs. It has been replaced withtypos, a Rust-native spell checker that understands identifiers and hex literals natively. Run it locally withcargo binstall typos-cli && typos.- YAML/JSON/TS formatting. Prettier formatting checks now run in CI for YAML, JSON, and TypeScript files. Run
make check-prettierlocally andmake fix-prettierto auto-fix. - Improved Markdown checks. The
markdownlintconfiguration was tightened to catch more common style issues. Runmake check-markdownlocally andmake fix-markdownto auto-fix.
Thank you
Vector genuinely would not be where it is without its community.
We are very happy to notice growing interest in Vector:
| Year | Unique | New | Returning |
|---|---|---|---|
| 2024 | 177 | 130 | 47 |
| 2025 | 191 | 144 | 47 |
| 2026 (YTD, 5 months) | 133 | 90 | 43 |
Thank you to every PR contributor behind those numbers, and to everyone who opened an issue, reviewed code, improved docs, or started a discussion.
We look forward to the future.
Appendix
Vector releases in this window
0.46.0— 2025-04-040.47.0— 2025-05-200.48.0— 2025-06-300.49.0— 2025-08-120.50.0— 2025-09-230.51.0— 2025-11-040.52.0— 2025-12-160.53.0— 2026-01-270.54.0— 2026-03-100.55.0— 2026-04-220.56.0— 2026-06-03