Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 6 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,3 +1,9 @@
## 9.1.7

- Dependencies: Update `vite-plugin-storybook-nextjs` to 2.0.7 - [#32331](https://github.com/storybookjs/storybook/pull/32331), thanks @k35o!
- React: Preserve `@ts-expect-error` in preview - [#32442](https://github.com/storybookjs/storybook/pull/32442), thanks @mrginglymus!
- Telemetry: Queue error reporting & filter browser-extention - [#32499](https://github.com/storybookjs/storybook/pull/32499), thanks @ndelangen!

## 9.1.6

- CLI: Capture the version specifier used in `create-storybook` - [#32344](https://github.com/storybookjs/storybook/pull/32344), thanks @shilman!
Expand Down
23 changes: 20 additions & 3 deletions code/core/src/manager/globals-runtime.ts
Original file line number Diff line number Diff line change
Expand Up @@ -10,11 +10,28 @@ globalPackages.forEach((key) => {
globalThis[globalsNameReferenceMap[key]] = globalsNameValueMap[key];
});

const queuedErrors: Error[] = [];

globalThis.sendTelemetryError = (error) => {
if (!shouldSkipError(error)) {
const channel = globalThis.__STORYBOOK_ADDONS_CHANNEL__;
channel.emit(TELEMETRY_ERROR, prepareForTelemetry(error));
if (shouldSkipError(error)) {
return;
}

const channel = globalThis.__STORYBOOK_ADDONS_CHANNEL__;
const preparedError = prepareForTelemetry(error);

if (!channel) {
queuedErrors.push(preparedError);
return;
}

// Flush any queued errors first
while (queuedErrors.length > 0) {
const queuedError = queuedErrors.shift();
channel.emit(TELEMETRY_ERROR, queuedError);
}

channel.emit(TELEMETRY_ERROR, preparedError);
};

// handle all uncaught errors at the root of the application and log to telemetry
Expand Down
2 changes: 2 additions & 0 deletions code/core/src/manager/utils/prepareForTelemetry.ts
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,8 @@ const errorMessages = [
// Safari does not seem to provide any helpful info on window.onerror
// https://bugs.webkit.org/show_bug.cgi?id=132945
'Script error.',
// When react-dev-tools is installed as a browser extension, it will log this error
'React is running in production mode',
];

export const shouldSkipError = (error: Error) => errorMessages.includes(error?.message);
Expand Down
23 changes: 13 additions & 10 deletions code/frameworks/angular/template/components/form.component.ts
Original file line number Diff line number Diff line change
@@ -1,36 +1,39 @@
import { Component, Output, EventEmitter } from '@angular/core';
import { Component, output, signal } from '@angular/core';
import { FormsModule } from '@angular/forms';

@Component({
standalone: false,
standalone: true,
imports: [FormsModule],
selector: 'storybook-form',
template: `
<form id="interaction-test-form" (submit)="handleSubmit($event)">
<form id="interaction-test-form" ngNativeValidate (submit)="handleSubmit($event)">
<label>
Enter Value
<input type="text" data-testid="value" [(ngModel)]="value" required />
<input type="text" data-testid="value" name="value" [(ngModel)]="value" required />
</label>
<button type="submit">Submit</button>
<p *ngIf="complete">Completed!!</p>
@if (complete()) {
<p>Completed!!</p>
}
</form>
`,
})
export default class FormComponent {
/** Optional success handler */
@Output()
onSuccess = new EventEmitter<string>();
onSuccess = output<string>();

value = '';

complete = false;
complete = signal(false);

handleSubmit(event: SubmitEvent) {
event.preventDefault();
this.onSuccess.emit(this.value);
setTimeout(() => {
this.complete = true;
this.complete.set(true);
}, 500);
setTimeout(() => {
this.complete = false;
this.complete.set(false);
}, 1500);
}
}
2 changes: 1 addition & 1 deletion code/frameworks/nextjs-vite/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -112,7 +112,7 @@
"@storybook/react": "workspace:*",
"@storybook/react-vite": "workspace:*",
"styled-jsx": "5.1.6",
"vite-plugin-storybook-nextjs": "^2.0.5"
"vite-plugin-storybook-nextjs": "^2.0.7"
},
"devDependencies": {
"@types/node": "^22.0.0",
Expand Down
3 changes: 2 additions & 1 deletion code/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -285,5 +285,6 @@
"Dependency Upgrades"
]
]
}
},
"deferredNextVersion": "9.1.7"
}
6 changes: 3 additions & 3 deletions code/renderers/react/src/preview.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -48,7 +48,7 @@ export function __definePreview<Addons extends PreviewAddon<never>[]>(
return preview;
}

