diff --git a/.changeset/silent-intro-option.md b/.changeset/silent-intro-option.md new file mode 100644 index 000000000..a0658a7f7 --- /dev/null +++ b/.changeset/silent-intro-option.md @@ -0,0 +1,7 @@ +--- +"react-grab": minor +"grab": minor +"@react-grab/cli": minor +--- + +Add `silent` option to suppress the React Grab intro banner and version-check log. Useful when console output is forwarded to error tracking services like Sentry. diff --git a/packages/react-grab/src/core/index.tsx b/packages/react-grab/src/core/index.tsx index 8dba00964..4f0f1c30f 100644 --- a/packages/react-grab/src/core/index.tsx +++ b/packages/react-grab/src/core/index.tsx @@ -197,10 +197,12 @@ export const init = (rawOptions?: Options): ReactGrabAPI => { } hasInited = true; - logIntro(); + if (!initialOptions.silent) { + logIntro(); + } - // eslint-disable-next-line @typescript-eslint/no-unused-vars -- need to omit enabled from settableOptions to avoid circular dependency - const { enabled: _enabled, ...settableOptions } = initialOptions; + // eslint-disable-next-line @typescript-eslint/no-unused-vars -- need to omit init-only options from settableOptions to avoid circular dependency + const { enabled: _enabled, silent: _silent, ...settableOptions } = initialOptions; return createRoot((dispose) => { let disposed = false; diff --git a/packages/react-grab/src/types.ts b/packages/react-grab/src/types.ts index 31910ad6f..27c58f71f 100644 --- a/packages/react-grab/src/types.ts +++ b/packages/react-grab/src/types.ts @@ -252,10 +252,18 @@ export interface Options { * @default true */ freezeReactUpdates?: boolean; + /** + * Suppress the React Grab intro banner and version-check log. + * Useful when console output is forwarded to error tracking + * services like Sentry. + * @default false + */ + silent?: boolean; } export interface SettableOptions extends Options { enabled?: never; + silent?: never; } export interface SourceInfo { diff --git a/packages/react-grab/src/utils/get-script-options.ts b/packages/react-grab/src/utils/get-script-options.ts index 98d1c37da..9c8eefe37 100644 --- a/packages/react-grab/src/utils/get-script-options.ts +++ b/packages/react-grab/src/utils/get-script-options.ts @@ -30,6 +30,9 @@ const parseOptionsFromJson = (rawValue: unknown): Partial | null => { if (typeof rawValue.freezeReactUpdates === "boolean") { parsedOptions.freezeReactUpdates = rawValue.freezeReactUpdates; } + if (typeof rawValue.silent === "boolean") { + parsedOptions.silent = rawValue.silent; + } if (Object.keys(parsedOptions).length === 0) return null; return parsedOptions;