All you need is a GitHub repository. Public or private — both work. There is nothing to install, sign up for, or deploy.
How it works
You create a.yaml file in a GitHub repository. Declarative Forms reads that file and renders it as an interactive form at a frms.dev URL. Every time you update the YAML and push to main, the form updates automatically.
Create your form
Create a YAML file
In any GitHub repository, create a new
.yaml file on the main branch. The filename becomes part of the form URL — for example, contact.yaml becomes /contact.Define the form
Paste this complete contact form into your YAML file:Replace
contact.yaml
hello@example.com with the email address where you want to receive submissions.Open your form
Once your YAML file is onmain, open it through frms.dev. The process differs slightly depending on whether your repository is public or private.
- Public repository
- Private repository
Navigate directly to:
Example: If your GitHub username is The form loads immediately. No authentication required — anyone with the link can fill it in.
| Placeholder | Value |
|---|---|
<owner> | Your GitHub username or organization |
<repo> | The repository name |
<filename> | The YAML filename without .yaml |
acme and you created contact.yaml in the forms repository:Share your form
After you load the form for the first time, you’ll be redirected to a permanent short URL like:main updates the form automatically.
No redeploy needed. Edit the YAML, push to
main, and the form updates. There is no build step, deploy step, or cache to clear.Verify it works
Open your form URL and run through these checks:Troubleshooting
Form not loading
Form not loading
- Confirm the file is on the
mainbranch. - Check that the URL matches the filename exactly (without
.yaml). - For private repos, make sure you’ve completed the GitHub authorization.
YAML parse error
YAML parse error
- Use spaces, not tabs. YAML is whitespace-sensitive.
- Ensure all strings with special characters (
:,#,") are wrapped in quotes. - Validate your YAML with an online linter like yamllint.com.
No submission email received
No submission email received
- Confirm you replaced
hello@example.comwith your actual email address. - Check your spam or junk folder.
- Verify the
connectionsblock is at the top level of the YAML (not nested inside a section).
Changes not showing up
Changes not showing up
- Make sure you pushed to the
mainbranch, not a different branch. - Hard-refresh the form page (
Cmd+Shift+RorCtrl+Shift+R) to bypass browser cache.