Release 0.1.7 - 2026-09-12

This release adds two new features I'm incredibly excited about: Bucket enums, and component params.

Read the full change log here.

Bucket Enums!

This release now brings compiler verification for every reference you make to a resource type when using the Data Framework.

A Bucket enum is generated at src/generated/bucket.rs, and contains a variant for every model in your application.

use strum_macros::AsRefStr;

#[derive(AsRefStr, Clone, Debug)]
pub enum Bucket {
    #[strum(serialize = "customers")]
    Customers,

    #[strum(serialize = "invoiceLineItems")]
    InvoiceLineItems,
}

This enum can now be used in Store fns, wherever a resource type is required:

use crate::generated::Bucket;

let customer: Customer = store.find_record(Bucket::Customers, "123", None).await?;

Static Literal Component Params

Up until now, component support has been limited to wrapping HTML content with child content that replaces {{yield}}.

Now first steps have been taken to support passing parameters into components. In this release, you can include boolean, numeric, or string static literals in component references.

The generated component will have the necessary parameters added, after they were collected from each and every component reference.

Given this component:

<div class="card text-center">
    <div class="card-body">
        <div class="card-title">{{@name}}</div>
        {{yield}}
    </div>
    <div class="card-footer text-muted">
        Invoices: {{@invoices}}, Active: {{@active}}
    </div>
</div>

And this component reference:

<CustomerCard @name="Acme Widgets" @invoices=23 @active=true>
    <div>some nested content</div>
</CustomerCard>

The following Leptos component is generated:

// src/generated/components/customer_card.rs
#[component]
pub fn CustomerCardComponent(
    children: Children,
    name: String,
    invoices: f64,
    active: bool,
) -> impl IntoView {
    view! {
        <div class="card text-center">
            <div class="card-body">
                <div class="card-title">{name}</div>
                {children()}
            </div>
            <div class="card-footer text-muted">
                Invoices: {invoices}, Active: {active}
            </div>
        </div>
    }
}

©2026 Megalithic LLC | Website | Guide | GitLab | Contact