{"ast":{"$$mdtype":"Tag","name":"article","attributes":{},"children":[{"$$mdtype":"Tag","name":"Heading","attributes":{"level":1,"id":"march-april-and-may-2025-updates-","__idx":0},"children":["March, April, and May 2025 updates 🚀"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["The past few months at Redocly have been packed with progress — from shipping ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Code Walkthroughs"]}," and ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["API Functions"]}," to delivering ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["llms.txt automation"]},", performance improvements, and deeper AI capabilities."," ","Here’s what we’ve been up to:"]},{"$$mdtype":"Tag","name":"hr","attributes":{},"children":[]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"changelog-and-release-process-improvements","__idx":1},"children":["Changelog and release process improvements"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["We ship ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["minor monthly releases"]}," of our new packages (",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["@redocly/realm"]},", ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["@redocly/revel"]},", and others)."," ","Throughout the month, we may also release ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["hotfix patches"]}," for important issues."," ","In addition, we provide a ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["“next” version channel"]}," where customers eager to try upcoming features can get early access."]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["This approach keeps our changelog more ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["digestible"]}," and makes it easier for teams to manage updates on their own schedule."]},{"$$mdtype":"Tag","name":"hr","attributes":{},"children":[]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"code-walkthroughs","__idx":2},"children":["Code walkthroughs"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Code Walkthroughs is one of our most powerful new features. It allows you to create ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["side-by-side explanations and functional code samples"]}," that stay synchronized as the reader scrolls."]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["You can also add ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["interactive elements"]}," — text inputs, toggles, downloads, previews — to make walkthroughs even more engaging."]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Example walkthroughs:"]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"Link","attributes":{"href":"/learn/arazzo/arazzo-walkthrough"},"children":["Explaining an Arazzo file"]}]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"Link","attributes":{"href":"/docs/realm/customization/api-functions/create-api-functions"},"children":["API functions tutorial"]}]}]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["As an experiment, we even tested whether LLMs could generate Code Walkthrough docs by giving them a link to our ",{"$$mdtype":"Tag","name":"Link","attributes":{"href":"/docs/realm/content/markdoc-tags/code-walkthrough"},"children":["code walkthrough docs"]},"."," ","The test was ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["successful"]}," — opening up new possibilities for automated doc generation!"]},{"$$mdtype":"Tag","name":"hr","attributes":{},"children":[]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"llmstxt-automation","__idx":3},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["llms.txt"]}," automation"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["We automatically generate an ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["llms.txt"]}," file — a ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["lightweight Markdown index"]}," that helps ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["LLMs understand your documentation structure"]},"."]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["This improves the ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["quality of AI-generated answers"]}," by making your docs more easily consumable."]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Example ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["llms.txt"]},":"]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"data-language":"md","header":{"controls":{"copy":{}}},"source":"# Redocly Documentation Index\n\n## API Functions\n- [API Functions Reference](/docs/realm/customization/api-functions/api-functions-reference.md)\n- [Creating API Functions](/docs/realm/customization/api-functions/create-api-functions.md)\n\n## Configuration\n- [SEO Configuration](/docs/realm/config/seo.md)\n","lang":"md"},"children":[]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["In addition, all of your Markdown (and OpenAPI) pages can be linked to in Markdown format by adding a ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":[".md"]}," to the end of the path."]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["You can configure ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["llms.txt"]}," generation — see ",{"$$mdtype":"Tag","name":"Link","attributes":{"href":"/docs/realm/config/seo#llmstxt-object"},"children":["SEO configuration docs"]},"."]},{"$$mdtype":"Tag","name":"hr","attributes":{},"children":[]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"api-functions","__idx":4},"children":["API functions"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["We added API functions which make it much easier to bring in content from first or third party APIs as well as to power forms and more."]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Example of an API function:"]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"data-language":"javascript","header":{"controls":{"copy":{}}},"source":"import type { ApiFunctionsContext } from '@redocly/config';\n\nexport default async function (\n  request: Request, \n  context: ApiFunctionsContext\n) {\n  // ...\n}\n","lang":"javascript"},"children":[]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Read more about ",{"$$mdtype":"Tag","name":"Link","attributes":{"href":"/docs/realm/customization/api-functions/api-functions-reference"},"children":["API functions"]}]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["This feature is available to Reef and Realm subscribers"]},{"$$mdtype":"Tag","name":"hr","attributes":{},"children":[]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"quality-of-life-improvements-","__idx":5},"children":["Quality of life improvements 🚀"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Configuration"]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Enabled ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["environment variables"]}," in any ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["redocly.yaml"]}," config value (previously limited to ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["rbac"]},", ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["developerOnboarding"]},")."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Introduced ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["concat"]}," Markdoc function for combining string values."]}]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Search & SEO"]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Added ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["file version filtering"]}," for Typesense search."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Added ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["customizable sitemap priorities"]},"."]}]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Performance"]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Virtualization in Catalog and Scorecard → faster performance on large API sets."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Reduced memory usage for large OpenAPI projects."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Partial loading for large OpenAPI descriptions."]}]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Usability"]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Improved Tab navigation in search → first Tab now focuses “Search with AI.”"]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Added “Internal server error” page."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Improved Complex badge detection in OpenAPI docs (",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["allOf"]}," nesting > 5 levels)."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Added ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["AI conversations UI"]}," with follow-up questions."]}]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Developer features"]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Added context to configure functions → programmatic setup of request values."]}]},{"$$mdtype":"Tag","name":"hr","attributes":{},"children":[]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"-build-redocly-with-us","__idx":6},"children":["🚀 Build Redocly with Us!"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["We're hiring software engineers to help shape the future of API documentation."]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["✅ Passionate about APIs?",{"$$mdtype":"Tag","name":"br","attributes":{},"children":[]},"✅ Excited by cutting-edge developer tools?"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Join our team and be part of something big."]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"Link","attributes":{"href":"https://redocly.com/careers#software-engineer"},"children":["Apply now →"]}]},{"$$mdtype":"Tag","name":"hr","attributes":{},"children":[]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"-roadmap-sneak-peek","__idx":7},"children":["🔮 Roadmap Sneak Peek"]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"coming-soon-built-in-analytics-","__idx":8},"children":["Coming soon: Built-in Analytics 📊"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Want to know which pages get viewed? Which searches return no results?"," ","You’re not alone — many customers have asked us for this."]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["While 3rd party analytics are helpful, they can be difficult to implement (compliance, privacy, etc)."," ","First-party analytics give you ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["direct visibility"]}," into how your docs are used — without adding extra tracking scripts or worrying about privacy policies."]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["We’re building first-class, built-in analytics to answer questions like:"]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":["How many users searched for “SSO” this week?"]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["How many users clicked into SSO docs?"]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["How many support conversations happened around SSO?"]}]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Example from our internal data:"]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":["9 users searched for SSO last week"]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["40 users read SSO docs"]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["2 support tickets were opened"]}]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["This kind of insight helps us measure ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["support deflection"]}," and ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["identify gaps"]}," in docs — and soon, you’ll be able to do the same."]},{"$$mdtype":"Tag","name":"hr","attributes":{},"children":[]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"better-asyncapi-docs","__idx":9},"children":["Better AsyncAPI docs"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["We support the official AsyncAPI docs plugin."," ","That's great, but there is still a lot to be desired."," ","We use AsyncAPI ourselves to describe websockets, message queues, and more."]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["We believe the documentation user experience can be improved greatly, and we're working on that."]},{"$$mdtype":"Tag","name":"hr","attributes":{},"children":[]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"-upcoming-features","__idx":10},"children":["🔮 Upcoming Features"]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Performance enhancements – Faster response times and improved stability"]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Catalog – We're doubling down here and building a richer catalog to allow you to describe more types of entities and relationships"]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Visual API workflows builder – A new way to model API interactions"]}]}]},"frontmatter":{"template":"../@theme/templates/BlogPost","title":"May 2025 updates","description":"Round-up of product features and enhancements from March, April, and May 2025","seo":{"title":"Q2 2025 Updates: March through May","description":"Round-up of product features and enhancements from March, April, and May 2025","image":"/content-assets/past-quarter-649cdb9bef66d2fc.png"},"author":"adam-altman","publishedDate":"2025-06-09","categories":["redocly:product-updates"],"image":"past-quarter.png"},"tagList":[],"title":"Q2 2025 Updates: March through May","lastModified":"2026-07-08T12:18:25.000Z"}