// @ts-expect-error We cannot implement the meta faithfully here, but that is okay.
/** @ts-expect-error We cannot implement the meta faithfully here, but that is okay. */
export interface ReactPreview<T extends AddonTypes> extends Preview<ReactTypes & T> {
meta<
TArgs extends Args,
Expand Down Expand Up @@ -81,7 +81,7 @@ type DecoratorsArgs<TRenderer extends Renderer, Decorators> = UnionToIntersectio
>;

interface ReactMeta<T extends ReactTypes, MetaInput extends ComponentAnnotations<T>>
// @ts-expect-error hard
/** @ts-expect-error hard */
extends Meta<T, MetaInput> {
// Required args don't need to be provided when the user uses an empty render
story<
Expand All @@ -105,7 +105,7 @@ interface ReactMeta<T extends ReactTypes, MetaInput extends ComponentAnnotations
>,
>(
story?: TInput
// @ts-expect-error hard
/** @ts-expect-error hard */
): ReactStory<T, TInput>;
}

Expand Down
10 changes: 5 additions & 5 deletions code/yarn.lock
Original file line number Diff line number Diff line change
Expand Up @@ -6791,7 +6791,7 @@ __metadata:
postcss-load-config: "npm:^6.0.1"
styled-jsx: "npm:5.1.6"
typescript: "npm:^5.8.3"
vite-plugin-storybook-nextjs: "npm:^2.0.5"
vite-plugin-storybook-nextjs: "npm:^2.0.7"
peerDependencies:
next: ^14.1.0 || ^15.0.0
react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-beta
Expand Down Expand Up @@ -27061,9 +27061,9 @@ __metadata:
languageName: node
linkType: hard

"vite-plugin-storybook-nextjs@npm:^2.0.5":
version: 2.0.5
resolution: "vite-plugin-storybook-nextjs@npm:2.0.5"
"vite-plugin-storybook-nextjs@npm:^2.0.7":
version: 2.0.7
resolution: "vite-plugin-storybook-nextjs@npm:2.0.7"
dependencies:
"@next/env": "npm:^15.0.3"
image-size: "npm:^2.0.0"
Expand All @@ -27075,7 +27075,7 @@ __metadata:
next: ^14.1.0 || ^15.0.0
storybook: ^0.0.0-0 || ^9.0.0 || ^9.1.0-0
vite: ^5.0.0 || ^6.0.0 || ^7.0.0
checksum: 10c0/ee308c836c4380f9c9e3f51a7eab532eb648248cb8b78866032ed0e33af2cde3457e536e20c74546c46141d0b5ea9809ec13b76db299b8bd59468285228c3b1b
checksum: 10c0/a7e482cf11ca2201e82c8613eaece6848ff6634ee48b835e215b5f9e698bbbc2c013286487c0b9c0d8562f5d0bc23170d011471eaec0bdd52a34f2f1b1ff83d7
languageName: node
linkType: hard

Expand Down
2 changes: 1 addition & 1 deletion docs/versions/latest.json
Original file line number Diff line number Diff line change
@@ -1 +1 @@
{"version":"9.1.6","info":{"plain":"- CLI: Capture the version specifier used in `create-storybook` - [#32344](https://github.com/storybookjs/storybook/pull/32344), thanks @shilman!\n- Instrumenter: Fix userEvent.type performance regression - [#32439](https://github.com/storybookjs/storybook/pull/32439), thanks @ndelangen!\n- React Native Web: Fix RNW peer dependency version - [#32438](https://github.com/storybookjs/storybook/pull/32438), thanks @dannyhw!\n- Telemetry: Record known CLI integrations - [#32448](https://github.com/storybookjs/storybook/pull/32448), thanks @shilman!"}}
{"version":"9.1.7","info":{"plain":"- Dependencies: Update `vite-plugin-storybook-nextjs` to 2.0.7 - [#32331](https://github.com/storybookjs/storybook/pull/32331), thanks @k35o!\n- React: Preserve `@ts-expect-error` in preview - [#32442](https://github.com/storybookjs/storybook/pull/32442), thanks @mrginglymus!\n- Telemetry: Queue error reporting & filter browser-extention - [#32499](https://github.com/storybookjs/storybook/pull/32499), thanks @ndelangen!"}}
2 changes: 1 addition & 1 deletion docs/versions/next.json
Original file line number Diff line number Diff line change
@@ -1 +1 @@
{"version":"10.0.0-beta.2","info":{"plain":"- Build: Fix dts bundling external detection - [#32366](https://github.com/storybookjs/storybook/pull/32366), thanks @mrginglymus!\n- Codemod: Replace `globby` with `tinyglobby` - [#31407](https://github.com/storybookjs/storybook/pull/31407), thanks @benmccann!\n- Next.js-vite: Use `fileURLToPath` for module resolution in preset - [#32386](https://github.com/storybookjs/storybook/pull/32386), thanks @ndelangen!\n- Tags: Remove undocumented x-only tags - [#32360](https://github.com/storybookjs/storybook/pull/32360), thanks @shilman!\n- Vitest addon: Handle Playwright installation errors gracefully - [#32329](https://github.com/storybookjs/storybook/pull/32329), thanks @ndelangen!"}}
{"version":"10.0.0-beta.5","info":{"plain":"- Dependencies: Update `vite-plugin-storybook-nextjs` to 2.0.7 - [#32331](https://github.com/storybookjs/storybook/pull/32331), thanks @k35o!\n- Fix: ESLint plugin homepage URL updates - [#32445](https://github.com/storybookjs/storybook/pull/32445), thanks @VivekKavala!\n- Upgrades: Packages `boxen` `commander` `giget` - [#32469](https://github.com/storybookjs/storybook/pull/32469), thanks @ndelangen!"}}