@biomejs/biome@2.5.15
roboflow/inference@biomejs/biome@2.5.15Sep 30, 2026by github-actions[bot]
Upgrading?
AI Summary
A patch release introducing new nursery linter rules for React, Svelte, and Astro, alongside performance enhancements for the HTML formatter and file indexing tools.
Key Highlights
- New `noReactObjectTypeAsDefaultProp` rule disallowing object/array default props
- New `noSvelteExportLet` rule enforcing Svelte 5 `$props` rune syntax
- New `useLogicalProperties` rule for CSS to support internationalization and accessibility
- HTML formatter performance improved up to 4x
- Fixed Astro `set:html` directive reporting inside template expressions
New Features
- Linter rule `noReactObjectTypeAsDefaultProp`
- Linter rule `noSvelteExportLet`
- Linter rule `useLogicalProperties`
- Linter rule `useSvelteKitRuneImports`
- Linter rule `noMeaninglessVoidOperator`
- Linter rule `useStrictBooleanExpressions`
- Performance improvements for HTML formatting
- Performance improvements for file indexing
Full Release Notes
## 2.5.15
### Patch Changes
- [#10634](https://github.com/biomejs/biome/pull/10634) [`b436ba0`](https://github.com/biomejs/biome/commit/b436ba00de298d5002a3d3bb1fae1d2a882f6d58) Thanks [@subaru-hello](https://github.com/subaru-hello)! - Added the new nursery rule [`noReactObjectTypeAsDefaultProp`](https://biomejs.dev/linter/rules/no-react-object-type-as-default-prop/), which disallows array, object, and function values as default props in React components.
For example, the following snippet triggers the rule.
```jsx
function Component({ items = [] }) {
return items;
}
```
- [#11956](https://github.com/biomejs/biome/pull/11956) [`faa8b37`](https://github.com/biomejs/biome/commit/faa8b374da7e196c937258c5442b4f773b4ba574) Thanks [@dyc3](https://github.com/dyc3)! - Added the nursery rule [`noSvelteExportLet`](https://biomejs.dev/linter/rules/no-svelte-export-let/), which disallows declaring Svelte component props with the legacy `export let` syntax. Use the `$props()` rune instead.
```svelte
<script>
export let name;
</script>
```
- [#10816](https://github.com/biomejs/biome/pull/10816) [`1b9479e`](https://github.com/biomejs/biome/commit/1b9479e4c85dd11af68ec14cbe43a5000edce86e) Thanks [@Th3S4mur41](https://github.com/Th3S4mur41)! - Added a new nursery rule [`useLogicalProperties`](https://biomejs.dev/linter/rules/use-logical-properties) that enforces the use of logical properties in CSS, promoting better internationalization and accessibility practices. The rule supports a `direction` option with `"ltr"` as the default and `"rtl"` as the alternative.
This is a first rule covering parts of [#9034](https://github.com/biomejs/biome/issues/9034)
```json
{
"linter": {
"rules": {
"nursery": {
"useLogicalProperties": {
"level": "warn",
"options": {
"direction": "rtl"
}
}
}
}
}
}
```
- [#11960](https://github.com/biomejs/biome/pull/11960) [`1fdb5c2`](https://github.com/biomejs/biome/commit/1fdb5c2609fbb64bd3442099f88c40b814405931) Thanks [@dyc3](https://github.com/dyc3)! - Added the nursery rule [`useSvelteKitRuneImports`](https://biomejs.dev/linter/rules/use-svelte-kit-rune-imports/), which reports imports from the deprecated `$app/stores` module and suggests `$app/state` instead.
```js
import { page } from "$app/stores";
```
- [#11723](https://github.com/biomejs/biome/pull/11723) [`3b429d1`](https://github.com/biomejs/biome/commit/3b429d182588aa19d35190a935e4dcdc5b693e5e) Thanks [@m1handr](https://github.com/m1handr)! - Fixed [#11656](https://github.com/biomejs/biome/issues/11656): [`noAstroSetHtmlDirective`](https://biomejs.dev/linter/rules/no-astro-set-html-directive/) now correctly reports `set:html` directives inside Astro template expressions.
- [#12023](https://github.com/biomejs/biome/pull/12023) [`874d5ae`](https://github.com/biomejs/biome/commit/874d5aed43b2ae15e62e28b1909545eba5918f0b) Thanks [@codspeed](https://github.com/apps/codspeed)! - Improved the performance of the HTML formatter up to 4x.
- [#11761](https://github.com/biomejs/biome/pull/11761) [`a3462fe`](https://github.com/biomejs/biome/commit/a3462fee0a32a764dd30dbc01f24c072fafea75a) Thanks [@saberoueslati](https://github.com/saberoueslati)! - Fixed [#11351](https://github.com/biomejs/biome/issues/11351): [`useSimplifiedLogicExpression`](https://biomejs.dev/linter/rules/use-simplified-logic-expression/) no longer reports boolean literals on the right side of `||` and `&&` outside boolean contexts, because removing them can change the result of the expression. For example, `y = x || false` is no longer reported, while `if (x || false)` still is.
- [#11732](https://github.com/biomejs/biome/pull/11732) [`ff4c4dd`](https://github.com/biomejs/biome/commit/ff4c4dd922c360fdc9386495d617e63821cc43ee) Thanks [@dyc3](https://github.com/dyc3)! - Added the nursery rule [`noMeaninglessVoidOperator`](https://biomejs.dev/linter/rules/no-meaningless-void-operator/), which reports unnecessary uses of `void`, such as `void log()` when `log` returns `void`. The rule allows discarded call results, thenables, `void 0`, and calls returning `never`.
- [#11975](https://github.com/biomejs/biome/pull/11975) [`40dd3fb`](https://github.com/biomejs/biome/commit/40dd3fb86d22ba155d0e1d081302abbcba0aa4ee) Thanks [@ematipico](https://github.com/ematipico)! - Fixed the indentation of multiline Astro expressions, in templates and attribute values, when running `biome check --write`. Biome now formats Astro expressions with `biome format` too, and places them at the column of the surrounding markup.
```diff
<div>
{items.map((item) => (
- <span>{item}</span>
-))}
+ <span>{item}</span>
+ ))}
</div>
```
- [#12016](https://github.com/biomejs/biome/pull/12016) [`09d4000`](https://github.com/biomejs/biome/commit/09d4000ae7414226a10bcd968765f42ebb9ed13c) Thanks [@codspeed](https://github.com/apps/codspeed)! - Improved the performance of indexing and analysis of big files up to 2x. The improvements are mostly visible in projects that make use of project and types lint rules.
- [#11750](https://github.com/biomejs/biome/pull/11750) [`089bde0`](https://github.com/biomejs/biome/commit/089bde07e3849bd88ac24bf604ab0231672371b0) Thanks [@dyc3](https://github.com/dyc3)! - Added the nursery rule [`useStrictBooleanExpressions`](https://biomejs.dev/linter/rules/use-strict-boolean-expressions/), which reports ambiguous truthiness checks such as `if (value)` when `value` has type `number | undefined`. Non-nullable strings and numbers and nullable objects are allowed; the rule has no options.
- [#11494](https://github.com/biomejs/biome/pull/11494) [`ad5b362`](https://github.com/biomejs/biome/commit/ad5b362fd17e488f50934306534cc2742b0cf84e) Thanks [@jp-knj](https://github.com/jp-knj)! - Added the nursery rule [`noAstroConflictingSetDirectives`](https://biomejs.dev/linter/rules/no-astro-conflicting-set-directives/), which reports Astro elements with multiple content sources, such as `set:html`, `set:text`, and child content.
For example, `<div set:html={html}>content</div>` triggers the rule.
- [#11878](https://github.com/biomejs/biome/pull/11878) [`84d1b3b`](https://github.com/biomejs/biome/commit/84d1b3b045e8acfef730b4e5010baad4b7725d8f) Thanks [@dyc3](https://github.com/dyc3)! - Fixed [#11748](https://github.com/biomejs/biome/issues/11748): [`useExhaustiveSwitchCases`](https://biomejs.dev/linter/rules/use-exhaustive-switch-cases/) now reports missing cases for values created with the mapping overload of `Array.from`, including arrays imported from another module.
- [#11802](https://github.com/biomejs/biome/pull/11802) [`7d1f37e`](https://github.com/biomejs/biome/commit/7d1f37ec11a58e2d972329cf89b5d91758b06f6b) Thanks [@dyc3](https://github.com/dyc3)! - Tailwind classes will now be detected in Svelte, Vue, and Astro class attribute expressions that don't use a class merging function.
- [#11910](https://github.com/biomejs/biome/pull/11910) [`9e50ea2`](https://github.com/biomejs/biome/commit/9e50ea2537c3d541f5b99dc3d4a6eb5120b1ba69) Thanks [@ematipico](https://github.com/ematipico)! - Fixed [#11504](https://github.com/biomejs/biome/issues/11504), a regression where Biome would silently ignore errors in the configuration file. Now errors are correctly retained and checked before executing any command.
- [#11921](https://github.com/biomejs/biome/pull/11921) [`d568632`](https://github.com/biomejs/biome/commit/d56863253fbed960b102f58e8fef475c22889301) Thanks [@hirehamir](https://github.com/hirehamir)! - Fixed [#10846](https://github.com/biomejs/biome/issues/10846): when plugins fail to load, Biome now prints each failing plugin's path on its own line, instead of concatenating bare messages like `Cannot read file.Cannot read file.`.
- [#11930](https://github.com/biomejs/biome/pull/11930) [`82ea5a6`](https://github.com/biomejs/biome/commit/82ea5a6175840bc2df0114c16fab0f6d6de06edd) Thanks [@dyc3](https://github.com/dyc3)! - Fixed [#11927](https://github.com/biomejs/biome/issues/11927): The HTML formatter no longer duplicates comments around Svelte blocks. This affected a comment after a block such as `{#if}` or `{#each}` at the end of an element, and a comment on the same line as the last element inside a block, before `{:else}`, `{/if}`, or a similar tag.
- [#11931](https://github.com/biomejs/biome/pull/11931) [`0cc46d8`](https://github.com/biomejs/biome/commit/0cc46d8d7c300452159fa65546d1b576efadd605) Thanks [@dyc3](https://github.com/dyc3)! - Fixed the indentation of comments at the end of a Svelte block's contents. A comment before `{:else}`, `{:then}`, `{/if}`, or a similar tag is now indented with the block's contents instead of with the tag.
```diff
{#if condition}
<span>Text</span>
-<!-- comment -->
+ <!-- comment -->
{/if}
```
- [#12031](https://github.com/biomejs/biome/pull/12031) [`ef0edd4`](https://github.com/biomejs/biome/commit/ef0edd4a2fe3eaf29b2c52d5c9eb0c67f85e2ab5) Thanks [@dyc3](https://github.com/dyc3)! - Fixed [#12027](https://github.com/biomejs/biome/issues/12027): Biome's test rules no longer mistake regular method calls named `test`, `it`, or `describe` for tests. For example, [`useValidTestTitle`](https://biomejs.dev/linter/rules/use-valid-test-title/) used to report the following regular expression check as a test with an invalid title:
```js
const isComment = /^\s*#/.test(line);
```
- [#11959](https://github.com/biomejs/biome/pull/11959) [`8477e61`](https://github.com/biomejs/biome/commit/8477e610a8ba787234ee2d21efc05680a72beec2) Thanks [@dyc3](https://github.com/dyc3)! - Fixed [#11950](https://github.com/biomejs/biome/issues/11950): [`noUnusedVariables`](https://biomejs.dev/linter/rules/no-unused-variables/) now reports arrow functions with expression bodies that only reference themselves, such as `let h = () => h();`.
- [#11915](https://github.com/biomejs/biome/pull/11915) [`3260602`](https://github.com/biomejs/biome/commit/3260602e03dd44b79afbd36ec77a71a1e87b7ed7) Thanks [@ematipico](https://github.com/ematipico)! - Fixed [#11841](https://github.com/biomejs/biome/issues/11841), where suppression comments had no effect on some parts of HTML-ish files and on snippets embedded in JavaScript files.
Now the following suppression works as expected:
```vue
<!-- biome-ignore lint/correctness/noUndeclaredVariables: intentionally external -->
<div :title="missingValue"></div>
```
- [#11952](https://github.com/biomejs/biome/pull/11952) [`b51040e`](https://github.com/biomejs/biome/commit/b51040ee3ab66880c925298977229294248dc636) Thanks [@dyc3](https://github.com/dyc3)! - Fixed [#11951](https://github.com/biomejs/biome/issues/11951): the GritQL formatter no longer inserts a space after a `within` pattern without an `until` clause.
```diff
-$arg <: within `bar($_)` ,
+$arg <: within `bar($_)`,
```
- [#11794](https://github.com/biomejs/biome/pull/11794) [`429cf95`](https://github.com/biomejs/biome/commit/429cf950d29cfa852dfcbcdd9fdb219b2a01af9b) Thanks [@dyc3](https://github.com/dyc3)! - Added the nursery rule [`noTailwindRawColors`](https://biomejs.dev/linter/rules/no-tailwind-raw-colors/) for JavaScript and HTML. It disallows Tailwind palette colors such as `bg-pink-500` and `text-white`, encouraging design system color utilities such as `bg-primary`.
- [#11837](https://github.com/biomejs/biome/pull/11837) [`f5e249b`](https://github.com/biomejs/biome/commit/f5e249b27d2ddf21f92fdd3a531adfd6c411c633) Thanks [@dyc3](https://github.com/dyc3)! - Fixed [#11836](https://github.com/biomejs/biome/issues/11836): `biome check --write` no longer adds invalid parentheses around Svelte `{@const}` declarations when experimental HTML support and formatting are enabled.
- [#11978](https://github.com/biomejs/biome/pull/11978) [`8be0b9e`](https://github.com/biomejs/biome/commit/8be0b9ed7617ccc53fd2554fb42c855b222b5a43) Thanks [@dyc3](https://github.com/dyc3)! - Fixed [#11817](https://github.com/biomejs/biome/issues/11817): Biome no longer crashes when its output is piped to a program that exits early, such as `head`. Output to the closed pipe is now discarded and Biome exits normally.
- [#11868](https://github.com/biomejs/biome/pull/11868) [`3841c26`](https://github.com/biomejs/biome/commit/3841c26f45fa13998f6201921ee5ccd0b0063fb7) Thanks [@ematipico](https://github.com/ematipico)! - Fixed [#8986](https://github.com/biomejs/biome/issues/8986): Biome's language server now scopes all watched-file patterns to each workspace folder, falling back to the deprecated `rootUri` when no workspace folders are provided. Clients without relative-pattern support receive compatible absolute glob patterns.
- [#11928](https://github.com/biomejs/biome/pull/11928) [`0015681`](https://github.com/biomejs/biome/commit/001568183912d1a14bd22d0d20a46e7c7f6bcbb5) Thanks [@dyc3](https://github.com/dyc3)! - Restricted access to the Unix daemon socket to the user running Biome. The socket now lives in a `biome-daemon` directory inside Biome's cache directory that only this user can access, and the socket itself has mode `0600`.
- [#11835](https://github.com/biomejs/biome/pull/11835) [`589ca1a`](https://github.com/biomejs/biome/commit/589ca1a0dd9f93a3ef3f3dac98d01720ae78bdcf) Thanks [@dyc3](https://github.com/dyc3)! - Updated [`useReactCompiler`](https://biomejs.dev/linter/rules/use-react-compiler/): Biome now reports React Compiler diagnostics regardless of the React version declared in `package.json`.
- [#11907](https://github.com/biomejs/biome/pull/11907) [`b7d9037`](https://github.com/biomejs/biome/commit/b7d903781c7968517675de39d3f086184d83faf7) Thanks [@posido](https://github.com/posido)! - Fixed [withastro/compiler-rs#194](https://github.com/withastro/compiler-rs/issues/194): the HTML parser no longer treats a regex literal that starts with `>` as the end of a self-closing tag. Astro frontmatter such as `const escaped = s.replace(/>/g, ">");` no longer swallows the closing `---` fence, and the same regex inside a template expression no longer runs past its closing `}`. A regex literal after a keyword such as `return`, as in `return />'/.test(s)`, is now recognized too.
- [#12021](https://github.com/biomejs/biome/pull/12021) [`59cc595`](https://github.com/biomejs/biome/commit/59cc595c62882861ac1b1d166da155762a826abb) Thanks [@dyc3](https://github.com/dyc3)! - Type inference performance has been significantly improved. Some popular libraries like Zod, Valibot, Arktype, Effect, Kysely, and Drizzle have gained a ~2-240x speedup in our benchmarks. This improvement affects all rules that use type information.
- [#12044](https://github.com/biomejs/biome/pull/12044) [`c73fb91`](https://github.com/biomejs/biome/commit/c73fb915eb80f843cf6b2ff7f68f8ad3850be1b4) Thanks [@dyc3](https://github.com/dyc3)! - Fixed [#12042](https://github.com/biomejs/biome/issues/12042): the HTML formatter no longer removes the space between text and an inline element on the next line when it joins the lines.
```diff
- <p>a <em>b</em> c<u>d</u></p>
+ <p>a <em>b</em> c <u>d</u></p>
```
- [#11965](https://github.com/biomejs/biome/pull/11965) [`f90bf38`](https://github.com/biomejs/biome/commit/f90bf384bd4d4237e74618e48704933915fa8a78) Thanks [@ematipico](https://github.com/ematipico)! - Fixed module resolution in long-running workspaces so imports reflect package manifest and TypeScript path-mapping changes without requiring the importing file to be edited.
- [#11860](https://github.com/biomejs/biome/pull/11860) [`0884e29`](https://github.com/biomejs/biome/commit/0884e294b47a3486bbaf190792aecd095443d664) Thanks [@dyc3](https://github.com/dyc3)! - Removed the `attributes` and `functions` options from the nursery rule [`noTailwindArbitraryValue`](https://biomejs.dev/linter/rules/no-tailwind-arbitrary-value/). The rule now uses the same Tailwind detection as [`useTailwindShorthandClasses`](https://biomejs.dev/linter/rules/use-tailwind-shorthand-classes/).
- [#11969](https://github.com/biomejs/biome/pull/11969) [`865cd30`](https://github.com/biomejs/biome/commit/865cd30770b8e3060b7a5fdbcc09a44d25ed15d5) Thanks [@AlbinoGeek](https://github.com/AlbinoGeek)! - Fixed [#11962](https://github.com/biomejs/biome/issues/11962): [`noUnknownTypeSelector`](https://biomejs.dev/linter/rules/no-unknown-type-selector/) no longer reports view transition names inside view transition pseudo-elements, such as `page` in `::view-transition-group(page)`.
- [#11914](https://github.com/biomejs/biome/pull/11914) [`06ff47b`](https://github.com/biomejs/biome/commit/06ff47b16dee1dd3c0a7768b390074055d6d4afc) Thanks [@dyc3](https://github.com/dyc3)! - Fixed [#11897](https://github.com/biomejs/biome/issues/11897): the safe fix for [`noUselessStringConcat`](https://biomejs.dev/linter/rules/no-useless-string-concat/) now escapes embedded double quotes when combining literals, preserving valid JavaScript and existing escape sequences.
- [#11997](https://github.com/biomejs/biome/pull/11997) [`af7825f`](https://github.com/biomejs/biome/commit/af7825fd24783f4a41ed845b44dca5ce36ae59f8) Thanks [@github-actions](https://github.com/apps/github-actions)! - The [noRestrictedDependencies](https://biomejs.dev/linter/rules/no-restricted-dependencies/) rule has been updated with new module replacement data, it should now detect for more relevant replacements.
- [#11827](https://github.com/biomejs/biome/pull/11827) [`31bb662`](https://github.com/biomejs/biome/commit/31bb6627e5c54c6840e51eb61c0aec9f0da6113e) Thanks [@dfedoryshchev](https://github.com/dfedoryshchev)! - Fixed [#11566](https://github.com/biomejs/biome/issues/11566): [`useNamingConvention`](https://biomejs.dev/linter/rules/use-naming-convention/) no longer reports a `namespace` declared inside `declare global` or inside an external module declaration. Both positions are documented as always ignored, and the rule offered a safe fix, so `biome check --write` renamed the declaration:
```ts
export {}
declare global {
// no longer renamed to `Jsx`
namespace JSX {}
}
```
- [#11814](https://github.com/biomejs/biome/pull/11814) [`23ba25f`](https://github.com/biomejs/biome/commit/23ba25f191eb8ff91114f6b44bdb81cab5d6900e) Thanks [@siketyan](https://github.com/siketyan)! - Fixed type inference through generic type aliases that instantiate another generic type with a nested generic argument, such as `type Nested<T> = Box<Wrapper<T>>`. Type-aware rules now resolve members of such types:
```ts
declare const nested: Nested<number>;
// noUnnecessaryConditions now reports that `??` is unnecessary.
const inner = nested.value.inner ?? 1;
```
- [#11908](https://github.com/biomejs/biome/pull/11908) [`dd5a5ce`](https://github.com/biomejs/biome/commit/dd5a5cedf0e5bfdce8af0cd4f2b250a9f82848a4) Thanks [@siketyan](https://github.com/siketyan)! - Fixed [#11880](https://github.com/biomejs/biome/issues/11880): Biome no longer misparses a `<<` expression followed by a later `>>>` as TypeScript type arguments. For example, `const mask = 1 << bits` followed by `const m = mask >>> 0` on the next line now parses correctly.
- [#11882](https://github.com/biomejs/biome/pull/11882) [`28c817d`](https://github.com/biomejs/biome/commit/28c817d16375bd451d29d1b18c2cf4419cf22ef8) Thanks [@mikehasa](https://github.com/mikehasa)! - Fixed a bug in [`noOctalEscape`](https://biomejs.dev/linter/rules/no-octal-escape/) where the safe fix could silently change a string's value. A legacy octal escape is at most two digits when the leading digit is `4`-`7`, so `"\751"` is `"\75"` + `"1"` (i.e. `"=1"`) but was rewritten to the single character `ǩ`; it is now rewritten to `"\x3d1"`.
- [#11861](https://github.com/biomejs/biome/pull/11861) [`81b0adb`](https://github.com/biomejs/biome/commit/81b0adb8dc80a99bddc47f80cae61edfecdda214) Thanks [@Netail](https://github.com/Netail)! - Added the new nursery rule [`noSelfImport`](https://biomejs.dev/linter/rules/no-self-import/), which forbids a module from importing itself.
```js
// foo.js
import foo from "./foo.js";
```
- [#12041](https://github.com/biomejs/biome/pull/12041) [`5e14509`](https://github.com/biomejs/biome/commit/5e1450901a405d1d62d1716789996e301ab5de22) Thanks [@ematipico](https://github.com/ematipico)! - Fixed a stack overflow in type-aware lint rules, such as [`noMisusedPromises`](https://biomejs.dev/linter/rules/no-misused-promises/) and [`noFloatingPromises`](https://biomejs.dev/linter/rules/no-floating-promises/), when generic types in files that import each other reference one another in their type parameters.
```ts
// entity.ts
import type { Repository } from "./repository";
export interface Entity<R extends Repository<any> = Repository<any>> {}
// repository.ts
import type { Entity } from "./entity";
export interface Repository<E extends Entity<any> = Entity<any>> {}
```
- [#11838](https://github.com/biomejs/biome/pull/11838) [`9bbff0c`](https://github.com/biomejs/biome/commit/9bbff0cdf3a5268db87a0d378dd9ffaaf04a3595) Thanks [@dyc3](https://github.com/dyc3)! - Added the nursery rule [`usePromiseRejectErrors`](https://biomejs.dev/linter/rules/use-promise-reject-errors/), which requires Error objects as Promise rejection reasons.
```js
Promise.reject("Request failed");
new Promise((resolve, reject) => reject(42));
```
- [#11917](https://github.com/biomejs/biome/pull/11917) [`717db8c`](https://github.com/biomejs/biome/commit/717db8c25737bacd0456c17bef9dda66f3c082c5) Thanks [@dyc3](https://github.com/dyc3)! - Added the nursery rule [`noMisplacedListElements`](https://biomejs.dev/linter/rules/no-misplaced-list-elements/) for HTML and JSX, which requires `<li>` elements with an HTML element parent to be children of `<ul>`, `<ol>`, or `<menu>`. For example, `<div><li>Item</li></div>` is invalid.
- [#11919](https://github.com/biomejs/biome/pull/11919) [`8d0b990`](https://github.com/biomejs/biome/commit/8d0b990cb3dbb95354839e61561df8c14b86a273) Thanks [@dyc3](https://github.com/dyc3)! - Fixed [#11899](https://github.com/biomejs/biome/issues/11899): disabling a domain no longer disables rules that also belong to another enabled domain. For example, with `"domains": { "react": "all", "next": "none" }`, [`useExhaustiveDependencies`](https://biomejs.dev/linter/rules/use-exhaustive-dependencies/) and [`useHookAtTopLevel`](https://biomejs.dev/linter/rules/use-hook-at-top-level/) are now enabled.
Rules enabled explicitly in the configuration also stay enabled when one of their domains is set to `"none"`.
- [#11814](https://github.com/biomejs/biome/pull/11814) [`23ba25f`](https://github.com/biomejs/biome/commit/23ba25f191eb8ff91114f6b44bdb81cab5d6900e) Thanks [@siketyan](https://github.com/siketyan)! - Fixed [#11810](https://github.com/biomejs/biome/issues/11810) and [#11813](https://github.com/biomejs/biome/issues/11813): type-aware rules such as [`noUnnecessaryConditions`](https://biomejs.dev/linter/rules/no-unnecessary-conditions/) and [`noFloatingPromises`](https://biomejs.dev/linter/rules/no-floating-promises/) no longer take several seconds when a member is accessed on a recursive generic type alias, such as react-hook-form's `FieldPathValue` or zustand's `Mutate`.
- [#11983](https://github.com/biomejs/biome/pull/11983) [`cc39794`](https://github.com/biomejs/biome/commit/cc3979413d3ab043f29764ba4502f7e20b460928) Thanks [@AlbinoGeek](https://github.com/AlbinoGeek)! - Fixed [#11939](https://github.com/biomejs/biome/issues/11939): the fix of [`useRegexLiterals`](https://biomejs.dev/linter/rules/use-regex-literals/) no longer escapes a slash that is already escaped. `new RegExp("\\/")` is now fixed to `/\//` instead of the invalid `/\\//`.
- [#11869](https://github.com/biomejs/biome/pull/11869) [`3a21c80`](https://github.com/biomejs/biome/commit/3a21c80bd00808685b88e03f477114d9f2a96251) Thanks [@ematipico](https://github.com/ematipico)! - Fixed [`#9105`](https://github.com/biomejs/biome/issues/9105): `vcs.useIgnoreFile` now evaluates parent directory patterns when matching child paths, preserving re-included directories such as `!/src` while ignoring their excluded siblings.
- [#11875](https://github.com/biomejs/biome/pull/11875) [`2cdd220`](https://github.com/biomejs/biome/commit/2cdd220cd8fc1303d045241d50d6ed33aa3213c2) Thanks [@dyc3](https://github.com/dyc3)! - Fixed [#11867](https://github.com/biomejs/biome/issues/11867): [`noUndeclaredVariables`](https://biomejs.dev/linter/rules/no-undeclared-variables/) incorrectly reported Vue slot props declared with `v-slot` or its `#` shorthand, including destructured props.
- [#12021](https://github.com/biomejs/biome/pull/12021) [`59cc595`](https://github.com/biomejs/biome/commit/59cc595c62882861ac1b1d166da155762a826abb) Thanks [@dyc3](https://github.com/dyc3)! - Type inference accuracy has been improved significantly. More global types, like `Array`, `Map`, `Set`, etc., are now fully defined. This should decrease false positives on all typed rules, since less types will be unknown.
- [#11929](https://github.com/biomejs/biome/pull/11929) [`aef690d`](https://github.com/biomejs/biome/commit/aef690d673e657c6f783127cdf572175c7165f0e) Thanks [@Th3S4mur41](https://github.com/Th3S4mur41)! - Fixed [`noUnknownProperty`](https://biomejs.dev/linter/rules/no-unknown-property/) to recognize the `frame-sizing` CSS property.
- [#12022](https://github.com/biomejs/biome/pull/12022) [`6233eb2`](https://github.com/biomejs/biome/commit/6233eb2ad0a5e8e920e21123475fd137e3ab24b7) Thanks [@dyc3](https://github.com/dyc3)! - Fixed [#12020](https://github.com/biomejs/biome/issues/12020): the HTML parser now reports an error for a mismatched closing tag like the `</span>` in `<p>two</span></p>`. Previously, it accepted `</span>` as the end of `<p>` because `span` contains the letter `p`, and the formatter deleted everything after it. HTML tag names are matched case-insensitively, so `<DIV></div>` is no longer reported as mismatched.
A closing tag with no opening tag at the top level of a file, like the second `</p>` in `<p>a</p></p><p>b</p>`, is now also reported as an error, instead of the formatter deleting it and everything after it.
- [#12037](https://github.com/biomejs/biome/pull/12037) [`48cdbb8`](https://github.com/biomejs/biome/commit/48cdbb86486cd21959352e945103d5fa0a3a746f) Thanks [@ff1451](https://github.com/ff1451)! - Fixed [#11898](https://github.com/biomejs/biome/issues/11898): [`noUselessReturn`](https://biomejs.dev/linter/rules/no-useless-return/) no longer offers a safe fix for a `return;` that is the body of an unbraced `if`, `else`, or label, because removing it produced invalid code. The safe fix now also keeps comments placed before or after the removed `return;`.
```js
function foo() {
// Still reported, but the return is no longer removed
if (aborted) return;
}
```
- [#12030](https://github.com/biomejs/biome/pull/12030) [`4ff83dd`](https://github.com/biomejs/biome/commit/4ff83dd3ed3f265c9ae1e0c41e7a655511f1b264) Thanks [@ematipico](https://github.com/ematipico)! - Fixed [#9155](https://github.com/biomejs/biome/issues/9155): Biome no longer reports a parse error for typed slot props in Vue files, such as `v-slot="{ value }: { value: ValueType }"`. Types used in slot props annotations are now correctly detected as used by [`noUnusedVariables`](https://biomejs.dev/linter/rules/no-unused-variables/).
- [#11955](https://github.com/biomejs/biome/pull/11955) [`088164f`](https://github.com/biomejs/biome/commit/088164f398f5edcf4c1c763514d4916d46c37119) Thanks [@dyc3](https://github.com/dyc3)! - Fixed [#11946](https://github.com/biomejs/biome/issues/11946): [`noUnreachable`](https://biomejs.dev/linter/rules/no-unreachable/) and [`useGetterReturn`](https://biomejs.dev/linter/rules/use-getter-return/) now recognize `while` and `do...while` loops with truthy literal conditions as infinite unless control flow exits the loop.
- [#11958](https://github.com/biomejs/biome/pull/11958) [`6964bfc`](https://github.com/biomejs/biome/commit/6964bfc8a13c4bceed358da57d17f4ff4a728d8c) Thanks [@erenbati](https://github.com/erenbati)! - Fixed [#11924](https://github.com/biomejs/biome/issues/11924): [`noFocusedTests`](https://biomejs.dev/linter/rules/no-focused-tests/) no longer reports chained method calls such as `builder.image(url).fit("max")` as focused tests.
- [#11908](https://github.com/biomejs/biome/pull/11908) [`dd5a5ce`](https://github.com/biomejs/biome/commit/dd5a5cedf0e5bfdce8af0cd4f2b250a9f82848a4) Thanks [@siketyan](https://github.com/siketyan)! - Fixed parsing of left shifts between TypeScript instantiation expressions. Biome now parses `f<T> << f<T>` as a left shift of two instantiation expressions, matching TypeScript, instead of reporting a parse error.
- [#11877](https://github.com/biomejs/biome/pull/11877) [`5a53b2c`](https://github.com/biomejs/biome/commit/5a53b2c87191ea531f6c426dc5e166241b6db621) Thanks [@dyc3](https://github.com/dyc3)! - Fixed [#11278](https://github.com/biomejs/biome/issues/11278): [`noUnnecessaryConditions`](https://biomejs.dev/linter/rules/no-unnecessary-conditions/) no longer incorrectly reports optional chaining on `RegExp.exec()` results, including patterns created with `new RegExp()`. Biome now infers the nullable `RegExpExecArray | null` return type, preserving necessary checks such as `new RegExp(pattern).exec(input)?.[1]`.
- [#11906](https://github.com/biomejs/biome/pull/11906) [`b87822d`](https://github.com/biomejs/biome/commit/b87822d8b92d96fe226dc582b309a609a0c82974) Thanks [@dyc3](https://github.com/dyc3)! - Fixed [#11900](https://github.com/biomejs/biome/issues/11900): [`useForOf`](https://biomejs.dev/linter/rules/use-for-of/) no longer reports loops that update their index inside the body, including `i += 1` and `argv[++i]`.
- [#11834](https://github.com/biomejs/biome/pull/11834) [`f89dd4f`](https://github.com/biomejs/biome/commit/f89dd4f2d52e4919133429fa4550912510517a9a) Thanks [@dyc3](https://github.com/dyc3)! - Fixed incorrect type inference when generic parameters are reused across inherited types or swapped in recursive types.
## What's Changed
* refactor(js_runtime): reduce code and binary size by @siketyan in https://github.com/biomejs/biome/pull/11721
* feat(codegen): lower generic type constraints by @dyc3 in https://github.com/biomejs/biome/pull/11795
* feat(codegen): lower Symbol static members by @dyc3 in https://github.com/biomejs/biome/pull/11796
* feat(codegen): lower Symbol call signatures by @dyc3 in https://github.com/biomejs/biome/pull/11797
* refactor(codegen): deduplicate local types by @dyc3 in https://github.com/biomejs/biome/pull/11798
* fix(type_inference): skip non-generic references in substitutions by @siketyan in https://github.com/biomejs/biome/pull/11814
* docs: replace retired VS Marketplace badges by @siketyan in https://github.com/biomejs/biome/pull/11816
* perf(analyze): optimize useIndexOf callback traversal by @dyc3 in https://github.com/biomejs/biome/pull/11806
* perf(noBeforeInteractiveScriptOutsideDocument): avoid hitting the filesystem, before easier checks by @dyc3 in https://github.com/biomejs/biome/pull/11805
* fix(useNamingConvention): ignore namespaces inside declare global and external modules by @dfedoryshchev in https://github.com/biomejs/biome/pull/11827
* fix(tailwind): detect tailwind classes in class expressions by @dyc3 in https://github.com/biomejs/biome/pull/11802
* fix(useSimplifiedLogicExpression): don't simplify right-side boolean literals by @saberoueslati in https://github.com/biomejs/biome/pull/11761
* fix(useReactCompiler): remove React 19 version requirement by @dyc3 in https://github.com/biomejs/biome/pull/11835
* fix(svelte): preserve const tag assignment syntax by @dyc3 in https://github.com/biomejs/biome/pull/11837
* feat(md): suppressions support by @ematipico in https://github.com/biomejs/biome/pull/11840
* feat(linter): add noReactObjectTypeAsDefaultProp rule by @subaru-hello in https://github.com/biomejs/biome/pull/10634
* chore(skill): tests and codegen by @ematipico in https://github.com/biomejs/biome/pull/11848
* chore(tooling): publish crates by @ematipico in https://github.com/biomejs/biome/pull/11850
* release: crates v0.7.0 by @github-actions[bot] in https://github.com/biomejs/biome/pull/11853
* chore(renovate): stop updating tailwindcss in the preset generator by @johncarmack1984 in https://github.com/biomejs/biome/pull/11852
* ci: fail when the Tailwind preset can't be generated or is out of date by @johncarmack1984 in https://github.com/biomejs/biome/pull/11851
* feat(codegen): lower array type syntax by @dyc3 in https://github.com/biomejs/biome/pull/11799
* feat(codegen): lower method generic parameters by @dyc3 in https://github.com/biomejs/biome/pull/11843
* fix(noAstroSetHtmlDirective): report directive inside Astro template expressions by @m1handr in https://github.com/biomejs/biome/pull/11723
* chore(useSortedClasses): update the Tailwind v4 preset to tailwindcss 4.3.3 by @johncarmack1984 in https://github.com/biomejs/biome/pull/11856
* fix(rules_check): support HTML-like documentation snippets for JavaScript rules (#11755) by @m1handr in https://github.com/biomejs/biome/pull/11762
* fix(noTailwindArbitraryValue): use shared syntax query by @dyc3 in https://github.com/biomejs/biome/pull/11860
* feat: noSelfImport by @Netail in https://github.com/biomejs/biome/pull/11861
* feat(lint/js): add usePromiseRejectErrors by @dyc3 in https://github.com/biomejs/biome/pull/11838
* feat(lint): add noTailwindRawColors lint rule by @dyc3 in https://github.com/biomejs/biome/pull/11794
* feat(yaml/fmt): suppression comments by @ematipico in https://github.com/biomejs/biome/pull/11842
* fix(vcs): checks for parent ignore files by @ematipico in https://github.com/biomejs/biome/pull/11869
* fix(lsp): relative glob patterns by @ematipico in https://github.com/biomejs/biome/pull/11868
* chore(deps): update dependency @changesets/cli to v3.0.3 by @renovate[bot] in https://github.com/biomejs/biome/pull/11864
* fix(lint): recognize Vue slot bindings by @dyc3 in https://github.com/biomejs/biome/pull/11875
* chore(deps): update dependency tombi to v1.5.5 by @renovate[bot] in https://github.com/biomejs/biome/pull/11866
* chore(deps): update dependency @types/node to v24.13.5 by @renovate[bot] in https://github.com/biomejs/biome/pull/11865
* feat(type_info): lower the Math global class by @dyc3 in https://github.com/biomejs/biome/pull/11857
* feat(codegen): extend lowering to function types and overloaded call signatures by @dyc3 in https://github.com/biomejs/biome/pull/11844
* feat(codegen): lower generic construct signatures by @dyc3 in https://github.com/biomejs/biome/pull/11855
* feat(types): lower readonly types and infer const generics by @dyc3 in https://github.com/biomejs/biome/pull/11859
* feat(codegen): lower builtin constructors and Iterable by @dyc3 in https://github.com/biomejs/biome/pull/11870
* feat(codegen): resolve predefined types with generic arguments by @dyc3 in https://github.com/biomejs/biome/pull/11871
* fix(types): lower RegExp declarations and preserve nullable exec results by @dyc3 in https://github.com/biomejs/biome/pull/11877
* fix(codegen): lower Array.from declarations by @dyc3 in https://github.com/biomejs/biome/pull/11878
* fix(lint/noOctalEscape): preserve string value when fixing octal escapes with leading digit 4-7 by @mikehasa in https://github.com/biomejs/biome/pull/11882
* test(codegen): clean up useless tests by @dyc3 in https://github.com/biomejs/biome/pull/11885
* feat(codegen): lower keyof type operators by @dyc3 in https://github.com/biomejs/biome/pull/11886
* feat(codegen): lower indexed access types by @dyc3 in https://github.com/biomejs/biome/pull/11889
* fix(parse/js): don't misparse `<<` as type arguments when the closing `>` is missing by @siketyan in https://github.com/biomejs/biome/pull/11908
* ci: silent verification job by @ematipico in https://github.com/biomejs/biome/pull/11911
* feat(lint): add useLogicalProperties rule by @Th3S4mur41 in https://github.com/biomejs/biome/pull/10816
* fix(html/parser): lex a regex that starts with `>` as a regex by @posido in https://github.com/biomejs/biome/pull/11907
* fix(lint/useForOf): ignore loops updating index in body by @dyc3 in https://github.com/biomejs/biome/pull/11906
* feat(types): lower computed members and infer symbol-keyed access by @dyc3 in https://github.com/biomejs/biome/pull/11890
* feat(type-inference): lower Intl namespace declarations by @dyc3 in https://github.com/biomejs/biome/pull/11891
* feat(type-inference): fully lower Date constructor members by @dyc3 in https://github.com/biomejs/biome/pull/11892
* feat(codegen): lower global functions from source declarations by @dyc3 in https://github.com/biomejs/biome/pull/11894
* fix(cli): emit error if configuration has errors by @ematipico in https://github.com/biomejs/biome/pull/11910
* fix(lint/useAtIndex): preserve negative index expressions by @dyc3 in https://github.com/biomejs/biome/pull/11905
* fix(noUselessStringConcat): escape quotes in string concat fixes by @dyc3 in https://github.com/biomejs/biome/pull/11914
* feat(lint/js): add noMeaninglessVoidOperator by @dyc3 in https://github.com/biomejs/biome/pull/11732
* fix(analyze): first class citizen snippets by @ematipico in https://github.com/biomejs/biome/pull/11915
* fix(service): show paths in plugin loading errors by @hirehamir in https://github.com/biomejs/biome/pull/11921
* test(cli): print commands run by @ematipico in https://github.com/biomejs/biome/pull/11923
* ci: disallow pull request subjects ending with three periods by @dyc3 in https://github.com/biomejs/biome/pull/11926
* fix(biome_css_analyzer): support the frame-sizing CSS property by @Th3S4mur41 in https://github.com/biomejs/biome/pull/11929
* fix: preserve rules enabled by overlapping domains by @dyc3 in https://github.com/biomejs/biome/pull/11919
* fix(format/html): duplicate comments after svelte blocks by @dyc3 in https://github.com/biomejs/biome/pull/11930
* fix(html/fmt): indent comments before svelte block closing tags by @dyc3 in https://github.com/biomejs/biome/pull/11931
* fix(grit): omit trailing space when within has no until clause by @dyc3 in https://github.com/biomejs/biome/pull/11952
* chore: fix git attributes metadata for generated files by @dyc3 in https://github.com/biomejs/biome/pull/11954
* fix(noUnusedVariables): report unused recursive arrow functions by @dyc3 in https://github.com/biomejs/biome/pull/11959
* fix(noFocusedTests): ignore chained .fit() method calls by @erenbati in https://github.com/biomejs/biome/pull/11958
* fix(control_flow): recognize truthy literal conditions as infinite loops by @dyc3 in https://github.com/biomejs/biome/pull/11955
* test(module_graph): add complex type inference benchmarks by @dyc3 in https://github.com/biomejs/biome/pull/11845
* chore: update sponsors by @ematipico in https://github.com/biomejs/biome/pull/11973
* refactor(resolver): use salsa by @ematipico in https://github.com/biomejs/biome/pull/11965
* chore: fix CI by @dyc3 in https://github.com/biomejs/biome/pull/11976
* chore(deps): update dependency @types/node to v24.13.6 by @renovate[bot] in https://github.com/biomejs/biome/pull/11982
* chore(deps): update rust crate bpaf to 0.9.28 by @renovate[bot] in https://github.com/biomejs/biome/pull/11985
* chore(deps): update github-actions by @renovate[bot] in https://github.com/biomejs/biome/pull/11984
* chore(deps): update rust crate camino to 1.2.6 by @renovate[bot] in https://github.com/biomejs/biome/pull/11986
* fix(noUnknownTypeSelector): ignore view transition names in pseudo-elements by @AlbinoGeek in https://github.com/biomejs/biome/pull/11969
* chore(deps): update rust crate cfg-if to 1.0.5 by @renovate[bot] in https://github.com/biomejs/biome/pull/11987
* fix(useRegexLiterals): do not escape an already escaped slash by @AlbinoGeek in https://github.com/biomejs/biome/pull/11983
* fix(deps): update @biomejs packages by @renovate[bot] in https://github.com/biomejs/biome/pull/11989
* chore(deps): update pnpm to v12.6.0 by @renovate[bot] in https://github.com/biomejs/biome/pull/11990
* fix(scss): support unary expressions in query values by @denbezrukov in https://github.com/biomejs/biome/pull/11974
* chore(deps): update rust crate uuid to 1.26.1 by @renovate[bot] in https://github.com/biomejs/biome/pull/11993
* fix(cli): restrict Unix daemon socket permissions by @dyc3 in https://github.com/biomejs/biome/pull/11928
* fix(core): astro fmt embedding by @ematipico in https://github.com/biomejs/biome/pull/11975
* chore(deps): update rust crate smallvec to 1.16.2 by @renovate[bot] in https://github.com/biomejs/biome/pull/11992
* feat(lint/js/svelte): add noSvelteExportLet by @dyc3 in https://github.com/biomejs/biome/pull/11956
* feat(lint/js/svelte): add useSvelteKitRuneImports lint rule by @dyc3 in https://github.com/biomejs/biome/pull/11960
* chore: update e18e module replacements data to 3.4.0 by @github-actions[bot] in https://github.com/biomejs/biome/pull/11997
* fix(cli): don't crash when output is piped to a closed pipe by @dyc3 in https://github.com/biomejs/biome/pull/11978
* refactor(codegen): remove all hard coded references in type lowering by @dyc3 in https://github.com/biomejs/biome/pull/11918
* feat(lint/js): add useStrictBooleanExpressions by @dyc3 in https://github.com/biomejs/biome/pull/11750
* chore: fix broken CI by @dyc3 in https://github.com/biomejs/biome/pull/12002
* feat(scss): interpolation in container by @ematipico in https://github.com/biomejs/biome/pull/11999
* feat(scss): interpolation in layer by @ematipico in https://github.com/biomejs/biome/pull/12000
* feat(scss): interpolation in property names by @ematipico in https://github.com/biomejs/biome/pull/12003
* feat(scss): allow nested declarations by @ematipico in https://github.com/biomejs/biome/pull/12005
* feat(scss): interpolation in attr function by @ematipico in https://github.com/biomejs/biome/pull/12007
* test(type_inference): more complex benchmarks by @dyc3 in https://github.com/biomejs/biome/pull/12006
* fix: unapproved merge by @Netail in https://github.com/biomejs/biome/pull/11998
* fix(type_inference): preserve generic bindings during member lookup by @dyc3 in https://github.com/biomejs/biome/pull/11834
* perf(type inference): replace promise classification HashSet with Brent cycle detection by @codspeed[bot] in https://github.com/biomejs/biome/pull/12011
* perf(type_inference): index namespace members once per module by @dyc3 in https://github.com/biomejs/biome/pull/12008
* perf: read semantic binding ranges without resolving syntax nodes by @dyc3 in https://github.com/biomejs/biome/pull/12009
* feat(scss): parse if inside url function by @ematipico in https://github.com/biomejs/biome/pull/12012
* feat(lint): add noMisplacedListElements by @dyc3 in https://github.com/biomejs/biome/pull/11917
* perf(type_inference): memoize callable signature resolution by @dyc3 in https://github.com/biomejs/biome/pull/12017
* perf(semantic): replace scope interval tree with pre-order index by @codspeed[bot] in https://github.com/biomejs/biome/pull/12016
* chore: type inference changesets by @dyc3 in https://github.com/biomejs/biome/pull/12021
* chore: update codspeed logo in readme by @adriencaccia in https://github.com/biomejs/biome/pull/12019
* ci(bench): plugins js and grit by @ematipico in https://github.com/biomejs/biome/pull/12018
* perf: optimize HTML child whitespace scanning by @codspeed[bot] in https://github.com/biomejs/biome/pull/12023
* perf(type_inference): memoize generic substitution by @dyc3 in https://github.com/biomejs/biome/pull/12029
* fix(parse/html): compare complete opening and closing tag names by @dyc3 in https://github.com/biomejs/biome/pull/12022
* test(lint/html/vue): wrap Vue fixtures in <template> by @dyc3 in https://github.com/biomejs/biome/pull/12024
* fix(vue): slots are now parsed with a new root by @ematipico in https://github.com/biomejs/biome/pull/12030
* perf(yaml): cut allocations and per-character decoding in lexer by @codspeed[bot] in https://github.com/biomejs/biome/pull/12032
* feat: adds `noAstroConflictingSetDirectives` rule for .astro by @jp-knj in https://github.com/biomejs/biome/pull/11494
* fix(lint): only match test callees rooted in an identifier by @dyc3 in https://github.com/biomejs/biome/pull/12031
* fix(lint): skip noUselessReturn fix for unbraced bodies and keep comments by @ff1451 in https://github.com/biomejs/biome/pull/12037
* fix(inference): keep context and avoid overflow by @ematipico in https://github.com/biomejs/biome/pull/12041
* fix(format/html): keep space when joining text and an inline element on the next line by @dyc3 in https://github.com/biomejs/biome/pull/12044
* docs: fix invalid markup in noMisplacedListElements, add lint for the mistake by @dyc3 in https://github.com/biomejs/biome/pull/12045
* ci: release by @github-actions[bot] in https://github.com/biomejs/biome/pull/11815
## New Contributors
* @subaru-hello made their first contribution in https://github.com/biomejs/biome/pull/10634
* @mikehasa made their first contribution in https://github.com/biomejs/biome/pull/11882
* @posido made their first contribution in https://github.com/biomejs/biome/pull/11907
* @erenbati made their first contribution in https://github.com/biomejs/biome/pull/11958
* @AlbinoGeek made their first contribution in https://github.com/biomejs/biome/pull/11969
* @codspeed[bot] made their first contribution in https://github.com/biomejs/biome/pull/12011
* @adriencaccia made their first contribution in https://github.com/biomejs/biome/pull/12019
**Full Changelog**: https://github.com/biomejs/biome/compare/@biomejs/biome@2.5.14...@biomejs/biome@2.5.15Related Repositories
public-apis/public-apis★ 491,151
A collective list of free APIs
NousResearch/hermes-agent★ 255,993
The agent that grows with you
yt-dlp/yt-dlp★ 200,104
A feature-rich command-line audio/video downloader
microsoft/markitdown★ 191,504
Python tool for converting files and office documents to Markdown.
Significant-Gravitas/AutoGPT★ 187,703
AutoGPT is the vision of accessible AI for everyone, to use and to build on. Our mission is to provide the tools, so that you can focus on what matters.