Skip to content

build(deps): update devdependency @biomejs/biome to ~2.6.0 - autoclosed - #1160

Closed
renovate[bot] wants to merge 1 commit into
masterfrom
renovate/linters
Closed

renovate[bot] wants to merge 1 commit into
masterfrom
renovate/linters

Conversation

@renovate

@renovate renovate Bot commented Oct 27, 2026 •

Copy link
Copy Markdown
Contributor

Note

This PR body was truncated due to platform limits.

This PR contains the following updates:

Package Change Age Adoption Passing Confidence
@biomejs/biome (source) ~2.5.7 → ~2.6.0 age adoption passing confidence

Release Notes

biomejs/biome (@​biomejs/biome)

v2.6.3

Compare Source

Patch Changes
  • #​12275 807e616 Thanks @​dyc3! - Added the new nursery rule noArraySortForMinMax, which reports sorting an array only to read its smallest or largest value. Use Math.min() or Math.max() instead.

    const minimum = array.toSorted((a, b) => a - b)[0];
  • #​12432 cf61682 Thanks @​dyc3! - Added the nursery rule noBooleanSortComparator, which reports sort comparators that return a boolean instead of a number. For example, array.sort((a, b) => a > b) never puts the first item before the second, so the array isn't sorted correctly.

  • #​12304 b4654c5 Thanks @​dyc3! - Added the new nursery rule noEagerArrayMethodsInLoops, which reports .map() and .filter() calls in the header of for...of loops. These calls build a new array that is only used by the loop.

    for (const name of users.map((user) => user.name)) {
      console.log(name);
    }
  • #​12121 66c3791 Thanks @​dyc3! - Added the nursery rule noNewRequire, which disallows calling require with new, such as new require("app-header").

  • #​12316 34b520d Thanks @​dyc3! - Added the new nursery rule noObsoleteAttributes, which disallows obsolete attributes on HTML elements and suggests what to use instead.

    <table bgcolor="#ffffff" cellpadding="5"></table>
  • #​12258 cce2385 Thanks @​dyc3! - Added the nursery rule noPathConcat, which disallows building file paths and URLs by joining strings to __dirname, __filename, import.meta.dirname, import.meta.filename, or import.meta.url.

    const fullPath = __dirname + "/foo.js"; // reported
  • #​12287 e12ad78 Thanks @​dyc3! - Added the new nursery rule noPlaywrightNthMethods, which disallows selecting Playwright elements by position with first(), last(), and nth(). A test that relies on the position of an element can act on a different element when the page changes.

    await page.locator("button").first().click();
  • #​12343 62ad123 Thanks @​vibbix! - Added the nursery rule noSelfNestedLayer, which disallows nesting a cascade layer inside a layer with the same name. Layer names inside an @layer block are relative to it, so the inner layer below creates the sublayer components.components instead of adding to components.

    @layer components {
      @layer components {
        .button {
          color: red;
        }
      }
    }
  • #​12289 bbbd95d Thanks @​dyc3! - Added the nursery rule noShortTimeValues, which reports CSS animation and transition times that are shorter than the configured minimum number of milliseconds. The rule does nothing until minimum is set.

    For example, the following code is invalid when minimum is 100:

    a {
      transition-duration: 80ms;
    }
  • #​12431 f748ec0 Thanks @​dyc3! - Added the nursery rule noSvelteInternal, which disallows importing from svelte/internal and its submodules. These modules are private to Svelte and can change or disappear in any release.

    import { get_current_component } from "svelte/internal";
  • #​12270 8ae35c4 Thanks @​dyc3! - Added the nursery rule noTanstackQueryRestDestructuring, which disallows rest destructuring and object spread on TanStack Query results. Both read every property of the result, so the component updates on every change to the query.

    import { useQuery } from "@tanstack/react-query";
    
    const { data, ...rest } = useQuery({ queryKey: ["todos"], queryFn: fetchTodos });

    The rule belongs to the new tanstackQuery domain.

  • #​12308 372af2a Thanks @​dyc3! - Added the new nursery rule noUnreadableForOfExpression, which reports for...of and for await...of loops that go through the result of a complex expression instead of a variable, a property, or a short call.

    for (const item of getItems(createArgument(seed))) {} // reported
  • #​12422 0be8d10 Thanks @​dyc3! - Added the new nursery rule noUnsafeReturn, which disallows returning a value typed as any from a function.

    function parse(text: string) {
      return JSON.parse(text); // reported
    }
  • #​12311 8434c92 Thanks @​dyc3! - Added the nursery rule noUselessSplice, which reports splice() calls that have a simpler alternative. For example, array.splice(0, 1) can be written as array.shift().

  • #​12293 eaa4a2b Thanks @​dyc3! - Added the nursery rule noVueUnusedEmitDeclarations, which reports events that a Vue component declares but never emits.

    For example, the following component never emits close:

    <script setup>
    const emit = defineEmits(["change", "close"]);
    emit("change");
    </script>
  • #​12386 f01ebb0 Thanks @​dyc3! - Added the nursery rule noVueVTextVHtmlOnComponent, which disallows v-text and v-html on Vue components. These directives replace everything inside the component's root element instead of filling its slot.

    <template>
      <MyComponent v-html="html"></MyComponent>
    </template>
  • #​12385 7bd38b7 Thanks @​dyc3! - Added the new nursery rule noVueWatchAfterAwait, which disallows creating watchers after an await in a Vue component's setup() function. Vue doesn't stop these watchers when the component is removed. A watcher is allowed when the function it returns is stored, so that function can be called later to stop the watcher.

    <script>
    import { watch } from "vue";
    
    export default {
      async setup() {
        await fetchUser();
        watch(source, () => {});
      },
    };
    </script>
  • #​12286 50d2a4e Thanks @​dyc3! - Added the nursery rule noZeroLengthUnit, which disallows units on zero lengths in CSS. Biome can remove the unit.

    a {
      top: 0px;
    }
  • #​12300 ab2eb9e Thanks @​dyc3! - Added the nursery rule useBlockStatementOverIife, which reports functions that are called immediately when a block statement can replace them. Biome can replace these functions with a block statement.

    Invalid:

    (() => {
        const value = getValue();
        run(value);
    })();
  • #​12421 1c2cac0 Thanks @​dyc3! - Added the nursery rule useConsistentLightnessNotation, which enforces writing the lightness of lab(), lch(), oklab(), and oklch() colors as a percentage, or as a number with the notation option. For example, with the default options, oklch(0.85 0.17 88) is reported and can be fixed to oklch(85% 0.17 88).

  • #​12224 fef7ed4 Thanks @​dyc3! - Added the nursery rule useExpectToContain, which reports tests that compare the result of includes() to a boolean, and suggests using toContain() instead.

    expect(fruits.includes("apple")).toBe(true);
  • #​12299 0d5025d Thanks @​dyc3! - Added the new nursery rule useIteratorZip, which reports for loops that use an index only to read the same position from several arrays. Such loops can use Iterator.zip() instead.

    // reported
    for (let index = 0; index < Math.min(names.length, scores.length); index++) {
      save(names[index], scores[index]);
    }
  • #​12298 a234d2f Thanks @​dyc3! - Added the nursery rule useMathAbs, which reports manual absolute value calculations and range checks that can use Math.abs(). For example, value < 0 ? -value : value can be written as Math.abs(value), and value > limit || value < -limit can be written as Math.abs(value) > limit.

  • #​12499 bd024cc Thanks @​dyc3! - Added the nursery rule useMathTrunc, which requires Math.trunc() instead of bitwise operations or parseInt(String(x), 10) for removing the decimal part of a number. For example, const result = value | 0; and const result = ~~value; are now reported.

  • #​12314 9e875a4 Thanks @​dyc3! - Added the new nursery rule usePackageJsonValidCpu, which reports a cpu field in package.json that isn't an array of known processor types. The cpu field lists the processor types that the package supports.

    For example, the rule reports the following package.json file because x86 isn't a processor type that package managers recognize:

    {
      "name": "my-package",
      "cpu": ["x86"]
    }
  • #​12315 cb30544 Thanks @​dyc3! - Added the nursery rule usePackageJsonValidEngines, which reports an invalid engines field in package.json. The field must be an object, and each of its values must be a non-empty string.

    For example, the following engines field is reported because the version of node is a number:

    {
        "engines": {
            "node": 24
        }
    }
  • #​12400 407604d Thanks @​dyc3! - Added the nursery rule useVueComponentIs, which requires Vue <component> elements to bind the is attribute with :is or v-bind:is. Without it, Vue has no component to render.

    <template>
      <component :is="currentView" />
    </template>
  • #​12337 c371520 Thanks @​dyc3! - Added the nursery rule useVueToggleInsideTransition, which requires the element inside a Vue <Transition> to be shown and hidden with v-if or v-show. Without one of them, the element is always shown and the transition never plays.

    <template>
      <Transition>
        <div>Content</div>
      </Transition>
    </template>
  • #​12387 64472e9 Thanks @​dyc3! - Added the nursery rule useVueTypedRef, which reports ref() and shallowRef() calls in TypeScript that have no type argument and no initial value other than null or undefined. Without a type, TypeScript can't tell which values these refs are meant to hold.

    import { ref } from "vue";
    
    const count = ref();
  • #​12423 bf1a55a Thanks @​dyc3! - Added the nursery rule useVueVOnExact, which requires the .exact modifier on a v-on listener when another listener for the same event on the element needs more modifier keys, such as .ctrl. Without .exact, both listeners run when those keys are held down. The rule accepts the following code:

    <template>
      <button @click.exact="select" @click.ctrl="open"></button>
    </template>
  • #​12418 208730e Thanks @​latin-1! - Fixed #​12417: useSortedProperties could produce invalid CSS when sorting properties without a final semicolon. Comments attached to reordered properties are preserved.

  • #​12216 f2a3c71 Thanks @​dyc3! - Added the new nursery rule noDanglingUnderscore, which disallows variable names, function names, and property accesses that start or end with an underscore.

    const _count = 0; // reported
    user._id; // reported
  • #​12536 438997f Thanks @​vidigoat! - Fixed the formatter removing the parentheses around an instantiation expression before +, -, <, >, >=, >> and >>>. TypeScript reads make<T> + y as make < T > +y, and make<T> >> y doesn't parse.

    - x = make<T> + y;
    + x = (make<T>) + y;
    - x = make<T> >> y;
    + x = (make<T>) >> y;
  • #​12540 7d3e8a1 Thanks @​vidigoat! - Fixed the formatter removing the parentheses around an instantiation expression before a non-null assertion or type arguments of a class heritage, which produced code that doesn't parse.

    - const a = make<T>!;
    + const a = (make<T>)!;
    - class D extends B<T><T> {}
    + class D extends (B<T>)<T> {}
  • #​12496 09d89b9 Thanks @​vidigoat! - Fixed the formatter removing the parentheses around binary, logical, type-cast and instantiation operands of an instantiation expression. The type arguments then applied to the last operand only, and a nested instantiation expression didn't parse.

    - const x = a + b<T>;
    + const x = (a + b)<T>;
    - const y = a as B<T>;
    + const y = (a as B)<T>;
    - const z = f<A><B>;
    + const z = (f<A>)<B>;
  • #​12526 dbcdab1 Thanks @​dyc3! - Fixed #​12524: the Markdown formatter no longer removes the blank line between a paragraph and the list that follows it. Removing it could change the document, because an ordered list that doesn't start at 1 can't interrupt a paragraph and became part of the paragraph text.

    Steps:
    
    3. three
    4. four
  • #​12509 470018b Thanks @​dyc3! - Fixed #​12507: the Markdown formatter no longer drops the > markers after an empty quote line when proseWrap is "always" or "never". Previously, the text after the empty line was moved out of the blockquote.

      > a
      >
    - b
    + > b
  • #​12598 5699601 Thanks @​vidigoat! - Fixed the formatter removing the parentheses around the callee of a new expression when it contains a dynamic import() call, which produced code that doesn't parse.

    - new import("foo").bar();
    + new (import("foo").bar)();
  • #​12508 87d9e6b Thanks @​dyc3! - Fixed #​12502: noInvalidGridAreas now counts the cells in each row of grid-template-areas instead of comparing the length of the row text. Rows such as "a" "bb" are no longer reported, and rows such as "abc" "d e" are now reported.

  • #​12530 7f467b2 Thanks @​dyc3! - Fixed #​12529: noUselessElse no longer reports an else clause when the if block ends with a switch statement that has no default clause. If no case matches, such a switch doesn't exit, so the else clause is needed.

  • #​12511 d4ea663 Thanks @​dyc3! - Fixed #​12505: useDomNodeTextContent no longer reports innerText on values whose type annotation shows they aren't DOM nodes. The following code is now valid:

    const Link = ({ innerText }: { innerText: string }) => <a>{innerText}</a>;
  • #​12588 e262362 Thanks @​ematipico! - Fixed noDescendingSpecificity to compare resolved nested selector targets. Biome no longer reports nested selectors that resolve to different targets, detects equivalent explicit and nested targets, and emits one diagnostic when a parent selector list expands the same nested selector multiple times.

    For example, the following selectors are no longer reported because their final targets are .column and code, respectively:

    .card {
      .column {
        :root[data-theme="dark"] & {}
      }
    
      code {
        :root[data-theme="dark"] & {}
      }
    }
  • #​12534 e59a324 Thanks @​Netail! - Improved the diagnostics of noIdenticalTestTitle. Biome now reports one diagnostic per repeated title, pointing at the first occurrence and at every later occurrence, instead of one diagnostic per duplicate.

  • #​12528 a3132dc Thanks @​ff1451! - Fixed #​12503: noUnknownProperty now checks SCSS nested properties by the name Sass emits for them. For example, radius in border: { radius: 4px; } is checked as border-radius and is no longer reported, while color in font: { color: red; } is checked as font-color and is now reported.

  • #​12113 ec4eb2d Thanks @​dyc3! - Added the nursery rule useConsistentUnicodeBom, which disallows a leading Unicode byte order mark by default and can require one with bom: "always". The rule supports JavaScript, TypeScript, JSON, CSS, GraphQL, HTML, and Markdown, provides a fix, and preserves the unicode-bom option during ESLint migration.

    The following example is invalid by default because it starts with an invisible U+FEFF character:

    const value = 1;
  • #​12248 afbc81e Thanks @​dyc3! - Added the nursery rule useReactNativeValidPlatformColors, which requires PlatformColor() and DynamicColorIOS() calls to use values written directly in the call, so React Native can optimize them.

    import { PlatformColor } from "react-native";
    
    const labelColor = "labelColor";
    const color = PlatformColor(labelColor);
  • #​12599 b62494a Thanks @​dyc3! - Fixed #​12532: checking the project root no longer applies files.includes exclusions to directories above the project.

  • #​12578 6162922 Thanks @​ematipico! - Fixed GraphQL parsing and formatting for executable descriptions and legacy fragment variables. Biome now formats inputs such as "Description" query { field } without panicking and removes insignificant commas consistently.

  • #​12593 35c69ad Thanks @​dyc3! - Fixed #​12555: the default reporter now prints the command summary, the --max-diagnostics warning, and the skipped-fixes notice to stderr instead of stdout. Diagnostics already go to stderr, so the summary can no longer get mixed into the middle of a diagnostic when a tool reads the two streams separately.

  • #​12415 9520907 Thanks @​latin-1! - Fixed #​12412: useSortedProperties now sorts properties inside @keyframes animations in CSS and SCSS.

v2.6.2

Compare Source

Minor Changes
  • #​11479 5c60ba8 Thanks @​nhedger! - Added a --git flag to biome init. The flag enables Git VCS integration and sets vcs.useIgnoreFile to true in the generated configuration, even when the command runs outside a Git repository.

  • #​11742 3a1356d Thanks @​Netail! - Added the biome migrate stylelint command. It imports a Stylelint configuration and its ignore settings into your Biome configuration, mapping Stylelint rules to their Biome equivalents. Pass --write to apply the changes, and --include-inspired or --include-nursery to migrate additional rules.

  • #​12318 774b5b5 Thanks @​Netail! - Added the new assist action useGraphqlSortedDefinitions, which sorts the named definitions of a GraphQL document, such as types, type extensions, directives, fragments, and operations.

    Invalid:

    type User {
      id: ID!
    }
    
    enum Role {
      ADMIN
      USER
    }
    
    directive @auth on FIELD_DEFINITION
  • #​6886 3479d15 Thanks @​christymcgrory! - biome rage now shows the resolved files.includes and files.ignoreUnknown configuration.

  • #​11102 0874b7f Thanks @​gameroman! - Added support for useTailwindSortedClasses rule in HTML-ish files.

  • #​10711 40de5a0 Thanks @​soconnor-seeq! - Adds a new resolutionKind option for object-syntax plugin entries.

    This allows shared Biome configs in monorepos to load local Grit plugins from the package that declares them instead of resolving plugin paths from the consuming project.

    {
      "plugins": [
        { "path": "./grit/no-debugger.grit", "resolutionKind": "config" },
        { "path": "local-plugin.grit", "resolutionKind": "project" },
        { "path": "local-plugin.grit" }
      ]
    }

    Use resolutionKind: "config" to resolve the plugin from the configuration file that declares it. Use resolutionKind: "project" to resolve the plugin from the consuming project. When omitted, resolutionKind defaults to project. This only affects plugin resolution; includes still apply to end-user project files as usual.

  • #​11432 4befd08 Thanks @​ematipico! - Added biome inspect config to show resolved configuration values and their origins as human-readable diagnostics, including matching overrides.

    Configuration files can also extend other configurations up to ten levels deep. Repeated references to the same resolved file are ignored with an information diagnostic, while resolving multiple versions of one extended package produces an error.

  • #​11477 ab05554 Thanks @​nhedger! - Added automatic Git VCS integration when running biome init inside a Git repository, including from nested directories and Git worktrees. The generated configuration sets vcs.enabled and vcs.useIgnoreFile to true, with vcs.clientKind set to "git".

  • #​11451 1ac4b09 Thanks @​ematipico! - #### YAML is now supported

    Added support for formatting YAML files, both .yaml and .yml extensions

  • #​11432 4befd08 Thanks @​ematipico! - Configuration files can now recursively extend local files and npm package configurations up to ten levels. Every repeated reference participates in the merge, while resolving multiple versions of one extended package produces an error.

  • #​11713 ac6a640 Thanks @​dyc3! - Added support for Grit range() patterns, addressing #​8454. Plugins can filter syntax nodes by optional start_line, start_column, end_line, and end_column bounds.

    For example, this pattern matches function calls contained entirely on line 2.

    range(start_line=2, end_line=2) as $call where {
        $call <: call_expression()
    }
    
  • #​11244 0628b53 Thanks @​ematipico! - Added the new CLI option --profile-type-inference to the commands lint and check.

    The profiler is designed to track the execution time of internal queries and operations, group them by file, and sort them from the most expensive to the least expensive.

    biome lint --profile-type-inference
    profiler ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
    
      i Type inference profile (Biome <version>)
    
      src/index.ts
    
        Requests (top 5 of 12 groups; 28 source records; 46 executions)
          1. Promise classification <- nursery/noFloatingPromises
          ...
    
        Queries (top 8 of 25 groups; 61 source records; 94 executions)
          1. Promises / infer_expression_is_promise
          ...
    
        Whole-module inference (top 1 of 1 group; 1 source record; 1 execution)
          1. Import depth limit
          ...
    
      68 files omitted.
    
      ℹ To show all the information, use the --verbose option. The output might be very verbose, so it's advised to analyze a single file.
    
      $ biome lint --profile-type-inference --verbose ./path/to/file.ts
    

    Use --verbose to include detailed timings, attribution, breadth, and implementation references for the top source records in each file.

  • #​12108 4fcb880 Thanks @​ematipico! - Promoted 59 nursery rules to stable groups.

Correctness

Promoted the following rules to the correctness group with error severity. All of them are recommended:

Suspicious

Promoted the following rules to the suspicious group:

Security

Promoted useIframeSandbox to the security group with error severity.

Performance

Promoted the recommended rule useDomNodeTextContent to the performance group with warning severity.

Complexity

Promoted the following rules to the complexity group:

Style

Promoted the following rules to the style group with information severity:

  • useVueConsistentDefinePropsDeclaration

  • useVueNextTickPromise (recommended)

  • noReactNativeLiteralColors

  • useConsistentTestIt

  • useTestHooksInOrder

  • useTestHooksOnTop

  • noPlaywrightEval

  • noPlaywrightElementHandle

  • noPlaywrightWaitForSelector

  • useReduceTypeParameter

  • useNamedCaptureGroup

  • useUnicodeRegex

  • useImportsFirst

  • useVarsOnTop

  • useThisInClassMethods

  • noInlineStyles

  • useDomQuerySelector

  • noTopLevelLiterals

  • #​12206 0f984fb Thanks @​dyc3! - Added the ignoreUsingDeclarations option to noUnusedVariables. When enabled, the rule no longer reports unused variables declared with using or await using, because these declarations clean up their value automatically even when the code never reads it.

    {
      "linter": {
        "rules": {
          "correctness": {
            "noUnusedVariables": {
              "options": { "ignoreUsingDeclarations": true }
            }
          }
        }
      }
    }
  • #​12424 6a41490 Thanks @​siketyan! - Removed the javascript.parser.gritMetavariables option. It was intended for internal use only and had no effect on how Biome parses JavaScript and TypeScript files. Biome now reports it as an unknown key and exits with a configuration error, so remove it from your configuration file.

  • #​12055 54870c0 Thanks @​ff1451! - Added the new assist action useGraphqlSortedVariables, which sorts the variable definitions of GraphQL operations.

    Invalid:

    query GetUser($userId: ID!, $includePosts: Boolean = false, $after: String) {
      user(id: $userId) {
        name
      }
    }
  • #​12149 83df808 Thanks @​dyc3! - Added the tailwind.stylesheet option, which points Biome at the CSS file that holds your Tailwind CSS configuration. useTailwindSortedClasses reads the @theme, @utility, and @custom-variant rules in that file and in the local files it imports, so your own theme values, utilities, and variants sort correctly.

    // biome.json
    {
      "tailwind": { "stylesheet": "./src/app.css" }
    }
    /* src/app.css */
    @import "tailwindcss";
    
    @theme {
      --color-brand: #&#8203;3b82f6;
    }
    
    @utility content-auto {
      content-visibility: auto;
    }
    
    @custom-variant theme-midnight (&:where([data-theme="midnight"] *));
  • #​12206 0f984fb Thanks @​dyc3! - Added migration of the ignoreRestSiblings and ignoreUsingDeclarations options of no-unused-vars, @typescript-eslint/no-unused-vars, and unused-imports/no-unused-vars to noUnusedVariables in biome migrate eslint. Options that the ESLint configuration omits are set to ESLint's defaults, so the migrated rule reports the same variables. For example, "no-unused-vars": "error" now migrates ignoreRestSiblings as false.

  • #​11709 32d12cb Thanks @​ematipico! - Added the new command biome inspect file, which returns developer information for the given file.

    biome inspect file path/to/file.ts

    By default, the command returns the CST of the file. The command accepts the following arguments:

    • --ast, which returns the AST of a file.
    • --ir, which returns the formatting IR of a file.
    • --semantic, which returns the semantic model information of a file, if available.
  • #​12221 cb571af Thanks @​dyc3! - The rule noEmptySource now supports Markdown files. It reports files that contain only blank lines and HTML comments. For example, the following file is now reported:

    <!-- TODO -->
  • #​12214 8955b56 Thanks @​dyc3! - The rule noEmptySource now supports YAML files. It reports files with no documents and each document that has no content. For example, the second document in the following code is now reported:

    name: foo
    ---
  • #​12033 8669e53 Thanks @​dyc3! - Added the ignoreElements option to noRedundantRoles. Elements listed in this option are not checked by the rule.

    {
      "linter": {
        "rules": {
          "a11y": {
            "noRedundantRoles": {
              "options": {
                "ignoreElements": ["button"]
              }
            }
          }
        }
      }
    }
  • #​12084 04e3750 Thanks @​dyc3! - The rule noRestrictedElements now supports HTML, Vue, Svelte, and Astro files. For example, with { "elements": { "marquee": "Use CSS animations instead." } }, the following code is now reported:

    <marquee>Breaking news</marquee>
  • #​11408 5a870f2 Thanks @​ematipico! - Added support for distributing named Grit rules, rule presets, and configurations through packages that have a manifest file.

    The field plugins is used to export named Grit plugins, and configs is used to export named configurations.
    Package entries must select a named export: package/rule, package/presets/preset, or package/configs/config. Bare package entries aren't supported.
    Rules consumed from another package are exposed under the consuming package's name, while package authors continue to reference them by their source package inside the manifest.
    Configurations consumed from another package are also exposed under the consuming package's name.

    // biome-manifest.json
    {
      "$schema": "./node_modules/@biomejs/biome/manifest_schema.json",
      "version": 1,
      "plugins": {
        "rules": [
          "@org/shared-rules/noDeprecatedApi",
          "@org/strict-rules/presets/recommended",
          { "useCompanyLogger": "./rules/useCompanyLogger.grit" }
        ],
        "presets": {
          "recommended": [
            "useCompanyLogger",
            "@org/shared-rules/noDeprecatedApi"
          ]
        }
      },
      "configs": [
        "@org/shared-configs/configs/recommended",
        { "base": "./configs/base.json" }
      ]
    }

    The package must publish the manifest and every referenced file, for example, through the files field in package.json.
    Plugin authors can expose their manifest through the biome condition with ./biome-manifest.json as its value.

    // package.json
    {
      "name": "@org/biome-plugin",
      "exports": {
        "biome": "./biome-manifest.json",
        "default": "./index.js"
      },
      "files": ["biome-manifest.json", "rules", "configs"]
    }

    And then, you can load the rules in your biome.json:

    // biome.json
    {
      "plugins": [
        "@org/biome-plugin/useCompanyLogger",
        "@org/biome-plugin/presets/recommended"
      ]
    }

    For more information on how to create a plugin to distribute via npm, check the relative guide.

  • #​12264 90f2eaf Thanks @​dyc3! - Fixed #​11082: glob patterns in the includes option of a plugin are now matched against file paths relative to the directory of the configuration file, the same as files.includes and overrides[].includes.

    Previously, the patterns were matched against the absolute file path, so a pattern such as packages/**/src/** matched no files and the plugin never ran.

    {
      "plugins": [
        { "path": "./my-plugin.grit", "includes": ["packages/**/src/**"] }
      ]
    }

    Patterns that start with **/ keep working. Patterns that contain the absolute path of the project no longer match, and must be rewritten as relative patterns.

  • #​11133 1df00de Thanks @​dlecan! - Added Android (Termux) support to the npm distribution (#​1340). npm install @biomejs/biome now works on Termux through the new @biomejs/cli-android-arm64 and @biomejs/cli-android-x64 packages, which reuse the static musl binaries.

  • #​12132 c5fadc4 Thanks @​ematipico! - Added SCSS support throughout the toolchain. Biome can now format and lint .scss files, and recognizes .module.scss files as CSS Modules.

  • #​10837 754432c Thanks @​JamBalaya56562! - Added support for Google Apps Script (.gs) files.

    They are parsed as JavaScript scripts, so ES module import/export statements are reported as errors (Apps Script has no module system). Common Apps Script service globals (e.g. SpreadsheetApp, DriveApp, Logger) are recognized by noUndeclaredVariables and noGlobalAssign, and the list can be extended through the javascript.globals option.

  • #​11126 fa63050 Thanks @​Punisheroot! - Biome now recognizes files with the .htm extension as HTML.

  • #​12291 6c6619e Thanks @​dyc3! - Changed the dependency that enables the tailwind domain automatically. The domain is now enabled when package.json declares tailwindcss v4 or later, instead of v3 or later, because we are currently targeting Tailwind v4 sup

[!IMPORTANT]
✂ PR body was truncated to here.


Configuration

📅 Schedule: (in timezone Europe/London)

  • Branch creation
    • At any time (no schedule defined)
  • Automerge
    • At any time (no schedule defined)

🚦 Automerge: Enabled.

♻ Rebasing: Whenever PR is behind base branch, or you tick the rebase/retry checkbox.

🔕 Ignore: Close this PR and you won't be reminded about this update again.


  • If you want to rebase/retry this PR, check this box

This PR was generated by Mend Renovate. View the repository job log.

@renovate
renovate Bot requested a review from wopian October 27, 2026 03:40
@github-actions

github-actions Bot commented Oct 27, 2026 •

Copy link
Copy Markdown
Contributor

JSON:API benchmark changes

Every throughput change is labeled faster/slower; labels do not imply statistical significance. Bold rows mark PR winners per runtime, suite, mode, and scenario, including ties.

Multipliers compare codecs with kitsu-core and clients with kitsu-native (1x), separately for base and PR. A 3x slower library runs at one third the reference rate. Missing reference scores show —.

All rates, winners, multipliers, and changes compare completed operations/s. One operation is one decode, one encode, or one complete decode-encode round trip, including every transport request. @bjornharrtell/json-api uses 2 requests per encode and 3 per decode-encode because HTTP 204 PATCH triggers an automatic GET. Extra requests do not increase the reported rate.

CI run and complete results

bun 1.4.4

Base 53ed72919bb48ab58932b9f0346d089f90da9a7b; proposed merge d4299727ba59bca18222695f1812ea47d925f745.

