Repository navigation
Releases: scalar/scalar
Release list
Release 2026-10-28
Releases
@scalar/api-reference@1.76.2
Patch Changes
-
#10740: Detect schemas in custom AsyncAPI binding fields, including WebSocket operation headers and message schemas, and render their properties instead of expandable raw JSON.
-
#10763: feat(api-reference): give the localhost playground a developer toolbar with a side panel for its tools
On localhost, the developer toolbar becomes a sticky bar above the reference, which renders as a bordered card. Configure, Share, Deploy and Generate SDK open in a side panel beside the card; Deploy is now a waitlist sign-up for hosting on Scalar. The Generate SDK buttons in the client libraries card and the request examples, and the sidebar's "Generate SDKs & MCP" card and API client button, no longer show on localhost. Hosted references are unchanged.
-
#10740: Match the AsyncAPI application identifier heading to channel metadata headings with a full-column divider.
@scalar/types@0.25.2
Patch Changes
-
#10763: feat(api-reference): give the localhost playground a developer toolbar with a side panel for its tools
On localhost, the developer toolbar becomes a sticky bar above the reference, which renders as a bordered card. Configure, Share, Deploy and Generate SDK open in a side panel beside the card; Deploy is now a waitlist sign-up for hosting on Scalar. The Generate SDK buttons in the client libraries card and the request examples, and the sidebar's "Generate SDKs & MCP" card and API client button, no longer show on localhost. Hosted references are unchanged.
@scalar/astro@0.4.33
@scalar/docusaurus@0.8.54
@scalar/express-api-reference@0.10.33
@scalar/fastify-api-reference@1.76.2
@scalar/hono-api-reference@0.12.16
@scalar/nestjs-api-reference@1.2.33
@scalar/nextjs-api-reference@0.12.14
@scalar/nuxt@0.6.85
@scalar/starlight@0.2.18
@scalar/sveltekit@0.3.33
@scalar/agent-chat@0.12.48
@scalar/api-client@3.23.5
@scalar/api-client-react@2.0.62
@scalar/api-reference-react@0.9.85
@scalar/asyncapi-to-markdown@0.2.4
@scalar/asyncapi-validator@0.1.16
@scalar/blocks@0.6.2
@scalar/client-side-rendering@0.4.15
@scalar/core@0.5.47
@scalar/json-schema-validator@0.1.16
@scalar/mermaid-plugin@0.1.3
@scalar/mock-server@0.20.2
@scalar/nextjs-openapi@0.3.54
@scalar/oas-utils@0.20.17
@scalar/openapi-parser@0.29.18
@scalar/openapi-to-markdown@1.7.2
@scalar/openapi-validator@0.1.16
@scalar/pre-post-request-scripts@0.4.60
@scalar/server-side-rendering@0.1.64
@scalar/sidebar@0.12.5
@scalar/snippetz@0.10.13
@scalar/workspace-store@0.69.2
@scalarapi/docker-api-reference@0.6.19
Bundled API Reference
- @scalar/api-reference@1.76.2
@scalar/aspire@0.12.5
Bundled API Reference
- @scalar/api-reference@1.76.2
@scalar/aspnetcore@2.18.5
Bundled API Reference
- @scalar/api-reference@1.76.2
@scalar/aws-lambda@0.3.5
Bundled API Reference
- @scalar/api-reference@1.76.2
@scalar/azure-functions@0.3.5
Bundled API Reference
- @scalar/api-reference@1.76.2
@scalar/java-integration@0.6.85
Bundled API Reference
- @scalar/api-reference@1.76.2
scalar_api_reference@0.2.19
Bundled API Reference
- @scalar/api-reference@1.76.2
@scalar/mock-server-docker@0.2.75
scalar-app@1.1.45
Release 2026-10-23
Releases
@scalar/api-reference@1.76.0
Minor Changes
-
#10658: Add Copy as Markdown buttons for AsyncAPI channels and operations, with customizable action slots for these sections, tags, and introduction.
-
#10687: Display operation-level AsyncAPI message payload examples in a dark code card with message and example selection, plus selectable reply payload examples below it. Keep message and reply schemas in the left column.
Preserve declared AsyncAPI message order in the documentation and example picker.
-
#10697: Add
urlRouting: falseto keep API reference navigation in internal state without reading or changing the host page URL.
Patch Changes
-
#10711: fix: keep the response copy button in view when the code scrolls
-
#10721: Update compatible dependencies while retaining the existing Node.js support and five-day release-age policy.
-
#10718: Hide SDK generation buttons and the local sidebar promotion when developer tools are disabled, and expose the generate-sdk-button CSS class on the client libraries button.
-
#10652: Display authored AsyncAPI server-variable examples in the shared Example/Examples popup with copy support, including examples from referenced variables.
Keep the shared examples popup label clickable when hovered and align server-variable popups with their labels to avoid overlapping the sidebar.
-
#10709: Move AsyncAPI navigation cards from tags to channel sections, listing each channel's operations beside its details.
-
#10723: List AsyncAPI reply messages that live on the operation's own channel only under Replies, instead of repeating them under Messages or Other Channel Messages.
-
#10705: Remove the duplicate standalone OAuth scope list from operation details. Required scopes remain available in the authentication badge popover.
-
#10707: Match AsyncAPI channel badge placement and spacing to the OpenAPI modern and classic layouts. Use the shared badge component for Send/Receive while preserving their arrows and colors.
@scalar/blocks@0.6.0
Minor Changes
-
#10687: Display operation-level AsyncAPI message payload examples in a dark code card with message and example selection, plus selectable reply payload examples below it. Keep message and reply schemas in the left column.
Preserve declared AsyncAPI message order in the documentation and example picker.
Patch Changes
-
#10721: Update compatible dependencies while retaining the existing Node.js support and five-day release-age policy.
-
#10652: Display authored AsyncAPI server-variable examples in the shared Example/Examples popup with copy support, including examples from referenced variables.
Keep the shared examples popup label clickable when hovered and align server-variable popups with their labels to avoid overlapping the sidebar.
@scalar/components@0.33.0
Minor Changes
-
#9939: Switch
ScalarCodeBlockfrom@scalar/code-highlightto@scalar/highlight/compat. The markup keeps the same<pre><code class="hljs language-x">envelope and the samehljs-*token classes, socode.cssand every consumer of the rendered string are unchanged, but the highlighter underneath is now a state machine rather than a lowlight instance built per call — around 47 KB gzipped for all forty grammars against 127 KB before.Two token colors move, both because the finer scope vocabulary now reaches
code.cssrules that lowlight's output never hit. JSONtrue,falseandnullrender green rather than purple: highlight.js nested ahljs-keywordinsidehljs-literal, so the keyword color won, and a singlehljs-literalspan now picks up the green that stylesheet already defines for literals. HTTP header values, previously left unstyled, are colored as well. Python docstrings are scoped as comments instead of strings.ScalarMarkdownstill uses@scalar/code-highlightfor its remark/rehype pipeline, which the compat layer deliberately does not cover.
Patch Changes
- #10721: Fix the combobox filter declaration importing a private source alias and restore toast styles after upgrading vue-sonner.
- #10721: Update compatible dependencies while retaining the existing Node.js support and five-day release-age policy.
- #10699: Apply the shared import and Tailwind class formatting to components.
- #10704: Preserve sidebar section spacing when navigation overflows, including AsyncAPI filters with all tags selected.
@scalar/highlight@0.6.0
Minor Changes
-
#9939: Add a dedicated
curlgrammar, so curl command lines keep the colouring they had under@scalar/code-highlight.curlwas mapped to the bash grammar. That is a defensible reading — a curl invocation is a shell command line — but it loses the two tokens a reader actually looks for.@scalar/code-highlightships a bespoke curl grammar, andcode.cssis written against it:.hljs.language-curl .hljs-literaland.hljs.language-curl .hljs-stringboth have curl-specific rules. Under bash,curland the request method came out unscoped, so the command name lost its keyword colour andPOSTlost its symbol colour entirely.The new grammar mirrors the reference: the command is a keyword,
--request/-Xand other flags are literals, the method they carry is a symbol, and$(…)inside a double-quoted value reads as a variable. Output now matches the reference class for class.This also adds a
symbolscope to the vocabulary, mapped tohljs-symbolin the compat layer — a scope highlight.js has andcode.cssalready styles, and the natural home for Ruby symbols and Erlang atoms too.A curl sample joins the shared test corpus, so the differential suites compare this grammar against the reference on every run.
Patch Changes
-
#9939: feat(highlight): colour the names declarations bind in Java, C#, Go and Rust, and PowerShell parameters like shell flags
-
#10721: Update compatible dependencies while retaining the existing Node.js support and five-day release-age policy.
-
#9939: Fix JavaScript comparisons read as generic calls, and keep compiled grammars when a grammar is registered again
An identifier followed by
<read as the start of a generic call, socountinif (count <= max)andbinb <= 10were painted as function names. The generic branch now requires a type argument list that closes and is followed by(, souseState<number>(0)still scopes and a comparison does not.registerLanguagealso evicted a grammar's compiled form whenever it was called, even with the grammar already registered under every one of its names. A caller that registers on every render recompiled on every render, which cost close to twenty times the highlight itself. Registering the same grammar again is now a no-op.
@scalar/json-magic@0.17.0
Minor Changes
- #10696: Upgrade Undici to 8.12.3. JSON Magic, Mock Server, Workspace Store, OpenAPI to Markdown, and Scalar App now require Node.js 22.19.0 or later; Node.js 22.0 through 22.18 are no longer supported. Undici 8 enables HTTP/2 by default.
Patch Changes
- #10721: Update compatible dependencies while retaining the existing Node.js support and five-day release-age policy.
- #10715: fix: keep maps such as
components.schemasas objects when partially bundling references whose keys look like numbers (e.g.#/components/schemas/400) - #10720: Prevent prototype pollution when bundling with unsafe extension keys, isolate URL mappings from inherited or shared objects, and handle prototype property names correctly in the reverse mapping cache.
@scalar/mock-server@0.20.0
Minor Changes
- #10696: Upgrade Undici to 8.12.3. JSON Magic, Mock Server, Workspace Store, OpenAPI to Markdown, and Scalar App now require Node.js 22.19.0 or later; Node.js 22.0 through 22.18 are no longer supported. Undici 8 enables HTTP/2 by default.
Patch Changes
- #10721: Update compatible dependencies while retaining the existing Node.js support and five-day release-age policy.
@scalar/openapi-to-markdown@1.7.0
Minor Changes
- #10696: Upgrade Undici to 8.12.3. JSON Magic, Mock Server, Workspace Store, OpenAPI to Markdown, and Scalar App now require Node.js 22.19.0 or later; Node.js 22.0 through 22.18 are no longer supported. Undici 8 enables HTTP/2 by default.
@scalar/schemas@0.15.0
Minor Changes
- #10697: Add
urlRouting: falseto keep API reference navigation in internal state without reading or changing the host page URL.
@scalar/types@0.25.0
Minor Changes
Release 2026-10-20
Releases
@scalar/highlight@0.5.0
Minor Changes
- #10668: feat: close more gaps with TextMate grammars, and highlight faster
- Engine: only the wrapper group around each rule captures in a state's merged regex. Past 63 capture groups V8 allocates on every match, which cost large grammars such as C, C++, C#, PHP, Ruby and Python a third of their throughput or more.
- CSS:
var(--brand)has the same scope as the--brand:it refers to. SCSS$nameand Less@nameread whole where they are used, and$brand: redat the top level reads as a value rather than a selector. - JavaScript/TypeScript: the names in a parameter list read as parameters, destructuring and annotations included;
function f()names a definition;with { type: 'json' }on an import is a keyword. - Swift:
#/…/#and/…/regex literals, and thenonisolated,isolated,distributed,borrowing,consuming,sendingandmacromodifiers. - Diff: context (
diff -c) and normal (diff) formats, svnIndex:headers, and#comment lines. - Ruby: a method called without parentheses,
list.length, reads as a call, andp,printf,warnand friends as builtins. - Go: a package-qualified type,
w http.ResponseWriteror*testing.T, reads as a type where a type goes. - nginx: log levels, event methods, rewrite flags, and the names of
upstreamandmapblocks. - Haskell: the names in an import list. Kotlin:
packageandimportpaths, andtailrec,externalandvalue class. C++: calls with explicit template arguments,any_cast<int>(x). - Rust:
.awaitis a keyword,selfthe receiver andSelfa type, andr#typestays a name. Python:case 200: return xwith its body on the same line is a keyword. TypeScript:const id = <T,>(x: T) => xnames a function.
@scalar/mock-server@0.19.0
Minor Changes
-
#10683: Unify OpenAPI and AsyncAPI mocking in createMockServer, detecting the document format after loading it. The factory returns a Hono app for either format. WebSocket channels now require a runtime-specific upgradeWebSocket adapter; Node hosts create their own WebSocketServer. This replaces the exported createAsyncApiMockServer factory and its result/options types.
Serve sample Galaxy events on connection in the existing Cloudflare Pages deployment.
Expand AsyncAPI server pathname enums and serve deployment-specific AsyncAPI JSON and YAML documents automatically.
@scalar/agent-chat@0.12.45
Patch Changes
- #10685: Support OpenAPI and AsyncAPI context and search results in Ask AI, preserve the selected API description when switching sources, and keep HTTP execution separate from unsupported messaging actions.
@scalar/api-client@3.23.2
Patch Changes
- #10654: Show the authorization form again after clearing OAuth access and refresh tokens.
@scalar/api-reference@1.75.1
Patch Changes
-
#10669: fix: wrap long operation paths in request example cards instead of truncating them, and move the client picker below the path when it does not fit
-
#10685: Support OpenAPI and AsyncAPI context and search results in Ask AI, preserve the selected API description when switching sources, and keep HTTP execution separate from unsupported messaging actions.
-
#10647: Wrap the operation header actions (authentication badge and Markdown copy button) on narrow screens instead of pushing them past the page edge.
-
#10646: Give the endpoint links in the tag operations list an
href, so keyboard users can reach them and modified clicks open the operation in a new tab. -
#10672: Give the endpoint links in the tag operations list a 24px minimum height, so they meet the WCAG 2.5.8 target size.
-
#10661: Align AsyncAPI operation spacing, headings, responsive authentication placement, and schema/example columns with OpenAPI. Simplify message and reply rendering, collapse messages by default, and remove redundant tags.
Render supported binding schema fields with the shared schema renderer and configured schema options. Unify address typography, example cards, and introduction metadata.
-
#10689: fix: name the tag "Show More" button by its visible text and describe it with the tag title
-
#10656: Use AsyncAPI summaries as heading and description fallbacks without repeating introductory text.
@scalar/blocks@0.5.4
Patch Changes
- #10669: fix: wrap long operation paths in request example cards instead of truncating them, and move the client picker below the path when it does not fit
@scalar/components@0.32.1
Patch Changes
- #10669: fix: wrap long operation paths in request example cards instead of truncating them, and move the client picker below the path when it does not fit
- #10663: Stop
ScalarDropdownfrom scrolling the page to the top of its containing block when it opens. The menu is now focused withpreventScroll, since Floating UI has not positioned it yet at that point.
@scalar/json-magic@0.16.1
Patch Changes
- #10694: Update Undici to 7.30.1 to fix security vulnerabilities, including CVE-2026-109869 and CVE-2026-109383, while preserving support for all Node 22 versions.
@scalar/openapi-parser@0.29.15
Patch Changes
-
#10643: Distinguish reference locations from schema name maps and literal data when validating, dereferencing, and collecting external references. Preserve
$refproperties with object or boolean schemas, leave examples and default/enum/const values unchanged, and retain errors for malformed references.Retain reference context across external files and fragments. Resolve custom operations while preserving OAuth scope names, discriminator mappings, Link payloads, and specification extension data.
@scalar/snippetz@0.10.10
Patch Changes
- #10673: Keep the port in the
Hostheader of HTTP/1.1 snippets. A request tohttp://localhost:8080/apinow showsHost: localhost:8080instead ofHost: localhost.
@scalar/workspace-store@0.68.5
Patch Changes
- #10677: Generate serialized JSON examples from
contentSchemainstead of falling back tonull, including JSON media type parameters, structured JSON suffixes, and string type arrays.
@scalar/fastify-api-reference@1.75.1
@scalar/nuxt@0.6.82
@scalar/api-client-react@2.0.59
@scalar/api-reference-react@0.9.82
@scalar/asyncapi-to-markdown@0.2.1
@scalar/oas-utils@0.20.14
@scalar/openapi-to-markdown@1.6.1
@scalar/pre-post-request-scripts@0.4.57
@scalar/server-side-rendering@0.1.61
@scalar/sidebar@0.12.2
@scalar/aspire@0.12.2
Bundled API Reference
- @scalar/api-reference@1.75.1
Patch Changes
- #10655: Update MessagePack to 2.5.303 to address GHSA-qhrr-8q5h-9q3h and restore .NET CI builds.
@scalar/mock-server-docker@0.2.72
Patch Changes
-
#10683: Unify OpenAPI and AsyncAPI mocking in createMockServer, detecting the document format after loading it. The factory returns a Hono app for either format. WebSocket channels now require a runtime-specific upgradeWebSocket adapter; Node hosts create their own WebSocketServer. This replaces the exported createAsyncApiMockServer factory and its result/options types.
Serve sample Galaxy events on connection in the existing Cloudflare Pages deployment.
Expand AsyncAPI server pathname enums and serve deployment-specific AsyncAPI JSON and YAML documents automatically.
galaxy-scalar-com@0.2.27
Patch Changes
-
#10683: Unify OpenAPI and AsyncAPI mocking in createMockServer, detecting the document format after loading it. The factory returns a Hono app for either format. WebSocket channels now require a runtime-specific upgradeWebSocket adapter; Node hosts create their own WebSocketServer. This replaces the exported createAsyncApiMockServer factory and its result/options types.
Serve sample Galaxy events on connection in the existing Cloudflare Pages deployment.
Expand AsyncAPI server pathname enums and serve deployment-specific AsyncAPI JSON and YAML documents automatically.
@scalarapi/docker-api-reference@0.6.16
Bundled API Reference
- @scalar/api-reference@1.75.1
@scalar/aspnetcore@2.18.2
Bundled API Reference
- @scalar/api-reference@1.75.1
@scalar/aws-lambda@0.3.2
Bundled API Reference
- @scalar/api-reference@1.75.1
@scalar/azure-functions@0.3.2
Bundled API Reference
- @scalar/api-reference@1.75.1
@scalar/java-integration@0.6.82
Bundled API Reference
- @scalar/api-reference@1.75.1
scalar_api_reference@0.2.16
Bundled API Reference
- @scalar/api-reference@1.75.1
scalar-app@1.1.42
Release 2026-10-16
Releases
@scalar/api-reference@1.75.0
Minor Changes
-
#10616: Render AsyncAPI operation replies with expandable message schemas, channel links, static addresses, and dynamic reply address expressions.
-
#10600: Display AsyncAPI application, server, operation, and message tags, including trait tags, and filter navigation by tags while preserving channel grouping.
-
#10604: Display AsyncAPI server, channel, operation, and message binding details, including versions, referenced bindings, and unfamiliar fields.
-
#10213: Add per-reference Markdown rendering hooks and an explicitly loaded Mermaid plugin with interactive diagrams, keyboard panning, and zoom controls.
Provide Markdown hooks before mounting the embedded client modal so its initial render receives the configured hooks. The Mermaid viewer uses customizable Scalar theme styles and an intentional light drawing surface.
Isolate Markdown plugin cleanup failures so other plugins still release their resources when content changes or unmounts.
Patch Changes
-
#10597: Render AsyncAPI string discriminators with inherited schema variants and effective discriminator values.
-
#10530: Render AsyncAPI external documentation on servers, channels, operations, messages, tags, and schemas, with referenced objects and descriptions, using the existing OpenAPI link presentation.
Keep AsyncAPI messages searchable when navigation renders them beneath operations.
-
#10599: Preserve recursive schemas when generating request bodies, code samples, and response examples instead of replacing recursion points with null or empty arrays.
-
#10608: Keep shared component styles from overriding host page body backgrounds and margins, including hosts using CSS layers. Keep full-page body styling in the standalone bundles.
-
#10594: Update AI SDK dependencies to address GHSA-866g-f22w-33x8 in response body handling.
-
#10365: Preserve document-backed API key name edits for export, allow clearing configured names, and release configured overrides when their default name is restored.
-
#10628: Add developer-tools controls for parameter and schema expansion, model names, required properties, and schema property ordering. Preserve explicit toggle overrides of supplied configuration.
-
#10588: Ignore sibling properties on AsyncAPI Reference Objects when rendering content, navigation, search, and schemas.
-
#10587: Display AsyncAPI channel parameter locations alongside their descriptions, examples, and constraints.
-
#10595: Display AsyncAPI channel summaries and addresses separately, and label missing or null addresses as unknown in channel content and search results.
-
#10603: Display AsyncAPI message content types, inherit document defaults, and format examples for their effective media type.
-
#10615: Render AsyncAPI Avro, Protobuf, and other schema formats as labeled, copyable source instead of dropping them or treating them as JSON Schema.
-
#10617: Index response schema fields on operations and webhook request/response fields. Search nested objects, arrays, compositions, and resolved references with bounded, cycle-safe traversal while keeping field names ranked above descriptive prose.
-
#10614: Clean up API reference lint warnings while preserving existing behavior.
@scalar/asyncapi-to-markdown@0.2.0
Minor Changes
-
#10586: Add AsyncAPI Markdown conversion with reusable renderers and individual reference pages. Share Markdown description parsing between the OpenAPI and AsyncAPI converters.
Include shared model links, contents navigation, tag pages, generated examples, and an interactive playground.
Preserve discriminators and linked schema descriptions, generate examples from primitive aliases, and compact property annotations.
Include full-export tag documentation, preserve XML schema examples, and normalize annotated primitive aliases.
Infer enum and const type labels and honor primitive-link settings in generated model examples.
Preserve AsyncAPI application and schema metadata, explain security alternatives, and render reply and unknown-address semantics accurately.
@scalar/components@0.32.0
Minor Changes
-
#10552: Search combobox options asynchronously: bind the search text with
v-model:query, skip client-side filtering with afilterFnthat returns the options as given, show a spinner or error mark in the search field withloader, and add content to the end of the search field with thesearch-endslot. -
#10213: Add per-reference Markdown rendering hooks and an explicitly loaded Mermaid plugin with interactive diagrams, keyboard panning, and zoom controls.
Provide Markdown hooks before mounting the embedded client modal so its initial render receives the configured hooks. The Mermaid viewer uses customizable Scalar theme styles and an intentional light drawing surface.
Isolate Markdown plugin cleanup failures so other plugins still release their resources when content changes or unmounts.
Patch Changes
- #10636: Make the discrete sidebar group toggle button 24px so it meets the WCAG 2.5.8 minimum target size.
- #10614: Clean up lint warnings while preserving runtime behavior, and document intentional schema and type syntax.
@scalar/highlight@0.4.0
Minor Changes
-
#10621: Close more of the highlighting gap with TextMate grammars, without slowing anything outside Markdown.
- Markdown fenced code blocks are highlighted with the language they name (
```ts,~~~sh, any registered language or alias). Fences that name no registered language, and fences of four or more backticks, stay plain strings. embed.languagecan beREMEMBERED, which embeds whatever language the rule that entered the state remembered. Markdown fences use it.- SQL scopes common T-SQL and PL/SQL keywords and types (
DECLARE,PRINT,GO,EXEC,RETURN,VARCHAR2,NUMBER, …). - JavaScript and TypeScript scope the name a
const,letorvardeclares, read a regex after a control condition (if (ok) /re/.test(s)), and colour a tagged template's tag (gql`…`) as a call. - Shell scopes unquoted arguments as strings, as TextMate grammars do.
TypeScript const assertions keep the following statement highlighted as code instead of consuming its keyword as a declared name.
- Markdown fenced code blocks are highlighted with the language they name (
-
#10622: feat: highlight more embedded languages and keyword-named keys
- Markdown: front matter is highlighted as YAML, and HTML that starts a line as HTML. A
<script>,<pre>or<style>block runs to its closing tag. The last line of front matter is no longer read as a heading. - HTTP: a body that starts with
<is highlighted as XML/HTML. - PHP:
<script>and<style>bodies in templates are highlighted as JavaScript and CSS, and a<?= ?>region inside them keeps the surrounding JavaScript or CSS state, so"<?= $name ?>"stays one string. - Engine: an
embedcan declareholes, regions of the body the host grammar tokenizes while the embedded language reads across them. - CSS: the condition of
@media,@supports,@containerand@importgets keywords, features, numbers and values. - JavaScript/TypeScript: a keyword used as an object key (
{ type: 'object' },{ default: 1 }) reads as a property,static of()andget(key)read as method names, and#privatefields are scoped.
Preserve source text when hole patterns contain capture groups, and keep PHP strings and comments from prematurely closing script or style bodies.
- Markdown: front matter is highlighted as YAML, and HTML that starts a line as HTML. A
-
#10612: Fix the highlighting breakages a comparison against Shiki and
@scalar/code-highlightfound, and add Julia.- PHP snippets without
<?php(every Guzzle, Laravel and curl sample snippetz generates) are read as code instead of rendering as plain text. Heredocs close only on their own marker. - Julia has a grammar, so
julia/httpcode samples are highlighted. - Shell:
'\'', the way snippetz writes an apostrophe inside a single-quoted curl body, no longer flips strings and code for the rest of the sample. Heredocs close only on their terminator, and a quoted marker (<<'EOF') turns expansion off. - YAML block scalars end where their indentation does, so prose such as
Note: …inside adescription: |stays a string.#starts a comment only after whitespace, commas stay inside plain scalars, and flow collections ({a: 1, b: [x, y]}) get their own state. - HTML, XML, SVG and Vue highlight
<script>and<style>bodies with the JavaScript and CSS grammars when those are registered.<?xml …?>is scoped as metadata instead of a comment, and unquoted attribute values as strings. - C# raw strings close only on the run of quotes that opened them, so
""""…""""can hold""". Rust raw strings close o...
- PHP snippets without
Release 2026-10-12
Releases
@scalar/api-client@3.23.0
Minor Changes
- #10555: Show empty optional fields of expanded object query parameters in a searchable Add parameter picker.
Patch Changes
- #10551: Show Reset to default on authentication fields only when the field has a default that differs from its current value (the document or configured value, or the current page URL for the OAuth2 redirect URL). A cleared OAuth2 access token keeps the action so you can get back to the Authorize form. The show password toggle only appears once a field has a value, and an emptied field goes back to masked.
- #10559: Clean up Biome warnings in package code and tests. Handle rejected debounced callbacks and await streaming writes.
- #10555: Keep expanded query parameter checkboxes independent and preserve disabled field values while excluding them from requests.
- #10506: Organize imports consistently with the checks enforced in CI.
- #10534: Keep Authorize via OAuth2 rightmost in the bearer token's "Get a token" row, with the settings gear to its left and Refresh in between, so the button never moves when Refresh appears.
- #10547: Respect Max-Age precedence over Expires when persisting response cookies.
- #10508: Add built-in Traditional Chinese (Taiwan) translations for
zh-TW, including case and underscore variants, across API Reference, API Client, and schema blocks.
@scalar/api-reference@1.74.0
Minor Changes
- #10536: feat(api-reference): show an "Explore Scalar" call to action in the sidebar footer on localhost instead of the "Generate MCP" fan-out. The button expands on hover or focus into a card with the Scalar stickers and opens a dialog (morphing into it where the View Transitions API is available) with "Sign up for Scalar" and "Book a demo" actions. Public hosts, configured MCP servers and
mcp.disabledkeep their current footer. AddsexploreScalartranslations toApiReferenceTranslationsand astartViewTransitionhelper to@scalar/helpers/dom. - #10567: Search AsyncAPI channels, operations, messages, channel parameters, and nested payload and header fields.
- #10570: Make modern sidebar tag groups and nested parent tags collapsible by default, using the same controls as ordinary tags. Reveal ancestor tags when scrolling to a different operation.
Patch Changes
-
#10554: Render AsyncAPI boolean schemas with explanations in message payloads, headers, and reusable models.
-
#10570: Keep AsyncAPI messages searchable when their rendered anchors belong to operations, while deduplicating messages referenced by multiple operations.
-
#10527: Document every visible AsyncAPI channel message in a channel catalog while preserving operation-specific message subsets, links, and server/protocol filtering.
-
#10565: Inherit AsyncAPI operation metadata and replies from traits using recursive merge rules, and use inherited titles in navigation.
-
#10545: Convert flow-style YAML documents to valid JSON when downloading in JSON format.
-
#10509: Remove a redundant assignment in SDK installation tab keyboard navigation.
-
#10529: Display AsyncAPI server titles, summaries, and protocol versions while preserving server map keys for selection.
-
#10550: Display AsyncAPI message correlation ID descriptions and runtime expressions, with links to identifiable header and payload fields.
-
#10513: Document browser-loaded plugins with NestJS and add a custom extension example.
-
#10534: feat(api-reference): add Generate SDK buttons to the developer tools, client libraries and request examples that open the Explore Scalar dialog when running locally and the document does not list its own SDKs
-
#10506: Organize imports consistently with the checks enforced in CI.
-
#10558: Fix AsyncAPI example cards to use the full available width, keep only the code block copy button, and pad and align the example name and summary.
-
#10525: Display the AsyncAPI application identifier in the introduction when present.
-
#10566: Render inline AsyncAPI security schemes and scopes, keeping server authentication separate from operation security.
-
#10573: Hide the empty Operations card for parent tags that only contain nested tags. Tags with their own operations or webhooks still show their endpoint list.
-
#10528: Render AsyncAPI channels and their messages when no operations reference them, including server and protocol filtering.
-
#10561: Clarify AsyncAPI operation and message sections, align message card spacing, and keep schema controls inside lighter expanded cards.
Show channel messages only when they are not used by an operation, and keep the sidebar in sync.
-
#10511: Expose an actions slot on Tag to add custom header controls in modern and classic layouts.
-
#10508: Add built-in Traditional Chinese (Taiwan) translations for
zh-TW, including case and underscore variants, across API Reference, API Client, and schema blocks.
@scalar/sidebar@0.12.0
Minor Changes
- #10570: Make modern sidebar tag groups and nested parent tags collapsible by default, using the same controls as ordinary tags. Reveal ancestor tags when scrolling to a different operation.
Patch Changes
- #10559: Clean up Biome warnings in package code and tests. Handle rejected debounced callbacks and await streaming writes.
@scalar/docusaurus@0.8.50
Patch Changes
- #10505: Apply formatting and lint compatibility changes for Biome 2.5.15.
- #10549: Order theme overrides by specificity while preserving existing styles.
@scalar/hono-api-reference@0.12.12
Patch Changes
- #10529: Align import and export ordering with the Biome checks.
- #10520: Sort imports and exports to satisfy the Biome checks.
- #10526: Align import and export ordering with the repository CI checks.
@scalar/nestjs-api-reference@1.2.29
Patch Changes
- #10513: Document browser-loaded plugins with NestJS and add a custom extension example.
@scalar/starlight@0.2.14
Patch Changes
- #10529: Align import and export ordering with the Biome checks.
- #10520: Sort imports and exports to satisfy the Biome checks.
- #10526: Align import and export ordering with the repository CI checks.
@scalar/agent-chat@0.12.43
Patch Changes
- #10559: Clean up Biome warnings in package code and tests. Handle rejected debounced callbacks and await streaming writes.
- #10506: Organize imports consistently with the checks enforced in CI.
@scalar/api-reference-react@0.9.80
Patch Changes
- #10506: Organize imports consistently with the checks enforced in CI.
@scalar/blocks@0.5.2
Patch Changes
- #10554: Render AsyncAPI boolean schemas with explanations in message payloads, headers, and reusable models.
- #10559: Clean up Biome warnings in package code and tests. Handle rejected debounced callbacks and await streaming writes.
- #10505: Apply formatting and lint compatibility changes for Biome 2.5.15.
- #10550: Display AsyncAPI message correlation ID descriptions and runtime expressions, with links to identifiable header and payload fields.
- #10534: feat(api-reference): add Generate SDK buttons to the developer tools, client libraries and request examples that open the Explore Scalar dialog when running locally and the document does not list its own SDKs
- #10555: Keep expanded query parameter checkboxes independent and preserve disabled field values while excluding them from requests.
- #10508: Add built-in Traditional Chinese (Taiwan) translations for
zh-TW, including case and underscore variants, across API Reference, API Client, and schema blocks.
@scalar/client-side-rendering@...
Release 2026-10-05
Releases
@scalar/api-reference@1.73.0
Minor Changes
- #10473: Add
featuredClientsto choose which clients are shown as tabs in the "Client Libraries" block, and in which order. - #10449: Add
hideModelNamesto show structural types instead of model names in schema type labels and operation headings. - #10443: Add a showExtensions allowlist to display OpenAPI extensions on operations, parameters, response headers, and schema fields without a custom plugin, with a schema-style value tree from the blocks package.
- #10420: Add
maxVisibleRequestBodyPropertiesto control the initial request body property limit (default 12, or 0 for unlimited) independently of nested schema expansion. Show the number of hidden properties in the overflow control.
Patch Changes
-
#10462: Keep nested allOf object fields and choice groups inside their named property. Recursive references render as leaves without repeating composition choices.
-
#10452: Autofill the OAuth2 redirect URL on initial load when configured authentication flows have no scopes.
-
#10468: Stop the schema property copy-link button from taking width from a collapsed preview such as
{ compound, percentage }. Its 24px hit box now overhangs the end of the line, so the row gives up only the icon and its gap, however the consuming app orders its stylesheets. -
#10397: Extract the schema renderer into @scalar/blocks so other Scalar surfaces can reuse the schema tree while preserving API Reference behavior.
Keep the public API Reference Schema and SchemaProperty exports connected to extension plugins and deep-link navigation when mounted outside ApiReference.
Expose shared presentation components through @scalar/blocks/shared, group host integration APIs under schema/helpers and schema/expansion, and keep schema stories and visual regression coverage with Blocks.
Preserve literal toolbar icon types so Storybook previews can be type checked.
Pass schema navigation, extension rendering, and shared expansion state explicitly through props instead of providing or injecting host context.
-
#10448: Expose an actions slot on the Operation component to replace its default copy control in embedded layouts.
-
#10441: Truncate long composition picker labels while keeping the full text available on hover and in the dropdown.
-
#10467: Use the design system border, shadow, and extra-large radius for all floating surfaces. Backdrops now inherit their radius from the floating element, and the lifted brightness no longer brightens the border.
@scalar/blocks@0.5.0
Minor Changes
-
#10443: Add a showExtensions allowlist to display OpenAPI extensions on operations, parameters, response headers, and schema fields without a custom plugin, with a schema-style value tree from the blocks package.
-
#10397: Extract the schema renderer into @scalar/blocks so other Scalar surfaces can reuse the schema tree while preserving API Reference behavior.
Keep the public API Reference Schema and SchemaProperty exports connected to extension plugins and deep-link navigation when mounted outside ApiReference.
Expose shared presentation components through @scalar/blocks/shared, group host integration APIs under schema/helpers and schema/expansion, and keep schema stories and visual regression coverage with Blocks.
Preserve literal toolbar icon types so Storybook previews can be type checked.
Pass schema navigation, extension rendering, and shared expansion state explicitly through props instead of providing or injecting host context.
Patch Changes
- #10460: Preserve multipart file metadata in generated code examples, including arrays and composed schemas, read actual file bytes across code example targets, let HTTP clients set the multipart boundary, and preserve typed text fields without turning them into file attachments.
- #10468: Stop the schema property copy-link button from taking width from a collapsed preview such as
{ compound, percentage }. Its 24px hit box now overhangs the end of the line, so the row gives up only the icon and its gap, however the consuming app orders its stylesheets.
@scalar/schemas@0.13.0
Minor Changes
- #10473: Add
featuredClientsto choose which clients are shown as tabs in the "Client Libraries" block, and in which order. - #10449: Add
hideModelNamesto show structural types instead of model names in schema type labels and operation headings. - #10443: Add a showExtensions allowlist to display OpenAPI extensions on operations, parameters, response headers, and schema fields without a custom plugin, with a schema-style value tree from the blocks package.
- #10420: Add
maxVisibleRequestBodyPropertiesto control the initial request body property limit (default 12, or 0 for unlimited) independently of nested schema expansion. Show the number of hidden properties in the overflow control.
@scalar/types@0.23.0
Minor Changes
- #10473: Add
featuredClientsto choose which clients are shown as tabs in the "Client Libraries" block, and in which order. - #10449: Add
hideModelNamesto show structural types instead of model names in schema type labels and operation headings. - #10443: Add a showExtensions allowlist to display OpenAPI extensions on operations, parameters, response headers, and schema fields without a custom plugin, with a schema-style value tree from the blocks package.
- #10420: Add
maxVisibleRequestBodyPropertiesto control the initial request body property limit (default 12, or 0 for unlimited) independently of nested schema expansion. Show the number of hidden properties in the overflow control.
Patch Changes
- #10431: Keep explicit authentication field clears separate from configured defaults, add field-local reset actions, and prevent clearing fixed-choice OAuth settings.
@scalar/api-client@3.21.5
Patch Changes
- #10463: Fix large request bodies rendering blank gaps in the code editor.
- #10431: Keep explicit authentication field clears separate from configured defaults, add field-local reset actions, and prevent clearing fixed-choice OAuth settings.
- #10470: Polish the bearer token "Get a token" row: the label matches the font size and color of the rows around it, the settings icon lines up with the password toggle above it, and the authorize button uses the gradient style.
- #10472: Stop pointing auth field labels at the non-labelable editor wrapper, and keep focusing the masked password input when its label is clicked.
- #10466: Fix long unbroken lines in the raw request body (for example Base64 strings or tokens) stretching the client beyond the viewport. The line now scrolls inside the editor.
- #10467: Use the design system border, shadow, and extra-large radius for all floating surfaces. Backdrops now inherit their radius from the floating element, and the lifted brightness no longer brightens the border.
@scalar/components@0.30.7
Patch Changes
- #10467: Use the design system border, shadow, and extra-large radius for all floating surfaces. Backdrops now inherit their radius from the floating element, and the lifted brightness no longer brightens the border.
@scalar/helpers@0.16.1
Patch Changes
-
#10397: Extract the schema renderer into @scalar/blocks so other Scalar surfaces can reuse the schema tree while preserving API Reference behavior.
Keep the public API Reference Schema and SchemaProperty exports connected to extension plugins and deep-link navigation when mounted outside ApiReference.
Expose shared presentation components through @scalar/blocks/shared, group host integration APIs under schema/helpers and schema/expansion, and keep schema stories and visual regression coverage with Blocks.
Preserve literal toolbar icon types so Storybook previews can be type checked.
Pass schema navigation, extension rendering, and shared expansion state explicitly through props instead of providing or injecting host context.
@scalar/snippetz@0.10.6
Patch Changes
- #10460: Preserve multipart file metadata in generated code examples, including arrays and composed schemas, read actual file bytes across code example targets, let HTTP clients set the multipart boundary, and preserve typed text fields without turning them into file attachments.
@scalar/workspace-store@0.68.1
Patch Changes
- #10431: Keep explicit authentication field clears separate f...
Release 2026-10-02
Releases
@scalar/workspace-store@0.68.0
Minor Changes
- #10432: Generate lazy AsyncAPI channel, operation, message, and schema chunks. Group shared dependencies to reduce requests while preserving direct model loading, recursive references, navigation, servers, and authentication.
Patch Changes
- #10458: Stop walking every path through shared schemas when collecting a parameter's declared example values. A shared schema found to declare no values is now skipped on the other paths that reach it, so a request whose parameter points into a deep graph of shared schemas no longer takes seconds to minutes to render.
@scalar/api-client@3.21.4
Patch Changes
- #10372: fix: improve keyboard and screen reader access to code blocks and multiselect comboboxes
- The code block scroller is exposed as a named group ("Code sample: Shell cURL" in the API Reference, localizable via
operation.codeSample) so screen readers announce it when it receives focus - The code block copy button now has a stable accessible name ("Copy Shell code") in every state, including while its visible label is hidden
- In multiselect comboboxes such as the auth scheme picker, Space toggles the active option while the search query is empty instead of hiding the whole list
- The code block scroller is exposed as a named group ("Code sample: Shell cURL" in the API Reference, localizable via
@scalar/api-reference@1.72.4
Patch Changes
-
#10372: fix: improve keyboard and screen reader access to code blocks and multiselect comboboxes
- The code block scroller is exposed as a named group ("Code sample: Shell cURL" in the API Reference, localizable via
operation.codeSample) so screen readers announce it when it receives focus - The code block copy button now has a stable accessible name ("Copy Shell code") in every state, including while its visible label is hidden
- In multiselect comboboxes such as the auth scheme picker, Space toggles the active option while the search query is empty instead of hiding the whole list
- The code block scroller is exposed as a named group ("Code sample: Shell cURL" in the API Reference, localizable via
-
#10437: Stop a discriminator
oneOfvariant that composes its base withallOffrom rendering a second selector, its fields twice, or a repeated variant description. -
#10439: Fix missing chunks after a release when a cached ESM entry point is loaded from an unversioned npm CDN URL. The generated loader selects its own exact release using a relative package URL, preserving the CDN hostname and path prefix. This supports jsDelivr, UNPKG, and other hosts with versioned npm package paths while keeping latest as the default. Custom self-hosted paths continue loading the bundle next to the entry point.
@scalar/blocks@0.4.3
Patch Changes
- #10372: fix: improve keyboard and screen reader access to code blocks and multiselect comboboxes
- The code block scroller is exposed as a named group ("Code sample: Shell cURL" in the API Reference, localizable via
operation.codeSample) so screen readers announce it when it receives focus - The code block copy button now has a stable accessible name ("Copy Shell code") in every state, including while its visible label is hidden
- In multiselect comboboxes such as the auth scheme picker, Space toggles the active option while the search query is empty instead of hiding the whole list
- The code block scroller is exposed as a named group ("Code sample: Shell cURL" in the API Reference, localizable via
@scalar/code-highlight@0.4.8
Patch Changes
- #10459: Share one lowlight instance per language registry between
syntaxHighlightandhtmlFromMarkdowninstead of registering and compiling every grammar for each code block, and replace it after a grammar fails to compile so later blocks that embed that grammar keep their text
@scalar/components@0.30.6
Patch Changes
- #10372: fix: improve keyboard and screen reader access to code blocks and multiselect comboboxes
- The code block scroller is exposed as a named group ("Code sample: Shell cURL" in the API Reference, localizable via
operation.codeSample) so screen readers announce it when it receives focus - The code block copy button now has a stable accessible name ("Copy Shell code") in every state, including while its visible label is hidden
- In multiselect comboboxes such as the auth scheme picker, Space toggles the active option while the search query is empty instead of hiding the whole list
- The code block scroller is exposed as a named group ("Code sample: Shell cURL" in the API Reference, localizable via
@scalar/import@0.5.29
Patch Changes
-
#10411: Import API descriptions from reference page URLs, including Hono pages, and retain discovered document URLs for watch mode.
Ignore JSON-LD website metadata during URL discovery and preserve link and escaped-JSON fallbacks for URLs with unsupported JavaScript escapes.
@scalar/json-magic@0.15.4
Patch Changes
- #10412: Update the shared Undici dependency to 7.29.1 to fix security advisories while preserving Node 22 compatibility, and update Scalar App’s separate Undici pin to 8.11.2.
@scalar/openapi-to-markdown@1.5.1
Patch Changes
- #10457: Render a selected operation, model, tag or webhook in time proportional to the selection instead of the whole document.
@scalar/types@0.22.4
Patch Changes
- #10372: fix: improve keyboard and screen reader access to code blocks and multiselect comboboxes
- The code block scroller is exposed as a named group ("Code sample: Shell cURL" in the API Reference, localizable via
operation.codeSample) so screen readers announce it when it receives focus - The code block copy button now has a stable accessible name ("Copy Shell code") in every state, including while its visible label is hidden
- In multiselect comboboxes such as the auth scheme picker, Space toggles the active option while the search query is empty instead of hiding the whole list
- The code block scroller is exposed as a named group ("Code sample: Shell cURL" in the API Reference, localizable via
@scalar/validation@0.6.6
Patch Changes
- #10417: Reduce union scoring overhead for literals, arrays, records, and missing optional values while preserving branch selection.
@scalar/astro@0.4.26
@scalar/docusaurus@0.8.47
@scalar/express-api-reference@0.10.26
@scalar/fastify-api-reference@1.72.4
@scalar/hono-api-reference@0.12.9
@scalar/nestjs-api-reference@1.2.26
@scalar/nextjs-api-reference@0.12.7
@scalar/nuxt@0.6.77
@scalar/starlight@0.2.11
@scalar/sveltekit@0.3.26
@scalar/agent-chat@0.12.40
@scalar/api-client-react@2.0.54
@scalar/api-reference-react@0.9.77
@scalar/asyncapi-validator@0.1.9
@scalar/client-side-rendering@0.4.8
@scalar/core@0.5.40
@scalar/json-schema-validator@0.1.9
@scalar/mock-server@0.17.3
@scalar/nextjs-openapi@0.3.47
@scalar/oas-utils@0.20.9
@scalar/openapi-parser@0.29.10
@scalar/openapi-validator@0.1.9
@scalar/pre-post-request-scripts@0.4.52
@scalar/schemas@0.12.3
@scalar/server-side-rendering@0.1.56
@scalar/sidebar@0.11.11
@scalar/snippetz@0.10.5
@scalar/use-hooks@0.4.17
scalar-app@1.1.37
Patch Changes
-
#10412: Update the shared Undici dependency to 7.29.1 to fix security advisories while preserving Node 22 compatibility, and update Scalar App’s separate Undici pin to 8.11.2.
-
#10411: Import API descriptions from reference page URLs, including Hono pages, and retain discovered document URLs for watch mode.
Ignore JSON-LD website metadata during URL discovery and preserve link and escaped-JSON fallbacks for URLs with unsupported JavaScript escapes.
@scalarapi/docker-api-reference@0.6.11
Bundled API Reference
- @scalar/api-reference@1.72.4
@scalar/aspire@0.11.29
Bundled API Reference
- @scalar/api-reference@1.72.4
@scalar/aspnetcore@2.17.13
Bundled API Reference
- @scalar/api-reference@1.72.4
@scalar/aws-lambda@0.2.17
Bundled API Reference
- @scalar/api-reference@1.72.4
@scalar/azure-functions@0.2.23
Bundled API Reference
- @scalar/api-reference@1.72.4
@scalar/java-integration@0.6.77
Bundled API Reference
- @scalar/api-reference@1.72.4
scalar_api_reference@0.2.11
Bundled API Reference
- @scalar/api-reference@1.72.4
@scalar/mock-server-docker@0.2.67
Release 2026-09-30
Releases
@scalar/openapi-to-markdown@1.5.0
Minor Changes
-
#10425: Make single-page Markdown easier to read, especially for AI agents reading
llms.txtexports.- An operation, webhook or model page now starts with that item as its
#title and uses##sections, without the API's document header. An empty API version is never printed. - Schema property descriptions keep their Markdown: paragraphs, links, inline code and fenced code blocks are no longer flattened into one escaped line. A parameter description is no longer repeated by its schema.
- Each property is one line with its name, type and annotations. Nullable unions read as
string | null, single-branchallOfwrappers as the wrapped type, unions of plain types as one type,constandenumschemas without atypeas their inferred JSON type, and arrays of simple items asarray of …. Composition branches are listed one per item, with discriminator values beside their branch. - Parameters are grouped by location. Responses that return the same schema and media type are grouped into one entry, such as a list of error statuses.
- In linked mode, references are shown as a link in the property's type. Primitive, enum and
constschemas and aliases of them are written in place instead of linked; setschemaReferences.inlinePrimitives: falseto link them. Generated examples are left out without a placeholder, while a model page generates an example of its own schema with linked schemas as empty stubs. - The Authentication section is left out when the API description declares no security requirements, and only an explicit
security: []says that no authentication is required. Security schemes are summarized on one line, for example "API key in headerX-Api-Key", instead of printed as JSON. - Selected pages retain empty server overrides as
/and include server variable choices and descriptions. Model pages retain authored examples for primitive and array schemas as well as objects.
- An operation, webhook or model page now starts with that item as its
-
#10425: Give shared schemas canonical definitions and internal links in whole-document Markdown exports, retaining primitive types inline and constraints beside references.
Deduplicate generated examples within each schema and request/response/media-type context, label them as generated, and retain authored examples at their original locations.
Explain inherited servers and authentication once, with links from operations, while retaining path and operation overrides, server variables, and explicit anonymous access.
Add a compact contents index linking to operations, webhooks, and schemas through unique explicit anchors.
Patch Changes
- #10425: Add a browser playground for previewing and downloading per-page, linked, and whole-document Markdown exports from Galaxy, Stripe, GitHub, and Cloudflare examples.
- #10425: Shorten the
## Schemassection for schemas a page already expanded. Such a model is now a single line, for example`Customer` — shown above., instead of a heading, type, "shown above" note and generated example. The line keeps the model's title and any description that a reference sibling replaced where the schema was expanded. A selected model, leaf schemas, models the page has not expanded, and object models with authored examples keep their full sections. A Stripe operation page such asGET /v1/customers/{customer}drops from about 2.5 MB to about 1.3 MB, with 819 of its 918 model sections reduced to one line. Everything above## Schemasis unchanged.
@scalar/api-client@3.21.3
Patch Changes
- #10422: Avoid allocating unused character match ranges during document search.
- #10402: Keep failed requests visible in the response panel and explain possible CORS or network causes for browser fetch failures.
- #10400: Hide the authentication dropdown in the API Reference when only one required option is active, while retaining authentication and deletion controls in the API Client.
- #10382: Preserve enum array selections with their original enum value types as JSON arrays in the structured request body form editor and contain long selection labels.
@scalar/api-reference@1.72.3
Patch Changes
- #10421: Collect schema search fields in one traversal and reuse extraction within each search index build.
- #10422: Avoid computing unused character match ranges when searching API references.
- #10381: Restore indentation for nested properties of expanded object and array query parameters.
- #10400: Hide the authentication dropdown in the API Reference when only one required option is active, while retaining authentication and deletion controls in the API Client.
- #10416: Skip unchanged document subtrees when checking configuration updates for content changes.
- #10403: Correct MIME type normalization return types and accept optional content types without unsafe casts. Remove original keys after normalization and preserve distinct response examples when selecting media types.
@scalar/components@0.30.5
Patch Changes
- #10401: Preserve inline code styling in collapsed Markdown summaries, including authentication descriptions.
@scalar/types@0.22.3
Patch Changes
- #10402: Keep failed requests visible in the response panel and explain possible CORS or network causes for browser fetch failures.
@scalar/workspace-store@0.67.2
Patch Changes
- #10429: Use the schema title for sidebar entries of models grouped with
x-tags, matching untagged models.
@scalar/astro@0.4.25
@scalar/docusaurus@0.8.46
@scalar/express-api-reference@0.10.25
@scalar/fastify-api-reference@1.72.3
@scalar/hono-api-reference@0.12.8
@scalar/nestjs-api-reference@1.2.25
@scalar/nextjs-api-reference@0.12.6
@scalar/nuxt@0.6.76
@scalar/starlight@0.2.10
@scalar/sveltekit@0.3.25
@scalar/agent-chat@0.12.39
@scalar/api-client-react@2.0.53
@scalar/api-reference-react@0.9.76
@scalar/asyncapi-validator@0.1.8
@scalar/blocks@0.4.2
@scalar/client-side-rendering@0.4.7
@scalar/core@0.5.39
@scalar/json-schema-validator@0.1.8
@scalar/mock-server@0.17.2
@scalar/nextjs-openapi@0.3.46
@scalar/oas-utils@0.20.8
@scalar/openapi-parser@0.29.9
@scalar/openapi-validator@0.1.8
@scalar/pre-post-request-scripts@0.4.51
@scalar/server-side-rendering@0.1.55
@scalar/sidebar@0.11.10
@scalar/snippetz@0.10.4
@scalarapi/docker-api-reference@0.6.10
Bundled API Reference
- @scalar/api-reference@1.72.3
@scalar/aspire@0.11.28
Bundled API Reference
- @scalar/api-reference@1.72.3
@scalar/aspnetcore@2.17.12
Bundled API Reference
- @scalar/api-reference@1.72.3
@scalar/aws-lambda@0.2.16
Bundled API Reference
- @scalar/api-reference@1.72.3
@scalar/azure-functions@0.2.22
Bundled API Reference
- @scalar/api-reference@1.72.3
@scalar/java-integration@0.6.76
Bundled API Reference
- @scalar/api-reference@1.72.3
scalar_api_reference@0.2.10
Bundled API Reference
- @scalar/api-reference@1.72.3
@scalar/mock-server-docker@0.2.66
scalar-app@1.1.36
Release 2026-09-29
Releases
@scalar/helpers@0.16.0
Minor Changes
- #10390: Add
unescapeJsonPointerSegmentto unescape JSON Pointer segments without decoding literal percent sequences. Preserve the existing URI-decoding behavior ofunescapeJsonPointer.
Patch Changes
- #10385: feat: add UTM parameters identifying the integration to the "Powered by Scalar" link
@scalar/openapi-to-markdown@1.4.0
Minor Changes
- #10394: Add opt-in linked schema rendering with caller-supplied model URLs for bounded operation, model, and webhook pages. Keep default expansion unchanged, retain reference siblings and inline schemas, and omit generated examples in linked mode.
@scalar/docusaurus@0.8.45
Patch Changes
-
#10375: Raise muted text, code-string blue and the deprecated schema row to the 4.5:1 text contrast minimum across the shipped themes
An accessibility audit turned up text that is legible in the default theme but not in several of the presets, which pair the default greys and blues with an off-white page background. Nine presets and four integration themes get a hue-preserving nudge:
- Light
--scalar-color-2now clears 4.5:1 on both the page background and the grey card background in every preset. That coversalternate,bluePlanet,marsandsaturn, which paired the default grey with an off-white page, andcustom-theme-starter,deepSpace,elysiajs,fastify,keplerandpurple, which copied the default grey and were left behind when the default moved. - Light
--scalar-color-blue, which colours code strings, now clears 4.5:1 on the grey example background inalternate,bluePlanet,deepSpace,elysiajs,fastify,keplerandmoon, and in the Docusaurus, NestJS, Next.js and SvelteKit themes. - Dark
--scalar-color-bluenow clears 4.5:1 inpurpleandsaturn, and in the Hono and Docusaurus dark themes. - Deprecated schema rows no longer fade their contents to 75% opacity, which had dropped their muted text to 3.0:1. The diagonal stripes, the strikethrough on the property name and the Deprecated badge still mark the row.
- The AsyncAPI send and receive pills blend their label further toward the body text colour, so they read against the tinted fill in every preset but
laserwave. --scalar-focus-colorsits further from the accent so a keyboard focus ring clears 3:1 on--scalar-background-3as well, which some presets use for the selected sidebar item.
laserwavestill misses in light mode, where it reuses its dark accents unchanged; bringing it up is a redesign of the preset rather than a nudge. - Light
-
#10373: fix(api-reference): correct selected state, focus ring, target size and reflow of reference controls
- Client library tabs no longer announce a featured tab as selected while a client picked from "More" is active
- The response card "Copy example value" button shows a keyboard focus ring again
- The schema tree toggle keeps its 24px hit box in narrow layouts
- The schema property copy-link button gets a 24px hit box without changing its layout
- Heading copy-link buttons no longer widen the page in narrow layouts
Rename the always-present layout container class and CSS container name from
narrow-references-containertoreferences-container.
@scalar/hono-api-reference@0.12.7
Patch Changes
-
#10375: Raise muted text, code-string blue and the deprecated schema row to the 4.5:1 text contrast minimum across the shipped themes
An accessibility audit turned up text that is legible in the default theme but not in several of the presets, which pair the default greys and blues with an off-white page background. Nine presets and four integration themes get a hue-preserving nudge:
- Light
--scalar-color-2now clears 4.5:1 on both the page background and the grey card background in every preset. That coversalternate,bluePlanet,marsandsaturn, which paired the default grey with an off-white page, andcustom-theme-starter,deepSpace,elysiajs,fastify,keplerandpurple, which copied the default grey and were left behind when the default moved. - Light
--scalar-color-blue, which colours code strings, now clears 4.5:1 on the grey example background inalternate,bluePlanet,deepSpace,elysiajs,fastify,keplerandmoon, and in the Docusaurus, NestJS, Next.js and SvelteKit themes. - Dark
--scalar-color-bluenow clears 4.5:1 inpurpleandsaturn, and in the Hono and Docusaurus dark themes. - Deprecated schema rows no longer fade their contents to 75% opacity, which had dropped their muted text to 3.0:1. The diagonal stripes, the strikethrough on the property name and the Deprecated badge still mark the row.
- The AsyncAPI send and receive pills blend their label further toward the body text colour, so they read against the tinted fill in every preset but
laserwave. --scalar-focus-colorsits further from the accent so a keyboard focus ring clears 3:1 on--scalar-background-3as well, which some presets use for the selected sidebar item.
laserwavestill misses in light mode, where it reuses its dark accents unchanged; bringing it up is a redesign of the preset rather than a nudge. - Light
@scalar/nestjs-api-reference@1.2.24
Patch Changes
-
#10375: Raise muted text, code-string blue and the deprecated schema row to the 4.5:1 text contrast minimum across the shipped themes
An accessibility audit turned up text that is legible in the default theme but not in several of the presets, which pair the default greys and blues with an off-white page background. Nine presets and four integration themes get a hue-preserving nudge:
- Light
--scalar-color-2now clears 4.5:1 on both the page background and the grey card background in every preset. That coversalternate,bluePlanet,marsandsaturn, which paired the default grey with an off-white page, andcustom-theme-starter,deepSpace,elysiajs,fastify,keplerandpurple, which copied the default grey and were left behind when the default moved. - Light
--scalar-color-blue, which colours code strings, now clears 4.5:1 on the grey example background inalternate,bluePlanet,deepSpace,elysiajs,fastify,keplerandmoon, and in the Docusaurus, NestJS, Next.js and SvelteKit themes. - Dark
--scalar-color-bluenow clears 4.5:1 inpurpleandsaturn, and in the Hono and Docusaurus dark themes. - Deprecated schema rows no longer fade their contents to 75% opacity, which had dropped their muted text to 3.0:1. The diagonal stripes, the strikethrough on the property name and the Deprecated badge still mark the row.
- The AsyncAPI send and receive pills blend their label further toward the body text colour, so they read against the tinted fill in every preset but
laserwave. --scalar-focus-colorsits further from the accent so a keyboard focus ring clears 3:1 on--scalar-background-3as well, which some presets use for the selected sidebar item.
laserwavestill misses in light mode, where it reuses its dark accents unchanged; bringing it up is a redesign of the preset rather than a nudge. - Light
@scalar/nextjs-api-reference@0.12.5
Patch Changes
-
#10375: Raise muted text, code-string blue and the deprecated schema row to the 4.5:1 text contrast minimum across the shipped themes
An accessibility audit turned up text that is legible in the default theme but not in several of the presets, which pair the default greys and blues with an off-white page background. Nine presets and four integration themes get a hue-preserving nudge:
- Light
--scalar-color-2now clears 4.5:1 on both the page background and the grey card background in every preset. That coversalternate,bluePlanet,marsandsaturn, which paired the default grey with an off-white page, andcustom-theme-starter,deepSpace,elysiajs,fastify,keplerandpurple, which copied the default grey and were left behind when the default moved. - Light
--scalar-color-blue, which colours code strings, now clears 4.5:1 on the grey example background inalternate,bluePlanet,deepSpace,elysiajs,fastify,keplerandmoon, and in the Docusaurus, NestJS, Next.js and SvelteKit themes. - Dark
--scalar-color-bluenow clears 4.5:1 inpurpleandsaturn, and in the Hono and Docusaurus dark themes. - Deprecated schema rows no longer fade their contents to 75% opacity, which had dropped their muted text to 3.0:1. The diagonal stripes, the strikethrough on the property name and the Deprecated badge still mark the row.
- The AsyncAPI send and receive pills blend their label further toward the body text colour, so they read against the tinted fill in every preset but
laserwave. --scalar-focus-colorsits further from the accent so a keyboard focus ring clears 3:1 on--scalar-background-3as well, which some presets use for the selected sidebar item.
laserwavestill misses in light mode, where it reuses its dark accents unchanged; bringing it up is a redesign of the preset rather than a nudge. - Light
@scalar/sveltekit@0.3.24
Patch Changes
-
#10375: Raise muted text, code-string blue and the deprecated schema row to the 4.5:1 text contrast minimum across the shipped themes
An accessibility audit turned up text that is legible in the default theme but not in several of the presets, which pair the default greys and blues with an off-white page background. Nine presets and four integration themes get a hue-preserving nudge:
- Light `--scalar-col...
Release 2026-09-25
Releases
@scalar/blocks@0.4.0
Minor Changes
-
#10192: Mock-server XML response bytes now use the shared schema-aware serializer instead of
json2xml, including attributes, namespaces, and root naming. Existing XML response snapshots may need updating. Supplied serialized XML remains unchanged.Generate XML examples from schema metadata, preserving attributes, namespaces, array wrappers, repeated elements, and OpenAPI 3.2 text and CDATA nodes. Use the same XML serialization for request bodies, code snippets, response examples, mock responses, and Markdown documentation. Preserve serialized media examples and escape schema string examples as element text.
Explain XML generation failures in response example panels, including the serialized-example escape hatch for large payloads. Expose XML generation failures in mock response headers with
X-Scalar-XML-Error, containing the first error diagnostic code. Report diagnostics to other consumers through a callback or the developer console, and format element-only descendants within mixed content without changing text values.
@scalar/helpers@0.15.0
Minor Changes
- #10344: Share JSON and property-name escaping for inline scripts between client-side and server-side rendering.
Patch Changes
-
#10192: Mock-server XML response bytes now use the shared schema-aware serializer instead of
json2xml, including attributes, namespaces, and root naming. Existing XML response snapshots may need updating. Supplied serialized XML remains unchanged.Generate XML examples from schema metadata, preserving attributes, namespaces, array wrappers, repeated elements, and OpenAPI 3.2 text and CDATA nodes. Use the same XML serialization for request bodies, code snippets, response examples, mock responses, and Markdown documentation. Preserve serialized media examples and escape schema string examples as element text.
Explain XML generation failures in response example panels, including the serialized-example escape hatch for large payloads. Expose XML generation failures in mock response headers with
X-Scalar-XML-Error, containing the first error diagnostic code. Report diagnostics to other consumers through a callback or the developer console, and format element-only descendants within mixed content without changing text values.
@scalar/mock-server@0.17.0
Minor Changes
-
#10192: Mock-server XML response bytes now use the shared schema-aware serializer instead of
json2xml, including attributes, namespaces, and root naming. Existing XML response snapshots may need updating. Supplied serialized XML remains unchanged.Generate XML examples from schema metadata, preserving attributes, namespaces, array wrappers, repeated elements, and OpenAPI 3.2 text and CDATA nodes. Use the same XML serialization for request bodies, code snippets, response examples, mock responses, and Markdown documentation. Preserve serialized media examples and escape schema string examples as element text.
Explain XML generation failures in response example panels, including the serialized-example escape hatch for large payloads. Expose XML generation failures in mock response headers with
X-Scalar-XML-Error, containing the first error diagnostic code. Report diagnostics to other consumers through a callback or the developer console, and format element-only descendants within mixed content without changing text values.
Patch Changes
-
#10343: Restrict AsyncAPI external references to the source directory and public network addresses, and preserve the source location for preloaded documents.
URL inputs to
createAsyncApiMockServeralso reject private network addresses, including localhost. Load local files or pass preloaded document content for local development. Docker documents supplied throughOPENAPI_DOCUMENTresolve relative references from their temporary/tmp/openapi.jsonor/tmp/openapi.yamlfile, confined to/tmp. Both OpenAPI and AsyncAPI Docker documents preserve the selected source origin. -
#10192: Apply edited XML bodies instead of their original serialized or data examples, render schema-free XML examples in Markdown, and share reference decoding and response provenance selection.
@scalar/openapi-to-markdown@1.3.0
Minor Changes
-
#10192: Mock-server XML response bytes now use the shared schema-aware serializer instead of
json2xml, including attributes, namespaces, and root naming. Existing XML response snapshots may need updating. Supplied serialized XML remains unchanged.Generate XML examples from schema metadata, preserving attributes, namespaces, array wrappers, repeated elements, and OpenAPI 3.2 text and CDATA nodes. Use the same XML serialization for request bodies, code snippets, response examples, mock responses, and Markdown documentation. Preserve serialized media examples and escape schema string examples as element text.
Explain XML generation failures in response example panels, including the serialized-example escape hatch for large payloads. Expose XML generation failures in mock response headers with
X-Scalar-XML-Error, containing the first error diagnostic code. Report diagnostics to other consumers through a callback or the developer console, and format element-only descendants within mixed content without changing text values.
Patch Changes
-
#10356: Load densely cross-linked API descriptions with far less memory. References are now linked after coercion, so TypeBox no longer copies the reference graph each time it checks a union or array. Stripe's API description loads in about 2 seconds with a peak of about 190 MB, down from about 17 seconds and 1.4 GB, so it now loads and renders with a 768 MB heap limit.
Coercion now checks each reference target in its own position, not through every reference that points to it. Before, a target that failed a strict schema check (for example, a schema with
oneOfreferences) could turn the reference into an empty schema and drop siblingx-extensions. Those references and extensions are now kept, so affected response schemas render in full.References to targets that coercion drops, such as a root-level
definitionsblock, now link to a copy cast as the schema, parameter, response or other object the reference stands in for, and their anchors resolve against the resource that contains them. A$ref: '#'inside a schema with an$idnow links to that schema.Coerce reference targets stored in extension data and schema siblings on fallback references before rendering, avoiding crashes from malformed fields while preserving recursive links.
-
#10192: Apply edited XML bodies instead of their original serialized or data examples, render schema-free XML examples in Markdown, and share reference decoding and response provenance selection.
@scalar/openapi-upgrader@0.4.0
Minor Changes
- #10346: Add
onIncompatible: 'ignore'for best-effort OpenAPI 3.2 upgrades. Apply available migrations and return the document despite compatibility issues, without mutating the input. Strict mode remains the default; malformed versions and clone errors still throw.
@scalar/workspace-store@0.67.0
Minor Changes
-
#10192: Mock-server XML response bytes now use the shared schema-aware serializer instead of
json2xml, including attributes, namespaces, and root naming. Existing XML response snapshots may need updating. Supplied serialized XML remains unchanged.Generate XML examples from schema metadata, preserving attributes, namespaces, array wrappers, repeated elements, and OpenAPI 3.2 text and CDATA nodes. Use the same XML serialization for request bodies, code snippets, response examples, mock responses, and Markdown documentation. Preserve serialized media examples and escape schema string examples as element text.
Explain XML generation failures in response example panels, including the serialized-example escape hatch for large payloads. Expose XML generation failures in mock response headers with
X-Scalar-XML-Error, containing the first error diagnostic code. Report diagnostics to other consumers through a callback or the developer console, and format element-only descendants within mixed content without changing text values.
Patch Changes
-
#10341: Avoid excessive processing time when encoding chunk names with long runs of dots.
-
#10342: Prevent prototype pollution when merging documents and writing nested values or JSON references, while preserving prototype-named JSON data properties.
Dot-separated mutations now reject new
constructorandprototypekeys, as well as__proto__, instead of creating these keys through inherited properties. -
#10334: Include optional form fields when selecting files or editing values, while preserving explicitly unchecked fields.
-
#10192: Apply edited XML bodies instead of their original serialized or data examples, render schema-free XML examples in Markdown, and share reference decoding and response provenance selection.
@scalar/starlight@0.2.8
Patch Changes
- #10349: Support Astro 7 in the Starlight integration.
@scalar/api-client@3.21.1
Patch Changes
- #10350: Keep long res...
