Skip to content

Conversation

@dannyhw
Copy link
Member

@dannyhw dannyhw commented Oct 13, 2025

Closes #

What I did

When selecting both RN and RN Web you would get prompted about vite/webpack but vite should be detected since there is no template for rnw on webpack

Checklist for Contributors

Testing

The changes in this PR are covered in the following automated tests:

  • stories
  • unit tests
  • integration tests
  • end-to-end tests

Manual testing

tested by running locally

install and compile source in the monorepo then go to a react native project and run the local version of the create-storybook binary like this:

node /PATH_TO_STORYBOOK/storybook/code/lib/create-storybook/dist/bin/index.js

This section is mandatory for all contributions. If you believe no manual test is necessary, please state so explicitly. Thanks!

Documentation

  • Add or update documentation reflecting your changes
  • If you are deprecating/removing a feature, make sure to update
    MIGRATION.MD

Checklist for Maintainers

  • When this PR is ready for testing, make sure to add ci:normal, ci:merged or ci:daily GH label to it to run a specific set of sandboxes. The particular set of sandboxes can be found in code/lib/cli-storybook/src/sandbox-templates.ts

  • Make sure this PR contains one of the labels below:

    Available labels
    • bug: Internal changes that fixes incorrect behavior.
    • maintenance: User-facing maintenance tasks.
    • dependencies: Upgrading (sometimes downgrading) dependencies.
    • build: Internal-facing build tooling & test updates. Will not show up in release changelog.
    • cleanup: Minor cleanup style change. Will not show up in release changelog.
    • documentation: Documentation only changes. Will not show up in release changelog.
    • feature request: Introducing a new feature.
    • BREAKING CHANGE: Changes that break compatibility in some way with current major version.
    • other: Changes that don't fit in the above categories.

🦋 Canary release

This PR does not have a canary release associated. You can request a canary release of this pull request by mentioning the @storybookjs/core team here.

core team members can create a canary release here or locally with gh workflow run --repo storybookjs/storybook publish.yml --field pr=<PR_NUMBER>

Summary by CodeRabbit

  • New Features
    • Automatic detection for React Native projects that include React Native for Web, now handled as Vite-based by default.
    • Streamlines setup and tooling for these projects, reducing manual configuration.
    • Maintains existing behavior for all other project types, ensuring no changes to current workflows.

@coderabbitai
Copy link
Contributor

coderabbitai bot commented Oct 13, 2025

📝 Walkthrough

Walkthrough

Updated CLI project-type detection to route ProjectType.REACT_NATIVE_AND_RNW through the Vite builder path, aligning it with existing handling for REACT_NATIVE_WEB. No other branches or defaults were changed.

Changes

Cohort / File(s) Summary
CLI detection mapping
code/core/src/cli/detect.ts
Added switch case mapping ProjectType.REACT_NATIVE_AND_RNW to CoreBuilder.Vite, extending Vite handling beyond REACT_NATIVE_WEB. No other logic altered.

Sequence Diagram(s)

sequenceDiagram
  autonumber
  participant User
  participant CLI as CLI Detect
  participant PT as ProjectType Resolver
  participant Builder as CoreBuilder Selector

  User->>CLI: run detect
  CLI->>PT: determine ProjectType
  PT-->>CLI: ProjectType value

  alt Existing paths
    CLI->>Builder: map type to builder (e.g., React, Next, Vite, etc.)
  else New/Updated path
    Note over CLI,Builder: New mapping
    CLI->>Builder: if ProjectType == REACT_NATIVE_AND_RNW -> Vite
  end

  Builder-->>User: selected builder (Vite for RNW)
Loading

Estimated code review effort

🎯 2 (Simple) | ⏱️ ~10 minutes

✨ Finishing touches
  • 📝 Generate docstrings
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Post copyable unit tests in a comment

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

Copy link
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: 0

🧹 Nitpick comments (1)
code/core/src/cli/detect.ts (1)

136-138: Approve Vite builder for REACT_NATIVE_AND_RNW
Returns Vite for REACT_NATIVE_AND_RNW, matching REACT_NATIVE_WEB.

  • Add a unit test for detectBuilder covering ProjectType.REACT_NATIVE_AND_RNW.
  • Verify no existing projects rely on the previous prompt behavior.
📜 Review details

Configuration used: CodeRabbit UI

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between e6663f2 and 19d61e2.

📒 Files selected for processing (1)
  • code/core/src/cli/detect.ts (1 hunks)
🧰 Additional context used
📓 Path-based instructions (4)
**/*.{js,jsx,json,html,ts,tsx,mjs}

📄 CodeRabbit inference engine (.github/copilot-instructions.md)

**/*.{js,jsx,json,html,ts,tsx,mjs}: Run Prettier formatting on changed files before committing
Run ESLint on changed files and fix all errors/warnings before committing (use yarn lint:js:cmd <file>)

Files:

  • code/core/src/cli/detect.ts
**/*.{ts,tsx,js,jsx,mjs}

📄 CodeRabbit inference engine (.github/copilot-instructions.md)

Export functions from modules when they need to be unit-tested

Files:

  • code/core/src/cli/detect.ts
code/**/*.{ts,tsx,js,jsx,mjs}

📄 CodeRabbit inference engine (.github/copilot-instructions.md)

In application code, use Storybook loggers instead of console.* (client code: storybook/internal/client-logger; server code: storybook/internal/node-logger)

Files:

  • code/core/src/cli/detect.ts
{code/**,scripts/**}/**/*.{ts,tsx,js,jsx,mjs}

📄 CodeRabbit inference engine (.github/copilot-instructions.md)

Do not use console.log, console.warn, or console.error directly unless in isolated files where importing loggers would significantly increase bundle size

Files:

  • code/core/src/cli/detect.ts
⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (2)
  • GitHub Check: get-branch
  • GitHub Check: Core Unit Tests, windows-latest

@nx-cloud
Copy link

nx-cloud bot commented Oct 13, 2025

View your CI Pipeline Execution ↗ for commit 19d61e2

Command Status Duration Result
nx run-many -t build --parallel=3 ✅ Succeeded 45s View ↗

☁️ Nx Cloud last updated this comment at 2025-10-13 14:47:56 UTC

@shilman shilman added patch:yes Bugfix & documentation PR that need to be picked to main branch cli labels Oct 13, 2025
@shilman shilman merged commit a78bf07 into storybookjs:next Oct 13, 2025
61 of 77 checks passed
ndelangen pushed a commit that referenced this pull request Oct 15, 2025
…_builder

React Native Web: Fix REACT_NATIVE_AND_RNW should detect vite builder

(cherry picked from commit a78bf07)
@github-actions github-actions bot mentioned this pull request Oct 15, 2025
13 tasks
@ndelangen ndelangen mentioned this pull request Oct 16, 2025
13 tasks
@github-actions github-actions bot added the patch:done Patch/release PRs already cherry-picked to main/release branch label Oct 16, 2025
@ndelangen ndelangen mentioned this pull request Oct 16, 2025
3 tasks
@ndelangen ndelangen removed the patch:yes Bugfix & documentation PR that need to be picked to main branch label Oct 28, 2025
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

bug ci:normal cli patch:done Patch/release PRs already cherry-picked to main/release branch react-native-web

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants