Hi Deep, Thanks for your continued contributions to apisix-dashboard, and for putting together such a thorough analysis and proof-of-concept for Issue #2986. We’ve reviewed PR #3274 and the demo, and overall the direction aligns well with what we discussed in #2986: a custom adapter that reuses our existing React Hook Form + Mantine-based form components, without introducing a large third-party JSON Schema form library.
Most importantly, your PoC demonstrates that the two hardest parts for a custom approach—oneOf and dependencies conditional rendering—can be handled cleanly using useWatch(). That meaningfully validates the feasibility of this approach within our current stack. Below is more detailed feedback to help move the PoC toward something we can confidently merge and iterate on. 1. Alignment with project direction Yes: Avoiding heavy JSON Schema form frameworks, reusing existing FormItem* components, and keeping React Hook Form as the single form state manager matches our goals around bundle size, UI consistency, and maintainability. As a PoC, the capabilities you focused on (basic type mapping + oneOf + dependencies) are the right scope to validate the core assumptions. 2. Key concerns / gaps we want to address Real plugin schema coverage: The demo schema proves the mechanism, but the next step should validate against 1–2 real APISIX plugin schemas that include combinations of nesting, enums, arrays, and conditional logic to surface edge cases early. proxy-rewrite is a good choice. Array support: Many APISIX plugin configs involve arrays (arrays of strings, arrays of objects, etc.). Supporting type: "array" / items is likely required for production readiness. Validation strategy: The PoC focuses on rendering and conditional display. For production, we’ll need a clear approach for schema validation (e.g., whether to use ajv, how validation errors map to fields, and how this interacts with our existing validation patterns). I look forward to hearing more ideas and suggestions from other members of the community. DEEP SHEKHAR SINGH / <[email protected]> 于2026年1月7日周三 15:37写道: > Hi APISIX Dashboard team, > > I'm Deep Shekhar Singh, and I've been contributing to the apisix-dashboard > project. I'm interested in working on the "JSON Schema to Form UI" feature > (Issue #2986) as part of my preparation for GSoC 2026. > > Background > > Following the discussion in issue #2986, I've built a proof-of-concept > demonstrating a custom adapter approach for auto-generating form UIs from > APISIX plugin JSON Schemas. > > What I've Built > > I've created a working demo that shows: > > 1. *SchemaForm component* - Renders forms from JSON Schema > 2. *oneOf support* - Handles conditional field groups (e.g., OAuth vs API > Key authentication) > 3. *dependencies support* - Shows/hides fields based on other field values > (e.g., Redis config when storage_type=redis) > 4. *Zero bundle impact* - Reuses existing FormItem components (TextInput, > Select, Switch, NumberInput) > > *PR*: https://github.com/apache/apisix-dashboard/pull/3274 > *Issue*: https://github.com/apache/apisix-dashboard/issues/2986 > > *Technical Approach* > > - Uses React Hook Form's useWatch() for conditional rendering > - Maps JSON Schema types directly to existing Mantine components > - No additional state management libraries needed > - Estimated bundle size impact: ~23 kB (vs ~69 kB for > react-jsonschema-form) > > *Demo* > > A demo page is available at /schema_form_demo showing: > - Basic type mapping (string, number, boolean, enum) > - Conditional field groups with oneOf > - Conditional fields with dependencies > - Live form data preview > > *Seeking Feedback* > > I'd appreciate feedback on: > 1. Is this approach aligned with the project's direction? > 2. Any concerns about the implementation? > 3. What additional features/tests would be needed for production? > > I'm happy to iterate on this based on community feedback and potentially > expand it as a GSoC 2026 project to cover all 80+ APISIX plugins. > > Looking forward to your thoughts! > > Best regards, > Deep Shekhar Singh > > GitHub: @DSingh0304 > Previous contributions: 10 merged PRs in apisix-dashboard >
