Skip to content

fix: Split Start plugin core#7249

Merged
schiller-manuel merged 2 commits intomainfrom
fix-7247
Apr 24, 2026
Merged

fix: Split Start plugin core#7249
schiller-manuel merged 2 commits intomainfrom
fix-7247

Conversation

@schiller-manuel
Copy link
Copy Markdown
Contributor

@schiller-manuel schiller-manuel commented Apr 24, 2026

fixes #7247

Summary by CodeRabbit

  • New Features

    • Bundler plugin APIs exposed via explicit subpath exports for vite and rsbuild.
  • Bug Fixes

    • Improved path normalization with correct Windows handling.
  • Tests

    • Added platform-aware tests for path normalization and updated end-to-end tests to use more robust assertions/waiting.
  • Chores

    • Marked vite and rsbuild peer dependencies as optional across framework packages and added a changeset for the release.

@coderabbitai
Copy link
Copy Markdown
Contributor

coderabbitai Bot commented Apr 24, 2026

📝 Walkthrough

Walkthrough

This PR exposes bundler-specific Start plugin APIs via explicit subpath exports (./vite, ./rsbuild), marks bundler peer dependencies optional, moves framework plugin imports to the new subpaths, refactors path normalization to be platform-aware, and adds tests and build entries for the new entrypoints.

Changes

Cohort / File(s) Summary
Subpath export & package metadata
packages/start-plugin-core/package.json
Adds ./vite and ./rsbuild export subpaths (with types) and marks vite as an optional peer dependency.
New bundler entrypoints (source)
packages/start-plugin-core/src/vite/index.ts, packages/start-plugin-core/src/rsbuild/index.ts
Adds Vite- and RSBuild-specific entry modules that re-export bundler constants, types, and plugin factories.
Core public surface cleanup
packages/start-plugin-core/src/index.ts
Removes bundler-specific re-exports from the package root, retaining only core exports (e.g., START_ENVIRONMENT_NAMES).
Framework plugin imports updated (Vite)
packages/react-start-rsc/src/plugin/vite.ts, packages/react-start/src/plugin/vite.ts, packages/solid-start/src/plugin/vite.ts, packages/vue-start/src/plugin/vite.ts
Switches runtime and type imports to @tanstack/start-plugin-core/vite instead of the package root; plugin logic unchanged.
Framework plugin imports updated (RSBuild)
packages/react-start/src/plugin/rsbuild.ts, packages/solid-start/src/plugin/rsbuild.ts, packages/vue-start/src/plugin/rsbuild.ts
Switches RSBuild imports to @tanstack/start-plugin-core/rsbuild and uses RSBUILD_ENVIRONMENT_NAMES.server for provider environment naming.
Optional peerDependencies metadata (frameworks)
packages/react-start/package.json, packages/solid-start/package.json, packages/vue-start/package.json
Declares vite as an optional peer dependency in framework package metadata.
Path normalization refactor
packages/start-plugin-core/src/utils.ts, packages/start-plugin-core/src/import-protection/utils.ts, packages/start-plugin-core/src/rsbuild/import-protection.ts
Implements platform-aware normalizePath (Windows detection + posix normalize) and replaces imports of Vite's normalizePath with the internal util.
Tests for normalizePath
packages/start-plugin-core/tests/utils.test.ts
Adds Vitest tests simulating linux and win32 platforms to validate platform-dependent normalization behavior.
Build configuration
packages/start-plugin-core/vite.config.ts
Adds ./src/vite/index.ts and ./src/rsbuild/index.ts to build entry list.
E2E test updates
e2e/react-start/import-protection/tests/import-protection.spec.ts, e2e/react-start/start-manifest/tests/start-manifest.spec.ts
Updates import-protection uniqueness key generation and stabilizes CSS/widget assertions with polling and additional visibility checks.
Release notes
.changeset/optional-bundler-start-plugins.md
Adds changeset documenting minor/patch releases, subpath exports, and optional bundler peer deps.

Estimated code review effort

🎯 3 (Moderate) | ⏱️ ~25 minutes

Poem

🐰 I hopped through paths both new and neat,
Vite and RSBuild found their own seat,
Optional peers lighten the pack,
Paths now normalize, no turning back,
A tiny thump — the build’s complete! 🥕

🚥 Pre-merge checks | ✅ 3 | ❌ 2

