Skip to content

All event categories not sent by the SDK due to one category being rate limited #8322

Description

@rodolfoBee

Platform

iOS

Environment

Develop

Installed

Swift Package Manager

Other Error Monitoring Solution

No

Other Error Monitoring Solution Name

No response

Version

9.19.1

Xcode Version

26.3 (17C529)

Did it work on previous versions?

No response

Steps to Reproduce

This requires an organisation with exhausted quotas for any event category. The original report is from spans quota being exhausted, this test used the replays quota.

  1. Configure the SDK to send the exhausted category events to Sentry
  2. Configure User feedback using the feedback API: https://docs.sentry.io/platforms/apple/guides/ios/user-feedback/#user-feedback-api
import Sentry
let feedback = SentryFeedback(
    message: "The settings screen is confusing.",
    name: "Ada",
    email: "ada@example.com",
    source: .custom,
    associatedEventId: nil,
    attachments: nil
)
SentrySDK.capture(feedback: feedback)
  1. Have the SDK attempt to send an exhausted event to trigger a 429 response from the server
  2. Try to send a user feedback

Expected Result

The user feedback is sent to Sentry.

Actual Result

The user feedback is not sent by the SDK due to "ratelimit backoff".

The SDK logs show:

[Sentry] [debug] [1782989348.286313] [SentrySessionReplay:722] [Session Replay] Finished processing replay video with 1 segments
[Sentry] [debug] [1782989348.286588] [SentryFileManagerHelper:211] Writing envelope to path: [REDACTED]
[Sentry] [debug] [1782989348.287216] [SentryOnDemandReplay:157] [Session Replay] Releasing frames until date: 2026-07-02 10:49:08 +0000
[Sentry] [debug] [1782989348.287255] [SentryHttpTransport:296] sendAllCachedEnvelopes start.
[Sentry] [debug] [1782989348.2875051] [SentryOnDemandReplay:17] [Session Replay] Removed replay file at: [REDACTED]
[Sentry] [debug] [1782989348.287513] [SentryOnDemandReplay:173] [Session Replay] Frames released, remaining frames count: 0
[Sentry] [debug] [1782989348.287768] Constructed request: SentryURLRequestFactory
[Sentry] [debug] [1782989348.308693] [SentryRequestOperation:36] Request status: 429 <- Out of Replay quota.
....
[Sentry] [warning] [1782989361.318871] [SentryHttpTransport:250] Envelope item dropped due to exceeding rate limit. Category: feedback <- rate limit backoff triggered for User Feedback.
[Sentry] [warning] [1782989361.318886] [SentryHttpTransport:119] RateLimit is active for all envelope items. <- dropping all types of events.

The 429 response is the server rejecting the replay because the organisation is out of Replay quota. This triggers the SDK's "ratelimit backoff" logic to not send more replays, as they will be immediately rejected.

However, it is also blocking the user feedback, which does not use the same quota in Sentry.

Screenshots from the stats in Sentry:
Replay being rejected due to quota:
Image

User feedback being rejected due to ratelimit backoff:
Image

Are you willing to submit a PR?

No response

Metadata

Metadata

Labels

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions