Migration from v1.2.x to v1.3.x â
Version 1.3.0 maintains full backward compatibility. Your existing code will continue to work with deprecation warnings in development mode.
What's New in v1.3.0 â
- ðŊ Support for multiple validation libraries (Zod, Yup, Valibot)
- ð§ New
:validatorprop for HeadlessForm and other form components - ðĶ Tree-shakable validator adapters via separate entry points
- ðĻ
FormValidatorinterface for creating custom validators - ðŠķ Optional peer dependencies - only install the validators you need
Deprecation Warnings â
The following APIs are deprecated but still work. You'll see console warnings in development mode:
1. Passing rules object to useForm() â
Deprecated:
const form = useForm(data, { email: 'required|email' })Recommended:
import { createEncolaValidator } from '@encolajs/enforma/validators/encola'
const form = useForm(data, createEncolaValidator({
email: 'required|email'
}))2. Using :rules prop on HeadlessForm â
Deprecated:
<HeadlessForm :data="formData" :rules="{ email: 'required|email' }" />Recommended:
<script setup>
import { createEncolaValidator } from '@encolajs/enforma/validators/encola'
const validator = createEncolaValidator({ email: 'required|email' })
</script>
<template>
<HeadlessForm :data="formData" :validator="validator" />
</template>Migration steps â
Step 1: Install @encolajs/validator (if not already installed)
npm install @encolajs/validatorStep 2: Update your code to use the new API
<script setup>
import { createEncolaValidator } from '@encolajs/enforma/validators/encola'
const validator = createEncolaValidator({
email: 'required|email',
name: 'required'
})
</script>
<template>
<!-- Old way (deprecated but still works) -->
<!-- <HeadlessForm :rules="{ email: 'required|email' }" /> -->
<!-- New way (recommended) -->
<HeadlessForm :data="formData" :validator="validator" />
</template>Common Migration Patterns â
Pattern 1: Simple Forms â
Before:
<script setup>
const form = useForm(data, {
email: 'required|email',
name: 'required'
})
</script>After:
<script setup>
import { createEncolaValidator } from '@encolajs/enforma/validators/encola'
const form = useForm(data, createEncolaValidator({
email: 'required|email',
name: 'required'
}))
</script>Pattern 2: Forms with Custom Messages â
Before:
<script setup>
const form = useForm(data, rules, {
customMessages: {
'email.required': 'Please enter your email',
'email.email': 'Email format is invalid'
}
})
</script>After:
<script setup>
import { createEncolaValidator } from '@encolajs/enforma/validators/encola'
const validator = createEncolaValidator(
{ email: 'required|email' },
{
'email.required': 'Please enter your email',
'email.email': 'Email format is invalid'
}
)
const form = useForm(data, validator)
</script>Pattern 3: HeadlessForm Component â
Before:
<template>
<HeadlessForm
:data="formData"
:rules="{ email: 'required|email' }"
:customMessages="messages"
/>
</template>After:
<script setup>
import { createEncolaValidator } from '@encolajs/enforma/validators/encola'
const validator = createEncolaValidator(
{ email: 'required|email' },
messages
)
</script>
<template>
<HeadlessForm :data="formData" :validator="validator" />
</template>Troubleshooting â
Issue: "Cannot find module '@encolajs/enforma/validators/encola'" â
Solution: Make sure you're importing from the correct path:
// â
Correct
import { createEncolaValidator } from '@encolajs/enforma/validators/encola'
// â Incorrect
import { createEncolaValidator } from '@encolajs/enforma'Issue: Deprecation warnings in production â
Deprecation warnings only show in development mode (process.env.NODE_ENV !== 'production'). If you're seeing them in production, check your build configuration.
Issue: TypeScript errors with Zod/Yup/Valibot â
Make sure you have TypeScript 5.0+ installed:
npm install -D typescript@^5.0.0Issue: Validator not found / tree-shaking issues â
Ensure your bundler is configured correctly for tree-shaking. The validators are in separate entry points to enable proper code splitting.
Other issues â
If you encounter other issues while migration report an issue in Github.
