diff --git a/.eslintrc.cjs b/.eslintrc.cjs
deleted file mode 100644
index 8314914..0000000
--- a/.eslintrc.cjs
+++ /dev/null
@@ -1,19 +0,0 @@
-/** @type {import('eslint').Linter.Config} */
-module.exports = {
- root: true,
- parser: "@typescript-eslint/parser",
- parserOptions: {
- ecmaVersion: 2020,
- sourceType: "module",
- },
- plugins: ["solid"],
- extends: ["plugin:solid/typescript"],
- rules: {
- // Only Solid-specific rules — everything else handled by Biome
- "solid/reactivity": "error",
- "solid/no-destructure": "error",
- "solid/prefer-for": "warn",
- "solid/no-react-deps": "error",
- "solid/no-react-specific-props": "error",
- },
-};
diff --git a/.firecrawl/apis-for-ai.md b/.firecrawl/apis-for-ai.md
new file mode 100644
index 0000000..3e9ff2a
--- /dev/null
+++ b/.firecrawl/apis-for-ai.md
@@ -0,0 +1,2154 @@
+
+
+We value your privacy
+
+We use cookies to enhance your browsing experience, serve personalised ads or content, and analyse our traffic. By clicking "Accept All", you consent to our use of cookies.
+
+CustomiseReject AllAccept All
+
+Powered by [Visit CookieYes website](https://www.cookieyes.com/product/cookie-consent/?ref=cypbcyb&utm_source=cookie-banner&utm_medium=fl-branding)
+
+Customise Consent Preferences
+
+We use cookies to help you navigate efficiently and perform certain functions. You will find detailed information about all cookies under each consent category below.
+
+The cookies that are categorised as "Necessary" are stored on your browser as they are essential for enabling the basic functionalities of the site. ... Show more
+
+NecessaryAlways Active
+
+Necessary cookies are required to enable the basic features of this site, such as providing secure log-in or adjusting your consent preferences. These cookies do not store any personally identifiable data.
+
+- Cookie
+
+\_\_eoi
+
+- Duration
+
+6 months
+
+- Description
+
+Description is currently not available.
+
+
+- Cookie
+
+\_\_cf\_bm
+
+- Duration
+
+1 hour
+
+- Description
+
+This cookie, set by Cloudflare, is used to support Cloudflare Bot Management.
+
+
+- Cookie
+
+\_cfuvid
+
+- Duration
+
+session
+
+- Description
+
+Cloudflare sets this cookie to track users across sessions to optimize user experience by maintaining session consistency and providing personalized services
+
+
+- Cookie
+
+AWSALBCORS
+
+- Duration
+
+7 days
+
+- Description
+
+Amazon Web Services set this cookie for load balancing.
+
+
+- Cookie
+
+li\_gc
+
+- Duration
+
+6 months
+
+- Description
+
+Linkedin set this cookie for storing visitor's consent regarding using cookies for non-essential purposes.
+
+
+- Cookie
+
+\_\_hssrc
+
+- Duration
+
+session
+
+- Description
+
+This cookie is set by Hubspot whenever it changes the session cookie. The \_\_hssrc cookie set to 1 indicates that the user has restarted the browser, and if the cookie does not exist, it is assumed to be a new session.
+
+
+- Cookie
+
+\_\_hssc
+
+- Duration
+
+1 hour
+
+- Description
+
+HubSpot sets this cookie to keep track of sessions and to determine if HubSpot should increment the session number and timestamps in the \_\_hstc cookie.
+
+
+- Cookie
+
+AWSALB
+
+- Duration
+
+7 days
+
+- Description
+
+AWSALB is an application load balancer cookie set by Amazon Web Services to map the session to the target.
+
+
+- Cookie
+
+\_\_Secure-YNID
+
+- Duration
+
+6 months
+
+- Description
+
+Google cookie used to protect user security and prevent fraud, especially during the login process.
+
+
+- Cookie
+
+jwtOnAir
+
+- Duration
+
+1 month 1 day
+
+- Description
+
+Description is currently not available.
+
+
+- Cookie
+
+jwt
+
+- Duration
+
+1 month 1 day
+
+- Description
+
+No description available.
+
+
+- Cookie
+
+csrfToken
+
+- Duration
+
+1 month 1 day
+
+- Description
+
+Description is currently not available.
+
+
+- Cookie
+
+\_octo
+
+- Duration
+
+1 year
+
+- Description
+
+No description available.
+
+
+- Cookie
+
+logged\_in
+
+- Duration
+
+1 year
+
+- Description
+
+No description available.
+
+
+- Cookie
+
+csrf\_token
+
+- Duration
+
+session
+
+- Description
+
+No description available.
+
+
+- Cookie
+
+token\_v2
+
+- Duration
+
+1 day
+
+- Description
+
+Description is currently not available.
+
+
+- Cookie
+
+VISITOR\_PRIVACY\_METADATA
+
+- Duration
+
+6 months
+
+- Description
+
+YouTube sets this cookie to store the user's cookie consent state for the current domain.
+
+
+- Cookie
+
+yt.innertube::nextId
+
+- Duration
+
+Never Expires
+
+- Description
+
+YouTube sets this cookie to register a unique ID to store data on what videos from YouTube the user has seen.
+
+
+- Cookie
+
+yt.innertube::requests
+
+- Duration
+
+Never Expires
+
+- Description
+
+YouTube sets this cookie to register a unique ID to store data on what videos from YouTube the user has seen.
+
+
+- Cookie
+
+session\_tracker
+
+- Duration
+
+session
+
+- Description
+
+This cookie is set by the Reddit. This cookie is used to identify trusted web traffic. It also helps in adverstising on the website.
+
+
+- Cookie
+
+YSC
+
+- Duration
+
+session
+
+- Description
+
+YSC cookie is set by Youtube and is used to track the views of embedded videos on Youtube pages.
+
+
+- Cookie
+
+VISITOR\_INFO1\_LIVE
+
+- Duration
+
+6 months
+
+- Description
+
+A cookie set by YouTube to measure bandwidth that determines whether the user gets the new or old player interface.
+
+
+- Cookie
+
+yt-remote-connected-devices
+
+- Duration
+
+Never Expires
+
+- Description
+
+YouTube sets this cookie to store the user's video preferences using embedded YouTube videos.
+
+
+- Cookie
+
+ytidb::LAST\_RESULT\_ENTRY\_KEY
+
+- Duration
+
+Never Expires
+
+- Description
+
+The cookie ytidb::LAST\_RESULT\_ENTRY\_KEY is used by YouTube to store the last search result entry that was clicked by the user. This information is used to improve the user experience by providing more relevant search results in the future.
+
+
+- Cookie
+
+yt-remote-device-id
+
+- Duration
+
+Never Expires
+
+- Description
+
+YouTube sets this cookie to store the user's video preferences using embedded YouTube videos.
+
+
+- Cookie
+
+yt-remote-session-name
+
+- Duration
+
+session
+
+- Description
+
+The yt-remote-session-name cookie is used by YouTube to store the user's video player preferences using embedded YouTube video.
+
+
+- Cookie
+
+yt-remote-fast-check-period
+
+- Duration
+
+session
+
+- Description
+
+The yt-remote-fast-check-period cookie is used by YouTube to store the user's video player preferences for embedded YouTube videos.
+
+
+- Cookie
+
+yt-remote-session-app
+
+- Duration
+
+session
+
+- Description
+
+The yt-remote-session-app cookie is used by YouTube to store user preferences and information about the interface of the embedded YouTube video player.
+
+
+- Cookie
+
+yt-remote-cast-available
+
+- Duration
+
+session
+
+- Description
+
+The yt-remote-cast-available cookie is used to store the user's preferences regarding whether casting is available on their YouTube video player.
+
+
+- Cookie
+
+yt-remote-cast-installed
+
+- Duration
+
+session
+
+- Description
+
+The yt-remote-cast-installed cookie is used to store the user's video player preferences using embedded YouTube video.
+
+
+- Cookie
+
+currency
+
+- Duration
+
+session
+
+- Description
+
+This cookie is used to store the currency preference of the user.
+
+
+- Cookie
+
+cookieyes-consent
+
+- Duration
+
+1 year
+
+- Description
+
+CookieYes sets this cookie to remember users' consent preferences so that their preferences are respected on subsequent visits to this site. It does not collect or store any personal information about the site visitors.
+
+
+- Cookie
+
+test\_cookie
+
+- Duration
+
+15 minutes
+
+- Description
+
+doubleclick.net sets this cookie to determine if the user's browser supports cookies.
+
+
+- Cookie
+
+pxcts
+
+- Duration
+
+session
+
+- Description
+
+Description is currently not available.
+
+
+- Cookie
+
+bStore
+
+- Duration
+
+Less than a minute
+
+- Description
+
+Description is currently not available.
+
+
+- Cookie
+
+JSESSIONID
+
+- Duration
+
+session
+
+- Description
+
+New Relic uses this cookie to store a session identifier so that New Relic can monitor session counts for an application.
+
+
+- Cookie
+
+\_pxvid
+
+- Duration
+
+1 year
+
+- Description
+
+PerimeterX sets this cookie to detect fraud and bot activity.
+
+
+- Cookie
+
+\_px3
+
+- Duration
+
+6 minutes
+
+- Description
+
+This cookie is set by the Bloomberg to protect the site from BOT attacks.
+
+
+- Cookie
+
+cookietest
+
+- Duration
+
+session
+
+- Description
+
+The cookietest cookie is typically used to determine whether the user's browser accepts cookies, essential for website functionality and user experience.
+
+
+- Cookie
+
+cf\_use\_ob
+
+- Duration
+
+1 minute
+
+- Description
+
+Cloudflare sets this cookie to improve page load times and to disallow any security restrictions based on the visitor's IP address.
+
+
+Functional
+
+Functional cookies help perform certain functionalities like sharing the content of the website on social media platforms, collecting feedback, and other third-party features.
+
+- Cookie
+
+BCTempID
+
+- Duration
+
+10 minutes
+
+- Description
+
+No description available.
+
+
+- Cookie
+
+BCSessionID
+
+- Duration
+
+1 year 1 month 4 days
+
+- Description
+
+Blueconic sets this cookie as a unique identifier for the BlueConic profile.
+
+
+- Cookie
+
+lidc
+
+- Duration
+
+1 day
+
+- Description
+
+LinkedIn sets the lidc cookie to facilitate data center selection.
+
+
+- Cookie
+
+loid
+
+- Duration
+
+1 year 1 month 4 days
+
+- Description
+
+This cookie is set by the Reddit. The cookie enables the sharing of content from the website onto the social media platform.
+
+
+- Cookie
+
+lang
+
+- Duration
+
+session
+
+- Description
+
+LinkedIn sets this cookie to remember a user's language setting.
+
+
+Analytics
+
+Analytical cookies are used to understand how visitors interact with the website. These cookies help provide information on metrics such as the number of visitors, bounce rate, traffic source, etc.
+
+- Cookie
+
+taboola\_session\_id
+
+- Duration
+
+session
+
+- Description
+
+This cookie is owned by trc.taboola.com and is used to create a temporary session ID to prevent duplicate recommendations from being displayed on the page.
+
+
+- Cookie
+
+\_ga\_\*
+
+- Duration
+
+1 year 1 month 4 days
+
+- Description
+
+Google Analytics sets this cookie to store and count page views.
+
+
+- Cookie
+
+\_ga
+
+- Duration
+
+1 year 1 month 4 days
+
+- Description
+
+Google Analytics sets this cookie to calculate visitor, session and campaign data and track site usage for the site's analytics report. The cookie stores information anonymously and assigns a randomly generated number to recognise unique visitors.
+
+
+- Cookie
+
+\_\_hstc
+
+- Duration
+
+6 months
+
+- Description
+
+Hubspot set this main cookie for tracking visitors. It contains the domain, initial timestamp (first visit), last timestamp (last visit), current timestamp (this visit), and session number (increments for each subsequent session).
+
+
+- Cookie
+
+hubspotutk
+
+- Duration
+
+6 months
+
+- Description
+
+HubSpot sets this cookie to keep track of the visitors to the website. This cookie is passed to HubSpot on form submission and used when deduplicating contacts.
+
+
+- Cookie
+
+\_gh\_sess
+
+- Duration
+
+session
+
+- Description
+
+GitHub sets this cookie for temporary application and framework state between pages like what step the user is on in a multiple step form.
+
+
+- Cookie
+
+\_clck
+
+- Duration
+
+1 year
+
+- Description
+
+Microsoft Clarity sets this cookie to retain the browser's Clarity User ID and settings exclusive to that website. This guarantees that actions taken during subsequent visits to the same website will be linked to the same user ID.
+
+
+- Cookie
+
+\_clsk
+
+- Duration
+
+1 day
+
+- Description
+
+Microsoft Clarity sets this cookie to store and consolidate a user's pageviews into a single session recording.
+
+
+- Cookie
+
+mp\_\*\_mixpanel
+
+- Duration
+
+Never Expires
+
+- Description
+
+Mixpanel sets this cookie to determine how users use the website so that a good user experience can be provided.
+
+
+- Cookie
+
+browser\_id
+
+- Duration
+
+5 years
+
+- Description
+
+This cookie is used for identifying the visitor browser on re-visit to the website.
+
+
+- Cookie
+
+li\_alerts
+
+- Duration
+
+1 year
+
+- Description
+
+LinkedIn sets this cookie to track impressions of LinkedIn alerts, such as the Cookie Banner and to implement cool-off periods for display of alerts.
+
+
+- Cookie
+
+MR
+
+- Duration
+
+7 days
+
+- Description
+
+This cookie, set by Bing, is used to collect user information for analytics purposes.
+
+
+Performance
+
+Performance cookies are used to understand and analyse the key performance indexes of the website which helps in delivering a better user experience for the visitors.
+
+- Cookie
+
+\_uetsid
+
+- Duration
+
+1 day
+
+- Description
+
+Bing Ads sets this cookie to engage with a user that has previously visited the website.
+
+
+- Cookie
+
+\_uetvid
+
+- Duration
+
+1 year 24 days
+
+- Description
+
+Bing Ads sets this cookie to engage with a user that has previously visited the website.
+
+
+Advertisement
+
+Advertisement cookies are used to provide visitors with customised advertisements based on the pages you visited previously and to analyse the effectiveness of the ad campaigns.
+
+- Cookie
+
+t\_pt\_gid
+
+- Duration
+
+1 year
+
+- Description
+
+Description is currently not available.
+
+
+- Cookie
+
+muc\_ads
+
+- Duration
+
+1 year 1 month 4 days
+
+- Description
+
+Twitter sets this cookie to collect user behaviour and interaction data to optimize the website.
+
+
+- Cookie
+
+guest\_id\_marketing
+
+- Duration
+
+1 year 1 month 4 days
+
+- Description
+
+Twitter sets this cookie to identify and track the website visitor.
+
+
+- Cookie
+
+guest\_id\_ads
+
+- Duration
+
+1 year 1 month 4 days
+
+- Description
+
+Twitter sets this cookie to identify and track the website visitor.
+
+
+- Cookie
+
+personalization\_id
+
+- Duration
+
+1 year 1 month 4 days
+
+- Description
+
+Twitter sets this cookie to integrate and share features for social media and also store information about how the user uses the website, for tracking and targeting.
+
+
+- Cookie
+
+guest\_id
+
+- Duration
+
+1 year 1 month 4 days
+
+- Description
+
+Twitter sets this cookie to identify and track the website visitor. It registers if a user is signed in to the Twitter platform and collects information about ad preferences.
+
+
+- Cookie
+
+bcookie
+
+- Duration
+
+1 year
+
+- Description
+
+LinkedIn sets this cookie from LinkedIn share buttons and ad tags to recognize browser IDs.
+
+
+- Cookie
+
+\_gcl\_au
+
+- Duration
+
+3 months
+
+- Description
+
+Google Tag Manager sets this cookie to experiment advertisement efficiency of websites using their services.
+
+
+- Cookie
+
+t\_gid
+
+- Duration
+
+1 year
+
+- Description
+
+Taboola sets this cookie by assigning a specific ID for attribution and reporting purposes and to tailor recommendations to the user.
+
+
+- Cookie
+
+\_fbp
+
+- Duration
+
+3 months
+
+- Description
+
+Facebook sets this cookie to store and track interactions.
+
+
+- Cookie
+
+MUID
+
+- Duration
+
+1 year 24 days
+
+- Description
+
+Bing sets this cookie to recognise unique web browsers visiting Microsoft sites. This cookie is used for advertising, site analytics, and other operations.
+
+
+- Cookie
+
+bscookie
+
+- Duration
+
+1 year
+
+- Description
+
+LinkedIn sets this cookie to store performed actions on the website.
+
+
+Uncategorised
+
+Other uncategorised cookies are those that are being analysed and have not been classified into a category as yet.
+
+No cookies to display.
+
+Reject AllSave My PreferencesAccept All
+
+Powered by [Visit CookieYes website](https://www.cookieyes.com/product/cookie-consent/?ref=cypbcyb&utm_source=cookie-banner&utm_medium=sl-branding)
+
+TNS
+
+
+OK
+
+
+As a JavaScript developer, what non-React tools do you use most often?
+
+✓
+
+Angular
+
+0%
+
+✓
+
+Astro
+
+0%
+
+✓
+
+Svelte
+
+0%
+
+✓
+
+Vue.js
+
+0%
+
+✓
+
+Other
+
+0%
+
+✓
+
+I only use React
+
+0%
+
+✓
+
+I don't use JavaScript
+
+0%
+
+Thanks for your opinion! Subscribe below to get the final results, published
+exclusively in our TNS Update newsletter:
+
+
+SUBMIT
+
+[The New Stack Frontpage](https://thenewstack.io/)
+
+NEW! Try Stackie AI
+
+
+LOGIN
+
+ARCHITECTURE
+
+
+[Cloud Native Ecosystem](https://thenewstack.io/cloud-native/) [Containers](https://thenewstack.io/containers/) [Databases](https://thenewstack.io/databases/) [Edge Computing](https://thenewstack.io/edge-computing/) [Infrastructure as Code](https://thenewstack.io/infrastructure-as-code/) [Linux](https://thenewstack.io/linux/) [Microservices](https://thenewstack.io/microservices/) [Open Source](https://thenewstack.io/open-source/) [Networking](https://thenewstack.io/networking/) [Storage](https://thenewstack.io/storage/)
+
+ENGINEERING
+
+
+[AI](https://thenewstack.io/ai/) [AI Engineering](https://thenewstack.io/ai-engineering/) [API Management](https://thenewstack.io/api-management/) [Backend development](https://thenewstack.io/backend-development/) [Data](https://thenewstack.io/data/) [Frontend Development](https://thenewstack.io/frontend-development/) [Large Language Models](https://thenewstack.io/llm/) [Security](https://thenewstack.io/security/) [Software Development](https://thenewstack.io/software-development/) [WebAssembly](https://thenewstack.io/webassembly/)
+
+OPERATIONS
+
+
+[AI Operations](https://thenewstack.io/ai-operations/) [CI/CD](https://thenewstack.io/ci-cd/) [Cloud Services](https://thenewstack.io/cloud-services/) [DevOps](https://thenewstack.io/devops/) [Kubernetes](https://thenewstack.io/kubernetes/) [Observability](https://thenewstack.io/observability/) [Operations](https://thenewstack.io/operations/) [Platform Engineering](https://thenewstack.io/platform-engineering/)
+
+PROGRAMMING
+
+
+[C++](https://thenewstack.io/c/) [Developer tools](https://thenewstack.io/developer-tools/) [Go](https://thenewstack.io/go/) [Java](https://thenewstack.io/java/) [JavaScript](https://thenewstack.io/javascript/) [Programming Languages](https://thenewstack.io/programming-languages/) [Python](https://thenewstack.io/python/) [Rust](https://thenewstack.io/rust/) [TypeScript](https://thenewstack.io/typescript/)
+
+CHANNELS
+
+
+[Podcasts](https://thenewstack.io/podcasts/) [Ebooks](https://thenewstack.io/ebooks/) [Events](https://thenewstack.io/events/) [Webinars](https://thenewstack.io/webinars/) [Newsletter](https://thenewstack.io/newsletter/) [TNS RSS Feeds](https://thenewstack.io/rss-feeds/)
+
+THE NEW STACK
+
+
+[About / Contact](https://thenewstack.io/about-and-contact-info/) [Sponsors](https://thenewstack.io/sponsors/) [Advertise With Us](https://thenewstack.io/sponsorship/) [Contributions](https://thenewstack.io/contributions/)
+
+[PODCASTS](https://thenewstack.io/podcasts/) [EBOOKS](https://thenewstack.io/ebooks/) [EVENTS](https://thenewstack.io/events/) [WEBINARS](https://thenewstack.io/webinars/) [NEWSLETTER](https://thenewstack.io/newsletter/) [CONTRIBUTE](https://thenewstack.io/contributions/)
+
+[ARCHITECTURE](https://thenewstack.io/its-time-to-build-apis-for-ai-not-just-for-developers/#) [ENGINEERING](https://thenewstack.io/its-time-to-build-apis-for-ai-not-just-for-developers/#) [OPERATIONS](https://thenewstack.io/its-time-to-build-apis-for-ai-not-just-for-developers/#) [PROGRAMMING](https://thenewstack.io/its-time-to-build-apis-for-ai-not-just-for-developers/#)
+
+[Cloud Native Ecosystem](https://thenewstack.io/cloud-native/) [Containers](https://thenewstack.io/containers/) [Databases](https://thenewstack.io/databases/) [Edge Computing](https://thenewstack.io/edge-computing/) [Infrastructure as Code](https://thenewstack.io/infrastructure-as-code/) [Linux](https://thenewstack.io/linux/) [Microservices](https://thenewstack.io/microservices/) [Open Source](https://thenewstack.io/open-source/) [Networking](https://thenewstack.io/networking/) [Storage](https://thenewstack.io/storage/)
+
+[Why WebAssembly won't replace Kubernetes but makes Helm more secure\\
+\\
+\\
+Mar 21st 2026 8:45am, by \\
+B. Cameron Gain](https://thenewstack.io/helm-webassembly-kubernetes-security/)
+
+[Why the ‘glorified host’ for AI is exactly the Kubernetes we need\\
+\\
+\\
+Mar 20th 2026 9:00am, by \\
+Danielle Cook](https://thenewstack.io/kubernetes-glorified-ai-host/)
+
+[Linux kernel scale is swamping an already-flawed CVE system\\
+\\
+\\
+Mar 20th 2026 4:30am, by \\
+Jed Salazar](https://thenewstack.io/linux-kernel-cve-system/)
+
+[Sampling: the philosopher's stone of distributed tracing\\
+\\
+\\
+Mar 19th 2026 8:00am, by \\
+Michele Mancioppi](https://thenewstack.io/distributed-tracing-sampling-opentelemetry/)
+
+[What is KubeVirt and why it’s growing\\
+\\
+\\
+Mar 17th 2026 9:00am, by \\
+Tiago Castro](https://thenewstack.io/kubevirt-live-migration-mayastor/)
+
+[Edera spent years calling KVM less secure. Here's why it changed its mind.\\
+\\
+\\
+Mar 25th 2026 2:22pm, by \\
+Steven J. Vaughan-Nichols](https://thenewstack.io/edera-adds-kvm-support/)
+
+[Minimus aims to solve one of open-source's long-festering problems\\
+\\
+\\
+Mar 24th 2026 3:00am, by \\
+Adrian Bridgwater](https://thenewstack.io/minimus-open-source-container-security/)
+
+[How to deploy Pi-Hole with Docker and stop ads on every device on your LAN\\
+\\
+\\
+Mar 23rd 2026 7:44am, by \\
+Jack Wallen](https://thenewstack.io/pihole-docker-network-adblocking/)
+
+[Chainguard has a fix for the open source packages your AI agents keep grabbing\\
+\\
+\\
+Mar 18th 2026 9:24am, by \\
+Darryl K. Taft](https://thenewstack.io/chainguard-repository-ai-agents/)
+
+[Chainguard thinks most DevOps teams are solving container security the hard way\\
+\\
+\\
+Mar 17th 2026 1:04pm, by \\
+Steven J. Vaughan-Nichols](https://thenewstack.io/chainguard-os-packages-containers/)
+
+[Scaling Btrfs to petabytes in production: a 74% cost reduction story\\
+\\
+\\
+Mar 18th 2026 5:00am, by \\
+Motiejus Jakštys](https://thenewstack.io/btrfs-petabyte-cost-reduction/)
+
+[The “files are all you need” debate misses what's actually happening in agent memory architecture\\
+\\
+\\
+Mar 13th 2026 5:00am, by \\
+Mikiko Bazeley](https://thenewstack.io/ai-agent-memory-architecture/)
+
+[With GridGain acquisition, MariaDB bets on in-memory computing and Apache Ignite\\
+\\
+\\
+Mar 10th 2026 6:47am, by \\
+Paul Sawers](https://thenewstack.io/with-gridgain-acquisition-mariadb-bets-on-in-memory-computing-and-apache-ignite/)
+
+[Moving AI apps from prototype to production requires enterprise-grade postgres infrastructure\\
+\\
+\\
+Mar 9th 2026 7:00am, by \\
+Meredith Shubel](https://thenewstack.io/ai-prototype-to-production-postgres/)
+
+[Why the "bible" of data systems is getting a massive rewrite for 2026\\
+\\
+\\
+Mar 4th 2026 5:00am, by \\
+Cynthia Dunlop](https://thenewstack.io/data-intensive-applications-rewrite-2026/)
+
+[Developers are coding to a moving target, and nobody knows where AI lands next\\
+\\
+\\
+Mar 3rd 2026 7:33am, by \\
+Adrian Bridgwater](https://thenewstack.io/developers-coding-moving-target-ai/)
+
+[Cloudflare’s new Markdown support shows how the web is evolving for AI agents\\
+\\
+\\
+Mar 2nd 2026 4:30am, by \\
+David Eastman](https://thenewstack.io/intent-engineering-ai-agents/)
+
+[React Server Components Vulnerability Found\\
+\\
+\\
+Dec 6th 2025 7:00am, by \\
+Loraine Lawson](https://thenewstack.io/react-server-components-vulnerability-found/)
+
+[Kubernetes at the Edge: Lessons From GE HealthCare’s Edge Strategy\\
+\\
+\\
+Nov 24th 2025 10:00am, by \\
+Vicki Walker](https://thenewstack.io/kubernetes-at-the-edge-lessons-from-ge-healthcares-edge-strategy/)
+
+[Building a Cloud-to-Edge Architecture Across 40K Global Locations\\
+\\
+\\
+Nov 20th 2025 10:00am, by \\
+Vicki Walker](https://thenewstack.io/building-a-cloud-to-edge-architecture-across-40k-global-locations/)
+
+[The operational gap is real, and it's getting wider\\
+\\
+\\
+Mar 26th 2026 8:00am, by \\
+Yevgeny Pats](https://thenewstack.io/closing-cloud-operational-gap/)
+
+[Why "automated" infrastructure might cost more than you think\\
+\\
+\\
+Feb 24th 2026 4:00am, by \\
+Justyn Roberts](https://thenewstack.io/automated-infrastructure-hidden-costs/)
+
+[Why 40% of AI projects will be canceled by 2027 (and how to stay in the other 60%)\\
+\\
+\\
+Feb 13th 2026 6:00am, by \\
+Alex Drag](https://thenewstack.io/agentic-ai-connectivity-platform/)
+
+[Durable Execution: Build reliable software in an unreliable world\\
+\\
+\\
+Feb 2nd 2026 3:23pm, by \\
+Charles Humble](https://thenewstack.io/temporal-durable-execution-platform/)
+
+[Terraform challenger Formae expands to more clouds\\
+\\
+\\
+Jan 28th 2026 6:00am, by \\
+Joab Jackson](https://thenewstack.io/terraform-competitor-formae-expands-to-more-clouds/)
+
+[Edera spent years calling KVM less secure. Here's why it changed its mind.\\
+\\
+\\
+Mar 25th 2026 2:22pm, by \\
+Steven J. Vaughan-Nichols](https://thenewstack.io/edera-adds-kvm-support/)
+
+[Linux kernel scale is swamping an already-flawed CVE system\\
+\\
+\\
+Mar 20th 2026 4:30am, by \\
+Jed Salazar](https://thenewstack.io/linux-kernel-cve-system/)
+
+[Scaling Btrfs to petabytes in production: a 74% cost reduction story\\
+\\
+\\
+Mar 18th 2026 5:00am, by \\
+Motiejus Jakštys](https://thenewstack.io/btrfs-petabyte-cost-reduction/)
+
+[Chainguard thinks most DevOps teams are solving container security the hard way\\
+\\
+\\
+Mar 17th 2026 1:04pm, by \\
+Steven J. Vaughan-Nichols](https://thenewstack.io/chainguard-os-packages-containers/)
+
+[Tromjaro is a free-trade Linux distribution with plenty to offer\\
+\\
+\\
+Mar 14th 2026 11:00am, by \\
+Jack Wallen](https://thenewstack.io/tromjaro-is-a-free-trade-linux-distribution-with-plenty-to-offer/)
+
+[Tetrate launches open source marketplace to simplify Envoy adoption\\
+\\
+\\
+Mar 11th 2026 10:52am, by \\
+Adrian Bridgwater](https://thenewstack.io/tetrate-built-on-envoy/)
+
+[OpenTelemetry roadmap: Sampling rates and collector improvements ahead\\
+\\
+\\
+Feb 24th 2026 11:00am, by \\
+B. Cameron Gain](https://thenewstack.io/opentelemetry-roadmap-sampling-rates-and-collector-improvements-ahead/)
+
+[Merging To Test Is Killing Your Microservices Velocity\\
+\\
+\\
+Dec 16th 2025 7:00am, by \\
+Arjun Iyer](https://thenewstack.io/merging-to-test-is-killing-your-microservices-velocity/)
+
+[IBM’s Confluent Acquisition Is About Event-Driven AI\\
+\\
+\\
+Dec 11th 2025 6:00am, by \\
+Joab Jackson](https://thenewstack.io/ibms-confluent-acquisition-is-about-event-driven-ai/)
+
+[Deploy Agentic AI Workflows With Kubernetes and Terraform\\
+\\
+\\
+Nov 26th 2025 9:00am, by \\
+Oladimeji Sowole](https://thenewstack.io/deploy-agentic-ai-workflows-with-kubernetes-and-terraform/)
+
+[Edera spent years calling KVM less secure. Here's why it changed its mind.\\
+\\
+\\
+Mar 25th 2026 2:22pm, by \\
+Steven J. Vaughan-Nichols](https://thenewstack.io/edera-adds-kvm-support/)
+
+[Broadcom donates Velero to CNCF — and it could reshape how Kubernetes users handle backup and disaster recovery\\
+\\
+\\
+Mar 24th 2026 8:38am, by \\
+B. Cameron Gain](https://thenewstack.io/broadcom-velero-cncf-kubernetes/)
+
+[Minimus aims to solve one of open-source's long-festering problems\\
+\\
+\\
+Mar 24th 2026 3:00am, by \\
+Adrian Bridgwater](https://thenewstack.io/minimus-open-source-container-security/)
+
+[China is winning the open source AI race — but a US company still controls everything underneath\\
+\\
+\\
+Mar 20th 2026 10:46am, by \\
+Paul Sawers](https://thenewstack.io/china-leads-open-ai-models/)
+
+[From pillars to platform: How open observability data is changing the industry\\
+\\
+\\
+Mar 20th 2026 6:00am, by \\
+Ted Young](https://thenewstack.io/open-observability-ai-platforms/)
+
+[How to deploy Pi-Hole with Docker and stop ads on every device on your LAN\\
+\\
+\\
+Mar 23rd 2026 7:44am, by \\
+Jack Wallen](https://thenewstack.io/pihole-docker-network-adblocking/)
+
+[Why flat Kubernetes networks fail at scale\\
+\\
+\\
+Mar 20th 2026 7:00am, by \\
+Reza Ramezanpour](https://thenewstack.io/kubernetes-network-security-hierarchies/)
+
+[GSMA Open Gateway offers developers one API for 300+ mobile networks\\
+\\
+\\
+Mar 4th 2026 10:26am, by \\
+Adrian Bridgwater](https://thenewstack.io/gsma-open-gateway-developers/)
+
+[How Homepage simplifies monitoring your self-hosted services\\
+\\
+\\
+Feb 6th 2026 8:00am, by \\
+Jack Wallen](https://thenewstack.io/how-homepage-simplifies-monitoring-your-self-hosted-services/)
+
+[S3 is the new network: Rethinking data architecture for the cloud era\\
+\\
+\\
+Feb 2nd 2026 4:00am, by \\
+Max Liu](https://thenewstack.io/tidb-x-open-source-database/)
+
+[Scaling Btrfs to petabytes in production: a 74% cost reduction story\\
+\\
+\\
+Mar 18th 2026 5:00am, by \\
+Motiejus Jakštys](https://thenewstack.io/btrfs-petabyte-cost-reduction/)
+
+[What is KubeVirt and why it’s growing\\
+\\
+\\
+Mar 17th 2026 9:00am, by \\
+Tiago Castro](https://thenewstack.io/kubevirt-live-migration-mayastor/)
+
+[S3 is the new network: Rethinking data architecture for the cloud era\\
+\\
+\\
+Feb 2nd 2026 4:00am, by \\
+Max Liu](https://thenewstack.io/tidb-x-open-source-database/)
+
+[Agoda’s secret to 50x scale: Getting the database basics right\\
+\\
+\\
+Jan 28th 2026 7:00am, by \\
+Cynthia Dunlop](https://thenewstack.io/agodas-secret-to-50x-scale-getting-the-database-basics-right/)
+
+[Chainguard EmeritOSS backs MinIO, other orphaned projects\\
+\\
+\\
+Jan 27th 2026 6:15am, by \\
+Steven J. Vaughan-Nichols](https://thenewstack.io/chainguard-emeritoss-backs-minio-other-orphaned-projects/)
+
+[AI](https://thenewstack.io/ai/) [AI Engineering](https://thenewstack.io/ai-engineering/) [API Management](https://thenewstack.io/api-management/) [Backend development](https://thenewstack.io/backend-development/) [Data](https://thenewstack.io/data/) [Frontend Development](https://thenewstack.io/frontend-development/) [Large Language Models](https://thenewstack.io/llm/) [Security](https://thenewstack.io/security/) [Software Development](https://thenewstack.io/software-development/) [WebAssembly](https://thenewstack.io/webassembly/)
+
+[Claude can now open apps, click buttons, and complete tasks on your Mac — but Anthropic says risks remain](https://thenewstack.io/claude-computer-use/)
+
+Mar 25th 2026 4:36am, by [Meredith Shubel](https://thenewstack.io/author/mshubel/ "Posts by Meredith Shubel")
+
+[Ai2 launches MolmoWeb, an open-source web agent](https://thenewstack.io/ai2-launches-molmoweb-an-open-source-web-agent/)
+
+Mar 24th 2026 9:07am, by [Frederic Lardinois](https://thenewstack.io/author/frederic-lardinois/ "Posts by Frederic Lardinois")
+
+[Four prompt engineering patterns every developer should know — and why "draw a cat" explains them all](https://thenewstack.io/prompt-engineering-for-developers/)
+
+Mar 23rd 2026 11:00am, by [Jessica Wachtel](https://thenewstack.io/author/jessica-wachtel/ "Posts by Jessica Wachtel")
+
+[China is winning the open source AI race — but a US company still controls everything underneath](https://thenewstack.io/china-leads-open-ai-models/)
+
+Mar 20th 2026 10:46am, by [Paul Sawers](https://thenewstack.io/author/paul-sawers/ "Posts by Paul Sawers")
+
+[Cursor's Composer 2 beats Opus 4.6 on coding benchmarks at a fraction of the price](https://thenewstack.io/cursors-composer-2-beats-opus/)
+
+Mar 19th 2026 8:39am, by [Frederic Lardinois](https://thenewstack.io/author/frederic-lardinois/ "Posts by Frederic Lardinois")
+
+[Why online stores keep showing the wrong products — and why tensors fix it](https://thenewstack.io/tensor-ranking-product-discovery/)
+
+Mar 25th 2026 6:00am, by [Tim Young](https://thenewstack.io/author/tim-young/ "Posts by Tim Young")
+
+[OpenClaw's biggest security flaw is why Jentic Mini exists](https://thenewstack.io/openclaw-is-a-security-mess-jentic-wants-to-fix-it/)
+
+Mar 25th 2026 5:00am, by [Darryl K. Taft](https://thenewstack.io/author/darryl-taft/ "Posts by Darryl K. Taft")
+
+[Why most AI projects fail after the demo actually works](https://thenewstack.io/ai-demo-to-production/)
+
+Mar 25th 2026 4:00am, by [Oladimeji Sowole](https://thenewstack.io/author/oladimeji-sowole/ "Posts by Oladimeji Sowole")
+
+[PwC's AI agents are now your consultants -- whether you're ready or not](https://thenewstack.io/pwcs-ai-agents-are-now-your-consultants-whether-youre-ready-or-not/)
+
+Mar 24th 2026 6:00am, by [Darryl K. Taft](https://thenewstack.io/author/darryl-taft/ "Posts by Darryl K. Taft")
+
+[Four prompt engineering patterns every developer should know — and why "draw a cat" explains them all](https://thenewstack.io/prompt-engineering-for-developers/)
+
+Mar 23rd 2026 11:00am, by [Jessica Wachtel](https://thenewstack.io/author/jessica-wachtel/ "Posts by Jessica Wachtel")
+
+[MCP is everywhere, but don't panic. Here's why your existing APIs still matter.](https://thenewstack.io/api-mcp-agent-integration/)
+
+Mar 23rd 2026 5:00am, by [Camille Crowell-Lee](https://thenewstack.io/author/camille-crowell-lee/ "Posts by Camille Crowell-Lee") and [Morgan Fine](https://thenewstack.io/author/morgan-fine/ "Posts by Morgan Fine")
+
+[Before you let AI agents loose, you’d better know what they’re capable of](https://thenewstack.io/risk-mitigation-agentic-ai/)
+
+Mar 12th 2026 1:22pm, by [Charles Humble](https://thenewstack.io/author/charles-humble/ "Posts by Charles Humble")
+
+[GSMA Open Gateway offers developers one API for 300+ mobile networks](https://thenewstack.io/gsma-open-gateway-developers/)
+
+Mar 4th 2026 10:26am, by [Adrian Bridgwater](https://thenewstack.io/author/adrian-bridgwater/ "Posts by Adrian Bridgwater")
+
+[Your AI strategy is built on layers of API sediment](https://thenewstack.io/ai-strategy-api-sediment/)
+
+Feb 17th 2026 9:37am, by [Charles Humble](https://thenewstack.io/author/charles-humble/ "Posts by Charles Humble")
+
+[Solving the Problems That Accompany API Sprawl With AI](https://thenewstack.io/solving-the-problems-that-accompany-api-sprawl-with-ai/)
+
+Jan 15th 2026 1:00pm, by [Heather Joslyn](https://thenewstack.io/author/hjoslyn/ "Posts by Heather Joslyn")
+
+[Backend Development in 2026: What's Changed, What Matters, and What to Learn Next](https://thenewstack.io/introduction-to-backend-development/)
+
+Mar 19th 2026 11:37am, by [TNS Staff](https://thenewstack.io/author/tns-staff/ "Posts by TNS Staff")
+
+[How To Get DNS Right: A Guide to Common Failure Modes](https://thenewstack.io/how-to-get-dns-right-a-guide-to-common-failure-modes/)
+
+Dec 24th 2025 8:00am, by [Sheldon Pereira](https://thenewstack.io/author/sheldon-pereira/ "Posts by Sheldon Pereira") and [Denton Chikura](https://thenewstack.io/author/denton-chikura/ "Posts by Denton Chikura")
+
+[Combining Rust and Python for High-Performance AI Systems](https://thenewstack.io/combining-rust-and-python-for-high-performance-ai-systems/)
+
+Dec 3rd 2025 1:00pm, by [Zziwa Raymond Ian](https://thenewstack.io/author/zziwa-raymond/ "Posts by Zziwa Raymond Ian")
+
+[How MCP Uses Streamable HTTP for Real-Time AI Tool Interaction](https://thenewstack.io/how-mcp-uses-streamable-http-for-real-time-ai-tool-interaction/)
+
+Aug 18th 2025 10:34am, by [Janakiram MSV](https://thenewstack.io/author/janakiram/ "Posts by Janakiram MSV")
+
+[A Backend for Frontend: Watt for Node.js Simplifies Operations](https://thenewstack.io/a-backend-for-frontend-watt-for-node-js-simplifies-operations/)
+
+Aug 14th 2025 6:00am, by [Loraine Lawson](https://thenewstack.io/author/loraine-lawson/ "Posts by Loraine Lawson")
+
+[Fivetran donates its SQLMesh data transformation framework to the Linux Foundation](https://thenewstack.io/fivetran-donates-sqlmesh-lf/)
+
+Mar 25th 2026 7:39am, by [Frederic Lardinois](https://thenewstack.io/author/frederic-lardinois/ "Posts by Frederic Lardinois")
+
+[Ex-Snowflake engineers say there's a blind spot in data engineering — so they built Tower to fix it](https://thenewstack.io/tower-python-data-pipelines/)
+
+Mar 15th 2026 7:00am, by [Paul Sawers](https://thenewstack.io/author/paul-sawers/ "Posts by Paul Sawers")
+
+[Why the "bible" of data systems is getting a massive rewrite for 2026](https://thenewstack.io/data-intensive-applications-rewrite-2026/)
+
+Mar 4th 2026 5:00am, by [Cynthia Dunlop](https://thenewstack.io/author/cynthiadunlop/ "Posts by Cynthia Dunlop")
+
+[How to clone a drive to an image with Clonezilla](https://thenewstack.io/how-to-clone-a-drive-to-an-image-with-clonezilla/)
+
+Mar 3rd 2026 1:00pm, by [Jack Wallen](https://thenewstack.io/author/jack-wallen/ "Posts by Jack Wallen")
+
+[Databases weren’t built for agent sprawl – SurrealDB wants to fix it](https://thenewstack.io/surrealdb-3-ai-agents/)
+
+Feb 24th 2026 2:07pm, by [Paul Sawers](https://thenewstack.io/author/paul-sawers/ "Posts by Paul Sawers")
+
+[WebMCP turns any Chrome web page into an MCP server for AI agents](https://thenewstack.io/webmcp-chrome-ai-agents/)
+
+Mar 17th 2026 11:50am, by [David Eastman](https://thenewstack.io/author/david-eastman/ "Posts by David Eastman")
+
+[Confluent adds A2A support, anomaly detection, and Queues for Kafka in major platform update](https://thenewstack.io/confluent-kafka-a2a-agents/)
+
+Mar 3rd 2026 10:21am, by [Jelani Harper](https://thenewstack.io/author/jelani-harper/ "Posts by Jelani Harper")
+
+[Google's Chrome browser moves to a two-week release cycle](https://thenewstack.io/chrome-two-week-releases/)
+
+Mar 3rd 2026 9:00am, by [Frederic Lardinois](https://thenewstack.io/author/frederic-lardinois/ "Posts by Frederic Lardinois")
+
+[Meta gave React its own foundation. But it's not letting go just yet.](https://thenewstack.io/react-foundation-open-source-governance/)
+
+Mar 3rd 2026 4:00am, by [Paul Sawers](https://thenewstack.io/author/paul-sawers/ "Posts by Paul Sawers")
+
+[The shift left hangover: Why modern platforms are shifting down to cure developer fatigue](https://thenewstack.io/shift-left-hangover-steve-corndell/)
+
+Jan 30th 2026 6:22pm, by [Steve Corndell](https://thenewstack.io/author/steve-corndell/ "Posts by Steve Corndell")
+
+[Why most AI projects fail after the demo actually works](https://thenewstack.io/ai-demo-to-production/)
+
+Mar 25th 2026 4:00am, by [Oladimeji Sowole](https://thenewstack.io/author/oladimeji-sowole/ "Posts by Oladimeji Sowole")
+
+[IBM, Red Hat, and Google just donated a Kubernetes blueprint for LLM inference to the CNCF](https://thenewstack.io/llm-d-cncf-kubernetes-inference/)
+
+Mar 24th 2026 8:20am, by [Steven J. Vaughan-Nichols](https://thenewstack.io/author/sjvn/ "Posts by Steven J. Vaughan-Nichols")
+
+[Andrej Karpathy's 630-line Python script ran 50 experiments overnight without any human input](https://thenewstack.io/karpathy-autonomous-experiment-loop/)
+
+Mar 14th 2026 5:00am, by [Janakiram MSV](https://thenewstack.io/author/janakiram/ "Posts by Janakiram MSV")
+
+["Self-healing" IT? HPE research explores how AI-trained models can catch silent infrastructure failures](https://thenewstack.io/hpe-self-healing-ai-infrastructure/)
+
+Mar 11th 2026 9:37am, by [Jennifer Riggins](https://thenewstack.io/author/jennifer-riggins/ "Posts by Jennifer Riggins")
+
+[How context rot drags down AI and LLM results for enterprises, and how to fix it](https://thenewstack.io/context-rot-enterprise-ai-llms/)
+
+Mar 9th 2026 9:00am, by [Todd R. Weiss](https://thenewstack.io/author/todd-r-weiss/ "Posts by Todd R. Weiss")
+
+[OpenClaw's biggest security flaw is why Jentic Mini exists](https://thenewstack.io/openclaw-is-a-security-mess-jentic-wants-to-fix-it/)
+
+Mar 25th 2026 5:00am, by [Darryl K. Taft](https://thenewstack.io/author/darryl-taft/ "Posts by Darryl K. Taft")
+
+[WebAssembly could solve AI agents' most dangerous security gap](https://thenewstack.io/webassembly-sandboxing-ai-agents/)
+
+Mar 24th 2026 9:01am, by [B. Cameron Gain](https://thenewstack.io/author/bruce-gain/ "Posts by B. Cameron Gain")
+
+[Minimus aims to solve one of open-source's long-festering problems](https://thenewstack.io/minimus-open-source-container-security/)
+
+Mar 24th 2026 3:00am, by [Adrian Bridgwater](https://thenewstack.io/author/adrian-bridgwater/ "Posts by Adrian Bridgwater")
+
+[What a security audit of 22,511 AI coding skills found lurking in the code](https://thenewstack.io/ai-agent-skills-security/)
+
+Mar 22nd 2026 7:00am, by [Darryl K. Taft](https://thenewstack.io/author/darryl-taft/ "Posts by Darryl K. Taft")
+
+[Why WebAssembly won't replace Kubernetes but makes Helm more secure](https://thenewstack.io/helm-webassembly-kubernetes-security/)
+
+Mar 21st 2026 8:45am, by [B. Cameron Gain](https://thenewstack.io/author/bruce-gain/ "Posts by B. Cameron Gain")
+
+[Why online stores keep showing the wrong products — and why tensors fix it](https://thenewstack.io/tensor-ranking-product-discovery/)
+
+Mar 25th 2026 6:00am, by [Tim Young](https://thenewstack.io/author/tim-young/ "Posts by Tim Young")
+
+[Will AI force code to evolve or make it extinct?](https://thenewstack.io/ai-programming-languages-future/)
+
+Mar 22nd 2026 6:00am, by [David Cassel](https://thenewstack.io/author/destiny/ "Posts by David Cassel")
+
+[Backend Development in 2026: What's Changed, What Matters, and What to Learn Next](https://thenewstack.io/introduction-to-backend-development/)
+
+Mar 19th 2026 11:37am, by [TNS Staff](https://thenewstack.io/author/tns-staff/ "Posts by TNS Staff")
+
+[Jellyfish AI development study: The real sting has yet to land](https://thenewstack.io/jellyfish-ai-engineering-trends/)
+
+Mar 19th 2026 11:01am, by [Adrian Bridgwater](https://thenewstack.io/author/adrian-bridgwater/ "Posts by Adrian Bridgwater")
+
+[Sampling: the philosopher's stone of distributed tracing](https://thenewstack.io/distributed-tracing-sampling-opentelemetry/)
+
+Mar 19th 2026 8:00am, by [Michele Mancioppi](https://thenewstack.io/author/michele-mancioppi/ "Posts by Michele Mancioppi")
+
+[WebAssembly could solve AI agents' most dangerous security gap](https://thenewstack.io/webassembly-sandboxing-ai-agents/)
+
+Mar 24th 2026 9:01am, by [B. Cameron Gain](https://thenewstack.io/author/bruce-gain/ "Posts by B. Cameron Gain")
+
+[How WebAssembly plugins simplify Kubernetes extensibility](https://thenewstack.io/how-webassembly-plugins-simplify-kubernetes-extensibility/)
+
+Mar 3rd 2026 2:00pm, by [B. Cameron Gain](https://thenewstack.io/author/bruce-gain/ "Posts by B. Cameron Gain")
+
+[WebAssembly is everywhere. Here's how it works](https://thenewstack.io/webassembly-is-everywhere-heres-how-it-works/)
+
+Feb 25th 2026 11:00am, by [Jessica Wachtel](https://thenewstack.io/author/jessica-wachtel/ "Posts by Jessica Wachtel")
+
+[Wasm vs. JavaScript: Who wins at a million rows?](https://thenewstack.io/wasm-vs-javascript-who-wins-at-a-million-rows/)
+
+Feb 22nd 2026 6:00am, by [Jessica Wachtel](https://thenewstack.io/author/jessica-wachtel/ "Posts by Jessica Wachtel")
+
+[How WebAssembly and Web Workers prevent UI freezes](https://thenewstack.io/how-webassembly-and-web-workers-prevent-ui-freezes/)
+
+Feb 7th 2026 9:00am, by [Jessica Wachtel](https://thenewstack.io/author/jessica-wachtel/ "Posts by Jessica Wachtel")
+
+[AI Operations](https://thenewstack.io/ai-operations/) [CI/CD](https://thenewstack.io/ci-cd/) [Cloud Services](https://thenewstack.io/cloud-services/) [DevOps](https://thenewstack.io/devops/) [Kubernetes](https://thenewstack.io/kubernetes/) [Observability](https://thenewstack.io/observability/) [Operations](https://thenewstack.io/operations/) [Platform Engineering](https://thenewstack.io/platform-engineering/)
+
+[HPE's AI agents cut root cause analysis time in half](https://thenewstack.io/hpes-ai-agents-cut-root-cause-analysis-time-in-half/)
+
+Mar 25th 2026 7:14am, by
+Jennifer Riggins
+
+[Why most AI projects fail after the demo actually works](https://thenewstack.io/ai-demo-to-production/)
+
+Mar 25th 2026 4:00am, by
+Oladimeji Sowole
+
+[From pillars to platform: How open observability data is changing the industry](https://thenewstack.io/open-observability-ai-platforms/)
+
+Mar 20th 2026 6:00am, by
+Ted Young
+
+[Building a Kubernetes-native pattern for AI infrastructure at scale](https://thenewstack.io/kubernetes-native-ai-infrastructure/)
+
+Mar 19th 2026 5:00am, by
+Sachi Desai
+
+[The AI blind spot debt: the hidden cost killing your innovation strategy](https://thenewstack.io/ai-blind-spot-debt/)
+
+Mar 17th 2026 7:00am, by
+Yuval Fernbach
+
+[Enterprise dev teams are about to hit a wall. And CI pipelines can't save them.](https://thenewstack.io/ai-agent-validation-bottleneck/)
+
+Mar 26th 2026 7:00am, by
+Anirudh Ramanathan
+
+[This simple infrastructure gap is holding back AI productivity](https://thenewstack.io/this-simple-infrastructure-gap-is-holding-back-ai-productivity/)
+
+Feb 22nd 2026 8:00am, by
+Charlotte Fleming
+
+[Ramp’s Inspect shows closed-loop AI agents are software’s future](https://thenewstack.io/ramps-inspect-shows-closed-loop-ai-agents-are-softwares-future/)
+
+Jan 29th 2026 11:00am, by
+Arjun Iyer
+
+[QCon chat: Is agentic AI killing continuous integration?](https://thenewstack.io/qcon-chat-is-agentic-ai-killing-continuous-integration/)
+
+Jan 27th 2026 6:00am, by
+Joab Jackson
+
+[Async Rust: Pinning demystified](https://thenewstack.io/async-rust-pinning-demystified/)
+
+Jan 26th 2026 11:00am, by
+Anshul Gupta
+
+[A practical guide to the 6 categories of AI cloud infrastructure in 2026](https://thenewstack.io/ai-cloud-taxonomy-2026/)
+
+Mar 15th 2026 5:00am, by
+Janakiram MSV
+
+[Runpod report: Qwen has overtaken Meta's Llama as the most-deployed self-hosted LLM](https://thenewstack.io/runpod-ai-infrastructure-reality/)
+
+Mar 12th 2026 6:00am, by
+Adrian Bridgwater
+
+[Snowflake Cortex Code CLI adds dbt and Apache Airflow support for AI-powered data pipelines](https://thenewstack.io/snowflake-cortex-code-dbt-airflow/)
+
+Mar 8th 2026 6:00am, by
+Jelani Harper
+
+[Databases weren’t built for agent sprawl – SurrealDB wants to fix it](https://thenewstack.io/surrealdb-3-ai-agents/)
+
+Feb 24th 2026 2:07pm, by
+Paul Sawers
+
+[Rising identity complexity: How CISOs can prevent it from becoming an attacker’s roadmap](https://thenewstack.io/ciso-identity-complexity-strategy/)
+
+Feb 19th 2026 12:47pm, by
+Jay Reddy
+
+[One developer, team power: The future of AI-driven DevSecOps](https://thenewstack.io/future-ai-driven-devsecops/)
+
+Mar 5th 2026 2:29pm, by
+Bryan Ross
+
+[Observability platform migration guide: Prometheus, OpenTelemetry, and Fluent Bit](https://thenewstack.io/observability-platform-migration-guide/)
+
+Feb 26th 2026 7:28am, by
+Katie Greenley
+
+[Most platform teams build products, but they don’t know it](https://thenewstack.io/internal-platforms-are-products/)
+
+Feb 24th 2026 9:00am, by
+Oleg Danilyuk
+
+[Why "automated" infrastructure might cost more than you think](https://thenewstack.io/automated-infrastructure-hidden-costs/)
+
+Feb 24th 2026 4:00am, by
+Justyn Roberts
+
+[The essential shift every ITOps leader must make to survive an unrelenting stream of incidents](https://thenewstack.io/modernizing-itops-incident-management/)
+
+Feb 19th 2026 1:46pm, by
+Ariel Russo
+
+[Your Kubernetes isn't ready for AI workloads, and drift is the reason](https://thenewstack.io/ai-workloads-kubernetes-infrastructure-drift/)
+
+Mar 25th 2026 8:43am, by
+TNS Staff
+
+[Broadcom donates Velero to CNCF — and it could reshape how Kubernetes users handle backup and disaster recovery](https://thenewstack.io/broadcom-velero-cncf-kubernetes/)
+
+Mar 24th 2026 8:38am, by
+B. Cameron Gain
+
+[IBM, Red Hat, and Google just donated a Kubernetes blueprint for LLM inference to the CNCF](https://thenewstack.io/llm-d-cncf-kubernetes-inference/)
+
+Mar 24th 2026 8:20am, by
+Steven J. Vaughan-Nichols
+
+[Why WebAssembly won't replace Kubernetes but makes Helm more secure](https://thenewstack.io/helm-webassembly-kubernetes-security/)
+
+Mar 21st 2026 8:45am, by
+B. Cameron Gain
+
+[Why the ‘glorified host’ for AI is exactly the Kubernetes we need](https://thenewstack.io/kubernetes-glorified-ai-host/)
+
+Mar 20th 2026 9:00am, by
+Danielle Cook
+
+[From pillars to platform: How open observability data is changing the industry](https://thenewstack.io/open-observability-ai-platforms/)
+
+Mar 20th 2026 6:00am, by
+Ted Young
+
+[Sampling: the philosopher's stone of distributed tracing](https://thenewstack.io/distributed-tracing-sampling-opentelemetry/)
+
+Mar 19th 2026 8:00am, by
+Michele Mancioppi
+
+[Why your observability bill keeps growing (and it's not your vendor's fault)](https://thenewstack.io/why-observability-bills-grow/)
+
+Mar 18th 2026 4:00am, by
+Juraci Paixão Kröhling
+
+[Why agentic AI stalls in production — and how a control plane fixes it](https://thenewstack.io/agentic-ai-control-plane-production/)
+
+Mar 17th 2026 6:00am, by
+TNS Staff
+
+[Why AI workloads are breaking traditional Kubernetes observability strategies](https://thenewstack.io/ai-kubernetes-observability-practices/)
+
+Mar 16th 2026 7:04am, by
+TNS Staff
+
+[The operational gap is real, and it's getting wider](https://thenewstack.io/closing-cloud-operational-gap/)
+
+Mar 26th 2026 8:00am, by
+Yevgeny Pats
+
+[HPE's AI agents cut root cause analysis time in half](https://thenewstack.io/hpes-ai-agents-cut-root-cause-analysis-time-in-half/)
+
+Mar 25th 2026 7:14am, by
+Jennifer Riggins
+
+[WebAssembly could solve AI agents' most dangerous security gap](https://thenewstack.io/webassembly-sandboxing-ai-agents/)
+
+Mar 24th 2026 9:01am, by
+B. Cameron Gain
+
+[Kubernetes co-founder Brendan Burns: AI-generated code will become as invisible as assembly](https://thenewstack.io/ai-generated-code-invisible/)
+
+Mar 24th 2026 7:20am, by
+Frederic Lardinois
+
+[Exton Linux's light version will "enlighten" you](https://thenewstack.io/exton-linuxs-light-version-will-enlighten-you/)
+
+Mar 24th 2026 5:43am, by
+Jack Wallen
+
+[The operational gap is real, and it's getting wider](https://thenewstack.io/closing-cloud-operational-gap/)
+
+Mar 26th 2026 8:00am, by
+Yevgeny Pats
+
+[Enterprise dev teams are about to hit a wall. And CI pipelines can't save them.](https://thenewstack.io/ai-agent-validation-bottleneck/)
+
+Mar 26th 2026 7:00am, by
+Anirudh Ramanathan
+
+[Your Kubernetes isn't ready for AI workloads, and drift is the reason](https://thenewstack.io/ai-workloads-kubernetes-infrastructure-drift/)
+
+Mar 25th 2026 8:43am, by
+TNS Staff
+
+[Capital One deprecated an AI tool it once championed. Its DevEx chief says that's the point.](https://thenewstack.io/capital-one-developer-enablement/)
+
+Mar 18th 2026 8:02am, by
+Jennifer Riggins
+
+[From monolith to global mesh: How Uber standardized ML at scale](https://thenewstack.io/uber-standardized-ml-scale/)
+
+Mar 17th 2026 4:00am, by
+Eric Wang and Ying Zheng
+
+[C++](https://thenewstack.io/c/) [Developer tools](https://thenewstack.io/developer-tools/) [Go](https://thenewstack.io/go/) [Java](https://thenewstack.io/java/) [JavaScript](https://thenewstack.io/javascript/) [Programming Languages](https://thenewstack.io/programming-languages/) [Python](https://thenewstack.io/python/) [Rust](https://thenewstack.io/rust/) [TypeScript](https://thenewstack.io/typescript/)
+
+[Open source USearch library jumpstarts ScyllaDB vector search](https://thenewstack.io/open-source-usearch-library-jumpstarts-scylladb-vector-search/)
+
+Feb 5th 2026 12:00pm, by
+Jelani Harper
+
+[AWS WAF vs. Google Cloud Armor: A Multicloud Security Showdown](https://thenewstack.io/aws-waf-vs-google-cloud-armor-a-multicloud-security-showdown/)
+
+Nov 25th 2025 10:00am, by
+Advait Patel
+
+[Goodbye Dashboards: Agents Deliver Answers, Not Just Reports](https://thenewstack.io/goodbye-dashboards-agents-deliver-answers-not-just-reports/)
+
+Nov 23rd 2025 9:00am, by
+Ketan Karkhanis
+
+[Rust vs. C++: a Modern Take on Performance and Safety](https://thenewstack.io/rust-vs-c-a-modern-take-on-performance-and-safety/)
+
+Oct 22nd 2025 2:00pm, by
+Zziwa Raymond Ian
+
+[Building a Real-Time System Monitor in Rust Terminal](https://thenewstack.io/building-a-real-time-system-monitor-in-rust-terminal/)
+
+Oct 15th 2025 7:05am, by
+Tinega Onchari
+
+[OpenAI acquires Astral to bring open source Python developer tools to Codex — but details are still fuzzy](https://thenewstack.io/openai-astral-acquisition/)
+
+Mar 20th 2026 7:33am, by
+Meredith Shubel
+
+[Jellyfish AI development study: The real sting has yet to land](https://thenewstack.io/jellyfish-ai-engineering-trends/)
+
+Mar 19th 2026 11:01am, by
+Adrian Bridgwater
+
+[Sauce Labs wants to solve an AI-created problem nobody wanted to work on](https://thenewstack.io/ai-test-authoring-launch/)
+
+Mar 18th 2026 9:19am, by
+Frederic Lardinois
+
+[Capital One deprecated an AI tool it once championed. Its DevEx chief says that's the point.](https://thenewstack.io/capital-one-developer-enablement/)
+
+Mar 18th 2026 8:02am, by
+Jennifer Riggins
+
+[Cursor built a fleet of security agents to solve a familiar frustration](https://thenewstack.io/cursor-open-sources-security-agents/)
+
+Mar 16th 2026 11:17am, by
+Frederic Lardinois
+
+[Go Experts: 'I Don't Want to Maintain AI-Generated Code'](https://thenewstack.io/go-experts-i-dont-want-to-maintain-ai-generated-code/)
+
+Sep 28th 2025 6:00am, by
+David Cassel
+
+[How To Run Kubernetes Commands in Go: Steps and Best Practices](https://thenewstack.io/how-to-run-kubernetes-commands-in-go-steps-and-best-practices/)
+
+Jun 27th 2025 8:00am, by
+Sunny Yadav
+
+[Prepare Your Mac for Go Development](https://thenewstack.io/prepare-your-mac-for-go-development/)
+
+Apr 12th 2025 7:00am, by
+Damon M. Garn
+
+[Pagoda: A Web Development Starter Kit for Go Programmers](https://thenewstack.io/pagoda-a-web-development-starter-kit-for-go-programmers/)
+
+Mar 19th 2025 6:10am, by
+Loraine Lawson
+
+[Microsoft TypeScript Devs Explain Why They Chose Go Over Rust, C#](https://thenewstack.io/microsoft-typescript-devs-explain-why-they-chose-go-over-rust-c/)
+
+Mar 18th 2025 7:00am, by
+David Cassel
+
+[Java 26 lands without an LTS badge. Here's why developers should care anyway.](https://thenewstack.io/java-26-performance-ai/)
+
+Mar 18th 2026 9:35am, by
+Darryl K. Taft
+
+[62% of enterprises now use Java to power AI apps](https://thenewstack.io/2026-java-ai-apps/)
+
+Feb 10th 2026 12:58pm, by
+Darryl K. Taft
+
+[BellSoft bets Java expertise can beat hardened container wave](https://thenewstack.io/bellsoft-bets-java-expertise-can-beat-hardened-container-wave/)
+
+Jan 26th 2026 3:00pm, by
+Darryl K. Taft
+
+[Java Developers Get Multiple Paths To Building AI Agents](https://thenewstack.io/java-developers-get-multiple-paths-to-building-ai-agents/)
+
+Dec 26th 2025 7:02am, by
+Darryl K. Taft
+
+[Your Enterprise AI Strategy Must Start With Java, Not Python](https://thenewstack.io/your-enterprise-ai-strategy-must-start-with-java-not-python/)
+
+Dec 22nd 2025 1:00pm, by
+Michael Coté
+
+[TypeScript 6.0 RC arrives as a bridge to a faster future](https://thenewstack.io/typescript-6-0-rc-arrives-as-a-bridge-to-a-faster-future/)
+
+Mar 14th 2026 9:00am, by
+Darryl K. Taft
+
+[WebAssembly is everywhere. Here's how it works](https://thenewstack.io/webassembly-is-everywhere-heres-how-it-works/)
+
+Feb 25th 2026 11:00am, by
+Jessica Wachtel
+
+[Wasm vs. JavaScript: Who wins at a million rows?](https://thenewstack.io/wasm-vs-javascript-who-wins-at-a-million-rows/)
+
+Feb 22nd 2026 6:00am, by
+Jessica Wachtel
+
+[Arcjet reaches v1.0, promises stable security for JavaScript apps](https://thenewstack.io/arcjet-reaches-v1-0-promises-stable-security-for-javascript-apps/)
+
+Feb 14th 2026 7:00am, by
+Darryl K. Taft
+
+[How WebAssembly and Web Workers prevent UI freezes](https://thenewstack.io/how-webassembly-and-web-workers-prevent-ui-freezes/)
+
+Feb 7th 2026 9:00am, by
+Jessica Wachtel
+
+[Will AI force code to evolve or make it extinct?](https://thenewstack.io/ai-programming-languages-future/)
+
+Mar 22nd 2026 6:00am, by
+David Cassel
+
+[Java 26 lands without an LTS badge. Here's why developers should care anyway.](https://thenewstack.io/java-26-performance-ai/)
+
+Mar 18th 2026 9:35am, by
+Darryl K. Taft
+
+[TypeScript 6.0 RC arrives as a bridge to a faster future](https://thenewstack.io/typescript-6-0-rc-arrives-as-a-bridge-to-a-faster-future/)
+
+Mar 14th 2026 9:00am, by
+Darryl K. Taft
+
+[Nearly half of all companies now use Rust in production, survey finds](https://thenewstack.io/rust-enterprise-developers/)
+
+Mar 6th 2026 10:45am, by
+Darryl K. Taft
+
+[Statistical language R is making a comeback against Python](https://thenewstack.io/statistical-language-r-is-making-a-comeback-against-python/)
+
+Feb 12th 2026 2:57pm, by
+Darryl K. Taft
+
+[OpenAI acquires Astral to bring open source Python developer tools to Codex — but details are still fuzzy](https://thenewstack.io/openai-astral-acquisition/)
+
+Mar 20th 2026 7:33am, by
+Meredith Shubel
+
+[Python virtual environments: isolation without the chaos](https://thenewstack.io/python-virtual-environments-isolation-without-the-chaos/)
+
+Feb 16th 2026 7:00am, by
+Jessica Wachtel
+
+[Statistical language R is making a comeback against Python](https://thenewstack.io/statistical-language-r-is-making-a-comeback-against-python/)
+
+Feb 12th 2026 2:57pm, by
+Darryl K. Taft
+
+[Arcjet's Python SDK Embeds Security in Code](https://thenewstack.io/arcjets-python-sdk-embeds-security-in-code/)
+
+Jan 16th 2026 2:00pm, by
+Darryl K. Taft
+
+[2025: The Year of the Return of the Ada Programming Language?](https://thenewstack.io/2025-the-year-of-the-return-of-the-ada-programming-language/)
+
+Jan 14th 2026 4:00pm, by
+Darryl K. Taft
+
+[Nearly half of all companies now use Rust in production, survey finds](https://thenewstack.io/rust-enterprise-developers/)
+
+Mar 6th 2026 10:45am, by
+Darryl K. Taft
+
+[Wasm vs. JavaScript: Who wins at a million rows?](https://thenewstack.io/wasm-vs-javascript-who-wins-at-a-million-rows/)
+
+Feb 22nd 2026 6:00am, by
+Jessica Wachtel
+
+[Open source USearch library jumpstarts ScyllaDB vector search](https://thenewstack.io/open-source-usearch-library-jumpstarts-scylladb-vector-search/)
+
+Feb 5th 2026 12:00pm, by
+Jelani Harper
+
+[The 'weird' things that happened when Clickhouse replaced C++ with Rust](https://thenewstack.io/the-weird-things-that-happened-when-clickhouse-replaced-c-with-rust/)
+
+Feb 4th 2026 7:26am, by
+B. Cameron Gain
+
+[Async Rust: Pinning demystified](https://thenewstack.io/async-rust-pinning-demystified/)
+
+Jan 26th 2026 11:00am, by
+Anshul Gupta
+
+[TypeScript 6.0 RC arrives as a bridge to a faster future](https://thenewstack.io/typescript-6-0-rc-arrives-as-a-bridge-to-a-faster-future/)
+
+Mar 14th 2026 9:00am, by
+Darryl K. Taft
+
+[Mastra empowers web devs to build AI agents in TypeScript](https://thenewstack.io/mastra-empowers-web-devs-to-build-ai-agents-in-typescript/)
+
+Jan 28th 2026 11:00am, by
+Loraine Lawson
+
+[Inferno Vet Creates Frontend Framework Built With AI in Mind](https://thenewstack.io/inferno-vet-creates-frontend-framework-built-with-ai-in-mind/)
+
+Dec 10th 2025 11:00am, by
+Loraine Lawson
+
+[JavaScript Utility Library Lodash Changing Governance Model](https://thenewstack.io/javascript-utility-library-lodash-changing-governance-model/)
+
+Nov 1st 2025 7:00am, by
+Loraine Lawson
+
+[Microsoft TypeScript Devs Explain Why They Chose Go Over Rust, C#](https://thenewstack.io/microsoft-typescript-devs-explain-why-they-chose-go-over-rust-c/)
+
+Mar 18th 2025 7:00am, by
+David Cassel
+
+2025-11-04 05:00:01
+
+It’s Time To Build APIs for AI, Not Just For Developers
+
+contributed,
+
+[AI Agents](https://thenewstack.io/category/ai-agents/) / [AI Engineering](https://thenewstack.io/category/ai-engineering/)
+
+# It’s Time To Build APIs for AI, Not Just For Developers
+
+If your APIs were built for humans, they're probably failing AI agents. It's time for a paradigm shift to AI-first design.
+
+Nov 4th, 2025 5:00am by [Saqib Jan](https://thenewstack.io/author/saqib-jan/ "Posts by Saqib Jan")
+
+
+
+Image from Thapana\_Studio on Shutterstock.
+
+
+For the last two decades, the [principles of API design](https://thenewstack.io/what-are-the-core-principles-of-good-api-design/) have centered around the human developer. We built systems optimized for their convenience, with flexible endpoints and rich [documentation](https://thenewstack.io/bad-documentation-bad-documentation/) that they could interpret.
+
+But a new and powerful class of consumer is already disrupting in the form of autonomous [AI agents](https://thenewstack.io/ai-agents-a-comprehensive-introduction-for-developers/) that operate on a fundamentally different set of principles, which require a new approach to the way we build and describe our services.
+
+“This means a new paradigm for us as developers: We must now build APIs optimized for consumption by machines, which requires a fundamentally different design philosophy than the one we use for human-centric development,” says [Srinivasan Sekar](https://in.linkedin.com/in/srinivasan-sekar), a director of engineering at [LambdaTest](https://www.lambdatest.com/), an AI-native software testing platform.
+
+This increasing shift toward an “ [AI-first](https://thenewstack.io/ai-first-web-development-model-first-design-and-remix-v3/)” design philosophy prioritizes the explicit clarity and predictability that machines require to reason and act effectively. It underpins a clear framework for redesigning systems for the new agentic world.
+
+## Shift From ‘Developer-First’ to ‘AI-First’
+
+At the heart of this new manifesto is a core cultural shift that must precede any architectural changes: moving from a “developer-first” to an [“AI-first” design](https://thenewstack.io/why-api-first-matters-in-an-ai-driven-world/). As Sekar explains, for years, we have optimized our APIs for the convenience of human developers.
+
+This approach favors flexibility, often resulting in fewer, multipurpose endpoints and a reliance on external documentation to clarify ambiguity. A human developer can read a guide to understand that a certain parameter is required only when another is present — a nuance we have long taken for granted.
+
+> “We must now build APIs optimized for consumption by machines, which requires a fundamentally different design philosophy than the one we use for human-centric development.”
+>
+> **— Srinivasan Sekar, director of engineering at LambdaTest**
+
+AI agents, however, are fundamentally different consumers. They cannot read external documentation or infer implicit relationships between parameters. An AI operates solely on the explicit, machine-readable contract provided by the API’s schema. This, he argues, is the crux of the “AI-first” philosophy: a design approach that prioritizes the absolute, unambiguous clarity that machines require, leaving no room for interpretation in the contract.
+
+TRENDING STORIES
+
+1. [Four prompt engineering patterns every developer should know — and why "draw a cat" explains them all](https://thenewstack.io/prompt-engineering-for-developers/)
+2. [Why most AI projects fail after the demo actually works](https://thenewstack.io/ai-demo-to-production/)
+3. [Anthropic: You can still use your Claude accounts to run OpenClaw, NanoClaw and Co.](https://thenewstack.io/anthropic-agent-sdk-confusion/)
+4. [Capital One deprecated an AI tool it once championed. Its DevEx chief says that's the point.](https://thenewstack.io/capital-one-developer-enablement/)
+5. [Perplexity Computer wows, Karpathy kills vibe coding, and OpenAI replaces Anthropic at the Pentagon](https://thenewstack.io/perplexity-computer-vibe-coding-openai-anthropic-pentagon/)
+
+[Sai Krishna](https://www.linkedin.com/in/sai-krishna-3755407b/), working alongside Sekar, adds a practical dimension to this shift: “At LambdaTest, we learned this the hard way. We had a perfectly functional API for configuring test environments that developers loved for its flexibility. But when AI agents started using it, we saw a 40% failure rate because the agents couldn’t interpret the implicit rules we’d documented separately. We had to completely rethink our approach.”
+
+This means favoring more specific, single-purpose endpoints and defining all constraints explicitly within the schema itself. This mindset is the non-negotiable foundation for [building any successful and reliable agentic system](https://thenewstack.io/agentic-ai-tools-for-building-and-managing-agentic-systems/).
+
+## Unlearning the Three Habits of Human-Centric APIs
+
+Adopting this “AI-first” philosophy in practice means actively unlearning several ingrained habits of traditional, human-centric API design. Sekar identifies three common patterns that, while convenient for human developers, create [critical failures when consumed by AI agents](https://thenewstack.io/no-apis-no-ai-why-api-access-is-critical-to-agentic-systems/).
+
+First is the habit of overloading single endpoints with multiple behaviors. A developer can handle this flexibility, but an AI agent struggles with the ambiguity. The AI-first approach requires distinct, single-purpose endpoints where the function is explicit.
+
+- **Before:** A single `POST /user` endpoint would ambiguously handle both creating and updating a user based on whether an `id` was present in the payload.
+- **After:** The AI-first approach uses two distinct and predictable endpoints: `POST /users` to create a new user and `PUT /users/{id}` to update an existing one.
+
+Second is the reliance on implicit contracts and external documentation. For an agent to act reliably, all parameter relationships and dependencies must be explicitly declared within the machine-readable schema itself.
+
+- **Before:** A traditional schema would list `user_type` and `admin_level` as optional, forcing a developer to read external documentation to learn their conditional relationship.
+- **After:** An AI-first schema makes this relationship explicit using conditional logic, allowing a machine to understand the contract without any external context.
+
+Finally, teams must unlearn the habit of providing generic error responses. An AI-first API must provide structured, detailed error responses that allow an agent to self-correct.
+
+- **Before:** A generic JSON response like `{"message": "Bad Request"}` would halt an automated workflow.
+- **After:** A structured JSON error provides specific fields for the error `code`, `message` and `details`, indicating exactly which parameter was invalid.
+
+These shifts share the common purpose of eliminating ambiguity. By making endpoints, contracts and errors explicit, developers provide the predictable foundation necessary for autonomous agents to act reliably and effectively.
+
+## The New Pillars of AI-First Design
+
+Beyond simply avoiding old habits, building an AI-first API requires embracing a new set of positive design principles centered on clarity and predictability.
+
+“This begins with semantic clarity,” says [Sean Falconer,](https://www.linkedin.com/in/seanf/) senior director of product, AI strategy at [Confluent](https://www.confluent.io/). A truly AI-native API must do more than just describe its technical function; its machine-readable contract must also describe its business purpose, its prerequisites and any potential side effects. This provides the rich context an [AI agent needs to reason](https://thenewstack.io/4-reasons-agentic-ai-is-failing/) about not just how to use a tool, but when and why.
+
+> A truly AI-native API must do more than just describe its technical function; its machine-readable contract must also describe its business purpose, its prerequisites and any potential side effects.
+
+This means developers must enrich their API schemas, moving beyond simple data types. For example, in an OpenAPI specification, every parameter and endpoint should include a detailed description that explains not just the “what” (for instance, an integer ID), but the “why” (such as the unique customer identifier used for billing and support tickets).
+
+This level of clarity is best achieved by designing what Falconer refers to as small, purpose-built tools rather than exposing large, generic API surfaces. [Yoni Michael](https://www.linkedin.com/in/yonimichael), CTO of [Typedef](https://www.typedef.ai/), agrees with this principle, advocating for a “minimal surface area,” meaning the API should expose only what is absolutely essential for a given task.
+
+For architects, this translates into a clear design mandate: Resist the urge to create monolithic, all-purpose endpoints. Instead, complex business processes should be broken down into their smallest logical components, with a dedicated, constrained API designed for each one. A sprawling `/orders` API, for instance, could be refactored into focused, purpose-built tools like `/create-order`, `/check-order-status` and `/request-refund`. Creating these well-defined tools reduces ambiguity and the cognitive load on the AI, making its behavior easier to govern and evaluate.
+
+All of these principles serve a single, critical goal: achieving what Michael calls deterministic behavior. An autonomous agent cannot afford surprises when it is chaining together multiple tools to execute a complex workflow. The system must be utterly reliable and predictable.
+
+To deliver on this, engineers must prioritize rigorous testing and stateless design where possible. Every API call with the same inputs should consistently produce the same output, free from hidden dependencies or unpredictable side effects. This involves providing clear, idempotent interfaces for any operations that modify data, ensuring that repeated calls do not have unintended consequences.
+
+By building APIs with semantic clarity, a minimal surface area and a clear purpose, architects provide the foundation of trust that allows an AI agent to build upon them effectively.
+
+## Hurdles of Reshaping Data for AI
+
+Even with these forward-thinking design principles in place, there is a final, deeper architectural challenge that underpins all AI-first design. Sekar from LambdaTest identifies this as the most significant hurdle of all: the difficult but necessary task of data model flattening.
+
+He explains that most existing enterprise APIs reflect deep-rooted data platform challenges, as they were designed around complex internal database schemas or nested object models. While a human developer can navigate these intricate structures, they create significant “cognitive overhead” for an AI agent.
+
+A deeply nested data structure forces an AI model to [expend valuable resources simply understanding](https://thenewstack.io/automating-context-in-structured-data-for-llms/) the shape of the data and the relationships between its parts before it can even begin to act on the information.
+
+This complexity introduces a high potential for error and makes the agent’s behavior less predictable. The AI-first solution is to flatten and normalize these data models, redesigning them into simpler, more predictable formats that are optimized for machine consumption.
+
+> “The companies building the most reliable agentic systems aren’t necessarily the ones with the most sophisticated AI models. They’re the ones who’ve done the hard work of redesigning their API foundations to speak the language machines understand.”
+>
+> **— Srinivasan Sekar**
+
+And this is usually the most resource-intensive part of the journey to becoming AI native. Sekar argues that this task goes far beyond simply documenting existing systems. It frequently requires a fundamental redesign of the data access layer and the creation of entirely new, parallel API surfaces that are purpose-built for AI agents.
+
+Krishna shares the practical reality of this transformation: “We maintain two API layers now; our legacy developer API and our AI-optimized API. The AI version takes a test result object that was previously nested four levels deep and flattens it into a single-level structure with explicit relationship IDs. It tripled our schema size but cut agent processing time by 70%. The investment was significant, but necessary.” This ensures that the context provided to the AI is not just semantically clear, but also structurally simple and immediately useful.
+
+## The Future Is a ‘Behavioral Contract’
+
+Taken together, these principles — a cultural shift to an AI-first mindset, the unlearning of old habits and a deep architectural commitment to clarity and simple data models — form a new manifesto for API design. But the impact of this new philosophy extends beyond the initial engineering of our systems and into their entire life cycle.
+
+Sekar predicts that this will ultimately reshape core DevOps practices like API versioning. In a world where autonomous agents are the primary consumers, the focus of API management will shift from tracking simple syntax changes to guaranteeing “behavioral contracts.” The promise to the AI will no longer be just that the API’s structure is stable, but that its behavior is consistent and predictable, ensuring the same inputs always produce the expected type of outcome.
+
+Krishna elaborates on how this plays out operationally: “We’ve started versioning our behavioral contracts separately from our API versions. An agent subscribes to a behavioral contract, say, ‘search capability with pagination,’ and we guarantee that contract’s behavior even as we evolve the underlying implementation. If we need to change behavior, we introduce a new contract version, giving agents time to adapt.”
+
+Both Sekar and Krishna emphasize that this commitment to explicit, predictable and behaviorally consistent APIs is the ultimate expression of the AI-first philosophy.
+
+“The companies building the most reliable agentic systems aren’t necessarily the ones with the most sophisticated AI models,” Sekar notes. “They’re the ones who’ve done the hard work of redesigning their API foundations to speak the language machines understand.”
+
+This foundation is what the next generation of reliable agentic AI applications will be built upon.
+
+[YOUTUBE.COM/THENEWSTACK\\
+\\
+\\
+Tech moves fast, don't miss an episode. Subscribe to our YouTube \\
+channel to stream all our podcasts, interviews, demos, and more.\\
+\\
+\\
+SUBSCRIBE](https://youtube.com/thenewstack?sub_confirmation=1)
+
+GroupCreated with Sketch.
+
+[\\
+\\
+Saqib Jan is a technology analyst with experience in application development, FinOps and cloud technologies. \\
+\\
+Read more from Saqib Jan](https://thenewstack.io/author/saqib-jan/)
+
+SHARE THIS STORY
+
+SHARE THIS STORY
+
+TNS DAILY NEWSLETTER
+Receive a free roundup of the most recent TNS articles in your inbox each day.
+
+SUBSCRIBE
+
+
+The New Stack does not sell your information or share it with
+unaffiliated third parties. By continuing, you agree to our
+[Terms of Use](https://thenewstack.io/terms-of-use/) and
+[Privacy Policy](https://thenewstack.io/privacy-policy/).
\ No newline at end of file
diff --git a/.firecrawl/beyond-bespoke-ui.md b/.firecrawl/beyond-bespoke-ui.md
new file mode 100644
index 0000000..9ae99a9
--- /dev/null
+++ b/.firecrawl/beyond-bespoke-ui.md
@@ -0,0 +1,455 @@
+Authors
+
+- NameDaniel CressTwitter
+
+# Beyond Bespoke: How AI Turns Component Libraries Into Adaptive Systems
+
+Every time we build a new feature, we follow the same ritual: design mockups, build custom components, wire up state management, test variations, deploy. Then the requirements change slightly, and we do it all again. A dashboard for managers needs different cards than one for employees. A mobile form needs different layouts than desktop. A beginner's view needs simpler options than an expert's.
+
+We've gotten really good at building bespoke experiences. Maybe too good. We've optimized the process of creating unique interfaces for every context, every user type, every edge case. But what if we're solving the wrong problem?
+
+What if instead of building better tools for creating variations, we built systems that generate variations on demand? What if our component libraries could adapt themselves based on context, using the same primitives we already have?
+
+This isn't about replacing Nuxt UI or Shadcn or Radix. It's about teaching them to compose themselves.
+
+## What We Built at Bambee
+
+At Bambee, we built a system that generates contextual UI based on vast amounts of workplace data—performance metrics, compliance requirements, employee sentiment, turnover patterns, organizational health indicators. The challenge wasn't just showing data; it was surfacing the right insights with the right actions at the right time.
+
+A manager dealing with high turnover needs different recommendations than one managing a stable team. An employee in their first month needs different guidance than a three-year veteran. A compliance alert for California employment law requires different visualizations than one for federal OSHA requirements.
+
+We started down the familiar path: custom components for each scenario. But the combinatorial explosion quickly became clear. Dozens of card types. Countless variations of forms. Complex conditional logic everywhere.
+
+So we tried something different.
+
+### Dynamic Cards and Notices
+
+The system analyzes company data and generates recommendations—we call them solutions and notices. Each one has different severity levels, different actions users can take, different visualizations to make the data clear.
+
+One user might see a compliance alert with a bar chart showing policy gaps across departments. Another sees a performance insight with a timeline visualization of team productivity trends. A third sees a recognition opportunity with a simple progress indicator.
+
+Here's the key: we're not building separate components for each type. We're using the same card component, the same underlying UI primitives from our component library. What changes is the structured data that drives them.
+
+The system generates a schema-compliant payload that describes what to show, how to show it, and what actions should be available. The frontend trusts that structure and renders accordingly.
+
+### Dynamic Wizards
+
+The second use case was even more interesting: multi-step wizards that adapt to context.
+
+The system detects information gaps—missing data that would improve recommendations. Based on what's missing and how critical it is, it generates a wizard to collect that information.
+
+Sometimes it's a simple two-step survey: "What's your management philosophy? How large is your team?" Other times it's a comprehensive five-step wizard with conditional logic: if you answer yes to one question, you see follow-up questions; if you answer no, you skip to the next section.
+
+The question types change dynamically. Sliders for rating scales. Checkbox groups for multiple selections. Matrices for comparing options across criteria. Date pickers for timelines. All generated from schemas, all rendered by the same form components.
+
+We're not pre-building every possible wizard variation. We're defining the contract—what a wizard can contain, what question types are valid, how steps can be arranged—and letting the system compose variations on the fly.
+
+## The Core Principles
+
+Building this taught us some things about how to structure systems for dynamic UI generation. These aren't prescriptive rules, just patterns that worked for us.
+
+### Schema as Contract
+
+In traditional development, you design an interface, build the component, then wire it to data. The component defines what's possible.
+
+In schema-driven development, you define the contract first. The schema is the source of truth. It describes what shapes of data are valid, what fields are required, what values are acceptable.
+
+The backend generates data conforming to that schema. The frontend trusts the structure and renders accordingly. Neither side makes assumptions beyond what the schema guarantees.
+
+This inverts the usual relationship. Instead of data conforming to components, components adapt to data (within the bounds of the schema).
+
+A simple example:
+
+```typescript
+// Schema defines possibilities
+ActionCardSchema = {
+ type: 'ACTION_CARD',
+ severity: 'LOW' | 'MEDIUM' | 'HIGH' | 'CRITICAL',
+ action: {
+ type: string,
+ label: string,
+ handler: { route: string, params: object }
+ },
+ visualization?: {
+ type: 'BAR' | 'LINE' | 'PIE',
+ data: object
+ }
+}
+
+// Backend generates instance based on context
+const generatedCard = analyzeContext(userData)
+
+// Frontend renders using component library primitives
+
+```
+
+The schema is doing a lot of work here. It's defining not just data types, but the vocabulary of what interfaces can express. Add a new visualization type to the schema, teach the frontend to render it, and suddenly all generated cards can use it.
+
+### Type Safety Through Validation
+
+The critical enabler for this approach is runtime validation. For us, that means Zod, but the principle applies to any schema validation library.
+
+Here's why it matters: AI generates JSON. That JSON must match the exact structure your frontend expects. If it doesn't, you get runtime errors, broken UI, frustrated users.
+
+With runtime validation, you create a feedback loop. AI generates output. You validate it immediately against your schema. If it fails validation, you send the errors back to the AI and ask it to regenerate.
+
+The pattern looks like:
+
+1. AI generates structured output based on context
+2. Validate against schema immediately
+3. If invalid → capture specific validation errors
+4. Send those errors back to AI with original context
+5. AI regenerates, accounting for what went wrong
+6. Retry with exponential backoff (2-3 attempts max)
+7. If all retries fail → fallback to safe default
+
+This creates remarkably reliable output. The AI learns your schema requirements through the error messages. After a few iterations of improving prompts and tightening schemas, validation failures become rare.
+
+The validation itself is straightforward:
+
+```typescript
+try {
+ const validated = CardSchema.parse(aiOutput)
+ return validated
+} catch (error) {
+ await retryWithRefinement(aiOutput, error)
+}
+```
+
+But the implications are profound. Your frontend never sees invalid data. Type safety is enforced at runtime. Breaking changes to schemas are caught immediately, not in production.
+
+### Slots Over Specifics
+
+We stopped building ``, ``, ``. Instead, we built `` that accepts structured data and routes to appropriate presentation.
+
+The slot examines the schema, determines which component primitives to use, and composes the final UI.
+
+A compliance alert might render as: red badge with alert icon, bar chart visualization, "Review Policy" button that routes to policy creation. A performance insight might render as: blue badge with trend icon, line chart visualization, "View Details" button that opens a details modal.
+
+Same slot. Same underlying Button, Card, Badge, and Chart components from our component library. Different compositions based on the schema data.
+
+This is more than just abstraction. It's a different mental model. You're not building components for specific use cases. You're building a rendering engine that interprets schemas and composes UI from primitives.
+
+The power comes from the mapping layer. It reads the schema and makes decisions:
+
+- What badge color and icon represent this severity level?
+- Which chart component matches this visualization type?
+- What button variant and text match this action type?
+- How should these elements be arranged for this context?
+
+As you add more schema types, the mapping layer grows. But the underlying components stay the same.
+
+### Visualization as Configuration
+
+Instead of building separate chart components for every context, we treat visualizations as configuration.
+
+The backend sends structured data describing what to visualize and how:
+
+```js
+{
+ visualizationType: 'BAR',
+ data: {
+ labels: ['Q1', 'Q2', 'Q3', 'Q4'],
+ values: [23, 45, 67, 89]
+ },
+ theme: 'minimal',
+ options: { showLegend: false }
+}
+```
+
+The frontend has a factory function. It looks at the visualization type and says, "BAR chart? Render the BarChart component from our library with these props."
+
+This means adding a new visualization type is a small change. Add the type to your schema, teach the factory to handle it, and now every part of your system that generates visualizations can use it.
+
+We extended this with a vector database of illustrations. The system can describe the visual context it needs—"performance improvement scenario with upward trend"—then query embeddings to find the closest matching illustration from our library. No manual asset selection. Just semantic matching between generated context and available visuals.
+
+### Dynamic Wizards from Schemas
+
+Multi-step forms become declarative data structures.
+
+A wizard schema defines:
+
+- How many steps
+- What questions appear in each step
+- Question types and validation rules
+- Conditional display logic
+- Progress indicators and navigation
+
+The frontend loops through the schema and renders appropriate input components. A question with type `'SLIDER'` renders your library's slider component. A question with type `'CHECKBOX'` renders a checkbox group.
+
+The power is in the conditional logic. Questions can show or hide based on previous answers. Entire steps can be skipped based on user context. Validation rules can reference other questions.
+
+All described in the schema. All rendered by generic form components.
+
+Adding a new question type means updating the schema to include it and teaching one component to render it. Not rebuilding every wizard that might use it.
+
+This is where it clicked for me: we weren't building forms anymore. We were building a form generation engine.
+
+## The Future Vision
+
+This is where it gets interesting. What we built at Bambee is a proof of concept. It works in production, handles real complexity, serves real users. But it's just scratching the surface of what's possible.
+
+Let me paint some pictures of where this could go. To illustrate these concepts without diving into proprietary specifics, I'll use a hypothetical recipe and meal planning platform as a concrete example—but these patterns apply across any domain with similar variability.
+
+### Pages That Generate Themselves
+
+Imagine you're building a recipe and meal planning platform. A user opens the app and says, "I want to plan meals for the week."
+
+The system analyzes their context:
+
+- Family size and ages
+- Dietary restrictions and preferences
+- Available cooking time
+- Current pantry inventory
+- Cooking skill level
+- Budget constraints
+- Past meal preferences
+
+From this, it generates a complete page schema. Not a page that exists in your codebase. A page composed on the fly:
+
+A three-column dashboard layout. Left column shows a weekly calendar with meal slots, each slot showing prep time and ingredient overlap with other meals. Center column shows a shopping list organized by grocery store section, with cost estimates and substitution suggestions. Right column shows a nutrition summary chart aggregating the week's macros, plus a comparison to their goals.
+
+At the bottom, an action row with context-aware buttons: export meal plan to calendar, send shopping list to grocery app, adjust for budget, regenerate for more variety.
+
+The frontend receives this schema and composes it using your component library's Grid, Card, Calendar, List, Chart, and Button components. The page never existed before this moment. It was assembled because this specific user, in this specific context, needed this specific combination of features.
+
+That's the radical shift: from pages as files in a repository to pages as generated compositions. The repository contains the components and the schemas. The combinations emerge from context.
+
+### Context-Aware Form Adaptation
+
+Same underlying data, completely different form based on who's using it.
+
+A beginner user gets a simplified recipe entry form: basic fields, lots of help text, suggested defaults, links to video tutorials explaining cooking terms. Single-column layout, large touch targets, progress saved after every field.
+
+An advanced user gets the compact version: all fields visible, technical terminology, advanced options like ingredient ratios and technique variations, keyboard shortcuts for quick entry. Multi-column layout, minimal explanatory text, batch editing capabilities.
+
+The system decides which variation to show based on user behavior analysis. Not A/B testing. Not user segments. Individual adaptation.
+
+And it goes deeper. Forms that adapt mid-flow based on answers. User selects "dietary restriction: vegan" → the form immediately hides all questions about meat preparation, adds questions about B12 supplementation, adjusts the nutrition target ranges, suggests vegan protein sources in the ingredient picker.
+
+The form is responding to context in real-time, reshaping itself to show what's relevant and hide what isn't.
+
+### Adaptive Complexity
+
+Interfaces that scale complexity based on user sophistication, not just hiding advanced features behind a settings toggle.
+
+A recipe platform might show the same dish completely differently based on skill level. Beginners see: "Sauté the onions until soft" with a photo showing what "soft" looks like and a link to a basic sautéing video. Intermediate cooks see: "Sauté onions in butter over medium heat until translucent, 5-7 minutes" with suggested pan types and heat settings. Advanced cooks see: "Sweat onions in clarified butter, 82°C, until cell walls break down but no Maillard reaction occurs—monitor for steam release, not browning" with technique alternatives like using a immersion circulator for precise temperature control.
+
+The ingredient list adapts too. Beginners see standard grocery store items. Intermediate cooks see preferred brands and substitution options. Advanced users see specific varieties ("Vidalia onions for sweetness, or shallots for depth"), quality indicators, and even molecular composition notes for technique-critical ingredients.
+
+Same recipe. Same underlying data. But the interface reveals layers of technical sophistication progressively, matching what each user can handle and wants to see.
+
+The system watches behavior. User consistently completes advanced recipes without issues? Start showing more complexity. User struggles with intermediate recipes? Pull back to basics.
+
+This isn't just hiding fields or showing tooltips. It's fundamentally different interfaces generated for different capability levels, all from the same underlying schemas.
+
+### Cross-Domain Schema Standards
+
+Here's where my mind goes to interesting places.
+
+What if schema patterns became standardized across domains?
+
+An `ACTION_CARD` schema could power meal suggestions in a recipe app, workout recommendations in a fitness app, budget alerts in a finance app, treatment plan updates in a healthcare app. Different domains, same structure: context analysis → recommended action → visualization → user choice.
+
+A `WIZARD` schema could power dietary preference surveys in a recipe app, goal-setting wizards in a fitness app, budget creation flows in a finance app, symptom checkers in a healthcare app. Same multi-step structure, same question types, same conditional logic patterns.
+
+Your component library becomes a universal renderer for structured intents. You build the primitives once—cards, forms, charts, buttons—and they work across every domain that speaks the schema language.
+
+This is bigger than code reuse. It's conceptual reuse. The patterns for how to structure adaptive UI become portable knowledge, not locked into specific implementations.
+
+Imagine open schema standards for common UI patterns. Like how we have standard HTTP methods or standard database query languages, we could have standard schemas for "action recommendation with visualization" or "multi-step data collection with conditional logic."
+
+Build a great implementation once, use it everywhere.
+
+### The Self-Assembling Application
+
+Push this to its logical endpoint: applications that materialize from intent.
+
+You describe what you want in natural language: "I want to help users plan healthy meals on a budget with easy recipes they can actually make."
+
+The AI generates schemas for:
+
+- Data models (user profiles, recipes, pantry items, meal plans)
+- UI patterns (dashboard layouts, recipe cards, planning wizards)
+- Action types (save recipe, generate shopping list, track spending, suggest substitutions)
+- Visualizations (nutrition charts, budget tracking, ingredient freshness timelines)
+
+You review the schemas, refine them, approve them. The frontend already knows how to render any valid schema. The backend already knows how to validate and store schema-conforming data.
+
+What you're doing is no longer building features. You're curating and refining schemas. The system does the composition.
+
+This sounds far-fetched until you realize we're already doing pieces of it. Code generation tools are getting better. Schema validation is mature. Component libraries are comprehensive. AI understands context remarkably well.
+
+We're just connecting the pieces.
+
+### Personalization Without Fragmentation
+
+Traditional personalization means building variants: "Here's the health-focused version. Here's the budget-focused version. Here's the time-saving version."
+
+You end up managing three codebases pretending to be one. Changes require updating all variants. Testing multiplies. Maintenance becomes painful.
+
+Schema-driven personalization means generating the optimal interface for each user from the same underlying system.
+
+User A cares about health. Their recipe cards prominently display nutrition information, macro breakdowns, ingredient quality scores, health impact summaries. The charts show nutrient density. The recommendations prioritize nutritional completeness.
+
+User B cares about time. Their recipe cards show prep time first, active vs. passive time breakdowns, make-ahead options, batch cooking opportunities. The charts show time saved through meal prep. The recommendations prioritize efficiency.
+
+User C cares about budget. Their recipe cards show cost per serving, bulk buying opportunities, seasonal ingredient savings, leftover utilization. The charts show cost comparisons. The recommendations prioritize affordability.
+
+Same data. Same component library. Same schemas. Infinitely variable presentation based on what matters to each individual user.
+
+No variant management. No A/B test fragments. No "which version am I in?" confusion. Just contextual generation.
+
+And because it's schema-driven, you can combine dimensions. User D cares about both health and budget. They get nutrition data weighted by cost-effectiveness. User E cares about time and is also vegan. They get quick recipes that happen to be plant-based, not "vegan recipes" as a special category.
+
+The combinations emerge from the generation logic, not from pre-built variants.
+
+## The Trade-offs
+
+This sounds exciting, and it is. But it's not free. The complexity moves around; it doesn't disappear.
+
+### Schema Management Becomes Critical
+
+Your schemas are your contract. They're what enables the whole system to work. Which means changing them is like changing your API.
+
+You need versioning strategies. How do you evolve schemas without breaking existing data? How do you migrate old schema instances to new versions? How do you deprecate schema fields while maintaining backward compatibility?
+
+You need synchronization mechanisms. The backend that generates schemas and the frontend that renders them must stay aligned. A mismatch means broken UI or validation errors.
+
+You need discovery tools. As schemas multiply, developers need ways to find them, understand them, know which one to use for which scenario. Documentation becomes more important, not less.
+
+This is real work. You might need a schema registry, similar to what you'd use for event-driven architectures. You might need automated testing that validates schema compatibility across versions. You might need tooling to generate TypeScript types from schemas and keep them in sync. Tools like Storybook become invaluable—you can document not just components, but how those components render different schema variations. Each story becomes a living example of "here's this schema shape, here's how it renders," making it easier for developers to understand which schema to use for which scenario.
+
+Schema management is now a first-class concern in your architecture.
+
+### Database Structure Gets Messy
+
+The relational database purist in you will not like this.
+
+Instead of neat columns with proper foreign keys and database-level constraints, you end up with JSONB blobs. The validation that would normally happen at the database layer moves to application code. Querying becomes harder—you can't easily "show me all high-priority compliance actions" when that data is buried in JSON.
+
+There are workarounds. Hybrid models where you extract commonly-queried fields to columns and keep the dynamic data as JSON. PostgreSQL's JSONB type with indexes on frequently-accessed paths. Generated columns that pull specific values out of JSON for querying. Materialized views for complex queries that need to run often.
+
+But it's more complex than traditional relational design. You're trading structure for flexibility.
+
+The database is no longer your source of truth for what data is valid. Your schemas are. The database is just storage.
+
+This is a philosophical shift as much as a technical one.
+
+### Debugging Becomes Archaeology
+
+When something renders wrong, you can't just look at a component file and see what's broken.
+
+You need to trace: What was the user's context? What did the AI decide based on that context? What schema did it generate? Did it pass validation? How did the mapping layer interpret it? Which component got selected? What props were passed?
+
+That's a lot of layers between "user saw wrong thing" and "here's the bug."
+
+You need comprehensive logging at each step. You need replay tools that can take a saved context and schema and show you exactly how it rendered. You need schema versioning so you know which version of which schema generated which UI at which time. You need visibility into AI decision-making—why did it choose this action type over that one?
+
+Debugging a static component is straightforward. Debugging a generated interface is detective work.
+
+The tooling helps, but the conceptual overhead is real.
+
+### Testing Strategy Becomes Critical
+
+Testing dynamically generated UIs requires a different approach than testing traditional components. You can't just write unit tests for a component and call it done—the component itself might be simple, but the schema that drives it can vary infinitely.
+
+Our testing strategy has three layers:
+
+**Schema validation tests** are the foundation. Every schema gets comprehensive validation tests that verify the structure itself is correct. These tests catch issues like missing required fields, invalid enum values, or type mismatches. We treat schemas as first-class code artifacts with their own test suites.
+
+**Contract tests** verify the relationship between schemas and components. Given a valid schema, does the component render without errors? We maintain a library of example schemas—edge cases, common patterns, minimal valid schemas—and run them through the rendering pipeline. This catches breaking changes when either schemas or components evolve.
+
+**Integration tests** validate the full generation pipeline. We mock the AI responses with known schemas, then verify the entire flow: context analysis → schema generation → validation → rendering. This ensures the retry logic works, fallbacks activate correctly, and error boundaries catch failures gracefully.
+
+We rely heavily on snapshot testing for the rendered output. When a schema changes, snapshot tests highlight exactly what UI changes resulted. This gives us confidence that schema evolution doesn't break existing interfaces unexpectedly.
+
+The biggest shift is acceptance that you can't test every possible variation. Instead, you test the boundaries: minimum valid schemas, maximum complexity schemas, common patterns, and known edge cases. Type safety through Zod catches most issues at compile time, and runtime validation catches the rest before users see them.
+
+### Error Handling Multiplies
+
+More moving parts means more things that can go wrong.
+
+AI generation can fail. Network timeout, rate limit, malformed response. Validation can fail. AI generated something that doesn't match the schema. Retry loop can exhaust. After three attempts, still no valid schema. Rendering can fail. Unknown schema type, missing required data, component error.
+
+You need graceful fallbacks for every failure mode.
+
+Default schemas that are safe to show when generation fails. Error boundaries in the frontend that catch rendering failures and show something useful. Monitoring and alerting for validation failures so you know when your prompts or schemas need adjustment. User-friendly error states—"We're having trouble generating recommendations right now, here's what we suggest generally..."
+
+Every dynamic system trades simplicity for resilience engineering.
+
+### Performance Considerations
+
+AI generation adds latency. LLM API calls can take seconds. You can't generate fresh schemas on every page load.
+
+You need strategies: pre-generation for common scenarios, caching generated schemas by context hash, background generation with optimistic UI, hybrid approaches where you show static defaults while dynamic enhancement loads, edge computing to move generation closer to users.
+
+But you're adding complexity to maintain responsiveness. The simple "render component with props" is now "check cache, maybe generate, validate, render, handle failure cases."
+
+The performance budget gets spent differently.
+
+### Team Learning Curve
+
+This is a different way of thinking about UI development.
+
+Your team needs to understand schema design—what makes a good schema, how to evolve them, how to version them. They need to understand runtime validation and how to write schemas that AI can reliably generate. They need to understand slot-based architecture and mapping layers. They need to understand the trade-offs between flexibility and predictability.
+
+Not every team wants this complexity. For simple, predictable applications, it's overkill. The traditional component-per-feature approach works fine when features are truly unique and don't follow patterns.
+
+You're choosing a different set of problems. More upfront design work on schemas, less repetitive component building. More system-level thinking, less feature-level implementation.
+
+It's not objectively better. It's different. And it requires buy-in.
+
+## When Does This Make Sense?
+
+So when should you actually consider this approach?
+
+**Good fit:**
+
+You're building something with high variability in user contexts or data types. The same underlying features need to look different for different users, different roles, different situations.
+
+You have frequent new requirements that follow similar patterns. Not "build a completely new feature," but "this feature needs to work slightly differently for this new context."
+
+Your domain is one where AI can make intelligent contextual decisions. There are patterns to learn, data to analyze, reasonable inferences to make.
+
+Your team is comfortable with schema-driven development. Or willing to learn. And has the capacity to manage the additional architectural complexity.
+
+Your users benefit meaningfully from personalized, adaptive experiences. The variability actually matters to them; it's not just engineer preference.
+
+**Bad fit:**
+
+You have pixel-perfect design requirements. Brand campaigns, marketing sites, anything where the exact visual presentation is non-negotiable. Schema-driven generation gives you flexibility, not precision.
+
+Your feature set is predictable and stable. If you're building ten truly unique features with no pattern between them, there's no schema to extract. Just build the ten features.
+
+You have a small team without capacity for schema management. The overhead might outweigh the benefits.
+
+You're working on performance-critical real-time interactions. The latency of generation and validation might not be acceptable.
+
+You have regulatory requirements for fixed UI flows. Sometimes the law requires specific workflows in specific orders. Dynamic generation adds compliance risk.
+
+**The litmus test:** If you find yourself building slight variations of the same component over and over—same structure, different data, different actions, different styling—you're a candidate. You have patterns worth extracting into schemas.
+
+If every feature is truly unique, truly bespoke, you're probably not.
+
+## Components Learning to Think
+
+Component libraries aren't dead. They're evolving.
+
+We're moving from tools we manually compose to systems that compose themselves based on context.
+
+What we built at Bambee is proof that this works in production. Dynamic wizards that adapt to what information is missing. Adaptive cards that surface different insights for different users. Contextual visualizations that show what matters most. All using our component library—Nuxt UI—just arranged by the system instead of by developers.
+
+But it's early. The schemas are still simple. The generation logic is straightforward. The mapping layers are manageable.
+
+What comes next is more interesting.
+
+More sophisticated schemas that can express complex layouts, responsive variations, accessibility requirements, animation preferences. Cross-domain schema standards that let us share UI patterns across completely different applications. Entire pages assembled from intent rather than files. Vector-powered asset selection that makes every interface feel custom. Progressive complexity that adapts to user capability in real-time. Mass personalization without the maintenance burden of variants.
+
+The vision: developers define schemas and provide component libraries. AI generates optimal UI for each user's context. Users see interfaces that feel custom-built for them. No custom building required.
+
+This isn't replacing the craft of UI development. It's augmenting it. Moving us from pixel-pushing to pattern-defining. From building variations to building systems that generate variations. From asking "how do I build this interface?" to asking "how do I describe the space of possible interfaces?"
+
+The future of UI development might not be about building interfaces. It might be about building the systems that build interfaces.
+
+Component libraries aren't dying. They're learning to think.
\ No newline at end of file
diff --git a/.firecrawl/byteiota-vite8.md b/.firecrawl/byteiota-vite8.md
new file mode 100644
index 0000000..6c7db9b
--- /dev/null
+++ b/.firecrawl/byteiota-vite8.md
@@ -0,0 +1,244 @@
+Share
+
+- [Share on Facebook](https://www.facebook.com/sharer.php?u=https%3A%2F%2Fbyteiota.com%2Fvite-8-0-rolldown-migration-guide-10-30x-faster-builds%2F "Share on Facebook")
+- [Share on Twitter](https://twitter.com/share?url=https%3A%2F%2Fbyteiota.com%2Fvite-8-0-rolldown-migration-guide-10-30x-faster-builds%2F&text=Vite%208.0%20Rolldown%20Migration%20Guide:%2010-30x%20Faster%20Builds "Share on Twitter")
+
+- [Share on Linkedin](https://www.linkedin.com/shareArticle?mini=true&url=https%3A%2F%2Fbyteiota.com%2Fvite-8-0-rolldown-migration-guide-10-30x-faster-builds%2F "Share on Linkedin")
+
+Vite 8.0 stable dropped on March 12, 2026, replacing its dual-bundler architecture with [Rolldown](https://rolldown.rs/), a single Rust-based bundler delivering 10-30x faster builds. Linear saw production builds shrink from 46 seconds to 6 seconds—an 87% reduction. With Vite downloaded 65 million times weekly, this upgrade affects millions of developers. Here’s your migration guide.
+
+## Vite 8 Unifies Build Pipeline with Rolldown
+
+Vite 8 consolidates two bundlers into one. Previously, Vite used esbuild for fast development and Rollup for optimized production builds. This dual-bundler approach worked but created potential inconsistencies between dev and prod environments. Rolldown eliminates that split.
+
+Rolldown is a Rust-based bundler with full Rollup API compatibility. It matches esbuild’s development speed while delivering 10-30x faster production builds than Rollup. In official benchmarks testing 19,000 modules, Rolldown completed in 1.61 seconds versus Rollup’s 40.10 seconds—a 25x improvement.
+
+The architectural unification simplifies configuration. Developers no longer juggle separate esbuild and rollupOptions settings. One bundler, one config, consistent behavior across environments.
+
+## 10-30x Faster Builds in Real-World Projects
+
+Performance gains are substantial. [Linear reduced production build times by 87%](https://vite.dev/blog/announcing-vite8), dropping from 46 seconds to 6 seconds. Beehiiv’s large codebase saw 64% improvement. Mercedes-Benz.io cut build times by 38%.
+
+However, performance gains scale with project size. Small projects under 100 modules see 2-5x improvements. Mid-sized projects between 100-500 modules hit 5-10x. Large projects with 500+ modules achieve the advertised 10-30x gains.
+
+One developer testing a single-page app watched builds shrink from 3.8 seconds to 0.8 seconds—a clean 5x improvement. For large enterprise apps, these savings multiply across hundreds of daily builds, cutting hours from CI/CD pipelines.
+
+## How to Migrate to Vite 8
+
+Migration is straightforward for most projects. Update Vite to 8.0, test locally, deploy if no issues arise. A compatibility layer auto-converts esbuild and rollupOptions configurations to Rolldown equivalents.
+
+Basic migration:
+
+```bash
+# Update to Vite 8.0
+npm install vite@8
+
+# Test development server
+npm run dev
+
+# Test production build
+npm run build
+
+# Benchmark performance
+time npm run build
+```
+
+Most projects work without configuration changes. The compatibility layer handles the transition automatically. If you encounter issues, [Vite provides a gradual migration path](https://main.vite.dev/guide/migration): test with rolldown-vite on Vite 7 first, then upgrade to Vite 8 stable. This two-step approach isolates Rolldown-specific problems from general upgrade issues.
+
+## Should You Upgrade? Decision Framework
+
+Upgrade priority depends on project size and build frequency. Large codebases with 500+ modules benefit most—10-30x gains justify immediate migration. Teams running multiple builds daily see compounding time savings. If CI/CD pipelines take 40 seconds per build, Rolldown cuts that to 2 seconds, saving 38 seconds × 100 builds = 63 minutes daily.
+
+Mid-sized projects between 100-500 modules should upgrade within the month. You’ll see 5-10x improvements—noticeable but not game-changing. Standard release cycles (daily or weekly deploys) make this a medium priority.
+
+Small projects under 100 modules see 2-5x gains. Still worthwhile, but less impactful. If you’re risk-averse or running mission-critical production apps, waiting 1-2 months for community feedback is reasonable. Let others find the edge cases first.
+
+Skip immediate upgrade if you rely on obscure Rollup plugins that may lack Rolldown compatibility. Check the Vite plugin registry first. Also skip if you’re on Vite 6 or older—address that gap before jumping to Vite 8.
+
+## Troubleshooting Common Migration Issues
+
+Three issues account for most migration headaches: CommonJS interop changes, manualChunks deprecation, and esbuild transform failures.
+
+CommonJS imports may break due to Rolldown’s stricter module handling. If runtime errors appear when importing CJS modules, add `legacy.inconsistentCjsInterop: true` to your config temporarily. Long-term, migrate to ESM or fix module resolution. This isn’t Vite’s fault—it’s exposing existing module system inconsistencies.
+
+The `manualChunks` config no longer works. Vite 8 uses `codeSplitting` instead, offering more granular control:
+
+```javascript
+// OLD (Vite 7)
+export default defineConfig({
+ build: {
+ rollupOptions: {
+ output: {
+ manualChunks(id) {
+ if (/\/react(?:-dom)?/.test(id)) {
+ return 'vendor'
+ }
+ }
+ }
+ }
+ }
+})
+
+// NEW (Vite 8)
+export default defineConfig({
+ build: {
+ rolldownOptions: {
+ output: {
+ codeSplitting: {
+ groups: [\
+ { name: 'vendor', test: /\/react(?:-dom)?/ }\
+ ]
+ }
+ }
+ }
+ }
+})
+```
+
+Plugins using `transformWithEsbuild` will fail because esbuild is no longer bundled. Migrate to `transformWithOxc` or install esbuild manually as a peer dependency. The @vitejs/plugin-react v6 already made this switch, using Oxc for React Refresh transforms and eliminating the Babel dependency entirely.
+
+## What’s Next for Vite
+
+Vite’s roadmap includes Full Bundle Mode (experimental), which serves bundled files in development for 3× faster dev server startup, 40% faster full reloads, and 10× fewer network requests. This addresses one of Vite’s last pain points—hundreds of separate module requests in large apps.
+
+[VoidZero](https://voidzero.dev/posts/announcing-rolldown-rc), the team behind Vite and Rolldown, is building a unified Rust toolchain for JavaScript development. Rolldown handles bundling, Oxc powers compilation and minification, and more tools are coming. The trend is clear: Rust-based tooling is replacing JavaScript-based build tools across the ecosystem, from swc to turbopack to Biome.
+
+## Key Takeaways
+
+- Vite 8.0 stable replaces esbuild + Rollup with a single Rust bundler (Rolldown), delivering 10-30x faster production builds while maintaining plugin compatibility
+- Large projects (500+ modules) see the biggest gains (10-30x), mid-sized projects hit 5-10x, small projects get 2-5x—performance scales with codebase size
+- Most projects migrate without config changes thanks to auto-conversion, but CommonJS interop and manualChunks require manual fixes
+- Upgrade now if you’re on Vite 7 with large codebases or frequent builds—the stable release is production-ready and compatibility is high
+- Future Vite improvements (Full Bundle Mode, Rust toolchain expansion) show continued innovation, making this a safe long-term bet
+
+Vite 8 isn’t just faster—it’s simpler. One bundler, one config, one mental model. The dual-bundler era is over.
+
+### Share
+
+![ByteBot]()
+
+[ByteBot](https://byteiota.com/author/bytebot/ "Posts by ByteBot")
+
+I am a playful and cute mascot inspired by computer programming. I have a rectangular body with a smiling face and buttons for eyes. My mission is to cover latest tech news, controversies, and summarizing them into byte-sized and easily digestible information.
+
+[Previous](https://byteiota.com/bitnet-tutorial-run-100b-llms-on-cpu-with-1-bit-inference/)
+
+### [BitNet Tutorial: Run 100B LLMs on CPU with 1-Bit Inference](https://byteiota.com/bitnet-tutorial-run-100b-llms-on-cpu-with-1-bit-inference/)
+
+[Next](https://byteiota.com/openclaw-china-ban-first-ai-agent-crackdown/)
+
+### [OpenClaw China Ban: First AI Agent Crackdown](https://byteiota.com/openclaw-china-ban-first-ai-agent-crackdown/)
+
+#### You may also like
+
+### [Reddit Bot Verification: 100K Daily Removals Drive Crackdown](https://byteiota.com/reddit-bot-verification-100k-daily-removals-drive-crackdown/)
+
+2 hours ago
+
+### [AMD Ryzen 9 9950X3D2: First Dual-Cache CPU Hits 208MB](https://byteiota.com/amd-ryzen-9-9950x3d2-first-dual-cache-cpu-hits-208mb/)
+
+4 hours ago
+
+[![]()](https://byteiota.com/cloud-waste-2026-235b-lost-to-idle-resources/)
+
+### [Cloud Waste 2026: $235B Lost to Idle Resources](https://byteiota.com/cloud-waste-2026-235b-lost-to-idle-resources/)
+
+5 hours ago
+
+[![]()](https://byteiota.com/lg-1hz-display-pushes-dell-xps-16-to-27-hour-battery-life/)
+
+### [LG 1Hz Display Pushes Dell XPS 16 to 27-Hour Battery Life](https://byteiota.com/lg-1hz-display-pushes-dell-xps-16-to-27-hour-battery-life/)
+
+6 hours ago
+
+### [macOS 26 Consistently Bad: It’s Design, Not Bugs](https://byteiota.com/macos-26-consistently-bad-its-design-not-bugs/)
+
+8 hours ago
+
+[![]()](https://byteiota.com/cursor-composer-2-10x-cheaper-than-claude-beats-opus-4-6/)
+
+### [Cursor Composer 2: 10x Cheaper Than Claude, Beats Opus 4.6](https://byteiota.com/cursor-composer-2-10x-cheaper-than-claude-beats-opus-4-6/)
+
+9 hours ago
+
+### Leave a reply [Cancel reply](https://byteiota.com/vite-8-0-rolldown-migration-guide-10-30x-faster-builds/\#respond)
+
+Your email address will not be published.Required fields are marked \*
+
+Comment
+
+Name \*
+
+Email \*
+
+Website
+
+Save my name, email, and website in this browser for the next time I comment.
+
+Δ
+
+#### More in: [JavaScript](https://byteiota.com/programming/javascript/)
+
+[![Featured image for HTMX Tutorial 2026: Replace React with 14KB HTML]()](https://byteiota.com/htmx-tutorial-2026-replace-react-with-14kb-html/)
+
+### [HTMX Tutorial 2026: Replace React with 14KB HTML](https://byteiota.com/htmx-tutorial-2026-replace-react-with-14kb-html/)
+
+5 days ago
+
+[![Featured image for TanStack Start: Type-Safe React Framework for 2026]()](https://byteiota.com/tanstack-start-type-safe-react-framework-for-2026/)
+
+### [TanStack Start: Type-Safe React Framework for 2026](https://byteiota.com/tanstack-start-type-safe-react-framework-for-2026/)
+
+5 days ago
+
+[![Featured image for Hono Framework: Build Edge APIs on Cloudflare Workers]()](https://byteiota.com/hono-framework-build-edge-apis-on-cloudflare-workers/)
+
+### [Hono Framework: Build Edge APIs on Cloudflare Workers](https://byteiota.com/hono-framework-build-edge-apis-on-cloudflare-workers/)
+
+6 days ago
+
+[![Featured image for React Server Components: The Practical Guide for 2026]()](https://byteiota.com/react-server-components-the-practical-guide-for-2026/)
+
+### [React Server Components: The Practical Guide for 2026](https://byteiota.com/react-server-components-the-practical-guide-for-2026/)
+
+6 days ago
+
+### [JavaScript Bloat: 3 Pillars Killing Bundle Size](https://byteiota.com/javascript-bloat-3-pillars-killing-bundle-size/)
+
+6 days ago
+
+### [Hono Framework: 14KB Edge API Alternative to Express](https://byteiota.com/hono-framework-14kb-edge-api-alternative-to-express/)
+
+March 13, 2026
+
+Next Article:
+
+March 13, 2026
+
+min read
+
+-21 %
+
+## [![logo]()](https://byteiota.com/)
+
+[✕Close](https://byteiota.com/vite-8-0-rolldown-migration-guide-10-30x-faster-builds/#atbs-ceris-offcanvas-primary)
+
+## [![logo]()](https://byteiota.com/)
+
+[✕](https://byteiota.com/vite-8-0-rolldown-migration-guide-10-30x-faster-builds/#atbs-ceris-offcanvas-mobile)
+
+## Latest Posts
+
+### [Reddit Bot Verification: 100K Daily Removals Drive Crackdown](https://byteiota.com/reddit-bot-verification-100k-daily-removals-drive-crackdown/)
+
+### [AMD Ryzen 9 9950X3D2: First Dual-Cache CPU Hits 208MB](https://byteiota.com/amd-ryzen-9-9950x3d2-first-dual-cache-cpu-hits-208mb/)
+
+### [Cloud Waste 2026: $235B Lost to Idle Resources](https://byteiota.com/cloud-waste-2026-235b-lost-to-idle-resources/)
+
+### [LG 1Hz Display Pushes Dell XPS 16 to 27-Hour Battery Life](https://byteiota.com/lg-1hz-display-pushes-dell-xps-16-to-27-hour-battery-life/)
+
+### [macOS 26 Consistently Bad: It’s Design, Not Bugs](https://byteiota.com/macos-26-consistently-bad-its-design-not-bugs/)
+
+[](https://feedmatters.com/?utm_source=byteiota&utm_medium=banner&utm_campaign=popup)
+
+×
\ No newline at end of file
diff --git a/.firecrawl/corvu-dynamic.md b/.firecrawl/corvu-dynamic.md
new file mode 100644
index 0000000..ecca94b
--- /dev/null
+++ b/.firecrawl/corvu-dynamic.md
@@ -0,0 +1,112 @@
+# Dynamic Components
+
+All primitive components that render a DOM element are dynamic, which means that you can modify the element or the component they should render as.
+
+## Native elements [Section titled Native elements](https://corvu.dev/docs/dynamic-components/\#native-elements)
+
+In most cases, you shouldn’t need to change the DOM element that the primitive component renders. corvu has sensible defaults for all components. But there are cases where it makes sense to change them. An example would be the `Tooltip` trigger which renders as a `button` element. You may want to render a tooltip on a link (`a` tag) instead. To do this, you have to specify the `as` property on the trigger component:
+
+```
+
+ corvu.dev
+
+```
+
+## Solid components [Section titled Solid components](https://corvu.dev/docs/dynamic-components/\#solid-components)
+
+A much more common use case is to render a primitive component as a custom Solid component. This is useful to apply default styling or to add additional functionality.
+
+For example, you might have your own, custom-styled button component and want to use it as a trigger for a dialog:
+
+```
+import {
+ ComponentProps,
+ splitProps,
+} from 'solid-js'
+import Dialog from '@corvu/dialog'
+
+const CustomButton = (
+ props: ComponentProps<'button'> & { variant: 'fill' | 'outline' },
+) => {
+ const [local, rest] = splitProps(props, ['variant'])
+ // Apply your custom styling here
+ return
+}
+
+const DialogTrigger = () => (
+
+ Open
+
+)
+```
+
+Props not belonging to the primitive component will be passed through to your custom component. In this case, the `variant` prop is passed to the `CustomButton` component.
+
+> ❗ To ensure functionality and accessibility, your component needs to spread the received props onto your element. Otherwise, corvu can’t define props on the element and things will break.
+
+## Component types [Section titled Component types](https://corvu.dev/docs/dynamic-components/\#component-types)
+
+corvu’s dynamic components have a flexible type system. This allows library developers or users who want to create their own components based on corvu’s primitives to have a great developer experience.
+
+Every dynamic component exposes 4 types.
+
+For example, the `` component exports the types `DialogTriggerCorvuProps`, `DialogTriggerSharedElementProps`, `DialogTriggerElementProps` and `DialogTriggerProps`.
+
+Lets have a look at the types:
+
+### CorvuProps [Section titled CorvuProps](https://corvu.dev/docs/dynamic-components/\#corvuprops)
+
+`CorvuProps` contains all props that are specific to the primitive component and are not passed through to the rendered element. They are consumed by corvu. For example, the [``](https://corvu.dev/docs/primitives/resizable/#Panel) has props like `minSize` or `collapsible`.
+
+### SharedElementProps [Section titled SharedElementProps](https://corvu.dev/docs/dynamic-components/\#sharedelementpropst-extends-validcomponent)
+
+`SharedElementProps` includes all props that get defined by corvu on the rendered element **but** can be overridden by the user. This usually includes the `ref` or `style` properties. The generic is used to properly type `ref` and event listeners.
+
+### ElementProps [Section titled ElementProps](https://corvu.dev/docs/dynamic-components/\#elementprops)
+
+`ElementProps` element props inherits all `SharedElementProps` and additionally includes all props that are set by corvu and can’t be overridden by the user. This includes for example accessibility props like `aria-*`, `role` and `data-*`.
+
+### Props [Section titled Props](https://corvu.dev/docs/dynamic-components/\#propst-extends-validcomponent)
+
+This is the type that defines what props that corvu expects from the user. It’s equal to `CorvuProps & Partial`.
+
+### DynamicProps [Section titled DynamicProps](https://corvu.dev/docs/dynamic-components/\#dynamicprops)
+
+`DynamicProps` is a helper type that allows you to expose the dynamic aspect of corvu components from your custom component. Let’s look at an example:
+
+```
+import {
+ type ValidComponent,
+ ComponentProps,
+ splitProps,
+} from 'solid-js'
+import Dialog, { type TriggerProps, type DynamicProps } from '@corvu/dialog'
+
+// Define your custom props, including `TriggerProps` from corvu
+export type CustomDisclosureTriggerProps = TriggerProps & {
+ variant: 'fill' | 'outline'
+}
+
+// The generic `T` allows the user to specify
+// the element this component should render as
+const CustomDialogTrigger = (
+ props: DynamicProps>,
+) => {
+ const [local, rest] = splitProps(props as CustomDisclosureTriggerProps, [\
+ 'variant',\
+ ])
+ // Define the default dynamic type, in this case 'button'.
+ // This can be overridden by the user.
+ return
+}
+```
+
+If you don’t want to expose the dynamic aspect of corvu’s components, you can define the generic explicitly:
+
+```
+const CustomDialogTrigger = (
+ props: DynamicProps<'button', CustomDisclosureTriggerProps<'button'>>,
+) => {
+```
+
+Developed and designed by [Jasmin](https://github.com/GiyoMoon/)
\ No newline at end of file
diff --git a/.firecrawl/corvu-overview.md b/.firecrawl/corvu-overview.md
new file mode 100644
index 0000000..30b8638
--- /dev/null
+++ b/.firecrawl/corvu-overview.md
@@ -0,0 +1,15 @@
+# Overview
+
+## Primitives [Section titled Primitives](https://corvu.dev/docs/overview/\#primitives)
+
+corvu’s growing list of UI primitives for SolidJS. Accessible, customizable and ready to use in your project!
+
+[Accordion](https://corvu.dev/docs/primitives/accordion/) [Calendar](https://corvu.dev/docs/primitives/calendar/) [Dialog](https://corvu.dev/docs/primitives/dialog/) [Disclosure](https://corvu.dev/docs/primitives/disclosure/) [Drawer](https://corvu.dev/docs/primitives/drawer/) [OTP Field](https://corvu.dev/docs/primitives/otp-field/) [Popover](https://corvu.dev/docs/primitives/popover/) [Resizable](https://corvu.dev/docs/primitives/resizable/) [Tooltip](https://corvu.dev/docs/primitives/tooltip/)
+
+## Utilities [Section titled Utilities](https://corvu.dev/docs/overview/\#utilities)
+
+A set of commonly needed, low-level patterns that you might need in the modern, accessible web. They are exported as separate packages and can be used independently from corvu.
+
+[dismissible](https://corvu.dev/docs/utilities/dismissible/) [focusTrap](https://corvu.dev/docs/utilities/focus-trap/) [list](https://corvu.dev/docs/utilities/list/) [persistent](https://corvu.dev/docs/utilities/persistent/) [presence](https://corvu.dev/docs/utilities/presence/) [preventScroll](https://corvu.dev/docs/utilities/prevent-scroll/) [transitionSize](https://corvu.dev/docs/utilities/transition-size/)
+
+Developed and designed by [Jasmin](https://github.com/GiyoMoon/)
\ No newline at end of file
diff --git a/.firecrawl/corvu-state.md b/.firecrawl/corvu-state.md
new file mode 100644
index 0000000..1057981
--- /dev/null
+++ b/.firecrawl/corvu-state.md
@@ -0,0 +1,125 @@
+# State
+
+By default, all corvu primitives manage their state internally. This means that they handle their state themselves and you don’t need to pass any props/state to them.
+
+corvu aims to be very customizable and provides various ways to control a primitive or access internal state. Let’s take a look at them. We’ll use the [Dialog](https://corvu.dev/docs/primitives/dialog/) primitive as an example, but the same applies to all other primitives.
+
+## Controlled State [Section titled Controlled State](https://corvu.dev/docs/state/\#controlled-state)
+
+The easiest way to control a primitive’s state is by passing your own defined state to its `Root` component. Most of the time, this consists of a getter and setter property like in this example, where we control the open state of a dialog:
+
+```
+import Dialog from '@corvu/dialog'
+import { createSignal } from 'solid-js'
+
+const MyDialog = () => {
+ const [open, setOpen] = createSignal(false)
+ return (
+
+ )
+}
+```
+
+This allows you to use the open state anywhere in your code and alter it freely. The dialog will open and close accordingly.
+
+## Context [Section titled Context](https://corvu.dev/docs/state/\#context)
+
+It’s also possible to access the context of every primitive. This allows you to get the internal state of a primitive from anywhere in your code, as long as it’s under the `Root` component, where the context gets provided. Accessing the context of a dialog looks like this:
+
+```
+import Dialog from '@corvu/dialog'
+import { createSignal } from 'solid-js'
+
+const DialogRoot = () => {
+ return (
+
+ )
+}
+
+const DialogContent = () => {
+ const { open, setOpen } = Dialog.useContext()
+ return (
+ <>
+
The dialog is {open() ? 'open' : 'closed'}
+
+
+ Label
+
+ >
+ )
+}
+```
+
+Every primitive provides different properties in its context, have a look at the API section of each primitive to see what’s available.
+
+## Children callbacks [Section titled Children callbacks](https://corvu.dev/docs/state/\#children-callbacks)
+
+The `Root` component of every primitive (and in a few cases others) also accepts a function as its children. By doing this, we can pass the internal state to the children for you to access. An example of this looks like this:
+
+```
+import Dialog from '@corvu/dialog'
+import { createSignal } from 'solid-js'
+
+const MyDialog = () => {
+ return (
+
+ )
+}
+```
+
+Note that the props passed from the `Root` component include reactive getters. Make sure to access them in a reactive scope, like you would in any other Solid component.
+
+## Keyed context [Section titled Keyed context](https://corvu.dev/docs/state/\#keyed-context)
+
+There may be situations where you want to use nested instances of the same primitive. For example, multiple dialogs with multiple trigger buttons that are hard to separate in the template. For this case, corvu allows you to pass a `contextId` to every primitive component to tell which context to use.
+
+Here’s how two nested dialogs would look like:
+
+```
+
+```
+
+When using keyed contexts, you can pass the same key to the `useContext()` function to access the context of the respective primitive.
+
+```
+const { open, setOpen } = Dialog.useContext('dialog-1')
+```
+
+Developed and designed by [Jasmin](https://github.com/GiyoMoon/)
\ No newline at end of file
diff --git a/.firecrawl/corvu-styling.md b/.firecrawl/corvu-styling.md
new file mode 100644
index 0000000..9c07567
--- /dev/null
+++ b/.firecrawl/corvu-styling.md
@@ -0,0 +1,91 @@
+# Styling
+
+corvu leaves the styling up to you. You can use Tailwind CSS, any CSS-in-JS library or just plain old CSS to style primitives.
+
+## Data attributes [Section titled Data attributes](https://corvu.dev/docs/styling/\#data-attributes)
+
+Components that can be in different states, e.g. `open` or `closed` for a dialog, provide data attributes to style them accordingly.
+
+Here is an example of how to style a dialog based on its open state:
+
+```
+.dialog_content[data-open] {
+ /* styles to apply when open */
+}
+.dialog_content[data-closed] {
+ /* styles to apply when closed */
+}
+```
+
+Don’t forget to add the `dialog_content` class to your Dialog content component:
+
+```
+...
+```
+
+Additionally, every corvu component has a data attribute for you to use. A dialog content element would render like this:
+
+```
+
...
+```
+
+You can use it to style all components of the same kind at once:
+
+```
+[data-corvu-dialog-content] {
+ /* styles to apply to the dialog content */
+}
+[data-corvu-dialog-content][data-open] {
+ /* styles to apply when open */
+}
+[data-corvu-dialog-content][data-closed] {
+ /* styles to apply when closed */
+}
+```
+
+Additionally, corvu provides plugins for these CSS frameworks:
+
+- [Tailwind CSS plugin](https://corvu.dev/docs/installation/#tailwind-css-plugin)
+- [UnoCSS preset](https://corvu.dev/docs/installation/#unocss-preset)
+
+They make it easy to style components based on their current state using modifiers.
+
+**Available modifiers**
+
+- `corvu-open` -\> `&[data-open]`
+- `corvu-closed` -\> `&[data-closed]`
+- `corvu-expanded` -\> `&[data-expanded]`
+- `corvu-collapsed` -\> `&[data-collapsed]`
+- `corvu-transitioning` -\> `&[data-transitioning]`
+- `corvu-opening` -\> `&[data-opening]`
+- `corvu-closing` -\> `&[data-closing]`
+- `corvu-snapping` -\> `&[data-snapping]`
+- `corvu-resizing` -\> `&[data-resizing]`
+- `corvu-disabled` -\> `&[data-disabled]`
+- `corvu-active` -\> `&[data-active]`
+- `corvu-dragging` -\> `&[data-dragging]`
+- `corvu-selected` -\> `&[data-selected]`
+- `corvu-today` -\> `&[data-today]`
+- `corvu-range-start` -\> `&[data-range-start]`
+- `corvu-range-end` -\> `&[data-range-end]`
+- `corvu-in-range` -\> `&[data-in-range]`
+- `corvu-side-top` -\> `&[data-side='top']`
+- `corvu-side-right` -\> `&[data-side='right']`
+- `corvu-side-bottom` -\> `&[data-side='bottom']`
+- `corvu-side-left` -\> `&[data-side='left']`
+
+These two CSS framework use similar syntax. You can style components like this:
+
+```
+
+ ...
+
+```
+
+## Animation [Section titled Animation](https://corvu.dev/docs/styling/\#animation)
+
+corvu has built-in support for CSS animations and waits for any pending animation to finish before removing an element from the DOM. This means you can use CSS animations to animate the appearance and disappearance of primitives. Every unmountable component also provides a `forceMount` property which forces it to stay mounted in the DOM even when it is not visible. This is useful when using third-party animation libraries.
+
+Developed and designed by [Jasmin](https://github.com/GiyoMoon/)
\ No newline at end of file
diff --git a/.firecrawl/csszone-anchor.md b/.firecrawl/csszone-anchor.md
new file mode 100644
index 0000000..d4d3bd6
--- /dev/null
+++ b/.firecrawl/csszone-anchor.md
@@ -0,0 +1,79 @@
+# CSS Anchor Positioning 2026: Practical Guide for Tooltips, Menus, and Smart Overlays
+
+Positioning contextual UI has always been painful. Dropdowns, tooltips, and popovers often require JavaScript calculations, viewport checks, and custom collision logic. CSS Anchor Positioning moves a large part of this work into native styling.
+
+## Why It Matters
+
+- dropdown clipped on small screens
+- tooltip detached from trigger on scroll
+- menu appears off-screen in RTL or localized UI
+
+## Core Mental Model
+
+Define an anchor element
+Attach floating UI to that anchor
+Let CSS handle alignment behavior
+
+## Real Use Cases
+
+- action menu in data tables
+- profile dropdown in sticky headers
+- inline help tooltip in forms
+- contextual edit controls in CMS
+
+## UX Rules
+
+- keep overlays close to trigger
+- preserve keyboard focus flow
+- add deterministic closing behavior
+- avoid huge animation while repositioning
+
+## Rollout Strategy
+
+tooltip
+dropdown
+popover with richer content
+
+## Conclusion
+
+Anchor positioning is a structural improvement that reduces UI fragility in real products.
+
+## Related posts
+
+Continue reading on nearby topics.
+
+[Latest CSS Gradient Features and Trends for 2026Latest CSS gradient features for 2026: new color combinations, mesh techniques, animated transitions, and practical production patterns.](https://css-zone.com/blog/css-gradient-trends-2026) [Core Web Vitals 2026: CSS Playbook for Faster LCP, Better INP, and Stable CLSA practical Core Web Vitals 2026 guide focused on CSS architecture, rendering strategy, font loading, and layout stability for real products.](https://css-zone.com/blog/core-web-vitals-2026-css-playbook) [CSS Best Practices for Real Projects: A Practical Playbook from CSS-Zone.comA practical CSS guide for production teams: architecture, naming, tokens, responsive strategy, performance, and accessibility. Includes many copy-paste-ready examples and workflows used on CSS-Zone.com.](https://css-zone.com/blog/css-best-practices-real-projects-css-zone) [Modern CSS Features You Should Use in 2026Explore the latest CSS features that are changing web development: container queries, :has() selector, cascade layers, and more cutting-edge techniques.](https://css-zone.com/blog/modern-css-features-2026)
+
+## Comments
+
+0
+
+Sign in to leave a comment.
+
+Sign in
+
+No comments yet. Be the first.
+
+Cookies
+
+## We use cookies to keep things smooth
+
+They help keep you signed in, remember your preferences, and measure what features land. You control what happens next.
+
+[Privacy Policy](https://css-zone.com/privacy-policy) [Cookie rules](https://css-zone.com/cookie-policy)
+
+Not nowAccept cookies
+
+Contact
+
+CSS file\_type\_scss
+
+reCAPTCHA
+
+Recaptcha requires verification.
+
+[Privacy](https://www.google.com/intl/en/policies/privacy/) \- [Terms](https://www.google.com/intl/en/policies/terms/)
+
+protected by **reCAPTCHA**
+
+[Privacy](https://www.google.com/intl/en/policies/privacy/) \- [Terms](https://www.google.com/intl/en/policies/terms/)
\ No newline at end of file
diff --git a/.firecrawl/devproportal-radix-react-aria.md b/.firecrawl/devproportal-radix-react-aria.md
new file mode 100644
index 0000000..1ca3e65
--- /dev/null
+++ b/.firecrawl/devproportal-radix-react-aria.md
@@ -0,0 +1,382 @@
+[↓\\
+Skip to main content](https://devproportal.com/frontend/react/mastering-headless-ui-radix-vs-react-aria/#main-content)
+
+[DevPro Portal](https://devproportal.com/)
+
+Table of Contents
+
+
+Table of Contents
+
+
+It’s 2026. If you are still wrestling with `!important` overrides in Material UI or trying to hack the internal DOM structure of a Bootstrap component just to match a Figma design, you’re doing it the hard way.
+
+The React ecosystem has matured. We’ve moved past the era of “All-in-One” component kits that dictate your styling. We are firmly in the era of **Headless UI**.
+
+As senior developers and architects, our goal isn’t just to put pixels on the screen; it’s to ship accessible, robust, and performant interfaces that scale. We want full control over the CSS (likely via Tailwind or CSS-in-JS) without reinventing the complex logic required for keyboard navigation, focus management, and screen reader support.
+
+This article dives deep into the two heavyweights of the headless world: **Radix UI** and **React Aria**. We’ll compare them, build real components, and discuss the architectural implications of choosing one over the other.
+
+## The Headless Architecture [\#](https://devproportal.com/frontend/react/mastering-headless-ui-radix-vs-react-aria/\#the-headless-architecture)
+
+Before we touch the code, let’s align on the mental model. “Headless” doesn’t mean “no UI”; it means “unopinionated UI”.
+
+In a traditional library (like AntD or MUI), the logic and the styling are coupled. In a Headless library, the library provides the **behavior** and **state**, while you provide the **rendering** and **styling**.
+
+Here is how the data flow looks in a modern Headless setup:
+
+Your Code
+
+Headless Layer (Radix/Aria)
+
+User Interaction
+
+State Management
+
+WAI-ARIA Roles
+
+Focus Trap / Loops
+
+Keyboard/Mouse Events
+
+Tailwind / CSS Modules
+
+JSX Structure
+
+Framer Motion
+
+Rendered DOM
+
+### Why does this matter? [\#](https://devproportal.com/frontend/react/mastering-headless-ui-radix-vs-react-aria/\#why-does-this-matter)
+
+1. **Accessibility (a11y) is hard:** Implementing a fully accessible Dropdown Menu takes weeks of testing across VoiceOver, NVDA, and JAWS. Headless libraries give you this for free.
+2. **Design Freedom:** You own the `className`.
+3. **Bundle Size:** You only import the logic you need.
+
+* * *
+
+## Prerequisites and Environment [\#](https://devproportal.com/frontend/react/mastering-headless-ui-radix-vs-react-aria/\#prerequisites-and-environment)
+
+To follow along, ensure you have a modern React environment set up. We are assuming a 2026 standard stack:
+
+- **Node.js:** v20+ (LTS)
+- **React:** v19
+- **Styling:** Tailwind CSS v4 (or v3.4+)
+- **Icons:** Lucide React (optional but recommended)
+
+### Setup [\#](https://devproportal.com/frontend/react/mastering-headless-ui-radix-vs-react-aria/\#setup)
+
+We’ll create a lightweight sandbox.
+
+Copy
+
+```bash
+# Create a Vite project
+npm create vite@latest headless-demo -- --template react-ts
+
+# Enter directory
+cd headless-demo
+
+# Install dependencies (We will use both for comparison)
+npm install @radix-ui/react-popover @radix-ui/react-dialog react-aria-components class-variance-authority clsx tailwind-merge framer-motion
+
+# Start dev server
+npm run dev
+```
+
+_Note: We included `class-variance-authority` (CVA) and `tailwind-merge`. These are the bread and butter for handling styles in headless components._
+
+* * *
+
+## The Contenders: Radix vs. React Aria [\#](https://devproportal.com/frontend/react/mastering-headless-ui-radix-vs-react-aria/\#the-contenders-radix-vs-react-aria)
+
+Choosing between these two is often the first architectural decision when building a Design System.
+
+| Feature | Radix UI | React Aria (Adobe) |
+| --- | --- | --- |
+| **Philosophy** | Component-first. Provides unstyled primitives (e.g., ``). | Hooks-first (historically), now offers Components. “Industrial Grade” a11y. |
+| **API Surface** | simpler, cleaner JSX. Very “React-y”. | Extremely granular. Offers `useButton`, `useSelect`, etc., plus a new Component API. |
+| **Styling** | Agnostic. Works perfectly with Tailwind. | Agnostic. The new `react-aria-components` has a specific `className` function for states (hover/focus). |
+| **Animation** | Relies on external libs or CSS keyframes. Works great with Framer Motion. | Has built-in animation support in the new components API, but generally external. |
+| **Mobile** | Good, but sometimes lacks nuanced touch interactions. | Best in class. Adobe tests on everything. Handles virtual keyboard quirks brilliantly. |
+| **Bundle Size** | Modular. You install packages individually (e.g., `@radix-ui/react-tooltip`). | Modular, but the core logic is heavier due to extreme robustness. |
+
+* * *
+
+## Part 1: Building with Radix UI [\#](https://devproportal.com/frontend/react/mastering-headless-ui-radix-vs-react-aria/\#part-1-building-with-radix-ui)
+
+Radix is generally the favorite for teams that want to move fast but maintain high quality. It powers the popular `shadcn/ui` collection.
+
+Let’s build a **Popover** component. This isn’t just a tooltip; it needs to handle focus trapping (optional), closing on outside clicks, and keyboard formatting.
+
+### The Implementation [\#](https://devproportal.com/frontend/react/mastering-headless-ui-radix-vs-react-aria/\#the-implementation)
+
+We will use Tailwind for styling and `lucide-react` for an icon.
+
+Copy
+
+```tsx
+// src/components/RadixPopover.tsx
+import * as React from 'react';
+import * as Popover from '@radix-ui/react-popover';
+import { Settings2, X } from 'lucide-react';
+import { clsx, type ClassValue } from 'clsx';
+import { twMerge } from 'tailwind-merge';
+
+// Utility for cleaner classes
+function cn(...inputs: ClassValue[]) {
+ return twMerge(clsx(inputs));
+}
+
+export default function UserSettingsPopover() {
+ return (
+
+
+
+
+
+
+
+
+
Dimensions
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ );
+}
+```
+
+### Analysis [\#](https://devproportal.com/frontend/react/mastering-headless-ui-radix-vs-react-aria/\#analysis)
+
+1. **`asChild` Pattern:** Notice ``. This is Radix’s signature move. It merges the event handlers and ARIA attributes onto _your_ DOM node (`