Skip to content

Commit

Permalink
add surveys_request_timeout_ms config
Browse files Browse the repository at this point in the history
  • Loading branch information
lucasheriques committed Feb 20, 2025
1 parent 801ec47 commit c2549f5
Show file tree
Hide file tree
Showing 3 changed files with 54 additions and 46 deletions.
87 changes: 44 additions & 43 deletions src/posthog-core.ts
Original file line number Diff line number Diff line change
@@ -1,33 +1,40 @@
import { Autocapture } from './autocapture'
import Config from './config'
import {
_copyAndTruncateStrings,
each,
eachArray,
extend,
safewrapClass,
isCrossDomainCookie,
addEventListener,
} from './utils'
import { assignableWindow, document, location, navigator, userAgent, window } from './utils/globals'
import { PostHogFeatureFlags } from './posthog-featureflags'
import { PostHogPersistence } from './posthog-persistence'
import { ConsentManager } from './consent'
import {
ALIAS_ID_KEY,
COOKIELESS_MODE_FLAG_PROPERTY,
COOKIELESS_SENTINEL_VALUE,
ENABLE_PERSON_PROCESSING,
FLAG_CALL_REPORTED,
PEOPLE_DISTINCT_ID_KEY,
USER_STATE,
ENABLE_PERSON_PROCESSING,
COOKIELESS_SENTINEL_VALUE,
COOKIELESS_MODE_FLAG_PROPERTY,
} from './constants'
import { DeadClicksAutocapture, isDeadClicksEnabledForAutocapture } from './extensions/dead-clicks-autocapture'
import { ExceptionObserver } from './extensions/exception-autocapture'
import { SessionRecording } from './extensions/replay/sessionrecording'
import { RemoteConfigLoader } from './remote-config'
import { setupSegmentIntegration } from './extensions/segment-integration'
import { SentryIntegration, sentryIntegration, SentryIntegrationOptions } from './extensions/sentry-integration'
import { Toolbar } from './extensions/toolbar'
import { localStore } from './storage'
import { TracingHeaders } from './extensions/tracing-headers'
import { WebVitalsAutocapture } from './extensions/web-vitals'
import { Heatmaps } from './heatmaps'
import { PageViewManager } from './page-view'
import { PostHogExceptions } from './posthog-exceptions'
import { PostHogFeatureFlags } from './posthog-featureflags'
import { PostHogPersistence } from './posthog-persistence'
import { PostHogSurveys } from './posthog-surveys'
import { Survey, SurveyCallback, SurveyQuestionBranchingType } from './posthog-surveys-types'
import { RateLimiter } from './rate-limiter'
import { RemoteConfigLoader } from './remote-config'
import { extendURLParams, request, SUPPORTS_REQUEST } from './request'
import { DEFAULT_FLUSH_INTERVAL_MS, RequestQueue } from './request-queue'
import { RetryQueue } from './retry-queue'
import { ScrollManager } from './scroll-manager'
import { SessionPropsManager } from './session-props'
import { SessionIdManager } from './sessionid'
import { RequestRouter, RequestRouterRegion } from './utils/request-router'
import { SiteApps } from './site-apps'
import { localStore } from './storage'
import {
CaptureOptions,
CaptureResult,
Expand All @@ -46,13 +53,23 @@ import {
SnippetArrayItem,
ToolbarParams,
} from './types'
import { SentryIntegration, SentryIntegrationOptions, sentryIntegration } from './extensions/sentry-integration'
import { setupSegmentIntegration } from './extensions/segment-integration'
import { PageViewManager } from './page-view'
import { PostHogSurveys } from './posthog-surveys'
import { RateLimiter } from './rate-limiter'
import { uuidv7 } from './uuidv7'
import { Survey, SurveyCallback, SurveyQuestionBranchingType } from './posthog-surveys-types'
import {
_copyAndTruncateStrings,
addEventListener,
each,
eachArray,
extend,
isCrossDomainCookie,
safewrapClass,
} from './utils'
import { isLikelyBot } from './utils/blocked-uas'
import { Info } from './utils/event-utils'
import { assignableWindow, document, location, navigator, userAgent, window } from './utils/globals'
import { getIdentifyHash } from './utils/identify-utils'
import { logger } from './utils/logger'
import { RequestRouter, RequestRouterRegion } from './utils/request-router'
import { SimpleEventEmitter } from './utils/simple-event-emitter'
import { includes, isDistinctIdStringLike } from './utils/string-utils'
import {
isArray,
isEmptyObject,
Expand All @@ -66,25 +83,8 @@ import {
isString,
isUndefined,
} from './utils/type-utils'
import { Info } from './utils/event-utils'
import { logger } from './utils/logger'
import { SessionPropsManager } from './session-props'
import { isLikelyBot } from './utils/blocked-uas'
import { extendURLParams, request, SUPPORTS_REQUEST } from './request'
import { Heatmaps } from './heatmaps'
import { ScrollManager } from './scroll-manager'
import { SimpleEventEmitter } from './utils/simple-event-emitter'
import { Autocapture } from './autocapture'
import { TracingHeaders } from './extensions/tracing-headers'
import { ConsentManager } from './consent'
import { ExceptionObserver } from './extensions/exception-autocapture'
import { WebVitalsAutocapture } from './extensions/web-vitals'
import { uuidv7 } from './uuidv7'
import { WebExperiments } from './web-experiments'
import { PostHogExceptions } from './posthog-exceptions'
import { SiteApps } from './site-apps'
import { DeadClicksAutocapture, isDeadClicksEnabledForAutocapture } from './extensions/dead-clicks-autocapture'
import { includes, isDistinctIdStringLike } from './utils/string-utils'
import { getIdentifyHash } from './utils/identify-utils'

/*
SIMPLE STYLE GUIDE:
Expand Down Expand Up @@ -176,6 +176,7 @@ export const defaultConfig = (): PostHogConfig => ({
advanced_disable_feature_flags_on_first_load: false,
advanced_disable_toolbar_metrics: false,
feature_flag_request_timeout_ms: 3000,
surveys_request_timeout_ms: 10000,
on_request_error: (res) => {
const error = 'Bad HTTP status: ' + res.statusCode + ' ' + res.text
logger.error(error)
Expand Down
2 changes: 1 addition & 1 deletion src/posthog-surveys.ts
Original file line number Diff line number Diff line change
Expand Up @@ -295,7 +295,7 @@ export class PostHogSurveys {
`/api/surveys/?token=${this.instance.config.token}`
),
method: 'GET',
timeout: 10000, // 10 second timeout
timeout: this.instance.config.surveys_request_timeout_ms,
callback: (response) => {
this._isFetchingSurveys = false
const statusCode = response.statusCode
Expand Down
11 changes: 9 additions & 2 deletions src/types.ts
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
import { PostHog } from './posthog-core'
import type { SegmentAnalytics } from './extensions/segment-integration'
import type { recordOptions } from './extensions/replay/types/rrweb'
import type { SegmentAnalytics } from './extensions/segment-integration'
import { PostHog } from './posthog-core'

export type Property = any
export type Properties = Record<string, Property>
Expand Down Expand Up @@ -692,6 +692,13 @@ export interface PostHogConfig {
*/
feature_flag_request_timeout_ms: number

/**
* Sets timeout for fetching surveys
*
* @default 10000
*/
surveys_request_timeout_ms: number

/**
* Function to get the device ID.
* This doesn't usually need to be set, but can be useful if you want to use a custom device ID.
Expand Down

0 comments on commit c2549f5

Please sign in to comment.