NewYour coding agent can read the release notes before it upgrades.Set up the MCP server →
crates.io · #1305 most downloaded on crates.io
Sentry integration for capturing panics.
Last release 16 days ago
21 Sep 2026
Ships fairly regularly
a new release about every 4 weeks
Nearly every release is documented
notes for 60 of 60 stable releases
Nothing withdrawn
no release was ever pulled
6 years old
60 releases · first in 2020
One column per quarter.
Deprecated Transaction::is_sampled , Span::is_sampled , and TransactionOrSpan::is_sampled . These methods cannot distinguish between an unsampled tran…
sentry-minidump integration, which captures native crashes as minidumps in a separate process and sends them to Sentry as attachments. Enable it with the minidump feature on sentry. Linux, macOS and Windows only (#1315).transport_channel_capacity option to ClientOptions, making the transport's channel capacity configurable. The StdTransportThreadOptions::with_channel_capacity and TokioTransportThreadOptions::with_channel_capacity methods provide the same configuration when constructing transport threads. When unset, each transport uses its own default (currently 30), which is subject to change (#1311).SentryHttpLayer now records the http.response.status_code attribute on transactions (#1253).Transaction::is_sampled, Span::is_sampled, and TransactionOrSpan::is_sampled. These methods cannot distinguish between an unsampled transaction or span and a deferred sampling decision when tracing is disabled (#1293).sentry-trace headers without enabling local capture. An explicit 0.0 trace sample rate remains distinct from disabled tracing and continues to generate client reports for locally unsampled transactions (#1286).Deprecated ClientOptions::enable_logs . The option no longer disables manually captured logs (via the logging APIs); it now only disables automatic lo…
ClientOptions::enable_logs. The option no longer disables manually captured logs (via the logging APIs); it now only disables automatic log capture by the log-capturing integrations (tracing and log with the logs feature). To stop an integration from sending logs, configure it via its own options (#1299).ClientOptions::enable_metrics. The option is now a no-op; metrics are always enabled. To stop sending metrics, stop calling the metrics APIs (#1300).Preserve floating-point fields in tracing logs as numeric attributes ( #1278 ).
EnvelopeError is now #[non_exhaustive] to allow adding new error variants without a breaking change ( #1254 ).
ClientOptions is now #[non_exhaustive] (#1230). The struct must now be constructed with the builder-style setters:
// Before
let options = sentry::ClientOptions {
dsn: "https://examplePublicKey@o0.ingest.sentry.io/0",
debug: true,
release: Some("my-app@1.0.0".into()),
..Default::default()
};
// After
let options = sentry::ClientOptions::new()
.dsn("https://examplePublicKey@o0.ingest.sentry.io/0")
.debug(true)
.release("my-app@1.0.0");Updated the sentry-opentelemetry integration to support OpenTelemetry 0.32. Users of the integration must update their OpenTelemetry dependencies from 0.29 to 0.32 (#1262).
The logs and metrics features are now enabled by default in the sentry crate. This does not break the API, but may cause new telemetry to be sent to Sentry: log and tracing integrations can send structured logs, and applications can send metrics without adding the feature flags. Disable these features explicitly if this additional telemetry is not desired (#1251).
Removed the public ClientOptions::sample_rate field. Use ClientOptions::event_sampling_strategy to inspect the configured event sampling strategy, and use the existing ClientOptions::sample_rate(...) builder setter to configure fixed-rate sampling.
Removed the public ClientOptions::sample_rate field. Use ClientOptions::event_sampling_strategy to inspect the configured event sampling strategy, and use the existing ClientOptions::sample_rate(...) builder setter to configure fixed-rate sampling (#1228).
Removed the public ClientOptions::traces_sample_rate and ClientOptions::traces_sampler fields. Use ClientOptions::traces_sampling_strategy to inspect the configured traces sampling strategy, and use the existing ClientOptions::traces_sample_rate(...) and ClientOptions::traces_sampler(...) builder setters to configure fixed-rate and callback-based sampling (#1227).
EnvelopeItem now stores Event and Transaction payloads in Box values. Code that constructs or pattern-matches these variants must account for the additional indirection (#1255).
The sentry_log::RecordMapping enum's Event now stores the event in a Box (#1269).
sentry_slog::RecordMapping is now #[non_exhaustive] and the Event variant now stores a boxed Event<'static> (#1270)
The sentry_tracing::EventMapping enum's Event variant is now stored in a Box (#1272)
TracePropagationContext as the preferred type for Sentry trace propagation metadata. The existing SentryTrace type remains available for backwards compatibility (#1212).Dsn::org_id, which parses the Sentry SaaS organization ID from DSN hosts such as o123.ingest.sentry.io (#1202).ClientOptions::org_id and ClientOptions::strict_trace_continuation (#1203). These options control how traces are continued and can help prevent traces from third-party services, which happen to be instrumented with Sentry, from being continued.sentry-org_id values when starting transactions, according to strict trace continuation rules (#1218).EnvelopeError is now #[non_exhaustive] to allow adding new error variants without a breaking change (#1254).Fixed a bug that could cause the SDK to panic and, in some cases, panic while handling the panic, aborting the process ( #1241 ).
Constructing ClientOptions with struct-literal syntax, including ..Default::default() functional update syntax, is deprecated and will stop compiling…
Added builder-style setters to ClientOptions (#1221):
// Before
let options = sentry::ClientOptions {
dsn: "https://examplePublicKey@o0.ingest.sentry.io/0",
debug: true,
release: Some("my-app@1.0.0".into()),
..Default::default()
};
// After
let options = sentry::ClientOptions::new()
.dsn("https://examplePublicKey@o0.ingest.sentry.io/0")
.debug(true)
.release("my-app@1.0.0");ClientOptions with struct-literal syntax, including ..Default::default() functional update syntax, is deprecated and will stop compiling in the next breaking release, as we will mark ClientOptions as #[non_exhaustive] (#1221). Reading and assigning individual public fields will remain supported. Please migrate to the builder-style setters introduced in this release.Added transport worker options types and deprecated the legacy constructors for built-in background transport workers, including StdTransportThreadOpt…
The Sentry Rust SDK now reports data discarded by the SDK to Sentry’s Stats page. The SDK reports approximate counts for drops from transports, queues, rate-limit backoff, sampling, event processors, and before_send* callbacks, including span counts for dropped transactions and byte counts for dropped logs and metrics.
EnvelopeFilter and EnvelopeFilterCallbacks, which let callers observe envelope items removed by Envelope::filter, including attachments removed after their event or transaction is filtered out. Existing Envelope::filter closure callers continue to work, although some closures may require an explicit item type annotation (#1182).LossSource trait, which provides the client report data categories and quantities to report when supported Sentry data is dropped (#1170).TransportFactory::create_transport_with_options, which constructs transports from TransportOptions instead of full ClientOptions (#1142).with_options constructors for built-in HTTP transports, including ReqwestHttpTransportOptions, CurlHttpTransportOptions, UreqHttpTransportOptions, and EmbeddedSVCHttpTransportOptions (#1142).StdTransportThreadOptions and TokioTransportThreadOptions (#1142).sentry-types, including ClientReport, client_report::Item, client_report::Category, and client_report::Reason, plus support for serializing client_report envelope items (#1144).Recorder type, which modern TransportFactory implementations receive via TransportOptions. Transports can use this recorder to record discarded Sentry data; the SDK aggregates these reported losses and automatically sends them in a future envelope (#1158).Hub::with. Use Hub::current instead (#1126).ureq transport handling for HTTP error statuses so 429 rate limits and 413 payload-too-large responses are processed correctly (#1177).TransportFactory::create_transport now receive ClientOptions reconstructed from TransportOptions. The reconstructed options include only transport-relevant fields, such as DSN, user agent, proxy settings, and TLS certificate validation settings. This may affect code that reads non-transport fields in create_transport, but the API remains source-compatible and this change is included in a minor/patch release (#1142).Added rustls-no-provider feature flag in the sentry crate to allow using the rustls transport with a different crypto provider ( #1103 ).
rustls-no-provider feature flag in the sentry crate to allow using the rustls transport with a different crypto provider (#1103).Changed ClientOptions::enable_metrics to default to true , aligning metrics behavior with other Sentry SDKs ( #1106 ). Metric capture APIs still requi
ClientOptions::enable_metrics to default to true, aligning metrics behavior with other Sentry SDKs (#1106). Metric capture APIs still require the metrics feature flag at compile time.Fixed several feature additivity SemVer violations , where enabling a feature flag could have introduced breaking changes. All known violations are fi…
ClientOptions struct in sentry-core. Both fields are no-ops, unless the metrics feature flag is enabled:
enable_metrics, used to enable sending metrics to Sentry (#1073).before_send_metric, used to define a callback for filtering/pre-processing metrics before sending to Sentry (#1064).sentry_core::ClientOptions fields before_send_log, enable_logs, auto_session_tracking, and session_mode are no longer gated behind the logs and release-health feature flags (#1091). Code that constructs ClientOptions with a full struct literal (without ..Default::default()), or which exhaustively matches against it, must now include all four fields regardless of enabled features.sentry_core::Scope can no longer be publicly constructed or exhaustively matched against, even when the client feature is disabled (#1094). Previously, both of these were possible when client was disabled.sentry_core::Scope::add_event_processor now requires passed closures to be RefUnwindSafe (#1093). Thanks to this change, sentry_core::Scope is now UnwindSafe regardless of feature flag configuration; previously, Scope was only UnwindSafe when the client feature was disabled.sentry_tracing::EventMapping is now #[non_exhaustive] (#1097).sentry_log::RecordMapping is now #[non_exhaustive] (#1098).📊📈💯 The Sentry-Rust SDK now supports emitting Sentry Metrics (#1073)!
To get started, you will need to add the metrics feature flag when compiling the sentry crate. You will also need to enable metrics when initializing the SDK, like so:
use sentry::ClientOptions;
let _guard = sentry::init((
"(your DSN here)",
ClientOptions {
enable_metrics: true,
// ... other options ...
..Default::default()
},
));You can then capture metrics as follows:
use sentry::metrics;
use sentry::types::protocol::latest::Unit;
// We support counter, gauge, and distribution metrics.
metrics::counter("example.counter", 1).capture();
metrics::gauge("connections", 20).capture();
metrics::distribution("response.time", 123.4)
.unit(Unit::Millisecond) // units can also be set on gauges
.attribute("http.status", 200) // attributes can be set on all metric types
.capture();Update reqwest from 0.12.25 to 0.13.1 ( #998 ). This change is breaking for users who use the RequestHttpTransport::with_client method.
RequestHttpTransport::with_client method.sentry_core::HubSwitchGuard is now !Send, preventing it from being moved across threads (#957).Envelope::into_items method, which returns an iterator over owned EnvelopeItems in the Envelope (#983).Log HTTP 413 responses as oversized envelope discards in HTTP transports
Make it possible to == Transaction/Span/TransactionOrSpan
Removed the ClientOptions struct's trim_backtraces and extra_border_frames fields (#925).
ClientOptions struct's trim_backtraces and extra_border_frames fields (#925).
Add custom variant to AttachmentType that holds an arbitrary String.
AttachmentType that holds an arbitrary String. (#916)Breaking change: sentry::log::LogFilter has been changed to a bitflags struct.
sentry::integrations::log::LogFilter has been changed to a bitflags struct.log record to multiple items in Sentry by combining multiple log filters in the filter, e.g. log::Level::ERROR => LogFilter::Event | LogFilter::Log.mapper instead, it's possible to return a Vec<sentry::integrations::log::RecordMapping> to map a log record to multiple items in Sentry.logs feature flag is enabled, the default Sentry log logger now sends logs for all events at or above INFO.sentry::ClientOptions::enable_logs to true.log feature flag to the sentry dependency to opt-in to sending logs.log feature flag is enabled, the tracing and log integrations will send structured logs to Sentry for all logs/events at or above INFO level by default.ref(tracing): rework tracing to Sentry span name/op conversion (#887) by @lcian
tracing integration now uses the tracing span name as the Sentry span name by default.tracing span target (<module>::<function> when using the tracing::instrument macro).tracing integration now uses <span target>::<span name> as the default Sentry span op (i.e. <module>::<function> when using tracing::instrument).tracing span name.code.module.name, code.file.path and code.line.number standardized in OTEL to surface the respective information, in contrast with the previously sent tracing.module_path, tracing.file and tracing.line.capture_server_errors option (enabled by default), capturing errors returned by middleware only if they are server errors (HTTP status code 5xx).TraceContext now has an additional field origin, used to report which integration created a transaction.logs feature flag is enabled, and enable_logs: true is set on your client options, the default Sentry tracing layer now sends logs for all events at or above INFO.ref(tracing): rework tracing to Sentry span name/op conversion (#887) by @lcian
sentry.op: override the Sentry span op.sentry.name: override the Sentry span name.sentry.trace: given a string matching a valid sentry-trace header (sent automatically by client SDKs), continues the distributed trace instead of starting a new one. If the value is not a valid sentry-trace header or a trace is already started, this value is ignored.sentry.op and sentry.name can also be applied retroactively by declaring fields with value tracing::field::Empty and then recorded using tracing::Span::record.#[tracing::instrument(skip_all, fields(
sentry.op = "http.server",
sentry.name = "GET /payments",
sentry.trace = headers.get("sentry-trace").unwrap_or(&"".to_owned()),
))]
async fn handle_request(headers: std::collections::HashMap<String, String>) {
// ...
}
sentry.tracing.target: corresponds to the tracing span's metadata.target()code.module.name, code.file.path, code.line.numberfeat(core): add Response context (#874) by @lcian
Response context can now be attached to events, to include information about HTTP responses such as headers, cookies and status code.let mut event = Event::new();
let response = ResponseContext {
cookies: Some(r#""csrftoken": "1234567""#.to_owned()),
headers: Some(headers_map),
status_code: Some(500),
body_size: Some(15),
data: Some("Invalid request"),
};
event
.contexts
.insert("response".to_owned(), response.into());
feat(log): support kv feature of log (#851) by @lcian
log record using the kv feature are now recorded as attributes on the log sent to Sentry.Request is created manually by the user, then these fields are not filtered out.debug option with behavior since PR #820 (#860) by @AlexTMjugadorfeat(tracing): support combined EventFilters and EventMappings (#847) by @lcian
EventFilter has been changed to a bitflags struct.tracing event to multiple items in Sentry by combining multiple event filters in the event_filter, e.g. tracing::Level::ERROR => EventFilter::Event | EventFilter::Log.EventMapping::Combined to map a tracing event to multiple items in Sentry.ctx in the signatures of event_from_event, breadcrumb_from_event and log_from_event has been changed to take impl Into<Option<&'context Context<'context, S>>> to avoid cloning the Context when mapping to multiple items.i64::MAX (#846) by @lciananyhow and disable its backtrace feature (#632) by @LunaBorowskarefactor(logs): apply user attributes to log regardless of send_default_pii (#843) by @lcian
send_default_pii (#843) by @lcian
send_default_pii. Therefore, that parameter was removed from sentry_core::Scope::apply_to_log.tracing events as Sentry structured logs, enable the logs feature of the sentry crate.enable_logs: true in your client options. let sentry_layer = sentry_tracing::layer().event_filter(|md| match *md.level() {
tracing::Level::ERROR => EventFilter::Event,
tracing::Level::TRACE => EventFilter::Ignore,
_ => EventFilter::Log,
});
log records as Sentry structured logs, enable the logs feature of the sentry crate.enable_logs: true in your client options. let logger = sentry::integrations::log::SentryLogger::new().filter(|md| match md.level() {
log::Level::Error => LogFilter::Event,
log::Level::Trace => LogFilter::Ignore,
_ => LogFilter::Log,
});
os.name and os.version are now being attached to logs as default attributes.sentry.environment default attribute (#837) by @lciandata under their original field name.errors.ureq to 3.x (#835) by @algestenPlease note that breaking changes could occur until the API is finalized.
Support for Sentry structured logs has been added to the SDK.
To set up logs, enable the logs feature of the sentry crate and set enable_logs to true in your client options.
Then, use the logger_trace!, logger_debug!, logger_info!, logger_warn!, logger_error! and logger_fatal! macros to capture logs.
To filter or update logs before they are sent, you can use the before_send_log client option.
Please note that breaking changes could occur until the API is finalized.
feat(logs): add log protocol types (#821) by @lcian
feat(logs): add ability to capture and send logs (#823) by @lcian & @Swatinem
feat(logs): add macro-based API (#827) by @lcian & @szokeasaurusrex
feat(logs): send logs in batches (#831) by @lcian
Scope is associated with an object holding some tracing information.Scope::iter_trace_propagation_headers has been provided that will use the fallback tracing information if there is no current Span on the Scope.debug-logs feature (#820) by @lcian
debug-logs feature of the sentry crate, used for the SDK's own internal logging, has been removed.build: include sentry-actix optionally when release-health is enabled (#806) by @lcian
sentry-actix optionally when release-health is enabled (#806) by @lcian
sentry-actix is now being included as a dependency only when explicitly added, either as a direct dependency or through the actix feature flag of the sentry crate.Cargo.toml, it was previously being included as a dependency by default when using just the sentry crate with default features.An OpenTelemetry integration has been released. Please refer to the changelog entry below for the details.
An OpenTelemetry integration has been released. Please refer to the changelog entry below for the details.
EventFilter::exception and always attach exception (#768) by @lcian
EventFilter::Exception enum variant has been removed. Please use EventFilter::Event instead to achieve the same behavior.EventFilter::Event will always attach any error struct used within the error field passed to the tracing macro, as EventFilter::Exception did previously.error field will also be attached to breadcrumbs as an errors field resembling the structure of Sentry events created from error structs.release-health flag in sentry-actix and remove it from subcrates where unneeded (#787) by @lcian
ClientOptions fields auto_session_tracking and session_mode are now gated behind the release-health feature flag of the sentry crate.sentry with default-features = false, you need to include the release-health feature flag to benefit from the Release Health features of Sentry and have access to the aforementioned client options.release-health feature flag is used correctly in sentry-actix to enable compilation of that subcrate when it's disabled.release-health has been removed from the sentry-tracing and sentry-tower subcrates, where it was unnecessary.surf crate is unmaintained and it was holding back dependency upgrades.TransportFactory and pass it as the transport in your ClientOptionssend_default_pii in sentry-actix and sentry-tower (#771) by @lcian
send_default_pii (disabled by default) is now honored by sentry-actix and sentry-tower.send_default_pii to true in your ClientOptions.DEBUG_META on integration init (#773) by @lcian
DebugImages integration has been updated to init the DEBUG_META Lazy immediately.opentelemetry crate has been released.opentelemetry API and send them to Sentry.sentry-actix as a feature of sentry (#788) by @lcian
sentry-actix is now exposed by the sentry crate as sentry::integrations::actix, gated behind the actix feature flag.sentry-actix subcrate directly.Cargo.lock (#772) by @lcianonce_cell with std::sync::LazyLock (#776) by @FalkWoldmannsentry-opentelemetry to workspace (#789) by @lcianchore(msrv): cargo update and bump MSRV to 1.81 (#754) by @lcian
cargo update and bump MSRV to 1.81 (#754) by @lcian
release-health feature (#749) by @pepperoni505
release-health feature flag was introduced that gates the Release Health features of Sentry.sentry, sentry-actix, sentry-tower or sentry-tracing with the default features.release-health to get back the previous behavior.actix-web now supports capturing and attaching the request body to HTTP request transactions.send_default_pii in your client options for this to be enabled, and you can fine-tune the behavior using the new option max_request_body_size.transaction.set_data sets data on TraceContext (#739) by @lcian
transaction.set_data now sets data on TraceContext, as the SDK should not use the extra field.in-app stack frames has been improved. Now the SDK will mark more frames as not in-app.in-app reporting.sentry-actix.sentry-tracing when not capturing stack traces.anyhow when the backtrace feature is enabled but RUST_BACKTRACE is not set.feat(sentry-tower) Make SentryLayer and SentryService Sync if request isn't (#721) by @syphar
Sync if request isn't (#721) by @sypharaxum dependency to v0.8 (#718) by @Turbo87finish (#712) by @thomaseizingerEnvelopes will be discarded rather than blocking if the transport channel fills up (previously fixed in async-capable transports, now applied to the c
Fixes:
Renamed the UNSTABLE_metrics and UNSTABLE_cadence feature flags to metrics and metrics-cadence1 respectively.
Features:
UNSTABLE_metrics and UNSTABLE_cadence feature flags to metrics and metrics-cadence1 respectively.ref(metrics): Add normalization and update set metrics hashing (#658) by @elramen
Slightly improved overhead of the tracing layer.
Compatiblity:
Improvements:
tracing layer. (#642)Updates:
reqwest to version 0.12.tonic to version 0.11.feat(crons): Add new fields to MonitorConfig type (#638) by @szokeasaurusrex
MonitorConfig type (#638) by @szokeasaurusrexAdd experimental implementations for Sentry metrics and a cadence sink. These require to use the UNSTABLE_metrics and UNSTABLE_cadence feature flags.
Features:
UNSTABLE_metrics and UNSTABLE_cadence feature flags.
Note that these APIs are still under development and subject to change.Updated sentry-tower dependencies, including axum and http.
Features:
sentry-tower dependencies, including axum and http.MonitorSchedule constructor that validates crontab syntax (#625) by @szokeasaurusrex
The minimum supported Rust version was bumped to 1.68.0 due to requirements from dependencies.
Apply clippy fixes and cherry-pick PRs (#610) by @Swatinem
chore(deps): bump rustls (#592) by @utkarshgupta137
Apply scope metadata to transactions (#590) by @loewenheim
feat(tracing): Improve structure for tracing errors (#585) by @jan-auer
feat(crons): Add monitor check-in types to sentry-types (#577) by @evanpurkhiser
Add a new (tower-)axum-matched-path feature to use the MatchedPath as transaction name, along with attaching the request metadata to the transaction.
Features:
(tower-)axum-matched-path feature to use the MatchedPath as transaction name, along with attaching the request metadata to the transaction.Fixes:
Thank you:
Features, fixes and improvements in this release have been contributed by:
Aligned profiling-related protocol types.
Breaking Changes:
Features:
ProfilesSampler to the ClientOptions.Fixes:
ureq transport without the native-tls feature.Envelopes, and added a new from_bytes_raw constructor.Thank you:
Features, fixes and improvements in this release have been contributed by:
The minimum supported Rust version was bumped to 1.66.0 due to CI workflow misconfiguration.
Breaking Changes:
Fixes:
from_secs_f64 in timestamp_to_datetime function to prevent panics (#554) by @olksdrInternal:
sentry-backtrace (#552) by @xfixdebug_images is now a default feature. (#545
Features:
debug_images is now a default feature. (#545from_path_raw function to Envelope that reads an envelope from a file without parsing anything. (#549)data method to performance::Span that gives access to the span's attached data. (#548)Fixes:
fix: Prefer match_pattern over match_name in actix (#539) by @wuerges
match_pattern over match_name in actix (#539) by @wuergesnative-tls/rustls info in README (#535) by @seritoolstower-http enable the tower feature (#532) by @Turbo87Users of TransactionContext may now add custom context to it. This may be used by traces_sampler to decide sampling rates on a per-transaction basis.
Features:
TransactionContext may now add custom context to it. This may be used by traces_sampler to decide sampling rates on a per-transaction basis. (#512)Fixes:
Internal:
Thank you:
Features, fixes and improvements in this release have been contributed by:
Allow traces_sampler to inspect well known properties of TransactionContext
Features:
traces_sampler to inspect well known properties of TransactionContext (#514)The minimum supported Rust version was bumped to 1.60.0 due to requirements from dependencies.
Breaking Changes:
traces_sampler option to ClientOptions. This allows the user to customise sampling rates on a per-transaction basis. (#510)Features:
SSL_VERIFY option to control certificate verification. (#508)tower-http feature as a shortcut (#493)Internal:
pprof default features (#491)event_from_error fn in sentry-anyhow (#476)Thank you:
Features, fixes and improvements in this release have been contributed by:
The minimum supported Rust version was bumped to 1.57.0 due to requirements from dependencies.
Breaking Changes:
rust-version field to the manifest. (#473)Features:
Internal:
lazy_static crate with once_cell or const slices. (#471)Thank you:
Features, fixes and improvements in this release have been contributed by:
Updated the debugid and uuid dependencies to versions 0.8.0 and 1.0.0 respectively.
Breaking Changes:
debugid and uuid dependencies to versions 0.8.0 and 1.0.0 respectively.Features:
set_transaction. (#439)#[instrument(err)]. (#453)debug_images function from sentry-debug-images.Fixes:
sentry-tower integration. (#460)panic on invalid HTTP(S)_PROXY env. (#450)Internal:
Thank you:
Features, fixes and improvements in this release have been contributed by:
The minimum supported Rust version was bumped to 1.54.0 due to requirements from dependencies.
Breaking Changes:
sentry-actix integration to actix-web@4. (#437)Features:
Scope::set_transaction will override the Transaction name of any currently running performance monitoring transaction. (#433)Fixes:
Thank you:
Features, fixes and improvements in this release have been contributed by:
Added GpuContext to the Context.
Features:
Fixes:
serde_json feature from curl dependency. (#420)sentry-tracing: When converting a tracing event to a sentry event, don't create an exception if the original event doesn't have one (#423)sentry-tracing: Add line numbers and tags into custom Contexts sections. (#430)Thank you:
Features, fixes and improvements in this release have been contributed by:
Make sure sentry-core compiler without the client feature.
The minimum supported Rust version was bumped to 1.53.0 due to requirements from dependencies.
Breaking Changes:
backtrace feature of sentry-anyhow is enabled by default. (#362)tracing-subscriber dependency of sentry-tracing has been bumped to version 0.3.x. (#377)Scope::add_event_processor now takes a generic parameter instead of a boxed function.(#380)protocol types.#[must_use].chrono in public API types was removed in favor of SystemTime. (#409)Features:
sentry-tracing. (#350, #400)sentry-tower and feature tower that enables integration with tower. (#356)sentry-tower crate has a http feature which can be used to log request details and start new performance monitoring spans based on incoming distributed tracing headers. (#397)sentry-actix integration also has the ability to start new performance monitoring spans based on incoming distributed tracing headers. (#411)surf-h1 for using surf with the h1 client. (#357)Span::record to sentry-tracing. (#364)tracing integration are being reported as sentry Exceptions. (#412)Fixes:
tokio dependency is now only required for the curl, reqwest, and surf features. (#363)Thank you:
Features, fixes and improvements in this release have been contributed by:
The minimum supported Rust version was bumped to 1.46.0 due to requirements from dependencies.
Breaking Changes:
Features:
SessionMode::Request option. This requires Sentry 21.2.Client::flush method to explicitly flush the transport and use that to make sure events are flushed out when using panic=abort.flush hook to the Transport trait.RateLimiter utility that transport implementations can use to drop envelopes early when the DSN is being rate limited.sentry-tracing and feature tracing that enables support to capture Events and Breadcrumbs from tracing logs.Fixes:
attach_stacktrace option correctly when capturing errors.addr_mode property to Frame.anyhow::msg.Thank you:
Features, fixes and improvements in this release have been contributed by:
The deprecated error-chain and failure integrations, features and crates were removed.
Breaking Changes:
error-chain and failure integrations, features and crates were removed.Features:
slog integration now supports capturing slog::KV pairs for both breadcrumbs and events.sentry-types and the Envelope. However, deeper integration into the SDK is not yet complete.Fixes:
ClientOptions::environment from SENTRY_ENVIRONMENT.debug-images integration now captures the correct image_addr.log and slog integrations. Both integrations no longer attach the location. To receive location information, set options.attach_stacktrace to true.Updates:
reqwest to version 0.11, which is based on tokio 1.im crate, thus solving a transitive RUSTSEC advisory.Thank you:
Features, fixes and improvements in this release have been contributed by:
Removed all deprecated exports and deprecated feature flags.
Breaking Changes:
actix integration / middleware is now compatible with actix-web 3.failure integration / feature is now off-by-default along with its deprecation.log and slog integrations were re-designed, they now offer types that wrap a log::Log or slog::Drain and forward log events to the currently active sentry Hub based on an optional filter and an optional mapper.log integration will not implicitly call log::set_max_level_filter anymore, and users need to do so manually.Features:
environment based on debug_assertions.end_session_with_status global and Hub functions which allow ending a Release Health Session with an explicit SessionStatus.Deprecations:
error-chain and failure integration was officially deprecated and will be removed soon.Fixed a deadlock when nesting configure_scope calls.
Fixes:
configure_scope calls.The Rust SDK now has experimental support for Release Health Sessions using the start_session and end_session API (global and on the Hub).
Highlights:
start_session and end_session API (global and on the Hub).Breaking Changes:
Transport was changed to work on Envelopes instead of Events. The send_event trait function was removed in favor of send_envelope.Features:
Envelope, SessionUpdate, and other related types have been added to the sentry_types::protocol::v7 module.clear_breadcrumbs method was added to Scope.sentry_contexts::utils is now public.Fixes:
mechanism.Deprecations:
Future and FutureExt exports have been renamed to SentryFuture and SentryFutureExt respectively.Thank you:
Features, fixes and improvements in this release have been contributed by:
Better deal with concurrent Hub access.
Fixes:
The internals module is deprecated. Please use items from the crate root or the types module instead.
Highlights:
The sentry crate has been split up into a sentry-core, and many smaller per-integration crates. Application users should continue using the sentry crate, but library users and integration/transport authors are encouraged to use the sentry-core crate instead.
Additionally, sentry can now be extended via Integrations.
Breaking Changes:
utils module has been removed, and most utils have been moved into integrations.integrations module was completely rewritten.Client using a ClientOptions struct manually, it does not have any default integrations, and it does not resolve default options from environment variables any more. Please use the explicit apply_defaults function instead. The init function will automatically call apply_defaults.init function can’t be called with a Client anymore.Features:
std::error::Error types, using the capture_error and Hub::capture_error functions, and an additional event_from_error utility function.Hub to a Future.Integrations.ClientInitGuard, Future and ScopeGuard structs and apply_defaults, capture_error, event_from_error, with_integration and parse_type_from_debug functions have been added to the root exports.FutureExt, Integration, IntoBreadcrumbs, IntoDsn, Transport and TransportFactory traits are now exported.types module now re-exports sentry-types.Deprecations:
internals module is deprecated. Please use items from the crate root or the types module instead.Your coding agent can read these notes before it upgrades. Set up the MCP server →