Suite / mode / scenario Library Base operations/s PR operations/s Change vs Kitsu base / PR
codec/decode/small-no-relationships kitsu-core 1,425,194 1,445,433 1.42% faster 1x / 1x
codec/encode/small-no-relationships kitsu-core 2,151,123 2,534,435 17.82% faster 1x / 1x
codec/decode-encode/small-no-relationships kitsu-core 738,032 751,358 1.81% faster 1x / 1x
codec/decode/small-links-only kitsu-core 1,055,147 1,035,299 1.88% slower 1x / 1x
codec/encode/small-links-only kitsu-core 2,119,624 2,368,191 11.73% faster 1x / 1x
codec/decode-encode/small-links-only kitsu-core 658,283 652,108 0.94% slower 1x / 1x
codec/decode/small-relationships kitsu-core 439,180 455,197 3.65% faster 1x / 1x
codec/encode/small-relationships kitsu-core 1,243,105 1,516,428 21.99% faster 1x / 1x
codec/decode-encode/small-relationships kitsu-core 242,777 272,814 12.37% faster 1x / 1x
codec/decode/nested-relationships kitsu-core 600,491 586,445 2.34% slower 1x / 1x
codec/encode/nested-relationships kitsu-core 2,880,599 2,936,058 1.93% faster 1x / 1x
codec/decode-encode/nested-relationships kitsu-core 342,085 357,171 4.41% faster 1x / 1x
codec/decode/collection kitsu-core 100,434 98,982 1.45% slower 1x / 1x
codec/encode/collection kitsu-core 161,740 175,235 8.34% faster 1x / 1x
codec/decode-encode/collection kitsu-core 54,065 55,329 2.34% faster 1x / 1x
codec/decode/collection-includes kitsu-core 70,291 69,409 1.26% slower 1x / 1x
codec/encode/collection-includes kitsu-core 86,945 90,491 4.08% faster 1x / 1x
codec/decode-encode/collection-includes kitsu-core 37,303 37,682 1.01% faster 1x / 1x
codec/decode/patch-single kitsu-core 2,475,793 2,292,871 7.39% slower 1x / 1x
codec/encode/patch-single kitsu-core 5,599,586 5,199,213 7.15% slower 1x / 1x
codec/decode-encode/patch-single kitsu-core 1,330,349 1,476,787 11.01% faster 1x / 1x
codec/decode/empty-relationships kitsu-core 1,257,047 1,312,369 4.40% faster 1x / 1x
codec/encode/empty-relationships kitsu-core 1,787,117 1,840,419 2.98% faster 1x / 1x
codec/decode-encode/empty-relationships kitsu-core 590,099 606,943 2.85% faster 1x / 1x
codec/decode/few-includes kitsu-core 1,234 1,196 3.08% slower 1x / 1x
codec/encode/few-includes kitsu-core 1,441 1,435 0.45% slower 1x / 1x
codec/decode-encode/few-includes kitsu-core 473 456 3.55% slower 1x / 1x
codec/decode/many-includes kitsu-core 537 562 4.64% faster 1x / 1x
codec/encode/many-includes kitsu-core 1,359 1,389 2.22% faster 1x / 1x
codec/decode-encode/many-includes kitsu-core 374 366 2.08% slower 1x / 1x
codec/decode/complex-relationships kitsu-core 71.24 79.54 11.65% faster 1x / 1x
codec/encode/complex-relationships kitsu-core 664 673 1.41% faster 1x / 1x
codec/decode-encode/complex-relationships kitsu-core 62 58.17 6.18% slower 1x / 1x
codec/decode/wide-relationship kitsu-core 567 583 2.93% faster 1x / 1x
codec/encode/wide-relationship kitsu-core 8,284 7,802 5.82% slower 1x / 1x
codec/decode-encode/wide-relationship kitsu-core 509 513 0.79% faster 1x / 1x
codec/decode/self-cycle kitsu-core 572,119 556,498 2.73% slower 1x / 1x
codec/encode/self-cycle kitsu-core 2,985,526 3,242,429 8.60% faster 1x / 1x
codec/decode-encode/self-cycle kitsu-core 416,927 407,361 2.29% slower 1x / 1x
codec/decode/mutual-cycle kitsu-core 466,899 456,818 2.16% slower 1x / 1x
codec/encode/mutual-cycle kitsu-core 3,054,537 3,045,569 0.29% slower 1x / 1x
codec/decode-encode/mutual-cycle kitsu-core 326,975 325,700 0.39% slower 1x / 1x
client/decode/small-no-relationships kitsu-native 297,781 306,787 3.02% faster 1x / 1x
client/encode/small-no-relationships kitsu-native 394,202 401,349 1.81% faster 1x / 1x
client/decode-encode/small-no-relationships kitsu-native 148,416 150,769 1.59% faster 1x / 1x
client/decode/small-links-only kitsu-native 254,431 243,230 4.40% slower 1x / 1x
client/encode/small-links-only kitsu-native 371,273 374,996 1.00% faster 1x / 1x
client/decode-encode/small-links-only kitsu-native 139,207 142,843 2.61% faster 1x / 1x
client/decode/small-relationships kitsu-native 164,754 165,048 0.18% faster 1x / 1x
client/encode/small-relationships kitsu-native 273,190 275,690 0.91% faster 1x / 1x
client/decode-encode/small-relationships kitsu-native 99,877 98,999 0.88% slower 1x / 1x
client/decode/nested-relationships kitsu-native 185,016 183,408 0.87% slower 1x / 1x
client/encode/nested-relationships kitsu-native 355,749 365,850 2.84% faster 1x / 1x
client/decode-encode/nested-relationships kitsu-native 117,993 118,156 0.14% faster 1x / 1x
client/decode/collection kitsu-native 25,602 25,321 1.10% slower 1x / 1x
client/encode/collection kitsu-native 57,374 59,999 4.58% faster 1x / 1x
client/decode-encode/collection kitsu-native 16,122 16,549 2.65% faster 1x / 1x
client/decode/collection-includes kitsu-native 26,752 26,988 0.89% faster 1x / 1x
client/encode/collection-includes kitsu-native 28,690 28,843 0.53% faster 1x / 1x
client/decode-encode/collection-includes kitsu-native 12,981 12,890 0.70% slower 1x / 1x
client/decode/patch-single kitsu-native 385,941 396,289 2.68% faster 1x / 1x
client/encode/patch-single kitsu-native 534,141 567,063 6.16% faster 1x / 1x
client/decode-encode/patch-single kitsu-native 187,876 198,229 5.51% faster 1x / 1x
client/decode/empty-relationships kitsu-native 295,974 284,639 3.83% slower 1x / 1x
client/encode/empty-relationships kitsu-native 381,562 393,992 3.26% faster 1x / 1x
client/decode-encode/empty-relationships kitsu-native 165,325 171,104 3.50% faster 1x / 1x
client/decode/few-includes kitsu-native 677 704 3.97% faster 1x / 1x
client/encode/few-includes kitsu-native 746 738 1.00% slower 1x / 1x
client/decode-encode/few-includes kitsu-native 306 298 2.67% slower 1x / 1x
client/decode/many-includes kitsu-native 294 273 6.91% slower 1x / 1x
client/encode/many-includes kitsu-native 545 504 7.49% slower 1x / 1x
client/decode-encode/many-includes kitsu-native 154 142 7.44% slower 1x / 1x
client/decode/complex-relationships kitsu-native 39.99 39.55 1.12% slower 1x / 1x
client/encode/complex-relationships kitsu-native 155 154 0.56% slower 1x / 1x
client/decode-encode/complex-relationships kitsu-native 32.04 31.97 0.20% slower 1x / 1x
client/decode/wide-relationship kitsu-native 298 298 0.15% slower 1x / 1x
client/encode/wide-relationship kitsu-native 1,154 1,158 0.34% faster 1x / 1x
client/decode-encode/wide-relationship kitsu-native 245 239 2.58% slower 1x / 1x
client/decode/self-cycle kitsu-native 191,438 180,210 5.87% slower 1x / 1x
client/encode/self-cycle kitsu-native 437,221 417,513 4.51% slower 1x / 1x
client/decode-encode/self-cycle kitsu-native 147,221 148,396 0.80% faster 1x / 1x
client/decode/mutual-cycle kitsu-native 182,163 184,061 1.04% faster 1x / 1x
client/encode/mutual-cycle kitsu-native 375,211 371,226 1.06% slower 1x / 1x
client/decode-encode/mutual-cycle kitsu-native 116,693 121,714 4.30% faster 1x / 1x
client/decode/small-no-relationships kitsu 75,964 76,022 0.08% faster 3.92x slower / 4.04x slower
client/encode/small-no-relationships kitsu 70,980 72,582 2.26% faster 5.55x slower / 5.53x slower
client/decode-encode/small-no-relationships kitsu 37,565 36,072 3.97% slower 3.95x slower / 4.18x slower
client/decode/small-links-only kitsu 86,839 92,689 6.74% faster 2.93x slower / 2.62x slower
client/encode/small-links-only kitsu 79,120 84,440 6.72% faster 4.69x slower / 4.44x slower
client/decode-encode/small-links-only kitsu 40,133 39,577 1.39% slower 3.47x slower / 3.61x slower
client/decode/small-relationships kitsu 65,482 69,908 6.76% faster 2.52x slower / 2.36x slower
client/encode/small-relationships kitsu 64,602 65,879 1.98% faster 4.23x slower / 4.18x slower
client/decode-encode/small-relationships kitsu 32,583 33,197 1.89% faster 3.07x slower / 2.98x slower
client/decode/nested-relationships kitsu 65,257 70,621 8.22% faster 2.84x slower / 2.6x slower
client/encode/nested-relationships kitsu 60,737 63,059 3.82% faster 5.86x slower / 5.8x slower
client/decode-encode/nested-relationships kitsu 30,610 34,304 12.07% faster 3.85x slower / 3.44x slower
client/decode/collection kitsu 23,187 22,718 2.02% slower 1.1x slower / 1.11x slower
client/encode/collection kitsu 32,288 31,590 2.16% slower 1.78x slower / 1.9x slower
client/decode-encode/collection kitsu 12,653 12,844 1.51% faster 1.27x slower / 1.29x slower
client/decode/collection-includes kitsu 23,871 24,505 2.66% faster 1.12x slower / 1.1x slower
client/encode/collection-includes kitsu 19,123 19,963 4.39% faster 1.5x slower / 1.44x slower
client/decode-encode/collection-includes kitsu 10,836 10,556 2.59% slower 1.2x slower / 1.22x slower
client/decode/patch-single kitsu 102,509 101,713 0.78% slower 3.76x slower / 3.9x slower
client/encode/patch-single kitsu 83,344 90,471 8.55% faster 6.41x slower / 6.27x slower
client/decode-encode/patch-single kitsu 45,370 48,346 6.56% faster 4.14x slower / 4.1x slower
client/decode/empty-relationships kitsu 94,460 95,055 0.63% faster 3.13x slower / 2.99x slower
client/encode/empty-relationships kitsu 77,700 81,208 4.51% faster 4.91x slower / 4.85x slower
client/decode-encode/empty-relationships kitsu 39,482 41,384 4.82% faster 4.19x slower / 4.13x slower
client/decode/few-includes kitsu 736 745 1.29% faster 1.09x faster / 1.06x faster
client/encode/few-includes kitsu 696 682 2.01% slower 1.07x slower / 1.08x slower
client/decode-encode/few-includes kitsu 301 284 5.74% slower 1.02x slower / 1.05x slower
client/decode/many-includes kitsu 291 286 1.73% slower 1.01x slower / 1.04x faster
client/encode/many-includes kitsu 465 490 5.21% faster 1.17x slower / 1.03x slower
client/decode-encode/many-includes kitsu 171 164 4.40% slower 1.11x faster / 1.15x faster
client/decode/complex-relationships kitsu 40.73 41.31 1.42% faster 1.02x faster / 1.04x faster
client/encode/complex-relationships kitsu 121 127 4.93% faster 1.28x slower / 1.21x slower
client/decode-encode/complex-relationships kitsu 25.64 26.55 3.52% faster 1.25x slower / 1.2x slower
client/decode/wide-relationship kitsu 258 285 10.65% faster 1.16x slower / 1.04x slower
client/encode/wide-relationship kitsu 842 904 7.31% faster 1.37x slower / 1.28x slower
client/decode-encode/wide-relationship kitsu 225 235 4.42% faster 1.09x slower / 1.02x slower
client/decode/self-cycle kitsu 84,362 84,943 0.69% faster 2.27x slower / 2.12x slower
client/encode/self-cycle kitsu 83,555 85,990 2.91% faster 5.23x slower / 4.86x slower
client/decode-encode/self-cycle kitsu 40,189 38,804 3.45% slower 3.66x slower / 3.82x slower
client/decode/mutual-cycle kitsu 75,893 74,545 1.78% slower 2.4x slower / 2.47x slower
client/encode/mutual-cycle kitsu 80,207 78,867 1.67% slower 4.68x slower / 4.71x slower
client/decode-encode/mutual-cycle kitsu 37,495 38,497 2.67% faster 3.11x slower / 3.16x slower

node v26.12.1

Base 53ed72919bb48ab58932b9f0346d089f90da9a7b; proposed merge d4299727ba59bca18222695f1812ea47d925f745.

Suite / mode / scenario Library Base operations/s PR operations/s Change vs Kitsu base / PR
codec/decode/small-no-relationships kitsu-core 1,665,489 1,633,586 1.92% slower 1x / 1x
codec/encode/small-no-relationships kitsu-core 1,883,323 1,890,656 0.39% faster 1x / 1x
codec/decode-encode/small-no-relationships kitsu-core 822,422 840,344 2.18% faster 1x / 1x
codec/decode/small-links-only kitsu-core 1,295,912 1,292,201 0.29% slower 1x / 1x
codec/encode/small-links-only kitsu-core 1,958,241 1,939,826 0.94% slower 1x / 1x
codec/decode-encode/small-links-only kitsu-core 714,782 704,173 1.48% slower 1x / 1x
codec/decode/small-relationships kitsu-core 352,723 366,448 3.89% faster 1x / 1x
codec/encode/small-relationships kitsu-core 1,047,664 980,075 6.45% slower 1x / 1x
codec/decode-encode/small-relationships kitsu-core 281,985 280,483 0.53% slower 1x / 1x
codec/decode/nested-relationships kitsu-core 440,167 447,422 1.65% faster 1x / 1x
codec/encode/nested-relationships kitsu-core 1,739,110 1,707,422 1.82% slower 1x / 1x
codec/decode-encode/nested-relationships kitsu-core 364,787 355,001 2.68% slower 1x / 1x
codec/decode/collection kitsu-core 110,014 110,349 0.30% faster 1x / 1x
codec/encode/collection kitsu-core 208,681 208,152 0.25% slower 1x / 1x
codec/decode-encode/collection kitsu-core 65,360 65,431 0.11% faster 1x / 1x
codec/decode/collection-includes kitsu-core 71,984 71,875 0.15% slower 1x / 1x
codec/encode/collection-includes kitsu-core 89,384 89,081 0.34% slower 1x / 1x
codec/decode-encode/collection-includes kitsu-core 31,424 30,794 2.00% slower 1x / 1x
codec/decode/patch-single kitsu-core 3,078,022 3,103,494 0.83% faster 1x / 1x
codec/encode/patch-single kitsu-core 4,746,009 4,979,968 4.93% faster 1x / 1x
codec/decode-encode/patch-single kitsu-core 1,730,385 1,758,098 1.60% faster 1x / 1x
codec/decode/empty-relationships kitsu-core 1,346,286 1,334,365 0.89% slower 1x / 1x
codec/encode/empty-relationships kitsu-core 1,370,386 1,437,153 4.87% faster 1x / 1x
codec/decode-encode/empty-relationships kitsu-core 582,712 595,102 2.13% faster 1x / 1x
codec/decode/few-includes kitsu-core 724 715 1.19% slower 1x / 1x
codec/encode/few-includes kitsu-core 1,029 1,060 3.09% faster 1x / 1x
codec/decode-encode/few-includes kitsu-core 335 364 8.45% faster 1x / 1x
codec/decode/many-includes kitsu-core 277 274 1.01% slower 1x / 1x
codec/encode/many-includes kitsu-core 892 881 1.18% slower 1x / 1x
codec/decode-encode/many-includes kitsu-core 218 209 4.35% slower 1x / 1x
codec/decode/complex-relationships kitsu-core 42.58 43.26 1.61% faster 1x / 1x
codec/encode/complex-relationships kitsu-core 275 361 31.46% faster 1x / 1x
codec/decode-encode/complex-relationships kitsu-core 32.46 32.62 0.48% faster 1x / 1x
codec/decode/wide-relationship kitsu-core 305 309 1.21% faster 1x / 1x
codec/encode/wide-relationship kitsu-core 3,938 3,037 22.88% slower 1x / 1x
codec/decode-encode/wide-relationship kitsu-core 263 282 7.33% faster 1x / 1x
codec/decode/self-cycle kitsu-core 428,055 431,791 0.87% faster 1x / 1x
codec/encode/self-cycle kitsu-core 1,794,376 1,774,228 1.12% slower 1x / 1x
codec/decode-encode/self-cycle kitsu-core 315,125 316,883 0.56% faster 1x / 1x
codec/decode/mutual-cycle kitsu-core 357,752 362,262 1.26% faster 1x / 1x
codec/encode/mutual-cycle kitsu-core 1,542,042 1,655,355 7.35% faster 1x / 1x
codec/decode-encode/mutual-cycle kitsu-core 265,452 275,152 3.65% faster 1x / 1x
client/decode/small-no-relationships kitsu-native 175,427 175,781 0.20% faster 1x / 1x
client/encode/small-no-relationships kitsu-native 339,430 322,469 5.00% slower 1x / 1x
client/decode-encode/small-no-relationships kitsu-native 113,569 113,518 0.04% slower 1x / 1x
client/decode/small-links-only kitsu-native 154,792 160,357 3.60% faster 1x / 1x
client/encode/small-links-only kitsu-native 333,571 329,541 1.21% slower 1x / 1x
client/decode-encode/small-links-only kitsu-native 106,235 107,822 1.49% faster 1x / 1x
client/decode/small-relationships kitsu-native 102,924 103,111 0.18% faster 1x / 1x
client/encode/small-relationships kitsu-native 214,552 213,588 0.45% slower 1x / 1x
client/decode-encode/small-relationships kitsu-native 66,938 67,315 0.56% faster 1x / 1x
client/decode/nested-relationships kitsu-native 112,536 112,731 0.17% faster 1x / 1x
client/encode/nested-relationships kitsu-native 255,127 253,701 0.56% slower 1x / 1x
client/decode-encode/nested-relationships kitsu-native 78,308 76,901 1.80% slower 1x / 1x
client/decode/collection kitsu-native 26,244 27,159 3.49% faster 1x / 1x
client/encode/collection kitsu-native 53,522 55,281 3.29% faster 1x / 1x
client/decode-encode/collection kitsu-native 16,157 16,209 0.32% faster 1x / 1x
client/decode/collection-includes kitsu-native 24,628 25,387 3.08% faster 1x / 1x
client/encode/collection-includes kitsu-native 26,624 26,740 0.44% faster 1x / 1x
client/decode-encode/collection-includes kitsu-native 11,799 11,913 0.96% faster 1x / 1x
client/decode/patch-single kitsu-native 201,092 201,265 0.09% faster 1x / 1x
client/encode/patch-single kitsu-native 450,800 453,136 0.52% faster 1x / 1x
client/decode-encode/patch-single kitsu-native 136,355 136,934 0.42% faster 1x / 1x
client/decode/empty-relationships kitsu-native 160,922 159,955 0.60% slower 1x / 1x
client/encode/empty-relationships kitsu-native 272,008 279,219 2.65% faster 1x / 1x
client/decode-encode/empty-relationships kitsu-native 97,762 97,651 0.11% slower 1x / 1x
client/decode/few-includes kitsu-native 443 447 0.84% faster 1x / 1x
client/encode/few-includes kitsu-native 402 393 2.09% slower 1x / 1x
client/decode-encode/few-includes kitsu-native 206 205 0.14% slower 1x / 1x
client/decode/many-includes kitsu-native 168 171 1.46% faster 1x / 1x
client/encode/many-includes kitsu-native 366 383 4.69% faster 1x / 1x
client/decode-encode/many-includes kitsu-native 118 113 4.07% slower 1x / 1x
client/decode/complex-relationships kitsu-native 27.31 26.97 1.25% slower 1x / 1x
client/encode/complex-relationships kitsu-native 126 131 4.61% faster 1x / 1x
client/decode-encode/complex-relationships kitsu-native 19.68 21.37 8.57% faster 1x / 1x
client/decode/wide-relationship kitsu-native 183 179 2.31% slower 1x / 1x
client/encode/wide-relationship kitsu-native 1,143 1,136 0.67% slower 1x / 1x
client/decode-encode/wide-relationship kitsu-native 150 155 3.14% faster 1x / 1x
client/decode/self-cycle kitsu-native 102,777 103,213 0.42% faster 1x / 1x
client/encode/self-cycle kitsu-native 292,469 290,979 0.51% slower 1x / 1x
client/decode-encode/self-cycle kitsu-native 74,427 74,318 0.15% slower 1x / 1x
client/decode/mutual-cycle kitsu-native 78,815 78,784 0.04% slower 1x / 1x
client/encode/mutual-cycle kitsu-native 276,958 286,245 3.35% faster 1x / 1x
client/decode-encode/mutual-cycle kitsu-native 66,956 66,347 0.91% slower 1x / 1x
client/decode/small-no-relationships kitsu 73,996 74,976 1.32% faster 2.37x slower / 2.34x slower
client/encode/small-no-relationships kitsu 67,814 68,776 1.42% faster 5.01x slower / 4.69x slower
client/decode-encode/small-no-relationships kitsu 35,725 35,841 0.33% faster 3.18x slower / 3.17x slower
client/decode/small-links-only kitsu 69,653 71,166 2.17% faster 2.22x slower / 2.25x slower
client/encode/small-links-only kitsu 68,062 68,412 0.51% faster 4.9x slower / 4.82x slower
client/decode-encode/small-links-only kitsu 30,497 30,869 1.22% faster 3.48x slower / 3.49x slower
client/decode/small-relationships kitsu 56,923 56,769 0.27% slower 1.81x slower / 1.82x slower
client/encode/small-relationships kitsu 58,112 58,167 0.09% faster 3.69x slower / 3.67x slower
client/decode-encode/small-relationships kitsu 26,568 24,857 6.44% slower 2.52x slower / 2.71x slower
client/decode/nested-relationships kitsu 52,754 53,555 1.52% faster 2.13x slower / 2.1x slower
client/encode/nested-relationships kitsu 63,592 64,513 1.45% faster 4.01x slower / 3.93x slower
client/decode-encode/nested-relationships kitsu 29,899 30,588 2.30% faster 2.62x slower / 2.51x slower
client/decode/collection kitsu 23,950 24,252 1.26% faster 1.1x slower / 1.12x slower
client/encode/collection kitsu 28,751 28,373 1.31% slower 1.86x slower / 1.95x slower
client/decode-encode/collection kitsu 13,205 13,203 0.02% slower 1.22x slower / 1.23x slower
client/decode/collection-includes kitsu 19,989 20,775 3.93% faster 1.23x slower / 1.22x slower
client/encode/collection-includes kitsu 19,537 19,787 1.28% faster 1.36x slower / 1.35x slower
client/decode-encode/collection-includes kitsu 9,752 9,957 2.11% faster 1.21x slower / 1.2x slower
client/decode/patch-single kitsu 79,187 79,239 0.07% faster 2.54x slower / 2.54x slower
client/encode/patch-single kitsu 64,153 64,381 0.35% faster 7.03x slower / 7.04x slower
client/decode-encode/patch-single kitsu 37,465 37,719 0.68% faster 3.64x slower / 3.63x slower
client/decode/empty-relationships kitsu 71,093 71,800 0.99% faster 2.26x slower / 2.23x slower
client/encode/empty-relationships kitsu 59,215 60,415 2.03% faster 4.59x slower / 4.62x slower
client/decode-encode/empty-relationships kitsu 28,585 28,512 0.26% slower 3.42x slower / 3.42x slower
client/decode/few-includes kitsu 486 483 0.63% slower 1.1x faster / 1.08x faster
client/encode/few-includes kitsu 354 351 1.01% slower 1.13x slower / 1.12x slower
client/decode-encode/few-includes kitsu 197 203 3.11% faster 1.05x slower / 1.01x slower
client/decode/many-includes kitsu 197 198 0.54% faster 1.17x faster / 1.16x faster
client/encode/many-includes kitsu 366 374 2.39% faster <1.01x faster / 1.02x slower
client/decode-encode/many-includes kitsu 124 126 1.43% faster 1.05x faster / 1.11x faster
client/decode/complex-relationships kitsu 27.34 28.15 2.97% faster <1.01x faster / 1.04x faster
client/encode/complex-relationships kitsu 99.64 127 27.80% faster 1.26x slower / 1.03x slower
client/decode-encode/complex-relationships kitsu 19.76 19.24 2.59% slower <1.01x faster / 1.11x slower
client/decode/wide-relationship kitsu 192 194 1.01% faster 1.05x faster / 1.08x faster
client/encode/wide-relationship kitsu 1,035 1,092 5.51% faster 1.1x slower / 1.04x slower
client/decode-encode/wide-relationship kitsu 160 155 3.27% slower 1.07x faster / <1.01x faster
client/decode/self-cycle kitsu 56,378 58,040 2.95% faster 1.82x slower / 1.78x slower
client/encode/self-cycle kitsu 64,498 64,525 0.04% faster 4.53x slower / 4.51x slower
client/decode-encode/self-cycle kitsu 30,303 30,411 0.36% faster 2.46x slower / 2.44x slower
client/decode/mutual-cycle kitsu 54,867 54,645 0.40% slower 1.44x slower / 1.44x slower
client/encode/mutual-cycle kitsu 64,777 65,654 1.35% faster 4.28x slower / 4.36x slower
client/decode-encode/mutual-cycle kitsu 26,063 26,180 0.45% faster 2.57x slower / 2.53x slower

