From 5bb5f44b2761c998993640e5a7b3c867a966274b Mon Sep 17 00:00:00 2001 From: webdevsamran Date: Thu, 27 Aug 2026 14:37:35 +0500 Subject: [PATCH 1/4] fix(docs): prevent source transform from being applied twice on docs pages When dynamic story snippets are rendered, emitTransformCode applies parameters.docs.source.transform before emitting SNIPPET_RENDERED to the source context. When the docs block rendered the snippet, useCode re-applied sourceParameters.transform unconditionally, causing the transform to run twice on docs pages while running only once on the individual story Code tab. Fix: - In Source.tsx: only apply sourceParameters.transform when not already using an emitted snippet, or when explicitly overridden via transformFromProps. - In Source.test.tsx: add unit tests verifying single execution on snippets, prop transform override, and originalSource transform fallback. Fixes #35889 --- .../docs/src/blocks/blocks/Source.test.tsx | 78 +++++++++++++++++++ code/addons/docs/src/blocks/blocks/Source.tsx | 5 +- 2 files changed, 82 insertions(+), 1 deletion(-) create mode 100644 code/addons/docs/src/blocks/blocks/Source.test.tsx diff --git a/code/addons/docs/src/blocks/blocks/Source.test.tsx b/code/addons/docs/src/blocks/blocks/Source.test.tsx new file mode 100644 index 000000000000..d2a720261d90 --- /dev/null +++ b/code/addons/docs/src/blocks/blocks/Source.test.tsx @@ -0,0 +1,78 @@ +import { describe, expect, it, vi } from 'vitest'; +import { SourceType } from 'storybook/internal/docs-tools'; +import { useCode } from './Source.tsx'; + +describe('useCode', () => { + it('does not apply sourceParameters.transform twice when snippet is already provided (issue #35889)', () => { + const transform = vi.fn((code: string) => /*transformed*/ ); + + const result = useCode({ + snippet: '/*transformed*/