Skip to content

Logs: entire log queue is dropped if a single log is bad #5186

Closed
getsentry/sentry-javascript
#20245

Description

@lucas-zimerman

What React Native libraries do you use?

Hermes

Are you using sentry.io or on-premise?

sentry.io (SaS)

@sentry/react-native SDK Version

latest

How does your development environment look like?

⬇  Place the `npx react-native@latest info` output here. ⬇



Sentry.init()

Sentry.init({
  dsn: 'https://...@sentry.io/...'
  // other options
});

Steps to Reproduce

I don't know why the broken log actually gets dropped, but it also drops the other healthy logs. We moved it to the logs project because it seems to be related to backend.

            for (let i = 0; i < 30; i++){
              Sentry.logger.info(`LOOP 5 healthy log 0 - ${i + 1}`);
            }
            Sentry.logger.error('lets break this (LVL 5)', {
              bad5: '{"a":"\uD800"}',
            });

Expected Result

40 logs with level 5

Actual Result

Image

Activity

  1. lucas-zimerman commented on Oct 3, 2025

    @lucas-zimerman
    CollaboratorAuthor
    Image Image

    Happens with raw Javascript too.

    log was sent, spotlight only removed the problematic one whereas sentry removed all logs

    {"sdk":{"name":"sentry.javascript.angular","version":"10.17.0"}}
    {"type":"log","item_count":31,"content_type":"application/vnd.sentry.items.log+json"}
    {"items":[{"timestamp":1759503679.561,"level":"info","body":"LOOP 5 healthy log 0 - 1","trace_id":"bc1b813ce6eb46129103b95187482076","severity_number":9,"attributes":{"sentry.release":{"value":"1.0.0","type":"string"},"sentry.environment":{"value":"staging","type":"string"},"sentry.sdk.name":{"value":"sentry.javascript.angular","type":"string"},"sentry.sdk.version":{"value":"10.17.0","type":"string"},"sentry.replay_id":{"value":"46b8a133da424af59ee266ace7d26c31","type":"string"},"sentry._internal.replay_is_buffering":{"value":true,"type":"boolean"}}},{"timestamp":1759503679.561,"level":"info","body":"LOOP 5 healthy log 0 - 2","trace_id":"bc1b813ce6eb46129103b95187482076","severity_number":9,"attributes":{"sentry.release":{"value":"1.0.0","type":"string"},"sentry.environment":{"value":"staging","type":"string"},"sentry.sdk.name":{"value":"sentry.javascript.angular","type":"string"},"sentry.sdk.version":{"value":"10.17.0","type":"string"},"sentry.replay_id":{"value":"46b8a133da424af59ee266ace7d26c31","type":"string"},"sentry._internal.replay_is_buffering":{"value":true,"type":"boolean"}}},{"timestamp":1759503679.561,"level":"info","body":"LOOP 5 healthy log 0 - 3","trace_id":"bc1b813ce6eb46129103b95187482076","severity_number":9,"attributes":{"sentry.release":{"value":"1.0.0","type":"string"},"sentry.environment":{"value":"staging","type":"string"},"sentry.sdk.name":{"value":"sentry.javascript.angular","type":"string"},"sentry.sdk.version":{"value":"10.17.0","type":"string"},"sentry.replay_id":{"value":"46b8a133da424af59ee266ace7d26c31","type":"string"},"sentry._internal.replay_is_buffering":{"value":true,"type":"boolean"}}},{"timestamp":1759503679.561,"level":"info","body":"LOOP 5 healthy log 0 - 4","trace_id":"bc1b813ce6eb46129103b95187482076","severity_number":9,"attributes":{"sentry.release":{"value":"1.0.0","type":"string"},"sentry.environment":{"value":"staging","type":"string"},"sentry.sdk.name":{"value":"sentry.javascript.angular","type":"string"},"sentry.sdk.version":{"value":"10.17.0","type":"string"},"sentry.replay_id":{"value":"46b8a133da424af59ee266ace7d26c31","type":"string"},"sentry._internal.replay_is_buffering":{"value":true,"type":"boolean"}}},{"timestamp":1759503679.562,"level":"info","body":"LOOP 5 healthy log 0 - 5","trace_id":"bc1b813ce6eb46129103b95187482076","severity_number":9,"attributes":{"sentry.release":{"value":"1.0.0","type":"string"},"sentry.environment":{"value":"staging","type":"string"},"sentry.sdk.name":{"value":"sentry.javascript.angular","type":"string"},"sentry.sdk.version":{"value":"10.17.0","type":"string"},"sentry.replay_id":{"value":"46b8a133da424af59ee266ace7d26c31","type":"string"},"sentry._internal.replay_is_buffering":{"value":true,"type":"boolean"}}},{"timestamp":1759503679.562,"level":"info","body":"LOOP 5 healthy log 0 - 6","trace_id":"bc1b813ce6eb46129103b95187482076","severity_number":9,"attributes":{"sentry.release":{"value":"1.0.0","type":"string"},"sentry.environment":{"value":"staging","type":"string"},"sentry.sdk.name":{"value":"sentry.javascript.angular","type":"string"},"sentry.sdk.version":{"value":"10.17.0","type":"string"},"sentry.replay_id":{"value":"46b8a133da424af59ee266ace7d26c31","type":"string"},"sentry._internal.replay_is_buffering":{"value":true,"type":"boolean"}}},{"timestamp":1759503679.562,"level":"info","body":"LOOP 5 healthy log 0 - 7","trace_id":"bc1b813ce6eb46129103b95187482076","severity_number":9,"attributes":{"sentry.release":{"value":"1.0.0","type":"string"},"sentry.environment":{"value":"staging","type":"string"},"sentry.sdk.name":{"value":"sentry.javascript.angular","type":"string"},"sentry.sdk.version":{"value":"10.17.0","type":"string"},"sentry.replay_id":{"value":"46b8a133da424af59ee266ace7d26c31","type":"string"},"sentry._internal.replay_is_buffering":{"value":true,"type":"boolean"}}},{"timestamp":1759503679.562,"level":"info","body":"LOOP 5 healthy log 0 - 8","trace_id":"bc1b813ce6eb46129103b95187482076","severity_number":9,"attributes":{"sentry.release":{"value":"1.0.0","type":"string"},"sentry.environment":{"value":"staging","type":"string"},"sentry.sdk.name":{"value":"sentry.javascript.angular","type":"string"},"sentry.sdk.version":{"value":"10.17.0","type":"string"},"sentry.replay_id":{"value":"46b8a133da424af59ee266ace7d26c31","type":"string"},"sentry._internal.replay_is_buffering":{"value":true,"type":"boolean"}}},{"timestamp":1759503679.562,"level":"info","body":"LOOP 5 healthy log 0 - 9","trace_id":"bc1b813ce6eb46129103b95187482076","severity_number":9,"attributes":{"sentry.release":{"value":"1.0.0","type":"string"},"sentry.environment":{"value":"staging","type":"string"},"sentry.sdk.name":{"value":"sentry.javascript.angular","type":"string"},"sentry.sdk.version":{"value":"10.17.0","type":"string"},"sentry.replay_id":{"value":"46b8a133da424af59ee266ace7d26c31","type":"string"},"sentry._internal.replay_is_buffering":{"value":true,"type":"boolean"}}},{"timestamp":1759503679.562,"level":"info","body":"LOOP 5 healthy log 0 - 10","trace_id":"bc1b813ce6eb46129103b95187482076","severity_number":9,"attributes":{"sentry.release":{"value":"1.0.0","type":"string"},"sentry.environment":{"value":"staging","type":"string"},"sentry.sdk.name":{"value":"sentry.javascript.angular","type":"string"},"sentry.sdk.version":{"value":"10.17.0","type":"string"},"sentry.replay_id":{"value":"46b8a133da424af59ee266ace7d26c31","type":"string"},"sentry._internal.replay_is_buffering":{"value":true,"type":"boolean"}}},{"timestamp":1759503679.562,"level":"info","body":"LOOP 5 healthy log 0 - 11","trace_id":"bc1b813ce6eb46129103b95187482076","severity_number":9,"attributes":{"sentry.release":{"value":"1.0.0","type":"string"},"sentry.environment":{"value":"staging","type":"string"},"sentry.sdk.name":{"value":"sentry.javascript.angular","type":"string"},"sentry.sdk.version":{"value":"10.17.0","type":"string"},"sentry.replay_id":{"value":"46b8a133da424af59ee266ace7d26c31","type":"string"},"sentry._internal.replay_is_buffering":{"value":true,"type":"boolean"}}},{"timestamp":1759503679.562,"level":"info","body":"LOOP 5 healthy log 0 - 12","trace_id":"bc1b813ce6eb46129103b95187482076","severity_number":9,"attributes":{"sentry.release":{"value":"1.0.0","type":"string"},"sentry.environment":{"value":"staging","type":"string"},"sentry.sdk.name":{"value":"sentry.javascript.angular","type":"string"},"sentry.sdk.version":{"value":"10.17.0","type":"string"},"sentry.replay_id":{"value":"46b8a133da424af59ee266ace7d26c31","type":"string"},"sentry._internal.replay_is_buffering":{"value":true,"type":"boolean"}}},{"timestamp":1759503679.562,"level":"info","body":"LOOP 5 healthy log 0 - 13","trace_id":"bc1b813ce6eb46129103b95187482076","severity_number":9,"attributes":{"sentry.release":{"value":"1.0.0","type":"string"},"sentry.environment":{"value":"staging","type":"string"},"sentry.sdk.name":{"value":"sentry.javascript.angular","type":"string"},"sentry.sdk.version":{"value":"10.17.0","type":"string"},"sentry.replay_id":{"value":"46b8a133da424af59ee266ace7d26c31","type":"string"},"sentry._internal.replay_is_buffering":{"value":true,"type":"boolean"}}},{"timestamp":1759503679.563,"level":"info","body":"LOOP 5 healthy log 0 - 14","trace_id":"bc1b813ce6eb46129103b95187482076","severity_number":9,"attributes":{"sentry.release":{"value":"1.0.0","type":"string"},"sentry.environment":{"value":"staging","type":"string"},"sentry.sdk.name":{"value":"sentry.javascript.angular","type":"string"},"sentry.sdk.version":{"value":"10.17.0","type":"string"},"sentry.replay_id":{"value":"46b8a133da424af59ee266ace7d26c31","type":"string"},"sentry._internal.replay_is_buffering":{"value":true,"type":"boolean"}}},{"timestamp":1759503679.563,"level":"info","body":"LOOP 5 healthy log 0 - 15","trace_id":"bc1b813ce6eb46129103b95187482076","severity_number":9,"attributes":{"sentry.release":{"value":"1.0.0","type":"string"},"sentry.environment":{"value":"staging","type":"string"},"sentry.sdk.name":{"value":"sentry.javascript.angular","type":"string"},"sentry.sdk.version":{"value":"10.17.0","type":"string"},"sentry.replay_id":{"value":"46b8a133da424af59ee266ace7d26c31","type":"string"},"sentry._internal.replay_is_buffering":{"value":true,"type":"boolean"}}},{"timestamp":1759503679.563,"level":"info","body":"LOOP 5 healthy log 0 - 16","trace_id":"bc1b813ce6eb46129103b95187482076","severity_number":9,"attributes":{"sentry.release":{"value":"1.0.0","type":"string"},"sentry.environment":{"value":"staging","type":"string"},"sentry.sdk.name":{"value":"sentry.javascript.angular","type":"string"},"sentry.sdk.version":{"value":"10.17.0","type":"string"},"sentry.replay_id":{"value":"46b8a133da424af59ee266ace7d26c31","type":"string"},"sentry._internal.replay_is_buffering":{"value":true,"type":"boolean"}}},{"timestamp":1759503679.563,"level":"info","body":"LOOP 5 healthy log 0 - 17","trace_id":"bc1b813ce6eb46129103b95187482076","severity_number":9,"attributes":{"sentry.release":{"value":"1.0.0","type":"string"},"sentry.environment":{"value":"staging","type":"string"},"sentry.sdk.name":{"value":"sentry.javascript.angular","type":"string"},"sentry.sdk.version":{"value":"10.17.0","type":"string"},"sentry.replay_id":{"value":"46b8a133da424af59ee266ace7d26c31","type":"string"},"sentry._internal.replay_is_buffering":{"value":true,"type":"boolean"}}},{"timestamp":1759503679.563,"level":"info","body":"LOOP 5 healthy log 0 - 18","trace_id":"bc1b813ce6eb46129103b95187482076","severity_number":9,"attributes":{"sentry.release":{"value":"1.0.0","type":"string"},"sentry.environment":{"value":"staging","type":"string"},"sentry.sdk.name":{"value":"sentry.javascript.angular","type":"string"},"sentry.sdk.version":{"value":"10.17.0","type":"string"},"sentry.replay_id":{"value":"46b8a133da424af59ee266ace7d26c31","type":"string"},"sentry._internal.replay_is_buffering":{"value":true,"type":"boolean"}}},{"timestamp":1759503679.563,"level":"info","body":"LOOP 5 healthy log 0 - 19","trace_id":"bc1b813ce6eb46129103b95187482076","severity_
    number":9,"attributes":{"sentry.release":{"value":"1.0.0","type":"string"},"sentry.environment":{"value":"staging","type":"string"},"sentry.sdk.name":{"value":"sentry.javascript.angular","type":"string"},"sentry.sdk.version":{"value":"10.17.0","type":"string"},"sentry.replay_id":{"value":"46b8a133da424af59ee266ace7d26c31","type":"string"},"sentry._internal.replay_is_buffering":{"value":true,"type":"boolean"}}},{"timestamp":1759503679.563,"level":"info","body":"LOOP 5 healthy log 0 - 20","trace_id":"bc1b813ce6eb46129103b95187482076","severity_number":9,"attributes":{"sentry.release":{"value":"1.0.0","type":"string"},"sentry.environment":{"value":"staging","type":"string"},"sentry.sdk.name":{"value":"sentry.javascript.angular","type":"string"},"sentry.sdk.version":{"value":"10.17.0","type":"string"},"sentry.replay_id":{"value":"46b8a133da424af59ee266ace7d26c31","type":"string"},"sentry._internal.replay_is_buffering":{"value":true,"type":"boolean"}}},{"timestamp":1759503679.563,"level":"info","body":"LOOP 5 healthy log 0 - 21","trace_id":"bc1b813ce6eb46129103b95187482076","severity_number":9,"attributes":{"sentry.release":{"value":"1.0.0","type":"string"},"sentry.environment":{"value":"staging","type":"string"},"sentry.sdk.name":{"value":"sentry.javascript.angular","type":"string"},"sentry.sdk.version":{"value":"10.17.0","type":"string"},"sentry.replay_id":{"value":"46b8a133da424af59ee266ace7d26c31","type":"string"},"sentry._internal.replay_is_buffering":{"value":true,"type":"boolean"}}},{"timestamp":1759503679.563,"level":"info","body":"LOOP 5 healthy log 0 - 22","trace_id":"bc1b813ce6eb46129103b95187482076","severity_number":9,"attributes":{"sentry.release":{"value":"1.0.0","type":"string"},"sentry.environment":{"value":"staging","type":"string"},"sentry.sdk.name":{"value":"sentry.javascript.angular","type":"string"},"sentry.sdk.version":{"value":"10.17.0","type":"string"},"sentry.replay_id":{"value":"46b8a133da424af59ee266ace7d26c31","type":"string"},"sentry._internal.replay_is_buffering":{"value":true,"type":"boolean"}}},{"timestamp":1759503679.563,"level":"info","body":"LOOP 5 healthy log 0 - 23","trace_id":"bc1b813ce6eb46129103b95187482076","severity_number":9,"attributes":{"sentry.release":{"value":"1.0.0","type":"string"},"sentry.environment":{"value":"staging","type":"string"},"sentry.sdk.name":{"value":"sentry.javascript.angular","type":"string"},"sentry.sdk.version":{"value":"10.17.0","type":"string"},"sentry.replay_id":{"value":"46b8a133da424af59ee266ace7d26c31","type":"string"},"sentry._internal.replay_is_buffering":{"value":true,"type":"boolean"}}},{"timestamp":1759503679.563,"level":"info","body":"LOOP 5 healthy log 0 - 24","trace_id":"bc1b813ce6eb46129103b95187482076","severity_number":9,"attributes":{"sentry.release":{"value":"1.0.0","type":"string"},"sentry.environment":{"value":"staging","type":"string"},"sentry.sdk.name":{"value":"sentry.javascript.angular","type":"string"},"sentry.sdk.version":{"value":"10.17.0","type":"string"},"sentry.replay_id":{"value":"46b8a133da424af59ee266ace7d26c31","type":"string"},"sentry._internal.replay_is_buffering":{"value":true,"type":"boolean"}}},{"timestamp":1759503679.563,"level":"info","body":"LOOP 5 healthy log 0 - 25","trace_id":"bc1b813ce6eb46129103b95187482076","severity_number":9,"attributes":{"sentry.release":{"value":"1.0.0","type":"string"},"sentry.environment":{"value":"staging","type":"string"},"sentry.sdk.name":{"value":"sentry.javascript.angular","type":"string"},"sentry.sdk.version":{"value":"10.17.0","type":"string"},"sentry.replay_id":{"value":"46b8a133da424af59ee266ace7d26c31","type":"string"},"sentry._internal.replay_is_buffering":{"value":true,"type":"boolean"}}},{"timestamp":1759503679.563,"level":"info","body":"LOOP 5 healthy log 0 - 26","trace_id":"bc1b813ce6eb46129103b95187482076","severity_number":9,"attributes":{"sentry.release":{"value":"1.0.0","type":"string"},"sentry.environment":{"value":"staging","type":"string"},"sentry.sdk.name":{"value":"sentry.javascript.angular","type":"string"},"sentry.sdk.version":{"value":"10.17.0","type":"string"},"sentry.replay_id":{"value":"46b8a133da424af59ee266ace7d26c31","type":"string"},"sentry._internal.replay_is_buffering":{"value":true,"type":"boolean"}}},{"timestamp":1759503679.563,"level":"info","body":"LOOP 5 healthy log 0 - 27","trace_id":"bc1b813ce6eb46129103b95187482076","severity_number":9,"attributes":{"sentry.release":{"value":"1.0.0","type":"string"},"sentry.environment":{"value":"staging","type":"string"},"sentry.sdk.name":{"value":"sentry.javascript.angular","type":"string"},"sentry.sdk.version":{"value":"10.17.0","type":"string"},"sentry.replay_id":{"value":"46b8a133da424af59ee266ace7d26c31","type":"string"},"sentry._internal.replay_is_buffering":{"value":true,"type":"boolean"}}},{"timestamp":1759503679.563,"level":"info","body":"LOOP 5 healthy log 0 - 28","trace_id":"bc1b813ce6eb46129103b95187482076","severity_number":9,"attributes":{"sentry.release":{"value":"1.0.0","type":"string"},"sentry.environment":{"value":"staging","type":"string"},"sentry.sdk.name":{"value":"sentry.javascript.angular","type":"string"},"sentry.sdk.version":{"value":"10.17.0","type":"string"},"sentry.replay_id":{"value":"46b8a133da424af59ee266ace7d26c31","type":"string"},"sentry._internal.replay_is_buffering":{"value":true,"type":"boolean"}}},{"timestamp":1759503679.563,"level":"info","body":"LOOP 5 healthy log 0 - 29","trace_id":"bc1b813ce6eb46129103b95187482076","severity_number":9,"attributes":{"sentry.release":{"value":"1.0.0","type":"string"},"sentry.environment":{"value":"staging","type":"string"},"sentry.sdk.name":{"value":"sentry.javascript.angular","type":"string"},"sentry.sdk.version":{"value":"10.17.0","type":"string"},"sentry.replay_id":{"value":"46b8a133da424af59ee266ace7d26c31","type":"string"},"sentry._internal.replay_is_buffering":{"value":true,"type":"boolean"}}},{"timestamp":1759503679.563,"level":"info","body":"LOOP 5 healthy log 0 - 30","trace_id":"bc1b813ce6eb46129103b95187482076","severity_number":9,"attributes":{"sentry.release":{"value":"1.0.0","type":"string"},"sentry.environment":{"value":"staging","type":"string"},"sentry.sdk.name":{"value":"sentry.javascript.angular","type":"string"},"sentry.sdk.version":{"value":"10.17.0","type":"string"},"sentry.replay_id":{"value":"46b8a133da424af59ee266ace7d26c31","type":"string"},"sentry._internal.replay_is_buffering":{"value":true,"type":"boolean"}}},{"timestamp":1759503679.563,"level":"error","body":"lets break this (LVL 5)","trace_id":"bc1b813ce6eb46129103b95187482076","severity_number":17,"attributes":{"bad5":{"value":"{\"a\":\"\ud800\"}","type":"string"},"sentry.release":{"value":"1.0.0","type":"string"},"sentry.environment":{"value":"staging","type":"string"},"sentry.sdk.name":{"value":"sentry.javascript.angular","type":"string"},"sentry.sdk.version":{"value":"10.17.0","type":"string"},"sentry.replay_id":{"value":"46b8a133da424af59ee266ace7d26c31","type":"string"},"sentry._internal.replay_is_buffering":{"value":true,"type":"boolean"}}}]}
    
  2. self-assigned this
    on Oct 20, 2025
  3. AbhiPrasad commented on Oct 20, 2025

    @AbhiPrasad
    Contributor

    Assigning myself so I can investigate further.

  4. antonis commented on Apr 13, 2026

    @antonis
    Contributor

    Investigated whether this affects other Sentry SDKs. Here's a summary:

    Root cause is in Relay — expand_log_container in relay-server/src/processing/logs/process.rs parses the entire {"items": [...]} log container with serde_json in one shot. Any invalid Unicode in any item (like an unpaired surrogate \uD800) causes the whole batch to be rejected with DiscardReason::InvalidJson. This affects all SDKs.

    Cross-SDK vulnerability:

    SDK Per-Item Error Handling Surrogate-Safe Encoding Risk
    sentry-javascript / sentry-react-native No No (JSON.stringify preserves surrogates) High
    sentry-dotnet No No (Utf8JsonWriter throws on unpaired surrogates in .NET 8+) High
    sentry-java No Partial (Gson writes surrogates through without throwing, but Relay rejects) Medium
    sentry-dart Yes (try/catch at add-time) No explicit sanitization Medium
    sentry-python No per-item fallback Yes (json.dumps escapes surrogates to ASCII by default) Low
    sentry-cocoa Yes (try/catch at add-time) N/A (Swift String can't represent unpaired surrogates) Low

    Two-layer fix would be ideal:

    1. Relay: Parse log items individually so one bad item doesn't drop the batch
    2. SDKs: Sanitize strings before JSON serialization and/or add per-item try/catch during batch encoding
  5. added a commit that references this issue on Apr 13, 2026
    afbd06e
  6. self-assigned this
    on Apr 13, 2026
  7. antonis commented on Apr 13, 2026

    @antonis
    Contributor

    Opened getsentry/sentry-javascript#20245 to handle the SDK side (2) of the fix

  8. added 5 commits that reference this issue on Apr 13, 2026
    8e38c23
    70ca92f
    22b98ad
    1274120
    568b972
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Labels

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions