Skip to content

Limit batch size #961

Closed
Closed
@matthieuMay

Description

@matthieuMay

When batching too much events, we often hit the 500kb limit of batch API.

Inspecting the events I realized that a lot of data sent is redundant (integrating context, _metadata, integrations)....

Reading the documentation of batch API it seems that integrations and context should be extracted which drastically reduce the payload size.

patch-package to realize this is :

diff --git a/node_modules/@segment/analytics-react-native/src/api.ts b/node_modules/@segment/analytics-react-native/src/api.ts
index a3048da..41e6099 100644
--- a/node_modules/@segment/analytics-react-native/src/api.ts
+++ b/node_modules/@segment/analytics-react-native/src/api.ts
@@ -9,12 +9,17 @@ export const uploadEvents = async ({
   url: string;
   events: SegmentEvent[];
 }) => {
+  const context = events.find((event) => !!event.context)?.context;
+  const integrations = events.find((event) => !!event.integrations)?.integrations;
+  let sentEvents = events.map(({context,integrations, ...event}) => (event));
   return await fetch(url, {
     method: 'POST',
     body: JSON.stringify({
-      batch: events,
+      batch: sentEvents,
       sentAt: new Date().toISOString(),
       writeKey: writeKey,
+      context: context,
+      integrations: integrations,
     }),
     headers: {
       'Content-Type': 'application/json; charset=utf-8',

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions