All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
- Added
headers
to the WebSocket API Reference - Fixed revalidate-all to include all basepaths (not just the pages) so that redirects are also revalidated.
- Fixed freezing API Playground when an onChange event is triggered by a literal.
- Fixed
content-type
in the cURL code snippets whenmultipart/form-data
provided. - Sort
Deprecated
andBeta
object properties to the bottom of each object in the API Reference. - devex: Added CI integration to revalidate all customer docs pages when a new frontend version is deployed.
- New
<Steps />
mdx component based on nextra's https://nextra.site/docs/guide/built-ins/steps. - Fixed double-outline issue around object properties in the API Reference when they are deep-linked.
- Added new color scheme options, including sidebar, header, and card background colors
- Enabled
excerpt
in frontmatter to render a short description under the title of each markdown page.
- Added a error state when the Websocket connection fails in API Playground.
- Moved the api-playground-enabled config to vercel edge config so that it can be toggled without a redeploy.
- Enabled PR Previews #480
- Render non-markdown as whitespace-pre-wrap to preserve single new-lines and spaces.
- Improve SEO by adding the main title as a suffix to the page title i.e.
Page Title — Fern Docs
. - Overflowing tabs in
<CodeBlocks/>
now use horizontal scrolling, with a hover-over bounce effect to indicate that the code is scrollable.
- Fixed issue with jsonparse throwing an error when a json property key contains special characters.
- Fixed revalidate-all issues, now it returns a 200, 207, or 500 status code.
- Fixed issues with JSX sanitization that was causing some HTML components to be removed from the rendered output.
- Reverted server-side syntax highlighting to client-side to reduce response sizes (lambda returns 502 when response is too large).
- Fixed broken API Playground proxy and sizing
- Added
<Tabs/>
and<Accordion/>
MDX components based on mintlify's tabs and accordion. - Safely remove JSX from markdown descriptions that are not supported by our frontend.
- Added outline to object properties in the API Reference when they are deep-linked
- Fixed routing issues where nonstandard characters in the URL would cause the page to 404. (encodeUri)
- Added integration with Axiom for logging and error tracking.
- Bumped /api/revalidate-all timeout to 300 seconds.
- cosmetic: Fixed version dropdown styling bug (where the dropdown was sticking to the logo)
- Fixed broken sitemap.xml and robots.txt which was preventing SEO indexing.
- Moved some API endpoints to Vercel Edge Functions to reduce latency and improve performance (including our home-rolled Fontawesome CDN)
- Enable staging environment (xxx.docs.staging.buildwithfern.com) for testing the
main
branch on all customer sites. - Improved how the ToC responds to user-scrolling by using a simple querySelector to find the active heading, rather than using useIntersectionObserver. This should make the ToC more responsive and less jumpy.
- Add error-boundary when MDX rendering fails.
- Prevent 500 errors: error boundary doesn't work on server-side rendering, so we need to introduce a /static and /dynamic version of the same page so that when errors are caught on the server-side, the user is redirected to the client-side version of the page.
- Fully removed react-markdown in favor of using next-mdx-remote to serialize all description fields. This allows us to use the same components that we already we use in markdown guides in the API reference. Also, this reduces the bundle size and improves client-side performance since all markdown-based descriptions are now compiled server-side. See #468.
- API Playground now supports WebSocket. See #470
- Fixed scrolling issue in mobile.
- Fixed random navigation regressions due to major shiki-related refactor.
- Resolved issues with shiki syntax highlighter causing the page to crash on some code samples because the server-generated HAST was too large. Switching to client-side rendering for code samples to avoid this issue.
- Resolved issues with scrolling navigation issues due to updated code sample rendering. There's still an outstanding bug with scrolling on mobile, which is currently jumpy and still being investigated.
- Added Changelog Page under API sections. See #469
- Replaced
react-syntax-highlighter
withshiki
for better performance syntax highlighting. See #463 for more details.
- Replaced FernMenu with FernDropdown for better accessibility and cleaner/consistent visual style. This affects the version dropdown and code sample dropdown.
- Hide Python Async example (for now) until we can provide a better selection state.
- When a language selection is changed, maintain the same visual scroll position by measuring the scroll position before and after the change.
- Added Go SDK to the code snippet language selection.
- Replaced the custom implementation of code snippets rendering for JSON and cURL with default syntax highlighter to improve performance and reduce complexity.
- Icon is now available as a markdown component. Usage (color and size are optional):
<Icon icon="check" color="green" size={4} />
Init changelog! 🙌
- Added line numbers to code samples.
- Added Content-Type toggle to endpoint that supports both application/json and multipart/form-data.