❌ Failed checks (1 warning, 1 inconclusive)

Check name Status Explanation Resolution
Docstring Coverage ⚠️ Warning Docstring coverage is 13.33% which is insufficient. The required threshold is 80.00%. Write docstrings for the functions missing them to satisfy the coverage threshold.
Title check ❓ Inconclusive Title is clear but vague. While it describes the main change (splitting plugin core), it lacks specificity about the fix for the bug (making bundler deps optional and splitting exports). Consider a more specific title such as 'fix: Make bundler peer dependencies optional and expose via subpath exports' to clarify the exact nature of the fix.
✅ Passed checks (3 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Linked Issues check ✅ Passed The PR successfully addresses issue #7247 by making bundler peer dependencies optional and splitting exports, preventing import errors when only one bundler is used.
Out of Scope Changes check ✅ Passed All changes are scoped to fixing the bundler dependency issue and improving path normalization. Test updates appear to be necessary for the changes.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing Touches
📝 Generate docstrings
  • Create stacked PR
  • Commit on current branch
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch fix-7247

Comment @coderabbitai help to get the list of available commands and usage tips.

@nx-cloud
Copy link
Copy Markdown
Contributor

nx-cloud Bot commented Apr 24, 2026

View your CI Pipeline Execution ↗ for commit 28d9e51

Command Status Duration Result
nx affected --targets=test:eslint,test:unit,tes... ✅ Succeeded 3m 22s View ↗
nx run-many --target=build --exclude=examples/*... ✅ Succeeded 4s View ↗

☁️ Nx Cloud last updated this comment at 2026-04-24 18:30:56 UTC

@github-actions
Copy link
Copy Markdown
Contributor

github-actions Bot commented Apr 24, 2026

🚀 Changeset Version Preview

5 package(s) bumped directly, 0 bumped as dependents.

🟨 Minor bumps

Package Version Reason
@tanstack/start-plugin-core 1.168.0 → 1.169.0 Changeset

🟩 Patch bumps

Package Version Reason
@tanstack/react-start 1.167.43 → 1.167.44 Changeset
@tanstack/react-start-rsc 0.0.22 → 0.0.23 Changeset
@tanstack/solid-start 1.167.38 → 1.167.39 Changeset
@tanstack/vue-start 1.167.37 → 1.167.38 Changeset

@github-actions
Copy link
Copy Markdown
Contributor

github-actions Bot commented Apr 24, 2026

Bundle Size Benchmarks

  • Commit: 1248e44a1b1b
  • Measured at: 2026-04-24T18:28:36.815Z
  • Baseline source: history:91a708989d00
  • Dashboard: bundle-size history
Scenario Current (gzip) Delta vs baseline Raw Brotli Trend
react-router.minimal 87.35 KiB 0 B (0.00%) 274.60 KiB 75.97 KiB ▁▁█████████
react-router.full 90.63 KiB 0 B (0.00%) 285.74 KiB 78.87 KiB ▁▁▂▂███████
solid-router.minimal 35.55 KiB 0 B (0.00%) 106.71 KiB 31.96 KiB ▁▁▂▂▂▂▆████
solid-router.full 40.02 KiB 0 B (0.00%) 120.20 KiB 35.94 KiB ▁▁▂▂▂▂▇████
vue-router.minimal 53.30 KiB 0 B (0.00%) 152.01 KiB 47.88 KiB ▁▁█████████
vue-router.full 58.20 KiB 0 B (0.00%) 167.43 KiB 52.06 KiB ▁▁█████████
react-start.minimal 101.77 KiB 0 B (0.00%) 322.39 KiB 88.05 KiB ▁▁▃▃███████
react-start.full 105.21 KiB 0 B (0.00%) 332.72 KiB 90.89 KiB ▁▁▃▃███████
solid-start.minimal 49.53 KiB 0 B (0.00%) 152.52 KiB 43.68 KiB ▁▁▄▄▄▄█▇▇▇▇
solid-start.full 55.07 KiB 0 B (0.00%) 168.73 KiB 48.43 KiB ▁▁▂▂▂▂▅████

Trend sparkline is historical gzip bytes ending with this PR measurement; lower is better.

@pkg-pr-new
Copy link
Copy Markdown

pkg-pr-new Bot commented Apr 24, 2026

More templates

@tanstack/arktype-adapter

npm i https://pkg.pr.new/@tanstack/arktype-adapter@7249

@tanstack/eslint-plugin-router

npm i https://pkg.pr.new/@tanstack/eslint-plugin-router@7249

@tanstack/eslint-plugin-start

npm i https://pkg.pr.new/@tanstack/eslint-plugin-start@7249

@tanstack/history

npm i https://pkg.pr.new/@tanstack/history@7249

@tanstack/nitro-v2-vite-plugin

npm i https://pkg.pr.new/@tanstack/nitro-v2-vite-plugin@7249

@tanstack/react-router

npm i https://pkg.pr.new/@tanstack/react-router@7249

@tanstack/react-router-devtools

npm i https://pkg.pr.new/@tanstack/react-router-devtools@7249

@tanstack/react-router-ssr-query

npm i https://pkg.pr.new/@tanstack/react-router-ssr-query@7249

@tanstack/react-start

npm i https://pkg.pr.new/@tanstack/react-start@7249

@tanstack/react-start-client

npm i https://pkg.pr.new/@tanstack/react-start-client@7249

@tanstack/react-start-rsc

npm i https://pkg.pr.new/@tanstack/react-start-rsc@7249

@tanstack/react-start-server

npm i https://pkg.pr.new/@tanstack/react-start-server@7249

@tanstack/router-cli

npm i https://pkg.pr.new/@tanstack/router-cli@7249

@tanstack/router-core

npm i https://pkg.pr.new/@tanstack/router-core@7249

@tanstack/router-devtools

npm i https://pkg.pr.new/@tanstack/router-devtools@7249

@tanstack/router-devtools-core

npm i https://pkg.pr.new/@tanstack/router-devtools-core@7249

@tanstack/router-generator

npm i https://pkg.pr.new/@tanstack/router-generator@7249

@tanstack/router-plugin

npm i https://pkg.pr.new/@tanstack/router-plugin@7249

@tanstack/router-ssr-query-core

npm i https://pkg.pr.new/@tanstack/router-ssr-query-core@7249

@tanstack/router-utils

npm i https://pkg.pr.new/@tanstack/router-utils@7249

@tanstack/router-vite-plugin

npm i https://pkg.pr.new/@tanstack/router-vite-plugin@7249

@tanstack/solid-router

npm i https://pkg.pr.new/@tanstack/solid-router@7249

@tanstack/solid-router-devtools

npm i https://pkg.pr.new/@tanstack/solid-router-devtools@7249

@tanstack/solid-router-ssr-query

npm i https://pkg.pr.new/@tanstack/solid-router-ssr-query@7249

@tanstack/solid-start

npm i https://pkg.pr.new/@tanstack/solid-start@7249

@tanstack/solid-start-client

npm i https://pkg.pr.new/@tanstack/solid-start-client@7249

@tanstack/solid-start-server

npm i https://pkg.pr.new/@tanstack/solid-start-server@7249

@tanstack/start-client-core

npm i https://pkg.pr.new/@tanstack/start-client-core@7249

@tanstack/start-fn-stubs

npm i https://pkg.pr.new/@tanstack/start-fn-stubs@7249

@tanstack/start-plugin-core

npm i https://pkg.pr.new/@tanstack/start-plugin-core@7249

@tanstack/start-server-core

npm i https://pkg.pr.new/@tanstack/start-server-core@7249

@tanstack/start-static-server-functions

npm i https://pkg.pr.new/@tanstack/start-static-server-functions@7249

@tanstack/start-storage-context

npm i https://pkg.pr.new/@tanstack/start-storage-context@7249

@tanstack/valibot-adapter

npm i https://pkg.pr.new/@tanstack/valibot-adapter@7249

@tanstack/virtual-file-routes

npm i https://pkg.pr.new/@tanstack/virtual-file-routes@7249

@tanstack/vue-router

npm i https://pkg.pr.new/@tanstack/vue-router@7249

@tanstack/vue-router-devtools

npm i https://pkg.pr.new/@tanstack/vue-router-devtools@7249

@tanstack/vue-router-ssr-query

npm i https://pkg.pr.new/@tanstack/vue-router-ssr-query@7249

@tanstack/vue-start

npm i https://pkg.pr.new/@tanstack/vue-start@7249

@tanstack/vue-start-client

npm i https://pkg.pr.new/@tanstack/vue-start-client@7249

@tanstack/vue-start-server

npm i https://pkg.pr.new/@tanstack/vue-start-server@7249

@tanstack/zod-adapter

npm i https://pkg.pr.new/@tanstack/zod-adapter@7249

commit: 28d9e51

Copy link
Copy Markdown
Contributor

@coderabbitai coderabbitai Bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 2

🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.

Inline comments:
In `@packages/react-start/src/plugin/vite.ts`:
- Around line 5-8: The type-only imports (TanStackStartViteInputConfig,
TanStackStartVitePluginCoreOptions) are currently placed before other imports
and violate the ESLint import/order rule; move the `import type {
TanStackStartViteInputConfig, TanStackStartVitePluginCoreOptions } from
'@tanstack/start-plugin-core/vite'` statement to the end of the import block
(after all builtin, external, internal, parent, sibling, index/object imports)
so type imports come last and ESLint passes.

In `@packages/start-plugin-core/src/index.ts`:
- Line 3: The root export change removed previously available Vite/RSBuild
exports and may break consumers; restore temporary compatibility by re-adding
deprecated re-exports in packages/start-plugin-core/src/index.ts for the
original symbols (e.g., the Vite/RSBuild-related exports that were removed)
alongside the existing export of START_ENVIRONMENT_NAMES, and mark them as
deprecated in comments and the changelog; alternatively, if you intentionally
removed them, add an explicit migration note in the PR and package release notes
documenting which symbols were removed and the recommended new import paths so
consumers can migrate safely.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro

Run ID: 0ebd6721-d7c0-4abd-ade5-934fd756aba1

📥 Commits

Reviewing files that changed from the base of the PR and between 1248e44 and 370fb40.

📒 Files selected for processing (20)
  • .changeset/optional-bundler-start-plugins.md
  • packages/react-start-rsc/src/plugin/vite.ts
  • packages/react-start/package.json
  • packages/react-start/src/plugin/rsbuild.ts
  • packages/react-start/src/plugin/vite.ts
  • packages/solid-start/package.json
  • packages/solid-start/src/plugin/rsbuild.ts
  • packages/solid-start/src/plugin/vite.ts
  • packages/start-plugin-core/package.json
  • packages/start-plugin-core/src/import-protection/utils.ts
  • packages/start-plugin-core/src/index.ts
  • packages/start-plugin-core/src/rsbuild/import-protection.ts
  • packages/start-plugin-core/src/rsbuild/index.ts
  • packages/start-plugin-core/src/utils.ts
  • packages/start-plugin-core/src/vite/index.ts
  • packages/start-plugin-core/tests/utils.test.ts
  • packages/start-plugin-core/vite.config.ts
  • packages/vue-start/package.json
  • packages/vue-start/src/plugin/rsbuild.ts
  • packages/vue-start/src/plugin/vite.ts

Comment on lines 5 to +8
import type {
TanStackStartViteInputConfig,
TanStackStartVitePluginCoreOptions,
} from '@tanstack/start-plugin-core'
} from '@tanstack/start-plugin-core/vite'
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟡 Minor

🧩 Analysis chain

🏁 Script executed:

# First, verify the file exists and read its current state
find . -name "vite.ts" -path "*/react-start/src/plugin/*" | head -20

Repository: TanStack/router

Length of output: 101


🏁 Script executed:

# Check file size and read the import section
if [ -f "packages/react-start/src/plugin/vite.ts" ]; then
  wc -l packages/react-start/src/plugin/vite.ts
  echo "---"
  head -30 packages/react-start/src/plugin/vite.ts
fi

Repository: TanStack/router

Length of output: 1157


🏁 Script executed:

# Look for ESLint configuration files
find . -maxdepth 3 -type f \( -name ".eslintrc*" -o -name "eslint.config.*" -o -name "eslint.config.ts" \) 2>/dev/null | head -20

Repository: TanStack/router

Length of output: 917


🏁 Script executed:

# Read the ESLint config for react-start
cat packages/react-start/eslint.config.js

Repository: TanStack/router

Length of output: 819


🏁 Script executed:

# Read the root ESLint config to find import/order rules
cat eslint.config.js

Repository: TanStack/router

Length of output: 819


🏁 Script executed:

# The root config uses `@tanstack/eslint-config` from npm
# Let me search for any import/order configuration hints or ESLint disable comments in the repo
rg "import/order" -A 5 -B 5 packages/

Repository: TanStack/router

Length of output: 41


🏁 Script executed:

# Also check if there are any ESLint disable comments in vite.ts that might give hints
cat -n packages/react-start/src/plugin/vite.ts | head -20

Repository: TanStack/router

Length of output: 782


🏁 Script executed:

# Let me check if there are any eslint disable comments in similar files
# or patterns with import/order in the codebase
rg "eslint.*import" -A 2 -B 2 packages/ | head -50

Repository: TanStack/router

Length of output: 3328


🏁 Script executed:

# Check if there's a package.json or docs about ESLint import rules
grep -r "import/order" . 2>/dev/null | head -10

Repository: TanStack/router

Length of output: 2158


🏁 Script executed:

# Verify the exact import groups by checking the config source
grep -A 20 "'import/order'" node_modules/.pnpm/@tanstack+eslint-config@*/node_modules/@tanstack/eslint-config/dist/import.js | head -25

Repository: TanStack/router

Length of output: 41


🏁 Script executed:

# Let me check the actual import groups configuration more carefully
find node_modules -name "import.ts" -path "*tanstack/eslint-config*" -exec cat {} \;

Repository: TanStack/router

Length of output: 945


Fix import ordering to satisfy ESLint import/order rule.

Type imports on lines 5-8 violate the import ordering configuration, which requires type imports to appear after all other import groups (builtin, external, internal, parent, sibling, index, object). Move both type import blocks to the end of the import section.

Proposed fix
 import {
   START_ENVIRONMENT_NAMES,
   tanStackStartVite,
 } from '@tanstack/start-plugin-core/vite'
-import type {
-  TanStackStartViteInputConfig,
-  TanStackStartVitePluginCoreOptions,
-} from '@tanstack/start-plugin-core/vite'
 import {
   configureRsc,
   reactStartRscVitePlugin,
 } from '@tanstack/react-start-rsc/plugin/vite'
 import path from 'pathe'
 import { reactStartDefaultEntryPaths, reactStartPluginDir } from './shared'
+import type {
+  TanStackStartViteInputConfig,
+  TanStackStartVitePluginCoreOptions,
+} from '@tanstack/start-plugin-core/vite'
 import type { PluginOption } from 'vite'
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
import type {
TanStackStartViteInputConfig,
TanStackStartVitePluginCoreOptions,
} from '@tanstack/start-plugin-core'
} from '@tanstack/start-plugin-core/vite'
import {
START_ENVIRONMENT_NAMES,
tanStackStartVite,
} from '@tanstack/start-plugin-core/vite'
import {
configureRsc,
reactStartRscVitePlugin,
} from '@tanstack/react-start-rsc/plugin/vite'
import path from 'pathe'
import { reactStartDefaultEntryPaths, reactStartPluginDir } from './shared'
import type {
TanStackStartViteInputConfig,
TanStackStartVitePluginCoreOptions,
} from '@tanstack/start-plugin-core/vite'
import type { PluginOption } from 'vite'
🧰 Tools
🪛 ESLint

