Another beta release is here, bringing significant improvements to the StudioCMS project. We’ve been hard at work not only enhancing StudioCMS but expanding its functionality to make it easier and better for everyone.
What’s New in 0.1.0-beta.31
Read the "What’s New in 0.1.0-beta.31" sectionHere’s a brief overview of the main changes:
- Complete database overhaul powered by Kysely (goodbye, Astro DB)
- Redesigned and simplified SDK for better developer experience
- Multi-database support including MySQL and PostgreSQL
- New system and database management utilities for easier administration
- Streamlined plugin system for better extensibility
- Built-in web vitals and analytics (optional feature)
Catching Up Since Beta.19
Read the "Catching Up Since Beta.19" sectionThe last beta release blog post covered 0.1.0-beta.19 (the Effect update). Since then, we’ve shipped numerous improvements:
- Added multi-language (i18n) support for the dashboard UI
- Took over maintenance of the
@astrojs/web-vitalspackage, which previously used Astro DB for storage, now available as@studiocms/web-vitals - Implemented an Astro component registry (more details coming soon)
- Refactored the plugin system to introduce authentication, dashboard augments, and a streamlined rendering engine
- Reorganized the table schema, simplifying and merging single-row tables like config tables
- Released beta versions of
@studiocms/uifor its upcoming 1.0.0 release
Why We’re Replacing Astro DB and Drizzle with Kysely
Read the "Why We’re Replacing Astro DB and Drizzle with Kysely" sectionThis decision was heavily discussed by our core team, and we identified several key advantages to moving away from Drizzle’s architecture.
While both Astro DB and Drizzle are excellent products, Drizzle’s design has limitations for our goals. The main challenge: multi-dialect support. Drizzle’s API requires unique types for each dialect client (MySQL, PostgreSQL, libSQL), making dynamic querying across databases unnecessarily complex.
Enter Kysely
Read the "Enter Kysely" sectionKysely solves this with a unified client interface. You simply pass your chosen dialect into the constructor, keeping the API stable and consistent across all database types.
The downside? We had to rebuild our entire internal architecture for the new database client.
We’ve created two new packages:
@withstudiocms/kysely- Our main database client@withstudiocms/sdk- Our complete SDK core in its own package, enabling greater flexibility
Both packages provide a significantly improved API while expanding support to many more database dialects and simplifying custom migration handling.
Saying Goodbye to Astro DB
Read the "Saying Goodbye to Astro DB" sectionThis change means parting ways with one of our primary tools from the beginning: @astrojs/db.
Starting with StudioCMS 0.1.0-beta.31, we will no longer support projects using Astro DB. While Astro DB has been instrumental in getting us to where we are today, we believe this change will have an overwhelmingly positive impact on the project. Plus, we now support far more than just libSQL databases!
Kysely Meets Effect
Read the "Kysely Meets Effect" sectionFrom the start, we wanted both Kysely and our SDK powered by Effect. After some trial and error, we developed an interface that works perfectly for our use case.
Our Kysely database client and tables utilize Effect patterns and Effect Schema to ensure table data converts properly across all dialects while maintaining simple column type options at the database level. In fact, we only use two column types: integer and text (each properly converted for their dialect by Kysely). These cover all basic value types, and anything else can be stored as JSON strings.
Custom Migration System
Read the "Custom Migration System" sectionThe next challenge was handling database schema migrations. Without Astro DB, we needed precise control over our database tables, so we built our own migration handling system. This system supports custom indexes and triggers during table creation or alteration, and integrates seamlessly with our ecosystem through the studiocms migrate command.
The Overhauled SDK
Read the "The Overhauled SDK" sectionWith @withstudiocms/kysely in place, we needed to completely overhaul our SDK. Rather than patching the existing (admittedly messy) SDK, we extracted and rewrote the majority of the handling and processing logic.
This allowed us to:
- Simplify the SDK significantly
- Implement a better caching system that maps all functions to a unified cache map
- Add tag-based tracking for easy category-based cache cleanup
- Prevent state inconsistencies between our SDK and REST API
The new @withstudiocms/sdk package creates a central point for SDK development without the complexity of our previous deeply nested solution. This opens possibilities for side projects—maybe even a dedicated REST API server someday. Have ideas? Join our Discord and share them!
System Management and Database Viewer
Read the "System Management and Database Viewer" sectionWe’ve added powerful new tools to StudioCMS:
System Management Page
Read the "System Management Page" sectionA dedicated page with debug information and a database viewer powered by Outerbase Studio. This production-ready viewer gives you direct access to your database tables through the StudioCMS dashboard.
CLI Debug Command
Read the "CLI Debug Command" sectionThe new studiocms debug CLI command prints helpful debug information to your console during development. Similar to Astro’s astro info command, it displays version information for packages and plugins—useful when troubleshooting or seeking help.
Dev Toolbar Integration
Read the "Dev Toolbar Integration" sectionWe’ve built an all-new Astro dev-toolbar-app for database viewing in development mode. Access your database tables from any page, making debugging and testing new features much easier.
Web Vitals and Page Analytics
Read the "Web Vitals and Page Analytics" sectionIf you’re familiar with @astrojs/web-vitals (or its replacement @studiocms/web-vitals) and StudioCMS’s integration with Astro DB, you’ll be pleased to know this functionality is now built-in as an optional plugin.
This plugin allows you to track:
- Web vitals information (LCP, INP, CLS)
- Page view analytics
- Performance metrics powered by Google’s
web-vitalslibrary
While functionality is currently limited to web vital reports, it provides valuable insights into your site’s performance.
Getting Started
Read the "Getting Started" sectionTo enable web vitals tracking, set the features.webVitals option to true in your StudioCMS config file. This creates a new database table and begins collecting data as pages are viewed and interacted with.
What’s Next for StudioCMS
Read the "What’s Next for StudioCMS" sectionStudioCMS has come a long way from its initial release, and we’re excited about what’s ahead.
The Big Question: When Will Beta End?
Read the "The Big Question: When Will Beta End?" sectionWe’re closer than you might think. There are only a few major features we want to complete before moving from beta to standard 0.x.x semver, and eventually to 1.x.x and beyond.
If everything goes smoothly and we avoid major breaking changes from dependencies (like Astro’s upcoming v6 update), we’re hoping to exit beta within a few months after the new year.
Ready to try StudioCMS beta.31? Check out our documentation to get started, or join our Discord community to connect with other users and the development team.
Adam Matthiesen
Published 12/17/2025Back to Blog