The source repository for Yakura Gorilla Forms — a modern WordPress form builder plugin built on Svelte 5.
A drag-and-drop WordPress form builder with conditional logic, multi-step forms, payments, conversational mode, and 37+ field types. Zero overhead on pages without forms — built on Svelte 5 with no jQuery dependency.
For the full feature list, see readme.txt.
gorilla-forms/
├── includes/ PHP backend (REST API, submission pipeline, integrations)
│ ├── rest-api.php ~50 REST endpoints under yakura-gorilla-forms/v1
│ ├── submission.php Form submission processing pipeline
│ ├── database.php Dynamic per-form entry tables
│ └── integrations/ Stripe, PayPal, Mailchimp, webhooks, etc.
├── src/ Svelte 5 + TypeScript frontend
│ ├── main.ts Admin SPA entry point
│ ├── frontend/ Public-facing form rendering
│ └── lib/ Shared components, stores, types
├── tests/ PHPUnit tests (unit + integration) + security scans
├── e2e/ Playwright end-to-end tests
├── assets/ Build output target (generated, gitignored)
├── readme.txt WordPress.org plugin readme
└── yakura-gorilla-forms.php Plugin bootstrap file
This plugin's distributed JavaScript and CSS in assets/js/ and assets/css/ are generated from the Svelte/TypeScript source in src/ using Vite. To build them yourself:
# Frontend dependencies (Svelte, Vite, TypeScript)
npm install
# PHP dependencies (testing tools, static analysis)
composer install
npm run build
This compiles two bundles:
assets/js/yakura-gorilla-forms.js + assets/css/yakura-gorilla-forms.css — the admin SPA mounted in wp-adminassets/js/yakura-gorilla-forms-frontend.js + assets/css/yakura-gorilla-forms-frontend.css — the public-facing form rendererAfter building, the plugin is ready to be zipped and installed in WordPress.
npm run dev
The repository ships with @wordpress/env for a one-command local WordPress install:
npx wp-env start
WordPress will be available at http://localhost:8888 with the plugin pre-activated.
vendor/bin/phpunit --testsuite unit
wp-env)PLUGIN_TESTSUITE=integration vendor/bin/phpunit --testsuite integration
npx vitest run
wp-env)npx playwright test
vendor/bin/phpcs # PHP coding standards
vendor/bin/phpstan analyse # PHP static analysis (level 9)
npm run lint # ESLint
npm run check # svelte-check + tsc
Two build entry points:
src/main.ts): Svelte 5 app for the WordPress admin form editor, entries list, settings, and analytics dashboard.src/frontend/main.ts): discovers [data-gf-form] elements on the page, decodes the form schema from base64 data attributes, and mounts the form renderer.PHP backend:
yakura-gorilla-forms/v1 namespace (~50 endpoints) in includes/rest-api.phpincludes/submission.phpwp_gf_entries_{form_id} for performance at scaleConditional logic runs identically on both the JavaScript client and the PHP server, with parity enforced by a shared 76-case test table.
Payments use server-side amount verification: PayPal stores a transient with the expected amount before checkout and validates on capture; Stripe webhooks are HMAC-SHA256 verified with a 5-minute replay window.
Issues and pull requests are welcome.
git checkout -b my-feature)For substantial changes, please open an issue first to discuss the approach.
GPL-2.0-or-later — see LICENSE.
Third-party libraries and their respective licenses are documented in THIRD_PARTY_NOTICES.md.