rilaykit

Roadmap

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

Roadmap

This is the public roadmap for RilayKit. It reflects our current priorities and may evolve based on community feedback. Features are organized by phase, roughly in the order we plan to ship them.

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


Phase 5 — AI-Assisted Form Filling

Status: Next up

Leverage the schema-first architecture to let LLMs intelligently pre-fill forms from unstructured text. Since RilayKit forms are data, the AI has full knowledge of every field's type, constraints, and validation rules.

useAIFormFill() — Text-to-Form Mapping

const { fillFromText, isProcessing } = useAIFormFill(formConfig, {
  provider: 'openai', // or 'anthropic', 'custom'
  model: 'gpt-4o-mini',
});

// User pastes unstructured text
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')

What this unlocks:

  • Paste-to-fill from emails, documents, or chat transcripts
  • Voice-to-form via speech-to-text + AI mapping
  • Bulk data import from unstructured sources
  • Intelligent defaults based on context
  • Accessibility improvement for complex forms

This feature will be opt-in and provider-agnostic. RilayKit will not bundle any AI SDK — you bring your own provider.


Phase 2 — Data Transform Pipeline

Status: Planned

A declarative transform layer that processes form data before and after submission. No more boilerplate in onSubmit handlers.

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();

What this unlocks:

  • Data sanitization (trim, lowercase, format)
  • Field exclusion (remove internal-only fields before API call)
  • Shape transformation (flatten nested objects, rename keys)
  • Serialization pipeline (dates, files, enums)

Phase 3 — Cross-Step Workflow Validation

Status: Planned

Validation rules that span across multiple workflow steps. Today, each step validates independently — but real-world workflows need constraints that reference data from previous steps.

crossValidate() — Multi-Step Validation Rules

flow.create(r, 'checkout', 'Checkout')
  .step({ id: 'shipping', formConfig: shippingForm })
  .step({ id: '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();

What this unlocks:

  • Cross-step dependency validation (billing depends on shipping)
  • Final review step that validates the entire workflow
  • Business rules that span multiple data sources
  • Pre-completion integrity checks

Phase 6 — DevTools

Status: Planned

A visual inspector panel (similar to React Query DevTools) that surfaces the entire 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 view of every field's value, errors, touched state, and active conditions
  • Condition Graph — visual dependency graph showing which fields affect which conditions
  • Validation Timeline — trace of all validation runs with timing and results
  • Workflow Navigator — step state, visited/passed steps, accumulated data across steps
  • Performance Panel — render counts, validation durations, re-render hotspots (powered by the existing monitoring system)
  • State Diff — highlight what changed between renders

The monitoring system in @rilaykit/core already tracks events, performance metrics, and errors. DevTools will be a visual layer on top of this existing infrastructure.


Phase 7 — Plugin System

Status: Exploring

A first-class plugin architecture for extending form and workflow behavior without modifying core code. The WorkflowPlugin type already exists internally — this phase promotes it to a public, documented API.

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 });
  },
  onWorkflowComplete: (workflowId, allData) => {
    analytics.track('workflow_completed', { workflowId });
  },
});

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

Plugin ideas for the community:

  • @rilaykit/plugin-autosave — auto-save drafts to localStorage or server
  • @rilaykit/plugin-analytics — track field interactions, drop-off rates
  • @rilaykit/plugin-ab-testing — serve different form variants
  • @rilaykit/plugin-feature-flags — toggle fields/steps based on feature flags
  • @rilaykit/plugin-undo — undo/redo for form state

Completed

Features already 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@rilaykit/formsShipped
Multi-step workflow builder@rilaykit/workflowShipped
Step navigation with validation guards@rilaykit/workflowShipped
Workflow persistence (LocalStorage)@rilaykit/workflowShipped
Workflow analytics hooks@rilaykit/workflowShipped
Step conditions (visible, skipable)@rilaykit/workflowShipped
All-in-one rilaykit package with .form() / .flow()rilaykitShipped
Field effects with onChange() — cascading values, dynamic props, calculated fields@rilaykit/core + @rilaykit/formsShipped
EffectEngine with cascade protection & async abort@rilaykit/formsShipped
useFieldProps hook for dynamic field props@rilaykit/formsShipped
Server-driven forms with fromSchema() — JSON to FormConfig@rilaykit/formsShipped
Schema validation (validateSchema) and type guard (isFormSchema)@rilaykit/formsShipped
Schema registry for custom validators and effect handlers@rilaykit/formsShipped
Flat and row-based schema layouts with repeatable support@rilaykit/formsShipped

On this page