[error] 5-8: @tanstack/start-plugin-core/vite type import should occur after import of ./shared

(import/order)

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@packages/react-start/src/plugin/vite.ts` around lines 5 - 8, The type-only
imports (TanStackStartViteInputConfig, TanStackStartVitePluginCoreOptions) are
currently placed before other imports and violate the ESLint import/order rule;
move the `import type { TanStackStartViteInputConfig,
TanStackStartVitePluginCoreOptions } from '@tanstack/start-plugin-core/vite'`
statement to the end of the import block (after all builtin, external, internal,
parent, sibling, index/object imports) so type imports come last and ESLint
passes.

export type { TanStackStartRsbuildPluginCoreOptions } from './rsbuild/types'
export type { TanStackStartRsbuildInputConfig } from './rsbuild/schema'
export { tanStackStartRsbuild } from './rsbuild/plugin'
export { START_ENVIRONMENT_NAMES } from './constants'
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟠 Major

Root export contraction risks consumer breakage on a fix release.

If root-level Vite/RSBuild exports were intentionally removed, this can break existing imports from @tanstack/start-plugin-core. Please either keep temporary compatibility re-exports (deprecated) or add explicit migration/versioning communication in this PR.

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@packages/start-plugin-core/src/index.ts` at line 3, The root export change
removed previously available Vite/RSBuild exports and may break consumers;
restore temporary compatibility by re-adding deprecated re-exports in
packages/start-plugin-core/src/index.ts for the original symbols (e.g., the
Vite/RSBuild-related exports that were removed) alongside the existing export of
START_ENVIRONMENT_NAMES, and mark them as deprecated in comments and the
changelog; alternatively, if you intentionally removed them, add an explicit
migration note in the PR and package release notes documenting which symbols
were removed and the recommended new import paths so consumers can migrate
safely.

