Changelog¶
asyncapi-viewer 2.1.1 (2026-09-27)¶
Changed¶
- The npm package no longer ships source maps: 255 kB instead of 879 kB packed (834 kB instead of
3.2 MB unpacked). The bundles no longer carry a
sourceMappingURLcomment, so browsers do not request a map that is not there.
Fixed¶
- The viewer no longer logs "unknown attribute 'resolved-theme' was ignored" for the attribute it sets on itself to reflect the theme.
- The MkDocs plugin now serves the packaged viewer even when
docs/assets/asyncapi-viewer/holds an older copy (the one the extension keeps for Zensical builds of the same site). Before, MkDocs published the stale files under the packaged files' integrity hashes and browsers blocked them.
Documentation¶
- New pages: Getting started, and Web pages and React (npm, script tag, React and TypeScript,
events, Next.js, other frameworks). The overview presents both packages and has screenshots,
also on Customising;
viewer/scripts/docs-screenshots.tsregenerates them. The demo adds Adeo's Kafka request/reply document with remote Avro schemas and the Streetlights example. The README is shorter and points to the site.
asyncapi-viewer 2.1.0 (2026-09-27)¶
Fixed¶
- Badge labels (
publish-labeland the other five),use-channel-address-as-identifierandparser-optionsnow take effect when they change after the document has loaded, as they do when React or another framework updates the element's attributes in place. Before, only a newsrcrebuilt the model.
Added¶
asyncapi-loadandasyncapi-errorevents on the element, fired once persrcafter the result has rendered, with the model and problems or the load error asdetail.- TypeScript types in the npm package: the element,
AsyncAPIViewerAttributes, the event types and the model;HTMLElementTagNameMapandHTMLElementEventMapentries; andasyncapi-viewer/reactfor JSX (onasyncapi-loadandonasyncapi-errorincluded). - A React 19 app in the Playwright suite (
viewer/test/e2e/react/) installs the packed npm package, type-checks against its types and checks JSX props, events,srcchanges, unmounting and a document from component state.
asyncapi-viewer 2.0.0 (2026-09-27)¶
Changed¶
- A viewer of our own. The wrapped
@asyncapi/react-componentis replaced by a web component that ships with the package: AsyncAPI 2 and 3, JSON and YAML,$refresolution, a normalised model, payload trees, example panels (generated from the schema when a message has none), bindings and security as chips with their details, a sidebar with search, tag filters and grouping, light and dark modes following the page, a container-based layout for documentation columns, and no inline script or style, soscript-src 'self'; style-src 'self'suffices. Typefaces follow Swagger UI (Titillium Web, Open Sans, Source Code Pro) with system fallbacks; the page opts in to loading them. - Assets are served from the site by default. The MkDocs plugin publishes the packaged
viewer under
assets/asyncapi-viewer/with Subresource Integrity hashes; the bare extension defaults to the jsDelivr copy of the same version.viewer_themenames the theme stylesheet;viewer_cssis a deprecated alias.embed_cssdoes nothing and warns. The runner script is gone. - Attributes are validated against the schema the viewer ships.
schemaIDis deprecated (warns, does nothing);parserOptionshonoursapplyTraitsonly. New attributestheme,themeToggleandsearchKeepSections. Kebab-case spellings are accepted. - Anchors inside the viewer are
<element id>--<section>--<item>.
Added¶
- Search index: for a local
srcthe build emits a hidden list of operation headings, channel addresses and message names inside the element (optionsearch_fallback, on by default;file_resolverdecides what counts as a local file; YAML needs theyamlextra). The viewer removes it on render. The build still never fetches documents. - Hosts without plugin hooks (Zensical, MkDocs 2.0) are first-class: the extension finds the
docs directory (
docs_dir, auto-detected as./docs), keeps a copy of the viewer under it (assets_dir) fresh and links it docs-relative, finds local documents there for the search index and warns when one is missing.python -m asyncapi_viewer copy-assets DIRmakes the first copy (Zensical lists files before it renders) and prints the hashes. renderer: legacykeeps the 1.x output for one major version.- A Customising page: two accents in a theme file, every design token, fonts, Material palettes.
Removed¶
- The weekly re-pin of the React component (
update-viewer.yml) and theunpkg.comdefaults.
asyncapi-viewer 1.2.0 (2026-09-26)¶
Changed¶
- Renamed to
asyncapi-viewer. PyPI packageasyncapi-viewer, importasyncapi_viewer, MkDocs plugin idasyncapi-viewer, Markdown extensionasyncapi_viewer, element<asyncapi-viewer>. The old names (asyncapi-tagplugin id,asyncapi_tagextension,<asyncapi-tag>element,asyncapi_tagimport via the shim) keep working until 3.0. Default container ids are nowasyncapi-viewer-N; containers carry both theasyncapi-viewerandasyncapi-tagclasses. - Repository renamed to
Weesho-Lapara/asyncapi-viewer; docs at https://weesho-lapara.github.io/asyncapi-viewer/.
Added¶
- Fenced-block syntax: a fence with language
asyncapiwhose body iskey: valuelines using the attribute names (the path may also follow the language). Works withfenced_codeandpymdownx.superfences, needs no configuration, and anasyncapifence nested inside a longer fence stays a code sample.
Fixed¶
- An
<asyncapi-tag>written inside an inline code span (backticks) was rendered instead of being shown as code.
asyncapi-tag 1.2.0 (2026-09-26)¶
- Deprecated shim: contains no code of its own, depends on
asyncapi-viewer>=1.2.0,<2and re-exports its modules under the old import name.
asyncapi-tag 1.1.0 (2026-09-25)¶
Changed¶
sidebarnow defaults tofalse, matching the viewer. Inside a documentation column the viewer uses its compact layout, where the sidebar hides behind a toggle button; pages that want it should setsidebar="true".- Network-level load errors name the URL that failed instead of the browser's terse message.
Fixed¶
- The viewer spilled over the right-hand table of contents in Material and floated its sidebar toggle
and overlay over the page. A small stylesheet (
embed_css, on by default) now keeps the viewer, its toggle and its sidebar inside the container, and below the theme's sticky header. - Only the first viewer on a page rendered on a full page load.
Added¶
- Plugin/extension option
embed_css. - Documentation site at https://weesho-lapara.github.io/asyncapi-tag/, built with the plugin itself (Material theme with instant navigation) and deployed from CI. A strict build of it runs on every pull request, under MkDocs and under Zensical.
- Zensical support documented: enable
markdown_extensions: [asyncapi_tag]; Zensical resolves relativesrcpaths per page on its own. - Weekly
update-viewerworkflow that re-pins@asyncapi/react-component, runs the tests and opens a pull request.scripts/update_viewer.pygained--checkand now records the bump in this file. - Weekly
compatworkflow that runs the suite against the MkDocs 2.0 pre-release and the newest Python-Markdown and Material, as an early warning. docsextra (pip install asyncapi-tag[docs]).
asyncapi-tag 1.0.0 (2026-09-25)¶
First release under the new name. The project was previously published as
mkdocs-asyncapi-tag-plugin; that package is now a deprecated shim depending on this one.
Changed¶
- Rewritten as a Python-Markdown extension (
asyncapi_tag) with a thin MkDocs plugin around it. The plugin idasyncapi-tagis unchanged. - The viewer (
@asyncapi/react-component) is pinned to 3.2.1 and loaded with Subresource Integrity instead of@latestwithout a hash. New plugin optionsviewer_js,viewer_css,viewer_js_integrity,viewer_css_integrityandload_assetsallow self-hosting. - The viewer stylesheet is now loaded; earlier versions rendered unstyled output.
- The viewer renders where the tag is placed, and every tag on a page is rendered, not only the first.
- Per-tag data is emitted in HTML data attributes and rendered by a single runner script. Nothing from the Markdown source is interpolated into JavaScript.
- Errors while fetching or rendering are shown inside the container instead of only in the console.
- Warnings (missing document, invalid attribute) go through the MkDocs logger, so
mkdocs build --strictcatches them. - Packaging moved to
pyproject.toml(PEP 621),src/layout, Python 3.9+.
Fixed¶
srcis resolved relative to the page like MkDocs links, or relative todocs_dirwhen it starts with/. Earlier versions emitted the build machine's absolute filesystem path.- YAML documents work: the document is passed to the viewer as text and parsed there. Supersedes #1 (thanks @mistermelphin) and fixes the JavaScript syntax error in 0.9.0 reported in #2 (thanks @busches).
- String and enum attributes (
publishLabel,showServers,parserOptions, ...) are passed through instead of being turned into booleans. Added the AsyncAPI v3 labels (sendLabel,receiveLabel,requestLabel,replyLabel),showMessageExamples,useChannelAddressAsIdentifier,schemaIDandid. - Self-closing tags, tags without attributes, multi-line tags and tags inside code blocks are handled correctly.
- The
testspackage is no longer installed into site-packages, and the unusedbeautifulsoup4dependency is gone.
Deprecated¶
- Plugin option
asyncapi_fileis ignored with a warning; MkDocs copies non-Markdown files itself.
mkdocs-asyncapi-tag-plugin 1.0.0 (2026-09-25)¶
- Deprecated shim: contains no code and depends on
asyncapi-tag>=1.0.0,<2.
mkdocs-asyncapi-tag-plugin 0.9.0 (2024-11-26)¶
- Attempted YAML support via js-yaml. The emitted JavaScript contained a syntax error, so the viewer did not render (issue #2).
mkdocs-asyncapi-tag-plugin 0.8.0 (2024-10-17)¶
- Last working release under the old name. JSON documents only.