bun 1.4.4

Base 53ed72919bb48ab58932b9f0346d089f90da9a7b; proposed merge d4299727ba59bca18222695f1812ea47d925f745.

Competitor changes
Suite / mode / scenario Library Base operations/s PR operations/s Change vs Kitsu base / PR
client/decode/small-no-relationships fetchja 358,798 353,000 1.62% slower 1.2x faster / 1.15x faster
client/encode/small-no-relationships fetchja 334,576 334,638 0.02% faster 1.18x slower / 1.2x slower
client/decode-encode/small-no-relationships fetchja 162,848 163,574 0.45% faster 1.1x faster / 1.08x faster
client/decode/small-links-only fetchja 286,959 301,084 4.92% faster 1.13x faster / 1.24x faster
client/encode/small-links-only fetchja 338,541 335,315 0.95% slower 1.1x slower / 1.12x slower
client/decode-encode/small-links-only fetchja 157,789 151,446 4.02% slower 1.13x faster / 1.06x faster
client/decode/small-relationships fetchja 164,865 157,591 4.41% slower <1.01x faster / 1.05x slower
client/encode/small-relationships fetchja 260,977 273,593 4.83% faster 1.05x slower / 1.01x slower
client/decode-encode/small-relationships fetchja 94,915 96,335 1.50% faster 1.05x slower / 1.03x slower
client/decode/nested-relationships fetchja 176,772 176,743 0.02% slower 1.05x slower / 1.04x slower
client/encode/nested-relationships fetchja 280,414 290,011 3.42% faster 1.27x slower / 1.26x slower
client/decode-encode/nested-relationships fetchja 105,753 105,115 0.60% slower 1.12x slower / 1.12x slower
client/decode/collection fetchja 41,201 44,832 8.81% faster 1.61x faster / 1.77x faster
client/encode/collection fetchja unsupported unsupported unsupported / unsupported — / —
client/decode-encode/collection fetchja unsupported unsupported unsupported / unsupported — / —
client/decode/collection-includes fetchja 40,914 43,167 5.51% faster 1.53x faster / 1.6x faster
client/encode/collection-includes fetchja unsupported unsupported unsupported / unsupported — / —
client/decode-encode/collection-includes fetchja unsupported unsupported unsupported / unsupported — / —
client/decode/patch-single fetchja 378,115 360,775 4.59% slower 1.02x slower / 1.1x slower
client/encode/patch-single fetchja 412,586 388,674 5.80% slower 1.29x slower / 1.46x slower
client/decode-encode/patch-single fetchja 192,281 191,061 0.63% slower 1.02x faster / 1.04x slower
client/decode/empty-relationships fetchja 396,620 396,946 0.08% faster 1.34x faster / 1.39x faster
client/encode/empty-relationships fetchja 386,688 386,558 0.03% slower 1.01x faster / 1.02x slower
client/decode-encode/empty-relationships fetchja 185,392 185,110 0.15% slower 1.12x faster / 1.08x faster
client/decode/few-includes fetchja 603 616 2.29% faster 1.12x slower / 1.14x slower
client/encode/few-includes fetchja unsupported unsupported unsupported / unsupported — / —
client/decode-encode/few-includes fetchja unsupported unsupported unsupported / unsupported — / —
client/decode/many-includes fetchja 227 234 2.98% faster 1.29x slower / 1.17x slower
client/encode/many-includes fetchja unsupported unsupported unsupported / unsupported — / —
client/decode-encode/many-includes fetchja unsupported unsupported unsupported / unsupported — / —
client/decode/complex-relationships fetchja 35.28 36.39 3.13% faster 1.13x slower / 1.09x slower
client/encode/complex-relationships fetchja unsupported unsupported unsupported / unsupported — / —
client/decode-encode/complex-relationships fetchja unsupported unsupported unsupported / unsupported — / —
client/decode/wide-relationship fetchja 217 214 1.50% slower 1.37x slower / 1.39x slower
client/encode/wide-relationship fetchja unsupported unsupported unsupported / unsupported — / —
client/decode-encode/wide-relationship fetchja unsupported unsupported unsupported / unsupported — / —
client/decode/self-cycle fetchja 235,736 235,360 0.16% slower 1.23x faster / 1.31x faster
client/encode/self-cycle fetchja 359,773 353,814 1.66% slower 1.22x slower / 1.18x slower
client/decode-encode/self-cycle fetchja 137,309 136,972 0.25% slower 1.07x slower / 1.08x slower
client/decode/mutual-cycle fetchja 206,552 179,135 13.27% slower 1.13x faster / 1.03x slower
client/encode/mutual-cycle fetchja 326,815 343,826 5.21% faster 1.15x slower / 1.08x slower
client/decode-encode/mutual-cycle fetchja 117,102 111,503 4.78% slower <1.01x faster / 1.09x slower
codec/decode/small-no-relationships devour 1,753,950 1,729,411 1.40% slower 1.23x faster / 1.2x faster
codec/encode/small-no-relationships devour 4,232,309 3,677,089 13.12% slower 1.97x faster / 1.45x faster
codec/decode-encode/small-no-relationships devour 1,002,504 969,215 3.32% slower 1.36x faster / 1.29x faster
client/decode/small-no-relationships devour 75,393 75,640 0.33% faster 3.95x slower / 4.06x slower
client/encode/small-no-relationships devour 68,831 71,096 3.29% faster 5.73x slower / 5.65x slower
client/decode-encode/small-no-relationships devour 34,635 34,872 0.68% faster 4.29x slower / 4.32x slower
codec/decode/small-links-only devour 1,066,950 1,108,687 3.91% faster 1.01x faster / 1.07x faster
codec/encode/small-links-only devour 2,651,487 2,515,832 5.12% slower 1.25x faster / 1.06x faster
codec/decode-encode/small-links-only devour 661,725 748,461 13.11% faster 1.01x faster / 1.15x faster
client/decode/small-links-only devour 79,573 84,623 6.35% faster 3.2x slower / 2.87x slower
client/encode/small-links-only devour 74,707 78,523 5.11% faster 4.97x slower / 4.78x slower
client/decode-encode/small-links-only devour 37,500 39,058 4.15% faster 3.71x slower / 3.66x slower
codec/decode/small-relationships devour 372,843 355,102 4.76% slower 1.18x slower / 1.28x slower
codec/encode/small-relationships devour 1,406,179 1,411,424 0.37% faster 1.13x faster / 1.07x slower
codec/decode-encode/small-relationships devour 270,613 270,417 0.07% slower 1.11x faster / 1.01x slower
client/decode/small-relationships devour 63,732 65,187 2.28% faster 2.59x slower / 2.53x slower
client/encode/small-relationships devour 64,243 64,491 0.39% faster 4.25x slower / 4.27x slower
client/decode-encode/small-relationships devour 28,785 30,249 5.09% faster 3.47x slower / 3.27x slower
codec/decode/nested-relationships devour 422,570 412,197 2.45% slower 1.42x slower / 1.42x slower
codec/encode/nested-relationships devour 1,878,473 1,784,357 5.01% slower 1.53x slower / 1.65x slower
codec/decode-encode/nested-relationships devour 307,437 313,447 1.95% faster 1.11x slower / 1.14x slower
client/decode/nested-relationships devour 63,910 64,295 0.60% faster 2.89x slower / 2.85x slower
client/encode/nested-relationships devour 63,988 68,508 7.06% faster 5.56x slower / 5.34x slower
client/decode-encode/nested-relationships devour 31,420 32,489 3.40% faster 3.76x slower / 3.64x slower
codec/decode/collection devour 134,622 132,000 1.95% slower 1.34x faster / 1.33x faster
codec/encode/collection devour 182,680 192,867 5.58% faster 1.13x faster / 1.1x faster
codec/decode-encode/collection devour 67,473 63,875 5.33% slower 1.25x faster / 1.15x faster
client/decode/collection devour 26,500 23,634 10.82% slower 1.04x faster / 1.07x slower
client/encode/collection devour unsupported unsupported unsupported / unsupported — / —
client/decode-encode/collection devour unsupported unsupported unsupported / unsupported — / —
codec/decode/collection-includes devour 142,204 138,767 2.42% slower 2.02x faster / 2x faster
codec/encode/collection-includes devour 363,335 338,291 6.89% slower 4.18x faster / 3.74x faster
codec/decode-encode/collection-includes devour 88,620 89,777 1.31% faster 2.38x faster / 2.38x faster
client/decode/collection-includes devour 29,828 30,842 3.40% faster 1.11x faster / 1.14x faster
client/encode/collection-includes devour unsupported unsupported unsupported / unsupported — / —
client/decode-encode/collection-includes devour unsupported unsupported unsupported / unsupported — / —
codec/decode/patch-single devour 1,986,841 1,919,823 3.37% slower 1.25x slower / 1.19x slower
codec/encode/patch-single devour 5,291,243 6,183,697 16.87% faster 1.06x slower / 1.19x faster
codec/decode-encode/patch-single devour 1,290,389 1,251,506 3.01% slower 1.03x slower / 1.18x slower
client/decode/patch-single devour 90,281 91,058 0.86% faster 4.27x slower / 4.35x slower
client/encode/patch-single devour 94,498 90,649 4.07% slower 5.65x slower / 6.26x slower
client/decode-encode/patch-single devour 43,928 43,023 2.06% slower 4.28x slower / 4.61x slower
codec/decode/empty-relationships devour 984,705 976,527 0.83% slower 1.28x slower / 1.34x slower
codec/encode/empty-relationships devour 2,071,998 1,888,203 8.87% slower 1.16x faster / 1.03x faster
codec/decode-encode/empty-relationships devour 515,119 555,244 7.79% faster 1.15x slower / 1.09x slower
client/decode/empty-relationships devour 74,803 77,940 4.19% faster 3.96x slower / 3.65x slower
client/encode/empty-relationships devour 78,423 77,990 0.55% slower 4.87x slower / 5.05x slower
client/decode-encode/empty-relationships devour 39,738 39,694 0.11% slower 4.16x slower / 4.31x slower
codec/decode/few-includes devour 731 736 0.67% faster 1.69x slower / 1.63x slower
codec/encode/few-includes devour 2,035 2,089 2.65% faster 1.41x faster / 1.46x faster
codec/decode-encode/few-includes devour 414 403 2.53% slower 1.14x slower / 1.13x slower
client/decode/few-includes devour 434 449 3.46% faster 1.56x slower / 1.57x slower
client/encode/few-includes devour unsupported unsupported unsupported / unsupported — / —
client/decode-encode/few-includes devour unsupported unsupported unsupported / unsupported — / —
codec/decode/many-includes devour 13.71 13.5 1.54% slower 39.17x slower / 41.63x slower
codec/encode/many-includes devour 2,141 2,149 0.38% faster 1.58x faster / 1.55x faster
codec/decode-encode/many-includes devour 13.02 13.07 0.42% faster 28.73x slower / 28.02x slower
client/decode/many-includes devour 17.74 17.45 1.62% slower 16.55x slower / 15.66x slower
client/encode/many-includes devour unsupported unsupported unsupported / unsupported — / —
client/decode-encode/many-includes devour unsupported unsupported unsupported / unsupported — / —
codec/decode/complex-relationships devour timeout timeout timeout / timeout — / —
codec/encode/complex-relationships devour 1,106 989 10.58% slower 1.67x faster / 1.47x faster
codec/decode-encode/complex-relationships devour timeout timeout timeout / timeout — / —
client/decode/complex-relationships devour timeout timeout timeout / timeout — / —
client/encode/complex-relationships devour unsupported unsupported unsupported / unsupported — / —
client/decode-encode/complex-relationships devour unsupported unsupported unsupported / unsupported — / —
codec/decode/wide-relationship devour 9.48 9.44 0.42% slower 59.75x slower / 61.76x slower
codec/encode/wide-relationship devour 12,037 15,216 26.42% faster 1.45x faster / 1.95x faster
codec/decode-encode/wide-relationship devour 10.06 9.87 1.92% slower 50.64x slower / 52.04x slower
client/decode/wide-relationship devour 11.77 11.87 0.86% faster 25.35x slower / 25.09x slower
client/encode/wide-relationship devour unsupported unsupported unsupported / unsupported — / —
client/decode-encode/wide-relationship devour unsupported unsupported unsupported / unsupported — / —
codec/decode/self-cycle devour 437,930 449,695 2.69% faster 1.31x slower / 1.24x slower
codec/encode/self-cycle devour 2,263,685 2,514,783 11.09% faster 1.32x slower / 1.29x slower
codec/decode-encode/self-cycle devour 368,737 385,968 4.67% faster 1.13x slower / 1.06x slower
client/decode/self-cycle devour 62,984 61,342 2.61% slower 3.04x slower / 2.94x slower
client/encode/self-cycle devour 67,233 67,410 0.26% faster 6.5x slower / 6.19x slower
client/decode-encode/self-cycle devour 30,412 30,062 1.15% slower 4.84x slower / 4.94x slower
codec/decode/mutual-cycle devour 339,684 351,694 3.54% faster 1.37x slower / 1.3x slower
codec/encode/mutual-cycle devour 2,235,587 1,893,500 15.30% slower 1.37x slower / 1.61x slower
codec/decode-encode/mutual-cycle devour 300,184 295,572 1.54% slower 1.09x slower / 1.1x slower
client/decode/mutual-cycle devour 75,544 77,898 3.12% faster 2.41x slower / 2.36x slower
client/encode/mutual-cycle devour 81,865 84,419 3.12% faster 4.58x slower / 4.4x slower
client/decode-encode/mutual-cycle devour 40,864 40,685 0.44% slower 2.86x slower / 2.99x slower
client/decode/small-no-relationships @bjornharrtell/json-api 301,145 304,829 1.22% faster 1.01x faster / 1.01x slower
client/encode/small-no-relationships @bjornharrtell/json-api 158,798 160,768 1.24% faster 2.48x slower / 2.5x slower
client/decode-encode/small-no-relationships @bjornharrtell/json-api 105,433 99,207 5.91% slower 1.41x slower / 1.52x slower
client/decode/small-links-only @bjornharrtell/json-api 280,202 287,733 2.69% faster 1.1x faster / 1.18x faster
client/encode/small-links-only @bjornharrtell/json-api 147,608 148,588 0.66% faster 2.52x slower / 2.52x slower
client/decode-encode/small-links-only @bjornharrtell/json-api 92,249 94,771 2.73% faster 1.51x slower / 1.51x slower
client/decode/small-relationships @bjornharrtell/json-api 149,651 151,307 1.11% faster 1.1x slower / 1.09x slower
client/encode/small-relationships @bjornharrtell/json-api 105,908 109,001 2.92% faster 2.58x slower / 2.53x slower
client/decode-encode/small-relationships @bjornharrtell/json-api 58,331 60,518 3.75% faster 1.71x slower / 1.64x slower
client/decode/nested-relationships @bjornharrtell/json-api 182,303 181,750 0.30% slower 1.01x slower / 1.01x slower
client/encode/nested-relationships @bjornharrtell/json-api 124,337 122,159 1.75% slower 2.86x slower / 2.99x slower
client/decode-encode/nested-relationships @bjornharrtell/json-api 75,922 74,524 1.84% slower 1.55x slower / 1.59x slower
client/decode/collection @bjornharrtell/json-api 37,757 41,627 10.25% faster 1.47x faster / 1.64x faster
client/encode/collection @bjornharrtell/json-api unsupported unsupported unsupported / unsupported — / —
client/decode-encode/collection @bjornharrtell/json-api unsupported unsupported unsupported / unsupported — / —
client/decode/collection-includes @bjornharrtell/json-api 48,952 50,378 2.91% faster 1.83x faster / 1.87x faster
client/encode/collection-includes @bjornharrtell/json-api unsupported unsupported unsupported / unsupported — / —
client/decode-encode/collection-includes @bjornharrtell/json-api unsupported unsupported unsupported / unsupported — / —
client/decode/patch-single @bjornharrtell/json-api 381,328 370,853 2.75% slower 1.01x slower / 1.07x slower
client/encode/patch-single @bjornharrtell/json-api 213,925 211,880 0.96% slower 2.5x slower / 2.68x slower
client/decode-encode/patch-single @bjornharrtell/json-api 136,626 137,489 0.63% faster 1.38x slower / 1.44x slower
client/decode/empty-relationships @bjornharrtell/json-api incorrect incorrect incorrect / incorrect — / —
client/encode/empty-relationships @bjornharrtell/json-api 180,952 177,952 1.66% slower 2.11x slower / 2.21x slower
client/decode-encode/empty-relationships @bjornharrtell/json-api incorrect incorrect incorrect / incorrect — / —
client/decode/few-includes @bjornharrtell/json-api 643 668 3.85% faster 1.05x slower / 1.05x slower
client/encode/few-includes @bjornharrtell/json-api unsupported unsupported unsupported / unsupported — / —
client/decode-encode/few-includes @bjornharrtell/json-api unsupported unsupported unsupported / unsupported — / —
client/decode/many-includes @bjornharrtell/json-api 232 235 1.42% faster 1.27x slower / 1.16x slower
client/encode/many-includes @bjornharrtell/json-api unsupported unsupported unsupported / unsupported — / —
client/decode-encode/many-includes @bjornharrtell/json-api unsupported unsupported unsupported / unsupported — / —
client/decode/complex-relationships @bjornharrtell/json-api 32.93 32.48 1.37% slower 1.21x slower / 1.22x slower
client/encode/complex-relationships @bjornharrtell/json-api unsupported unsupported unsupported / unsupported — / —
client/decode-encode/complex-relationships @bjornharrtell/json-api unsupported unsupported unsupported / unsupported — / —
client/decode/wide-relationship @bjornharrtell/json-api 206 203 1.19% slower 1.45x slower / 1.47x slower
client/encode/wide-relationship @bjornharrtell/json-api unsupported unsupported unsupported / unsupported — / —
client/decode-encode/wide-relationship @bjornharrtell/json-api unsupported unsupported unsupported / unsupported — / —
client/decode/self-cycle @bjornharrtell/json-api 155,612 157,393 1.14% faster 1.23x slower / 1.14x slower
client/encode/self-cycle @bjornharrtell/json-api 118,921 118,087 0.70% slower 3.68x slower / 3.54x slower
client/decode-encode/self-cycle @bjornharrtell/json-api 68,356 69,751 2.04% faster 2.15x slower / 2.13x slower
client/decode/mutual-cycle @bjornharrtell/json-api 211,999 212,888 0.42% faster 1.16x faster / 1.16x faster
client/encode/mutual-cycle @bjornharrtell/json-api 156,385 149,520 4.39% slower 2.4x slower / 2.48x slower
client/decode-encode/mutual-cycle @bjornharrtell/json-api 78,237 82,551 5.51% faster 1.49x slower / 1.47x slower
codec/decode/small-no-relationships yayson 934,785 913,532 2.27% slower 1.52x slower / 1.58x slower
codec/encode/small-no-relationships yayson 2,139,415 2,180,571 1.92% faster 1.01x slower / 1.16x slower
codec/decode-encode/small-no-relationships yayson 613,230 620,129 1.13% faster 1.2x slower / 1.21x slower
codec/decode/small-links-only yayson 692,427 694,320 0.27% faster 1.52x slower / 1.49x slower
codec/encode/small-links-only yayson 1,806,990 1,855,346 2.68% faster 1.17x slower / 1.28x slower
codec/decode-encode/small-links-only yayson 523,509 513,352 1.94% slower 1.26x slower / 1.27x slower
codec/decode/small-relationships yayson 244,709 243,990 0.29% slower 1.79x slower / 1.87x slower
codec/encode/small-relationships yayson 1,131,353 1,109,121 1.97% slower 1.1x slower / 1.37x slower
codec/decode-encode/small-relationships yayson 167,680 163,897 2.26% slower 1.45x slower / 1.66x slower
codec/decode/nested-relationships yayson 354,617 353,294 0.37% slower 1.69x slower / 1.66x slower
codec/encode/nested-relationships yayson 1,128,678 1,153,690 2.22% faster 2.55x slower / 2.54x slower
codec/decode-encode/nested-relationships yayson 245,935 254,623 3.53% faster 1.39x slower / 1.4x slower
codec/decode/collection yayson 103,034 99,418 3.51% slower 1.03x faster / <1.01x faster
codec/encode/collection yayson 267,815 250,217 6.57% slower 1.66x faster / 1.43x faster
codec/decode-encode/collection yayson 65,957 65,756 0.30% slower 1.22x faster / 1.19x faster
codec/decode/collection-includes yayson 126,060 124,333 1.37% slower 1.79x faster / 1.79x faster
codec/encode/collection-includes yayson 374,223 330,581 11.66% slower 4.3x faster / 3.65x faster
codec/decode-encode/collection-includes yayson 76,519 74,471 2.68% slower 2.05x faster / 1.98x faster
codec/decode/patch-single yayson 1,184,123 1,203,066 1.60% faster 2.09x slower / 1.91x slower
codec/encode/patch-single yayson 2,370,042 2,362,785 0.31% slower 2.36x slower / 2.2x slower
codec/decode-encode/patch-single yayson 828,504 829,430 0.11% faster 1.61x slower / 1.78x slower
codec/decode/empty-relationships yayson 1,047,891 1,031,026 1.61% slower 1.2x slower / 1.27x slower
codec/encode/empty-relationships yayson 1,297,003 1,319,965 1.77% faster 1.38x slower / 1.39x slower
codec/decode-encode/empty-relationships yayson 495,506 509,572 2.84% faster 1.19x slower / 1.19x slower
codec/decode/few-includes yayson 806 758 5.98% slower 1.53x slower / 1.58x slower
codec/encode/few-includes yayson 1,209 1,205 0.27% slower 1.19x slower / 1.19x slower
codec/decode-encode/few-includes yayson 290 294 1.28% faster 1.63x slower / 1.55x slower
codec/decode/many-includes yayson 62.12 61.62 0.80% slower 8.64x slower / 9.12x slower
codec/encode/many-includes yayson 1,230 1,192 3.11% slower 1.11x slower / 1.17x slower
codec/decode-encode/many-includes yayson 53.35 53.34 <0.01% slower 7.01x slower / 6.87x slower
codec/decode/complex-relationships yayson 1.13 1.15 1.61% faster 62.95x slower / 69.17x slower
codec/encode/complex-relationships yayson 817 790 3.29% slower 1.23x faster / 1.17x faster
codec/decode-encode/complex-relationships yayson 1.13 1.09 3.63% slower 54.9x slower / 53.44x slower
codec/decode/wide-relationship yayson 37.68 38.47 2.11% faster 15.04x slower / 15.16x slower
codec/encode/wide-relationship yayson 15,183 14,270 6.01% slower 1.83x faster / 1.83x faster
codec/decode-encode/wide-relationship yayson 36.44 35.67 2.10% slower 13.98x slower / 14.39x slower
codec/decode/self-cycle yayson 303,752 305,796 0.67% faster 1.88x slower / 1.82x slower
codec/encode/self-cycle yayson 1,180,739 1,227,888 3.99% faster 2.53x slower / 2.64x slower
codec/decode-encode/self-cycle yayson 286,600 293,940 2.56% faster 1.45x slower / 1.39x slower
codec/decode/mutual-cycle yayson 284,462 287,353 1.02% faster 1.64x slower / 1.59x slower
codec/encode/mutual-cycle yayson 1,333,901 1,153,427 13.53% slower 2.29x slower / 2.64x slower
codec/decode-encode/mutual-cycle yayson 206,585 209,238 1.28% faster 1.58x slower / 1.56x slower
codec/decode/small-no-relationships jsona 1,518,812 1,608,896 5.93% faster 1.07x faster / 1.11x faster
codec/encode/small-no-relationships jsona 2,885,718 2,734,276 5.25% slower 1.34x faster / 1.08x faster
codec/decode-encode/small-no-relationships jsona 880,675 865,614 1.71% slower 1.19x faster / 1.15x faster
codec/decode/small-links-only jsona 1,408,702 1,385,118 1.67% slower 1.34x faster / 1.34x faster
codec/encode/small-links-only jsona 2,947,006 2,949,016 0.07% faster 1.39x faster / 1.25x faster
codec/decode-encode/small-links-only jsona 813,149 799,238 1.71% slower 1.24x faster / 1.23x faster
codec/decode/small-relationships jsona 421,622 416,685 1.17% slower 1.04x slower / 1.09x slower
codec/encode/small-relationships jsona 1,166,416 1,190,121 2.03% faster 1.07x slower / 1.27x slower
codec/decode-encode/small-relationships jsona 265,441 260,857 1.73% slower 1.09x faster / 1.05x slower
codec/decode/nested-relationships jsona 497,161 492,794 0.88% slower 1.21x slower / 1.19x slower
codec/encode/nested-relationships jsona 1,422,827 1,382,331 2.85% slower 2.02x slower / 2.12x slower
codec/decode-encode/nested-relationships jsona 309,640 307,391 0.73% slower 1.1x slower / 1.16x slower
codec/decode/collection jsona 352,791 367,915 4.29% faster 3.51x faster / 3.72x faster
codec/encode/collection jsona 620,286 657,874 6.06% faster 3.84x faster / 3.75x faster
codec/decode-encode/collection jsona 150,332 153,688 2.23% faster 2.78x faster / 2.78x faster
codec/decode/collection-includes jsona 165,529 162,057 2.10% slower 2.35x faster / 2.33x faster
codec/encode/collection-includes jsona 337,031 322,993 4.17% slower 3.88x faster / 3.57x faster
codec/decode-encode/collection-includes jsona 104,344 104,551 0.20% faster 2.8x faster / 2.77x faster
codec/decode/patch-single jsona 1,860,478 1,749,882 5.94% slower 1.33x slower / 1.31x slower
codec/encode/patch-single jsona 3,204,780 3,213,195 0.26% faster 1.75x slower / 1.62x slower
codec/decode-encode/patch-single jsona 1,036,333 1,032,143 0.40% slower 1.28x slower / 1.43x slower
codec/decode/empty-relationships jsona 1,425,983 1,444,910 1.33% faster 1.13x faster / 1.1x faster
codec/encode/empty-relationships jsona 1,908,848 1,924,656 0.83% faster 1.07x faster / 1.05x faster
codec/decode-encode/empty-relationships jsona 580,593 584,190 0.62% faster 1.02x slower / 1.04x slower
codec/decode/few-includes jsona 715 759 6.13% faster 1.73x slower / 1.58x slower
codec/encode/few-includes jsona 1,293 1,259 2.63% slower 1.11x slower / 1.14x slower
codec/decode-encode/few-includes jsona 373 359 3.78% slower 1.27x slower / 1.27x slower
codec/decode/many-includes jsona 193 192 0.55% slower 2.78x slower / 2.93x slower
codec/encode/many-includes jsona 1,211 1,170 3.38% slower 1.12x slower / 1.19x slower
codec/decode-encode/many-includes jsona 151 152 0.76% faster 2.48x slower / 2.41x slower
codec/decode/complex-relationships jsona 23.39 22.36 4.41% slower 3.05x slower / 3.56x slower
codec/encode/complex-relationships jsona 542 639 17.87% faster 1.23x slower / 1.05x slower
codec/decode-encode/complex-relationships jsona 21.73 21.87 0.65% faster 2.85x slower / 2.66x slower
codec/decode/wide-relationship jsona 210 213 1.13% faster 2.69x slower / 2.74x slower
codec/encode/wide-relationship jsona 4,723 4,931 4.41% faster 1.75x slower / 1.58x slower
codec/decode-encode/wide-relationship jsona 176 167 4.86% slower 2.9x slower / 3.08x slower
codec/decode/self-cycle jsona 468,537 464,493 0.86% slower 1.22x slower / 1.2x slower
codec/encode/self-cycle jsona 1,441,097 1,542,329 7.02% faster 2.07x slower / 2.1x slower
codec/decode-encode/self-cycle jsona 297,534 294,795 0.92% slower 1.4x slower / 1.38x slower
codec/decode/mutual-cycle jsona 369,063 375,335 1.70% faster 1.27x slower / 1.22x slower
codec/encode/mutual-cycle jsona 685,602 706,663 3.07% faster 4.46x slower / 4.31x slower
codec/decode-encode/mutual-cycle jsona 248,794 260,216 4.59% faster 1.31x slower / 1.25x slower
codec/decode/small-no-relationships ts-japi unsupported unsupported unsupported / unsupported — / —
codec/encode/small-no-relationships ts-japi 1,027,995 997,735 2.94% slower 2.09x slower / 2.54x slower
codec/decode-encode/small-no-relationships ts-japi unsupported unsupported unsupported / unsupported — / —
codec/decode/small-links-only ts-japi unsupported unsupported unsupported / unsupported — / —
codec/encode/small-links-only ts-japi 1,045,773 1,063,980 1.74% faster 2.03x slower / 2.23x slower
codec/decode-encode/small-links-only ts-japi unsupported unsupported unsupported / unsupported — / —
codec/decode/small-relationships ts-japi unsupported unsupported unsupported / unsupported — / —

Remaining rows available in complete results linked above.

node v26.12.1

Base 53ed72919bb48ab58932b9f0346d089f90da9a7b; proposed merge d4299727ba59bca18222695f1812ea47d925f745.

Competitor changes
Suite / mode / scenario Library Base operations/s PR operations/s Change vs Kitsu base / PR

Remaining rows available in complete results linked above.

@renovate
renovate Bot force-pushed the renovate/linters branch from b2a0ddf to 50e1394 Compare October 28, 2026 02:02
@renovate
renovate Bot force-pushed the renovate/linters branch from 50e1394 to fa4c2bc Compare October 28, 2026 05:06
@renovate renovate Bot changed the title build(deps): update devdependency @biomejs/biome to ~2.6.0 build(deps): update devdependency @biomejs/biome to ~2.6.0 - autoclosed Nov 2, 2026
@renovate renovate Bot closed this Nov 2, 2026
@renovate
renovate Bot deleted the renovate/linters branch November 2, 2026 16:03
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.

0 participants