@codspeed-hq
Copy link
Copy Markdown

codspeed-hq Bot commented Apr 24, 2026

Merging this PR will not alter performance

✅ 5 untouched benchmarks
⏩ 1 skipped benchmark1


Comparing fix-7247 (28d9e51) with main (91a7089)2

Open in CodSpeed

Footnotes

  1. 1 benchmark was skipped, so the baseline result was used instead. If it was deleted from the codebase, click here and archive it to remove it from the performance reports.

  2. No successful run was found on main (1248e44) during the generation of this report, so 91a7089 was used instead as the comparison base. There might be some changes unrelated to this pull request in this report.

Copy link
Copy Markdown
Contributor

@coderabbitai coderabbitai Bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🧹 Nitpick comments (1)
e2e/react-start/start-manifest/tests/start-manifest.spec.ts (1)

366-370: Consider centralizing repeated shared-widget border assertions.

The same expect.poll(... getBorderTopColor ..., { timeout: 5_000 }) logic appears in three tests. A small helper would reduce duplication and keep timeout/expectation changes in one place.

♻️ Optional refactor
+async function expectSharedWidgetBorder(page: Page) {
+  await expect
+    .poll(() => getBorderTopColor('shared-widget', page), {
+      timeout: 5_000,
+    })
+    .toBe(SHARED_WIDGET_BORDER)
+}
...
-  await expect
-    .poll(() => getBorderTopColor('shared-widget', page), {
-      timeout: 5_000,
-    })
-    .toBe(SHARED_WIDGET_BORDER)
+  await expectSharedWidgetBorder(page)

