suiss/ui · Block
Signup Form
A full account creation form with name, country, birthday, email, and password fields and live password rules.
Signup Form is an open-source block from suiss/ui for React, React Native, SwiftUI and Jetpack Compose. The @esuiss/ui CLI copies its source into your project, so you own the code.
A full account creation form with name, country, birthday, email and a password with confirmation, grouped into labeled sections. A checklist of password rules appears as the user types, and mismatched passwords turn the fields red. Submitting a valid form shows a success view. Use it when you need more than an email and password at signup.
Installation
CLI
Works in any project with a components.json. See Installation for the one-line registry setup. Or use the suiss/ui CLI:
Manual
- Install the dependencies:
-
Add the pieces it builds on: Button, Input, Native Select.
-
Copy the source into
components/blocks/signup-form.tsx:
- Update the import paths to match your project.
Usage
Replace the success branch with your registration API call. Edit rules for the password checklist and the country list inline. The birthday is free text and is never parsed, so swap in a date picker or validate it before sending.
Notes
Every text field has an autocomplete value so browsers and password managers can fill it, and the form runs its own validation instead of the browser's.

Fields are grouped under short legends inside an InputAccessoryBar with a KeyboardScrollView, and the country uses a Picker. The password fields show a live checklist of password rules, and pressing Continue in the BottomBar validates every field, shows an error line if any fail, and swaps the form for a confirmation screen.
Installation
The CLI also adds what it builds on: Bottom Bar, Button, Icon, Input Accessory Bar, Keyboard Scroll View, Picker, Screen, Text. On React Native it also adds the animated view components/ui/animated-view.tsx.
Manual
- Install the dependencies:
-
Add the pieces it builds on: Bottom Bar, Button, Icon, Input Accessory Bar, Keyboard Scroll View, Picker, Screen, Text, and the animated view
components/ui/animated-view.tsxfrom the next step. -
Copy the animated view into
components/ui/animated-view.tsx:
- Copy the source into
components/blocks/signup-form.tsx:
- Update the import paths to match your project.
- Install the dependencies:
-
Add the pieces it builds on: Bottom Bar, Button, Icon, Input Accessory Bar, Keyboard Scroll View, Picker, Screen, Text, and the animated view
components/ui/animated-view.tsxfrom the next step. -
Copy the animated view into
components/ui/animated-view.tsx:
- Copy the source into
components/blocks/signup-form.tsx:
- Update the import paths to match your project.
- Install the dependencies:
-
Add the pieces it builds on: Bottom Bar, Button, Icon, Input Accessory Bar, Keyboard Scroll View, Picker, Screen, Text, and the animated view
components/ui/animated-view.tsxfrom the next step. -
Copy the animated view into
components/ui/animated-view.tsx:
- Copy the source into
components/blocks/signup-form.tsx:
- Update the import paths to match your project.
-
Target iOS 17 or later.
-
Add the Swift package to your app:
- Copy the theme files every view uses:
- Copy the source and every file it uses:
- Add the files to your app target.
- Set
minSdkto 24 or higher and add the dependencies:
- Copy the theme files every view uses:
- Copy the source and every file it uses:
- Update the
com.esuiss.uipackage names to match your project.
Usage
Replace COUNTRIES and RULES to match your requirements. onSubmit receives the form values (typed as SignupFormValues), and onLearnMore handles the info link.
