feat(lint): add noReactNativeRawText#10005
Conversation
🦋 Changeset detectedLatest commit: 18f9c72 The changes in this PR will be included in the next version bump. This PR includes changesets to release 13 packages
Not sure what this means? Click here to learn what changesets are. Click here if you're a maintainer who wants to add another changeset to this PR |
Parser conformance results onjs/262
jsx/babel
markdown/commonmark
symbols/microsoft
ts/babel
ts/microsoft
|
496637f to
73689e9
Compare
WalkthroughAdds a nursery JSX lint rule Possibly related PRs
Suggested reviewers
🚥 Pre-merge checks | ✅ 2✅ Passed checks (2 passed)
✏️ Tip: You can configure your own custom pre-merge checks in the settings. ✨ Finishing Touches🧪 Generate unit tests (beta)
Comment |
There was a problem hiding this comment.
Actionable comments posted: 1
Caution
Some comments are outside the diff and can’t be posted inline due to platform limitations.
⚠️ Outside diff range comments (1)
crates/biome_analyze/src/rule.rs (1)
648-653:⚠️ Potential issue | 🟡 MinorAdd
__DEV__to React Native globals list.React Native documents
__DEV__as a pseudo-global that guards development-only code. Without it in the globals list here,noUndeclaredVariableswill incorrectly flag its usage.Diff
pub const fn globals(self) -> &'static [&'static str] { match self { Self::React => &[], - Self::ReactNative => &[], + Self::ReactNative => &["__DEV__"], Self::Test => &[🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed. In `@crates/biome_analyze/src/rule.rs` around lines 648 - 653, The React Native pseudo-global __DEV__ is missing from the globals returned by the globals() const fn, causing noUndeclaredVariables to flag its use; update the match arm for Self::ReactNative in the globals() function to include "__DEV__" in the &'static [&'static str] array so that the AnalyzerConfiguration's globals list recognizes it as a declared global.
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.
Inline comments:
In `@crates/biome_rule_options/src/no_react_native_raw_text.rs`:
- Around line 4-11: The NoReactNativeRawTextOptions struct is missing a Merge
implementation; update the derive list for the struct
(NoReactNativeRawTextOptions) to include the Merge trait so it can be merged
during config processing (i.e., add Merge to the #[derive(...)] alongside Clone,
Debug, Default, Deserialize, Deserializable, Eq, PartialEq, Serialize); ensure
any necessary trait import or feature gating for Merge is present so the code
compiles.
---
Outside diff comments:
In `@crates/biome_analyze/src/rule.rs`:
- Around line 648-653: The React Native pseudo-global __DEV__ is missing from
the globals returned by the globals() const fn, causing noUndeclaredVariables to
flag its use; update the match arm for Self::ReactNative in the globals()
function to include "__DEV__" in the &'static [&'static str] array so that the
AnalyzerConfiguration's globals list recognizes it as a declared global.
🪄 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: Path: .coderabbit.yaml
Review profile: CHILL
Plan: Pro
Run ID: edb12872-c75c-4349-8ed4-ca5355af50ff
⛔ Files ignored due to path filters (11)
crates/biome_configuration/src/analyzer/linter/rules.rsis excluded by!**/rules.rsand included by**crates/biome_configuration/src/generated/domain_selector.rsis excluded by!**/generated/**,!**/generated/**and included by**crates/biome_configuration/src/generated/linter_options_check.rsis excluded by!**/generated/**,!**/generated/**and included by**crates/biome_diagnostics_categories/src/categories.rsis excluded by!**/categories.rsand included by**crates/biome_js_analyze/tests/specs/nursery/noReactNativeRawText/invalid/basic.jsx.snapis excluded by!**/*.snapand included by**crates/biome_js_analyze/tests/specs/nursery/noReactNativeRawText/invalid/skipOptionMismatch.jsx.snapis excluded by!**/*.snapand included by**crates/biome_js_analyze/tests/specs/nursery/noReactNativeRawText/valid/basic.jsx.snapis excluded by!**/*.snapand included by**crates/biome_js_analyze/tests/specs/nursery/noReactNativeRawText/valid/skipOption.jsx.snapis excluded by!**/*.snapand included by**crates/biome_js_analyze/tests/specs/nursery/noReactNativeRawText/valid/skipOptionMemberName.jsx.snapis excluded by!**/*.snapand included by**packages/@biomejs/backend-jsonrpc/src/workspace.tsis excluded by!**/backend-jsonrpc/src/workspace.tsand included by**packages/@biomejs/biome/configuration_schema.jsonis excluded by!**/configuration_schema.jsonand included by**
📒 Files selected for processing (14)
.changeset/no-react-native-raw-text.mdcrates/biome_analyze/src/rule.rscrates/biome_js_analyze/src/lint/nursery/no_react_native_raw_text.rscrates/biome_js_analyze/tests/specs/nursery/noReactNativeRawText/invalid/basic.jsxcrates/biome_js_analyze/tests/specs/nursery/noReactNativeRawText/invalid/skipOptionMismatch.jsxcrates/biome_js_analyze/tests/specs/nursery/noReactNativeRawText/invalid/skipOptionMismatch.options.jsoncrates/biome_js_analyze/tests/specs/nursery/noReactNativeRawText/valid/basic.jsxcrates/biome_js_analyze/tests/specs/nursery/noReactNativeRawText/valid/skipOption.jsxcrates/biome_js_analyze/tests/specs/nursery/noReactNativeRawText/valid/skipOption.options.jsoncrates/biome_js_analyze/tests/specs/nursery/noReactNativeRawText/valid/skipOptionMemberName.jsxcrates/biome_js_analyze/tests/specs/nursery/noReactNativeRawText/valid/skipOptionMemberName.options.jsoncrates/biome_js_syntax/src/jsx_ext.rscrates/biome_rule_options/src/lib.rscrates/biome_rule_options/src/no_react_native_raw_text.rs
f197f4e to
5466f7e
Compare
Merging this PR will not alter performance
Comparing Footnotes
|
There was a problem hiding this comment.
Actionable comments posted: 1
🧹 Nitpick comments (1)
.changeset/no-react-native-raw-text.md (1)
5-5: Consider "outside" for conciseness.The phrase "outside of" could be simplified to "outside" for a more concise description.
✍️ Proposed refinement
-Added the nursery rule [`noReactNativeRawText`](https://biomejs.dev/linter/rules/no-react-native-raw-text/), which disallows raw text outside of `<Text>` components in React Native. +Added the nursery rule [`noReactNativeRawText`](https://biomejs.dev/linter/rules/no-react-native-raw-text/), which disallows raw text outside `<Text>` components in React Native.🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed. In @.changeset/no-react-native-raw-text.md at line 5, Update the changelog line that introduces the nursery rule to use the more concise phrasing: replace "outside of `<Text>` components" with "outside `<Text>` components" in the sentence mentioning the rule `noReactNativeRawText` so the description reads "...which disallows raw text outside `<Text>` components in React Native."
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.
Inline comments:
In `@crates/biome_analyze/src/rule.rs`:
- Around line 710-712: Fix the minor grammatical typo in the React domain
description: in the match arm for Self::React update the doc/string literal to
use "enables" instead of "enable" (i.e., change "This domain enable rules..." to
"This domain enables rules...") so the message for the React variant is
grammatical.
---
Nitpick comments:
In @.changeset/no-react-native-raw-text.md:
- Line 5: Update the changelog line that introduces the nursery rule to use the
more concise phrasing: replace "outside of `<Text>` components" with "outside
`<Text>` components" in the sentence mentioning the rule `noReactNativeRawText`
so the description reads "...which disallows raw text outside `<Text>`
components in React Native."
🪄 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: Path: .coderabbit.yaml
Review profile: CHILL
Plan: Pro
Run ID: a3b4cc4e-a7f1-45a6-af5e-ffc6137e102e
⛔ Files ignored due to path filters (12)
crates/biome_configuration/src/analyzer/linter/rules.rsis excluded by!**/rules.rsand included by**crates/biome_configuration/src/generated/domain_selector.rsis excluded by!**/generated/**,!**/generated/**and included by**crates/biome_configuration/src/generated/linter_options_check.rsis excluded by!**/generated/**,!**/generated/**and included by**crates/biome_configuration/tests/invalid/domains.json.snapis excluded by!**/*.snapand included by**crates/biome_diagnostics_categories/src/categories.rsis excluded by!**/categories.rsand included by**crates/biome_js_analyze/tests/specs/nursery/noReactNativeRawText/invalid/basic.jsx.snapis excluded by!**/*.snapand included by**crates/biome_js_analyze/tests/specs/nursery/noReactNativeRawText/invalid/skipOptionMismatch.jsx.snapis excluded by!**/*.snapand included by**crates/biome_js_analyze/tests/specs/nursery/noReactNativeRawText/valid/basic.jsx.snapis excluded by!**/*.snapand included by**crates/biome_js_analyze/tests/specs/nursery/noReactNativeRawText/valid/skipOption.jsx.snapis excluded by!**/*.snapand included by**crates/biome_js_analyze/tests/specs/nursery/noReactNativeRawText/valid/skipOptionMemberName.jsx.snapis excluded by!**/*.snapand included by**packages/@biomejs/backend-jsonrpc/src/workspace.tsis excluded by!**/backend-jsonrpc/src/workspace.tsand included by**packages/@biomejs/biome/configuration_schema.jsonis excluded by!**/configuration_schema.jsonand included by**
📒 Files selected for processing (14)
.changeset/no-react-native-raw-text.mdcrates/biome_analyze/src/rule.rscrates/biome_js_analyze/src/lint/nursery/no_react_native_raw_text.rscrates/biome_js_analyze/tests/specs/nursery/noReactNativeRawText/invalid/basic.jsxcrates/biome_js_analyze/tests/specs/nursery/noReactNativeRawText/invalid/skipOptionMismatch.jsxcrates/biome_js_analyze/tests/specs/nursery/noReactNativeRawText/invalid/skipOptionMismatch.options.jsoncrates/biome_js_analyze/tests/specs/nursery/noReactNativeRawText/valid/basic.jsxcrates/biome_js_analyze/tests/specs/nursery/noReactNativeRawText/valid/skipOption.jsxcrates/biome_js_analyze/tests/specs/nursery/noReactNativeRawText/valid/skipOption.options.jsoncrates/biome_js_analyze/tests/specs/nursery/noReactNativeRawText/valid/skipOptionMemberName.jsxcrates/biome_js_analyze/tests/specs/nursery/noReactNativeRawText/valid/skipOptionMemberName.options.jsoncrates/biome_js_syntax/src/jsx_ext.rscrates/biome_rule_options/src/lib.rscrates/biome_rule_options/src/no_react_native_raw_text.rs
✅ Files skipped from review due to trivial changes (7)
- crates/biome_js_analyze/tests/specs/nursery/noReactNativeRawText/valid/skipOptionMemberName.options.json
- crates/biome_js_analyze/tests/specs/nursery/noReactNativeRawText/valid/skipOptionMemberName.jsx
- crates/biome_js_analyze/tests/specs/nursery/noReactNativeRawText/valid/skipOption.options.json
- crates/biome_js_analyze/tests/specs/nursery/noReactNativeRawText/valid/skipOption.jsx
- crates/biome_js_analyze/tests/specs/nursery/noReactNativeRawText/invalid/skipOptionMismatch.options.json
- crates/biome_rule_options/src/no_react_native_raw_text.rs
- crates/biome_js_analyze/tests/specs/nursery/noReactNativeRawText/valid/basic.jsx
🚧 Files skipped from review as they are similar to previous changes (4)
- crates/biome_js_analyze/tests/specs/nursery/noReactNativeRawText/invalid/skipOptionMismatch.jsx
- crates/biome_js_analyze/tests/specs/nursery/noReactNativeRawText/invalid/basic.jsx
- crates/biome_js_analyze/src/lint/nursery/no_react_native_raw_text.rs
- crates/biome_js_syntax/src/jsx_ext.rs
Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>
There was a problem hiding this comment.
Actionable comments posted: 1
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.
Inline comments:
In `@crates/biome_analyze/src/rule.rs`:
- Around line 710-712: Update the wording for the React domain description in
rule.rs: replace the phrase "can help catching bugs" with "can help catch bugs"
inside the Self::React match arm so the string reads "...It enables a set of
rules that can help catch bugs and enforce correct practices..." (referencing
the Self::React match arm and its description string).
🪄 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: Path: .coderabbit.yaml
Review profile: CHILL
Plan: Pro
Run ID: 0c8c519b-c59c-4d14-89ef-25bc415f34b1
⛔ Files ignored due to path filters (3)
crates/biome_cli/src/execute/migrate/eslint_any_rule_to_biome.rsis excluded by!**/migrate/eslint_any_rule_to_biome.rsand included by**packages/@biomejs/backend-jsonrpc/src/workspace.tsis excluded by!**/backend-jsonrpc/src/workspace.tsand included by**packages/@biomejs/biome/configuration_schema.jsonis excluded by!**/configuration_schema.jsonand included by**
📒 Files selected for processing (1)
crates/biome_analyze/src/rule.rs
| Self::React => { | ||
| "Use this domain inside React projects. It enables a set of rules that can help catching bugs and enforce correct practices. This domain enables rules that might conflict with the Solid domain." | ||
| } |
There was a problem hiding this comment.
Tiny wording polish in the React description.
“can help catching bugs” reads awkwardly; “can help catch bugs” is cleaner.
✏️ Suggested wording tweak
- "Use this domain inside React projects. It enables a set of rules that can help catching bugs and enforce correct practices. This domain enables rules that might conflict with the Solid domain."
+ "Use this domain inside React projects. It enables a set of rules that can help catch bugs and enforce correct practices. This domain enables rules that might conflict with the Solid domain."📝 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.
| Self::React => { | |
| "Use this domain inside React projects. It enables a set of rules that can help catching bugs and enforce correct practices. This domain enables rules that might conflict with the Solid domain." | |
| } | |
| Self::React => { | |
| "Use this domain inside React projects. It enables a set of rules that can help catch bugs and enforce correct practices. This domain enables rules that might conflict with the Solid domain." | |
| } |
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.
In `@crates/biome_analyze/src/rule.rs` around lines 710 - 712, Update the wording
for the React domain description in rule.rs: replace the phrase "can help
catching bugs" with "can help catch bugs" inside the Self::React match arm so
the string reads "...It enables a set of rules that can help catch bugs and
enforce correct practices..." (referencing the Self::React match arm and its
description string).
This PR contains the following updates: | Package | Update | Change | |---|---|---| | [@biomejs/biome](https://biomejs.dev) ([source](https://github.com/biomejs/biome/tree/HEAD/packages/@biomejs/biome)) | patch | `2.4.12` → `2.4.13` | --- ### Release Notes <details> <summary>biomejs/biome (@​biomejs/biome)</summary> ### [`v2.4.13`](https://github.com/biomejs/biome/blob/HEAD/packages/@​biomejs/biome/CHANGELOG.md#2413) [Compare Source](https://github.com/biomejs/biome/compare/@biomejs/biome@2.4.12...@biomejs/biome@2.4.13) ##### Patch Changes - [#​9969](biomejs/biome#9969) [`c5eb92b`](biomejs/biome@c5eb92b) Thanks [@​officialasishkumar](https://github.com/officialasishkumar)! - Added the nursery rule [`noUnnecessaryTemplateExpression`](https://biomejs.dev/linter/rules/no-unnecessary-template-expression/), which disallows template literals that only contain string literal expressions. These can be replaced with a simpler string literal. For example, the following code triggers the rule: ```js const a = `${"hello"}`; // can be 'hello' const b = `${"prefix"}_suffix`; // can be 'prefix_suffix' const c = `${"a"}${"b"}`; // can be 'ab' ``` - [#​10037](biomejs/biome#10037) [`f785e8c`](biomejs/biome@f785e8c) Thanks [@​minseong0324](https://github.com/minseong0324)! - Fixed [#​9810](biomejs/biome#9810): [`noMisleadingReturnType`](https://biomejs.dev/linter/rules/no-misleading-return-type/) no longer reports false positives on a getter with a matching setter in the same namespace. ```ts class Store { get status(): string { if (Math.random() > 0.5) return "loading"; return "idle"; } set status(v: string) {} } ``` - [#​10084](biomejs/biome#10084) [`5e2f90c`](biomejs/biome@5e2f90c) Thanks [@​jiwon79](https://github.com/jiwon79)! - Fixed [#​10034](biomejs/biome#10034): [`noUselessEscapeInRegex`](https://biomejs.dev/linter/rules/no-useless-escape-in-regex/) no longer flags escapes of `ClassSetReservedPunctuator` characters (`&`, `!`, `#`, `%`, `,`, `:`, `;`, `<`, `=`, `>`, `@`, `` ` ``, `~`) inside `v`-flag character classes as useless. These characters are reserved as individual code points in `v`-mode, so the escape is required. The following pattern is now considered valid: ```js /[a-z\&]/v; ``` - [#​10063](biomejs/biome#10063) [`c9ffa16`](biomejs/biome@c9ffa16) Thanks [@​Netail](https://github.com/Netail)! - Added extra rule sources from ESLint CSS. `biome migrate eslint` should do a bit better detecting rules in your eslint configurations. - [#​10035](biomejs/biome#10035) [`946b50e`](biomejs/biome@946b50e) Thanks [@​Netail](https://github.com/Netail)! - Fixed [#​10032](biomejs/biome#10032): [useIframeSandbox](https://biomejs.dev/linter/rules/use-iframe-sandbox/) now flags if there's no initializer value. - [#​9865](biomejs/biome#9865) [`68fb8d4`](biomejs/biome@68fb8d4) Thanks [@​dyc3](https://github.com/dyc3)! - Added the new nursery rule [`useDomNodeTextContent`](https://biomejs.dev/linter/rules/use-dom-node-text-content/), which prefers `textContent` over `innerText` for DOM node text access and destructuring. For example, the following snippet triggers the rule: ```js const foo = node.innerText; ``` - [#​10023](biomejs/biome#10023) [`bd1e74f`](biomejs/biome@bd1e74f) Thanks [@​ematipico](https://github.com/ematipico)! - Added a new nursery rule [`noReactNativeDeepImports`](https://biomejs.dev/linter/rules/no-react-native-deep-imports/) that disallows deep imports from the `react-native` package. Internal paths like `react-native/Libraries/...` are not part of the public API and may change between versions. For example, the following code triggers the rule: ```js import View from "react-native/Libraries/Components/View/View"; ``` - [#​9885](biomejs/biome#9885) [`3dce737`](biomejs/biome@3dce737) Thanks [@​dyc3](https://github.com/dyc3)! - Added a new nursery rule [`useDomQuerySelector`](https://biomejs.dev/linter/rules/use-dom-query-selector/) that prefers `querySelector()` and `querySelectorAll()` over older DOM query methods such as `getElementById()` and `getElementsByClassName()`. - [#​9995](biomejs/biome#9995) [`4da9caf`](biomejs/biome@4da9caf) Thanks [@​siketyan](https://github.com/siketyan)! - Fixed [#​9994](biomejs/biome#9994): Biome now parses nested CSS rules correctly when declarations follow them inside embedded snippets. - [#​10009](biomejs/biome#10009) [`b41cc5a`](biomejs/biome@b41cc5a) Thanks [@​Jayllyz](https://github.com/Jayllyz)! - Fixed [#​10004](biomejs/biome#10004): [`noComponentHookFactories`](https://biomejs.dev/linter/rules/no-component-hook-factories/) no longer reports false positives for object methods and class methods. - [#​9988](biomejs/biome#9988) [`eabf54a`](biomejs/biome@eabf54a) Thanks [@​Netail](https://github.com/Netail)! - Tweaked the diagnostics range for [useAltText](https://biomejs.dev/linter/rules/use-alt-text), [useButtonType](https://biomejs.dev/linter/rules/use-button-type), [useHtmlLang](https://biomejs.dev/linter/rules/use-html-lang), [useIframeTitle](https://biomejs.dev/linter/rules/use-iframe-title), [useValidAriaRole](https://biomejs.dev/linter/rules/use-valid-aria-role) & [useIfameSandbox](https://biomejs.dev/linter/rules/use-iframe-sandbox) to report on the opening tag instead of the full tag. - [#​10043](biomejs/biome#10043) [`fc65902`](biomejs/biome@fc65902) Thanks [@​mujpao](https://github.com/mujpao)! - Fixed [#​10003](biomejs/biome#10003): Biome no longer panics when parsing Svelte files containing `{#}`. - [#​9815](biomejs/biome#9815) [`5cc83b1`](biomejs/biome@5cc83b1) Thanks [@​dyc3](https://github.com/dyc3)! - Added the new nursery rule [`noLoopFunc`](https://biomejs.dev/linter/rules/no-loop-func/). When enabled, it warns when a function declared inside a loop captures outer variables that can change across iterations. - [#​9702](biomejs/biome#9702) [`ef470ba`](biomejs/biome@ef470ba) Thanks [@​ryan-m-walker](https://github.com/ryan-m-walker)! - Added the nursery rule [`useRegexpTest`](https://biomejs.dev/linter/rules/use-regexp-test/) that enforces `RegExp.prototype.test()` over `String.prototype.match()` and `RegExp.prototype.exec()` in boolean contexts. `test()` returns a boolean directly, avoiding unnecessary computation of match results. **Invalid** ```js if ("hello world".match(/hello/)) { } ``` **Valid** ```js if (/hello/.test("hello world")) { } ``` - [#​9743](biomejs/biome#9743) [`245307d`](biomejs/biome@245307d) Thanks [@​leetdavid](https://github.com/leetdavid)! - Fixed [#​2245](biomejs/biome#2245): Svelte `<script>` tag language detection when the `generics` attribute contains `>` characters (e.g., `<script lang="ts" generics="T extends Record<string, unknown>">`). Biome now correctly recognizes TypeScript in such script blocks. - [#​10046](biomejs/biome#10046) [`0707de7`](biomejs/biome@0707de7) Thanks [@​Conaclos](https://github.com/Conaclos)! - Fixed [#​10038](biomejs/biome#10038): [`organizeImports`](https://biomejs.dev/assist/actions/organize-imports/) now sorts imports in TypeScript modules and declaration files. ```diff declare module "mymodule" { - import type { B } from "b"; import type { A } from "a"; + import type { B } from "b"; } ``` - [#​10012](biomejs/biome#10012) [`94ccca9`](biomejs/biome@94ccca9) Thanks [@​ematipico](https://github.com/ematipico)! - Added the nursery rule [`noReactNativeLiteralColors`](https://biomejs.dev/linter/rules/no-react-native-literal-colors/), which disallows color literals inside React Native styles. The rule belongs to the `reactNative` domain. It reports properties whose name contains `color` and whose value is a string literal when they appear inside a `StyleSheet.create(...)` call or inside a JSX attribute whose name contains `style`. ```jsx // Invalid const Hello = () => <Text style={{ backgroundColor: "#FFFFFF" }}>hi</Text>; const styles = StyleSheet.create({ text: { color: "red" }, }); ``` ```jsx // Valid const red = "#f00"; const styles = StyleSheet.create({ text: { color: red }, }); ``` - [#​10005](biomejs/biome#10005) [`131019e`](biomejs/biome@131019e) Thanks [@​ematipico](https://github.com/ematipico)! - Added the nursery rule [`noReactNativeRawText`](https://biomejs.dev/linter/rules/no-react-native-raw-text/), which disallows raw text outside of `<Text>` components in React Native. The rule belongs to the new `reactNative` domain. ```jsx // Invalid <View>some text</View> <View>{'some text'}</View> ``` ```jsx // Valid <View> <Text>some text</Text> </View> ``` Additional components can be allowlisted through the `skip` option: ```json { "options": { "skip": ["Title"] } } ``` - [#​9911](biomejs/biome#9911) [`1603f78`](biomejs/biome@1603f78) Thanks [@​Netail](https://github.com/Netail)! - Added the nursery rule [`noJsxLeakedDollar`](https://biomejs.dev/linter/rules/no-jsx-leaked-dollar), which flags text nodes with a trailing `$` if the next sibling node is a JSX expression. This could be an unintentional mistake, resulting in a '$' being rendered as text in the output. **Invalid**: ```jsx function MyComponent({ user }) { return <div>Hello ${user.name}</div>; } ``` - [#​9999](biomejs/biome#9999) [`f42405f`](biomejs/biome@f42405f) Thanks [@​minseong0324](https://github.com/minseong0324)! - Fixed `noMisleadingReturnType` incorrectly flagging functions with reassigned `let` variables. - [#​10075](biomejs/biome#10075) [`295f97f`](biomejs/biome@295f97f) Thanks [@​ematipico](https://github.com/ematipico)! - Fixed [`#9983`](biomejs/biome#9983): Biome now parses functions declared inside Svelte `#snippet` blocks without throwing errors. - [#​10006](biomejs/biome#10006) [`cf4c1c9`](biomejs/biome@cf4c1c9) Thanks [@​minseong0324](https://github.com/minseong0324)! - Fixed [#​9810](biomejs/biome#9810): `noMisleadingReturnType` incorrectly flagging nested object literals with widened properties. - [#​10033](biomejs/biome#10033) [`11ddc05`](biomejs/biome@11ddc05) Thanks [@​ematipico](https://github.com/ematipico)! - Added the nursery rule [`useReactNativePlatformComponents`](https://biomejs.dev/linter/rules/use-react-native-platform-components/) that ensures platform-specific React Native components (e.g. `ProgressBarAndroid`, `ActivityIndicatorIOS`) are only imported in files with a matching platform suffix. It also reports when Android and iOS components are mixed in the same file. The following code triggers the rule when the file does not have an `.android.js` suffix: ```js // file.js import { ProgressBarAndroid } from "react-native"; ``` </details> --- ### Configuration 📅 **Schedule**: (UTC) - Branch creation - At any time (no schedule defined) - Automerge - At any time (no schedule defined) 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. ♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. 🔕 **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check this box --- This PR has been generated by [Renovate Bot](https://github.com/renovatebot/renovate). <!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0My4xMzkuNiIsInVwZGF0ZWRJblZlciI6IjQzLjEzOS42IiwidGFyZ2V0QnJhbmNoIjoibWFpbiIsImxhYmVscyI6W119--> Reviewed-on: https://git.oirnoir.dev/OIRNOIR/YouTube-Helper-Server/pulls/1
Summary
This PR creates the new rule
noReactNativeRawText, which is a port of https://github.com/Intellicode/eslint-plugin-react-native/blob/master/docs/rules/no-raw-text.mdI created the rule via a coding agent, and changed the generated code to match my expectations.
I also added a function
as_descriptionto theRuleDomain, so that we can simplify the codegen.Test Plan
Added new tests, with options too.
Docs
Part of the rule.