diff --git a/dev-packages/browser-integration-tests/suites/replay/minReplayDurationLimit/init.js b/dev-packages/browser-integration-tests/suites/replay/minReplayDurationLimit/init.js
new file mode 100644
index 000000000000..58873b85f9ec
--- /dev/null
+++ b/dev-packages/browser-integration-tests/suites/replay/minReplayDurationLimit/init.js
@@ -0,0 +1,18 @@
+import * as Sentry from '@sentry/browser';
+
+window.Sentry = Sentry;
+window.Replay = Sentry.replayIntegration({
+ flushMinDelay: 200,
+ flushMaxDelay: 200,
+ // Try to set to 60s - should be capped at 50s
+ minReplayDuration: 60000,
+});
+
+Sentry.init({
+ dsn: 'https://public@dsn.ingest.sentry.io/1337',
+ sampleRate: 0,
+ replaysSessionSampleRate: 1.0,
+ replaysOnErrorSampleRate: 0.0,
+
+ integrations: [window.Replay],
+});
diff --git a/dev-packages/browser-integration-tests/suites/replay/minReplayDurationLimit/template.html b/dev-packages/browser-integration-tests/suites/replay/minReplayDurationLimit/template.html
new file mode 100644
index 000000000000..06c44ed4bc9c
--- /dev/null
+++ b/dev-packages/browser-integration-tests/suites/replay/minReplayDurationLimit/template.html
@@ -0,0 +1,12 @@
+
+
+
+
+
Testing that minReplayDuration is capped at 50s max
+
+
+
diff --git a/dev-packages/browser-integration-tests/suites/replay/minReplayDurationLimit/test.ts b/dev-packages/browser-integration-tests/suites/replay/minReplayDurationLimit/test.ts
new file mode 100644
index 000000000000..125af55a6985
--- /dev/null
+++ b/dev-packages/browser-integration-tests/suites/replay/minReplayDurationLimit/test.ts
@@ -0,0 +1,23 @@
+import { expect } from '@playwright/test';
+import { sentryTest } from '../../../utils/fixtures';
+import { shouldSkipReplayTest } from '../../../utils/replayHelpers';
+
+sentryTest('caps minReplayDuration to maximum of 50 seconds', async ({ getLocalTestUrl, page }) => {
+ if (shouldSkipReplayTest()) {
+ sentryTest.skip();
+ }
+
+ const url = await getLocalTestUrl({ testDir: __dirname });
+
+ await page.goto(url);
+
+ const actualMinReplayDuration = await page.evaluate(() => {
+ // @ts-expect-error - Replay is not typed on window
+ const replayIntegration = window.Replay;
+ const replay = replayIntegration._replay;
+ return replay.getOptions().minReplayDuration;
+ });
+
+ // Even though we configured it to 60s (60000ms), it should be capped to 50s
+ expect(actualMinReplayDuration).toBe(50_000);
+});
diff --git a/packages/replay-internal/src/constants.ts b/packages/replay-internal/src/constants.ts
index da253a68ec8f..ac24f64cddfe 100644
--- a/packages/replay-internal/src/constants.ts
+++ b/packages/replay-internal/src/constants.ts
@@ -45,8 +45,12 @@ export const REPLAY_MAX_EVENT_BUFFER_SIZE = 20_000_000; // ~20MB
/** Replays must be min. 5s long before we send them. */
export const MIN_REPLAY_DURATION = 4_999;
-/* The max. allowed value that the minReplayDuration can be set to. */
-export const MIN_REPLAY_DURATION_LIMIT = 15_000;
+
+/*
+The max. allowed value that the minReplayDuration can be set to.
+This needs to be below 60s, so we don't unintentionally drop buffered replays that are longer than 60s.
+*/
+export const MIN_REPLAY_DURATION_LIMIT = 50_000;
/** The max. length of a replay. */
export const MAX_REPLAY_DURATION = 3_600_000; // 60 minutes in ms;
diff --git a/packages/replay-internal/src/types/replay.ts b/packages/replay-internal/src/types/replay.ts
index a2c84d6c4bbe..75a2d35e64f2 100644
--- a/packages/replay-internal/src/types/replay.ts
+++ b/packages/replay-internal/src/types/replay.ts
@@ -180,7 +180,10 @@ export interface ReplayPluginOptions extends ReplayNetworkOptions {
/**
* The min. duration (in ms) a replay has to have before it is sent to Sentry.
* Whenever attempting to flush a session that is shorter than this, it will not actually send it to Sentry.
- * Note that this is capped at max. 15s.
+ * Note that this is capped at max. 50s, so we don't unintentionally drop buffered replays that are longer than 60s
+ *
+ * Warning: Setting this to a higher value can result in unintended drops of onError-sampled replays.
+ *
*/
minReplayDuration: number;