rilaykit

Roadmap

What's coming next for RilayKit. Our public roadmap organized by priority phases, from AI-powered form filling to visual DevTools.

Roadmap

Public roadmap, organized by phase. Priorities may shift with community feedback. Code samples in unshipped phases are proposals, not final APIs.

Want to influence the roadmap? Open a discussion or upvote existing proposals.


Phase 5 — AI-Assisted Form Filling

Status: Next up

The foundation shipped: @rilaykit/agent lets an LLM render forms and flows as chat tools (show_form, show_flow, show_component) with AI SDK and Anthropic adapters. Next: letting an LLM fill an existing form from unstructured text. Since RilayKit forms are data, the AI knows every field's type, constraints, and validation rules.

useAIFormFill() — Text-to-Form Mapping

const { fillFromText, isProcessing } = useAIFormFill(formConfig, {
  provider: 'openai', // or 'anthropic', 'custom'
});

await fillFromText(
  "My name is Karl, I live in Paris, my email is karl@example.com"
);
// → setValue('name', 'Karl')
// → setValue('city', 'Paris')
// → setValue('email', 'karl@example.com')

Unlocks paste-to-fill from emails or transcripts, voice-to-form via speech-to-text, and bulk import from unstructured sources.

Opt-in and provider-agnostic — RilayKit will not bundle an AI SDK.


Phase 2 — Data Transform Pipeline

Status: Planned

Declarative transforms around submission — sanitization, field exclusion, reshaping — without onSubmit boilerplate.

transform() — Pre/Post Submission Hooks

form.create(r, 'register')
  .add(/* fields */)
  .transform({
    before: (data) => ({
      ...data,
      email: data.email.trim().toLowerCase(),
    }),
    after: (data) => omit(data, ['confirmPassword', 'acceptTerms']),
  })
  .build();

Phase 3 — Cross-Step Workflow Validation

Status: Planned

Form-level cross-field validation already shipped (setValidation({ validate }), path-routed errors, useFormErrors()), but each workflow step still validates independently. This phase adds rules that span steps, reusing the same path-keyed error routing.

crossValidate() — Multi-Step Validation Rules

flow.create(r, 'checkout', 'Checkout')
  .step({ id: 'shipping', title: 'Shipping', formConfig: shippingForm })
  .step({ id: 'billing', title: 'Billing', formConfig: billingForm })
  .crossValidate({
    validate: (allData) => {
      const errors: Record<string, string> = {};
      if (allData.billing.sameAsShipping && !allData.shipping.address) {
        errors['shipping.address'] = 'Required when "same as shipping" is checked';
      }
      return errors;
    },
    trigger: 'before-complete' // or 'on-step-leave'
  })
  .build();

Phase 6 — DevTools

Status: Planned

A visual inspector panel (similar to React Query DevTools) surfacing form and workflow state in real time.

<RilayDevTools /> — Visual Inspector

<FormProvider formConfig={loginForm}>
  <Form />
  {process.env.NODE_ENV === 'development' && <RilayDevTools />}
</FormProvider>

Planned capabilities:

  • Field Inspector — live values, errors, touched state, active conditions
  • Condition Graph — which fields affect which conditions
  • Validation Timeline — validation runs with timing and results
  • Workflow Navigator — step state, visited/passed steps, accumulated data
  • Performance Panel — render counts and hotspots, powered by the existing monitoring system in @rilaykit/core

Phase 7 — Plugin System

Status: Exploring

A public plugin API for extending form and workflow behavior. The WorkflowPlugin type already exists internally — this phase promotes and documents it.

createPlugin() — Lifecycle Hooks

import { createPlugin } from 'rilaykit';

const autosavePlugin = createPlugin({
  id: 'autosave',
  onFieldChange: debounce(async (fieldId, value, { allValues }) => {
    await saveDraft(allValues);
  }, 1000),
  onStepComplete: (stepId, stepData) => {
    analytics.track('step_completed', { stepId });
  },
});

flow.create(r, 'onboarding', 'Onboarding')
  .configure({ plugins: [autosavePlugin] })
  .build();

Community plugin ideas: autosave, analytics, A/B testing, feature flags, undo/redo.


Completed

Shipped in the current release:

FeaturePackageStatus
Immutable component registry@rilaykit/coreShipped
Standard Schema validation (Zod, Valibot, Yup, ArkType)@rilaykit/coreShipped
Declarative conditions with when() builder@rilaykit/coreShipped
Performance monitoring & adapters@rilaykit/coreShipped
Form builder with type-safe field config@rilaykit/formsShipped
Granular Zustand store selectors@rilaykit/formsShipped
Repeatable fields with min/max@rilaykit/formsShipped
Async field validation with debounceMs@rilaykit/formsShipped
Validation timing — mode / reValidateMode (RHF model)@rilaykit/formsShipped
Path-keyed error map + useFormErrors() form-level bucket@rilaykit/formsShipped
Multi-step workflow builder@rilaykit/workflowShipped
Step navigation with validation guards@rilaykit/workflowShipped
Workflow persistence (LocalStorage, type-faithful serialization)@rilaykit/workflowShipped
Completion meta — onComplete(data, meta) with visited/skipped/passed steps@rilaykit/workflowShipped
Workflow analytics hooks@rilaykit/workflowShipped
Step conditions (visible, skippable)@rilaykit/workflowShipped
All-in-one rilaykit package with .form() / .flow()rilaykitShipped
Field effects with onChange() — cascades, dynamic props, calculated fields@rilaykit/core + @rilaykit/formsShipped
useFieldProps hook for dynamic field props@rilaykit/formsShipped
Server-driven forms — fromSchema(), compileForm, validateSchema, isFormSchema@rilaykit/formsShipped
Server-driven flows — compileFlow@rilaykit/workflowShipped
Agent chat tools — show_form / show_flow / show_component with human-in-the-loop resolution@rilaykit/agentShipped
manifest() — catalog to Markdown for system prompts@rilaykit/agentShipped
AI SDK & Anthropic adapters (rilaykit/ai-sdk, rilaykit/anthropic)rilaykitShipped
RSC-safe isomorphic entries (React-free mains, /react client entries)all packagesShipped

On this page