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

Here’s a brief overview of the main changes:

Catching Up Since Beta.19

The last beta release blog post covered 0.1.0-beta.19 (the Effect update). Since then, we’ve shipped numerous improvements:

Why We’re Replacing Astro DB and Drizzle with Kysely

This 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

Kysely 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:

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

This 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

From 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

The 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

With @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:

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

We’ve added powerful new tools to StudioCMS:

System Management Page

A 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

The 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

We’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

If 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:

While functionality is currently limited to web vital reports, it provides valuable insights into your site’s performance.

Getting Started

To 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

StudioCMS has come a long way from its initial release, and we’re excited about what’s ahead.

The Big Question: When Will Beta End?

We’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.



Back to Blog