Also applies to: 409-413, 431-435

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@e2e/react-start/start-manifest/tests/start-manifest.spec.ts` around lines 366
- 370, Create a small test helper (e.g., assertSharedWidgetBorder or
expectSharedWidgetBorder) that encapsulates the repeated expect.poll call: call
getBorderTopColor('shared-widget', page) and assert .toBe(SHARED_WIDGET_BORDER)
with a default timeout of 5_000 (configurable via an optional parameter).
Replace the three inline usages (the expect.poll blocks currently using
getBorderTopColor and SHARED_WIDGET_BORDER) with calls to this helper so
timeout/expectation changes are centralized; keep helper signature accepting the
Playwright Page (or same page variable) and an optional timeout.
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.

Nitpick comments:
In `@e2e/react-start/start-manifest/tests/start-manifest.spec.ts`:
- Around line 366-370: Create a small test helper (e.g.,
assertSharedWidgetBorder or expectSharedWidgetBorder) that encapsulates the
repeated expect.poll call: call getBorderTopColor('shared-widget', page) and
assert .toBe(SHARED_WIDGET_BORDER) with a default timeout of 5_000 (configurable
via an optional parameter). Replace the three inline usages (the expect.poll
blocks currently using getBorderTopColor and SHARED_WIDGET_BORDER) with calls to
this helper so timeout/expectation changes are centralized; keep helper
signature accepting the Playwright Page (or same page variable) and an optional
timeout.

ℹ️ Review info
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro

Run ID: 916e4d98-1478-4e1f-b952-427532056679

📥 Commits

Reviewing files that changed from the base of the PR and between 370fb40 and 28d9e51.

📒 Files selected for processing (2)
  • e2e/react-start/import-protection/tests/import-protection.spec.ts
  • e2e/react-start/start-manifest/tests/start-manifest.spec.ts

@schiller-manuel schiller-manuel merged commit dda463c into main Apr 24, 2026
16 checks passed
@schiller-manuel schiller-manuel deleted the fix-7247 branch April 24, 2026 18:33
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Running dev/build on Start project fails with Cannot find package '@rsbuild/core' error

1 participant