From 83d8e221f4cbf17494638e285305a9d719c0c4fa Mon Sep 17 00:00:00 2001 From: phaym <1431593+phaym@users.noreply.github.com> Date: Wed, 5 Nov 2025 10:36:37 -0500 Subject: [PATCH] Revert "feat: support server-side events in next.js sdk (#1154)" This reverts commit e2351a80f545501437d56a8e37c9524c8fdaac9b. --- sdk/js/src/EventQueue.ts | 10 +++--- sdk/js/src/types.ts | 1 - sdk/nextjs/package.json | 3 -- .../InternalDevCycleClientsideProvider.tsx | 7 +++- sdk/nextjs/src/common/types.ts | 8 +---- sdk/nextjs/src/server/initialize.ts | 6 ++-- sdk/nextjs/src/server/setupDevCycle.tsx | 36 ------------------- yarn.lock | 2 -- 8 files changed, 14 insertions(+), 59 deletions(-) diff --git a/sdk/js/src/EventQueue.ts b/sdk/js/src/EventQueue.ts index e673a609c..446ab482f 100644 --- a/sdk/js/src/EventQueue.ts +++ b/sdk/js/src/EventQueue.ts @@ -53,12 +53,10 @@ export class EventQueue< ) } - if (!options.next?.disableAutomaticEventFlush) { - this.flushInterval = setInterval( - this.flushEvents.bind(this), - eventFlushIntervalMS, - ) - } + this.flushInterval = setInterval( + this.flushEvents.bind(this), + eventFlushIntervalMS, + ) this.flushEventQueueSize = options?.flushEventQueueSize ?? 100 this.maxEventQueueSize = options?.maxEventQueueSize ?? 1000 diff --git a/sdk/js/src/types.ts b/sdk/js/src/types.ts index f28367272..f31ad1baa 100644 --- a/sdk/js/src/types.ts +++ b/sdk/js/src/types.ts @@ -129,7 +129,6 @@ export interface DevCycleOptions { */ next?: { configRefreshHandler?: (lastModifiedDate?: number) => void - disableAutomaticEventFlush?: boolean } /** diff --git a/sdk/nextjs/package.json b/sdk/nextjs/package.json index 429cff26c..783aeb758 100644 --- a/sdk/nextjs/package.json +++ b/sdk/nextjs/package.json @@ -26,9 +26,6 @@ "hoist-non-react-statics": "^3.3.2", "server-only": "^0.0.1" }, - "peerDependencies": { - "next": ">=15.1.0" - }, "types": "./src/index.d.ts", "exports": { ".": { diff --git a/sdk/nextjs/src/client/internal/InternalDevCycleClientsideProvider.tsx b/sdk/nextjs/src/client/internal/InternalDevCycleClientsideProvider.tsx index 509d76d85..6a9477022 100644 --- a/sdk/nextjs/src/client/internal/InternalDevCycleClientsideProvider.tsx +++ b/sdk/nextjs/src/client/internal/InternalDevCycleClientsideProvider.tsx @@ -100,9 +100,14 @@ export const InternalDevCycleClientsideProvider = ({ sdkPlatform: 'nextjs', deferInitialization: true, disableConfigCache: true, + ...(isServer + ? { + disableAutomaticEventLogging: true, + disableCustomEventLogging: true, + } + : {}), next: { configRefreshHandler: revalidateConfig, - disableAutomaticEventFlush: isServer, }, }) diff --git a/sdk/nextjs/src/common/types.ts b/sdk/nextjs/src/common/types.ts index 6e813b179..ceb7ea7a0 100644 --- a/sdk/nextjs/src/common/types.ts +++ b/sdk/nextjs/src/common/types.ts @@ -1,8 +1,4 @@ -import { - DevCycleOptions, - DevCycleUser, - DevCycleEvent, -} from '@devcycle/js-client-sdk' +import { DevCycleOptions, DevCycleUser } from '@devcycle/js-client-sdk' import { BucketedUserConfig, ConfigSource } from '@devcycle/types' export type DevCycleNextOptions = Pick< @@ -57,5 +53,3 @@ export type DevCycleServerData = { userAgent: string | undefined } - -export type { DevCycleEvent } diff --git a/sdk/nextjs/src/server/initialize.ts b/sdk/nextjs/src/server/initialize.ts index 2aa23ad4c..ab78fde36 100644 --- a/sdk/nextjs/src/server/initialize.ts +++ b/sdk/nextjs/src/server/initialize.ts @@ -10,11 +10,11 @@ import { getBucketedConfig, getConfigFromSource } from './bucketing' const jsClientOptions = { // pass next object to enable "next" mode in JS SDK - next: { disableAutomaticEventFlush: true }, + next: {}, disableConfigCache: true, disableRealtimeUpdates: true, - disableAutomaticEventLogging: false, - disableCustomEventLogging: false, + disableAutomaticEventLogging: true, + disableCustomEventLogging: true, sdkPlatform: 'nextjs', } diff --git a/sdk/nextjs/src/server/setupDevCycle.tsx b/sdk/nextjs/src/server/setupDevCycle.tsx index bb9bb0d2a..f426a308e 100644 --- a/sdk/nextjs/src/server/setupDevCycle.tsx +++ b/sdk/nextjs/src/server/setupDevCycle.tsx @@ -1,16 +1,12 @@ import 'server-only' import { initialize, validateSDKKey } from './initialize' import { - DevCycleClient, - DevCycleEvent, DevCycleUser, DVCCustomDataJSON, VariableDefinitions, } from '@devcycle/js-client-sdk' import { DevCycleNextOptions } from '../common/types' import { InferredVariableType, VariableKey } from '@devcycle/types' -import { cache } from 'react' -import { after } from 'next/server' // server-side users must always be "identified" with a user id type ServerUser = @@ -26,20 +22,6 @@ type GetVariableValue = < defaultValue: ValueType, ) => Promise> -// flushes events from queue once per request, after request completes -const cachedFlushEvents = cache((client: DevCycleClient) => { - try { - after(async () => { - await client.flushEvents() - }) - } catch (error) { - client.logger.error( - 'Event logging is not supported in this environment. ' + - 'Disable custom and automatic event logging in sdk options.', - ) - } -}) - // allow return type inference // eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types export const setupDevCycle = < @@ -65,10 +47,6 @@ export const setupDevCycle = < userGetter, options, ) - - if (!options.disableAutomaticEventLogging) { - cachedFlushEvents(client) - } return client.variableValue(key, defaultValue) } @@ -92,19 +70,6 @@ export const setupDevCycle = < return client.allFeatures() } - const _track = async (event: DevCycleEvent) => { - const { client } = await initialize( - serverSDKKey, - clientSDKKey, - userGetter, - options, - ) - if (!options.disableCustomEventLogging) { - cachedFlushEvents(client) - } - return client.track(event) - } - const _getClientContext = () => { const serverDataPromise = initialize( serverSDKKey, @@ -154,6 +119,5 @@ export const setupDevCycle = < getAllVariables: _getAllVariables, getAllFeatures: _getAllFeatures, getClientContext: _getClientContext, - track: _track, } } diff --git a/yarn.lock b/yarn.lock index e1addf7b7..3b21e135b 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2150,8 +2150,6 @@ __metadata: class-transformer: "npm:^0.5.1" hoist-non-react-statics: "npm:^3.3.2" server-only: "npm:^0.0.1" - peerDependencies: - next: ">=15.1.0" languageName: unknown linkType: soft