Formisch به RC رسید: فرم با یک اسکیمای Valibot
خلاصهٔ کاملتر
به نوشتهٔ فابین هیلر، Formisch رسماً وارد فاز Release Candidate شده. یعنی هستهٔ API و طراحی کلی تثبیت شده و — مگر اینکه مشکل بحرانی پیدا بشه — تا نسخهٔ ۱.۰ تغییر شکنندهای در کار نیست. به گفتهٔ خودش، چند ماه گذشته صرف تست کتابخونه روی کیسهای لبهای پیچیده و بهبود پایداری و کارایی رانتایم شده.
Formisch یک کتابخونهٔ اسکیمامحور، headless و کاملاً type-safe برای مدیریت state فرمه. فرم رو یک بار با اسکیمای Valibot توصیف میکنی و همون یک اسکیما، هم اعتبارسنجی رانتایم رو راه میندازه هم تایپهای TypeScript رو تولید میکنه؛ نه تعریف تایپ جداگانهای میخواد که همیشه با فرم sync نگهش داری، نه resolverای که باید کانفیگ بشه.
import * as v from 'valibot';
const LoginSchema = v.object({
email: v.pipe(v.string(), v.email('Please enter a valid email.')),
password: v.pipe(v.string(), v.minLength(8, 'Your password is too short.')),
});UI رو خودت روی اسکیما میسازی. چون headlessـه، کنترل کامل مارکآپ و استایل دست خودته و هر فیلد مقدار، خطاها و props لازم برای وصلشدن به input رو بهت میده. مسیر فیلد (path) هم کاملاً بر اساس اسکیما تایپ شده: اگه اسم یک فیلد رو عوض کنی، TypeScript همهجا بهت نشون میده کجاها دیگه جور درنمیاد.
State روی سیگنالهای ریزدونه سواره، پس فقط همون فیلدی که واقعاً عوض شده دوباره رندر میشه، و به لطف طراحی ماژولار، حجم باندل از حدود ۲.۵ کیلوبایت شروع میشه. Formisch روی React، Vue، Solid، Qwik، Svelte و Preact با یک هستهٔ مشترک اجرا میشه و — به ادعای نویسنده — بدون «مالیات adapter»: موقع بیلد، ریاکتیویتی خودِ فریمورک جایگزین میشه، پس لایهٔ انتزاعی اضافهای تو باندلت نمیشینه.
خودِ RC بیشتر سختکردن چیزهای موجود بوده تا اضافهکردن فیچر، و حالا با تستسوئیتی با پوشش ۱۰۰٪ پشتیبانی میشه: فیلدهای تودرتو، آرایههای فیلد و tupleها روی عملیات درج، جابهجایی، جایگزینی، ریست و تغییر اندازه محکمتر شدن؛ وضعیتهای dirty و touched و state تازهٔ edited سر ریست و عملیات آرایهای قابلپیشبینیتر رفتار میکنن و بعد از submit ناموفق، فوکوس میره روی اولین فیلدی که واقعاً میتونه فوکوس بگیره. متدهای کمکی isValid، isDirty و getDeepErrors هم اضافه شدن.
نویسنده مسیر رسیدن به اینجا رو هم تعریف میکنه: اول Modular Forms (۲۰۲۲) بود، بعد Valibot (۲۰۲۳)، و Formisch جای تلاقی همون دو تاست — بازنویسی Modular Forms حول یک هستهٔ اسکیمامحور و مستقل از فریمورک. میگه معماری اولش به بنبست خورد و مجبور شد از نو شروع کنه، و چشماندازش اینه که Formisch برای فرمها همون چیزی باشه که Vite برای بیلد شد. الان هم مهمترین چیزی که میخواد، بازخورد روی API قبل از قفلشدن v1ـه.
نکات کلیدی:
- API و طراحی Formisch تثبیت شده؛ تا ۱.۰ تغییر شکنندهای انتظار نمیره
- یک اسکیمای Valibot هم اعتبارسنجی رانتایم میده هم تایپهای TypeScript
- headless و مبتنی بر سیگنال: فقط فیلد تغییرکرده رندر میشه و باندل از ~۲.۵ کیلوبایت شروع میشه
- یک هسته برای React، Vue، Solid، Qwik، Svelte و Preact، با ریاکتیویتی خودِ فریمورک موقع بیلد
- در RC: فیلدهای تودرتو و آرایهها محکمتر شدن، مدیریت focus و state بهتر شد و متدهای isValid، isDirty و getDeepErrors اومدن




