Use a Different Form Library

Welder is one option, not a requirement. Plain HTML forms processed with $request sanitizers are perfectly idiomatic — and any third-party form library plugs in without ceremony.

Plain HTML + sanitizers

For the long tail of small forms, you don't need a library at all. Write the markup yourself and use the request sanitizers (covered in Request) for validation:

<!-- app/views/contact.phtml -->
<form method="post" action="/contact">
    <input name="name"    value="<?=esc($_POST['name'] ?? '')?>">
    <input name="email"   value="<?=esc($_POST['email'] ?? '')?>">
    <textarea name="message"><?=esc($_POST['message'] ?? '')?></textarea>
    <button type="submit">Send</button>
</form>
// app/controllers/contact.php
$errors = [];

if ($request->method === 'POST') {
    $name    = $request->post->name('name');
    $email   = $request->post->email('email');
    $message = trim($request->post->sanitize('message', 1));

    if ($name === '')           $errors['name']    = 'Name is required.';
    if ($email === '')          $errors['email']   = 'Valid email required.';
    if ($message === '')        $errors['message'] = 'Message is required.';

    if (!$errors) {
        // ...save, send mail, etc.
        \True\App::go('/contact/thanks');
    }
}

$vars = compact('errors');

Symfony Forms

If you're already using Symfony components elsewhere, drop the form bundle in:

composer require symfony/form symfony/validator symfony/translation

Build a form factory once during bootstrap, then use it from controllers like you would in any Symfony app — TrueFramework doesn't care.

Laravel Collective Forms (or anything else)

Same idea. The form library lives in your composer dependencies and your controllers. The framework only cares that you eventually call $App->view->render(...) or $App->response(...) to finish the request.

Removing Welder

If you don't plan to use it:

composer remove truecastdesign/welder

Nothing in true or hopper depends on it.

Mixing approaches

Many real apps end up with both — Welder handles the dozens of simple contact-form-style submissions where its validate() + get() shorthand pays for itself, while heavier user-facing forms (multi-step wizards, dynamic field sets) lean on a richer library or roll their own.