It’s not something they make easy, due to the complexity of the required templating, however it is 100% possible, and we do it quite commonly at my work.
You have a couple different options:
Grab the gravity forms form ‘object’ (actually it’s a giant array) and dump that as JSON into your page, then use a client side library like vue to parse the field data in there to construct the form. In these instances you commonly develop to the known functionality of the form, so that you don’t need to cover all of gravityforms’s features (conditional fields etc). You can then submit the form via ajax like normal or use the API endpoint, either will work.
Intercept the field render calls via filters and then replace their markup with your own. We do this option pretty commonly as it allows us to template our forms with twig (we don’t run Sage currently, but a very sage-esque starter theme of our own design). I do this if I only need to customise one field eg: radio buttons.
Key filters are
gform_field_input if you want to change individual fields, or to write your own twig / blade templates to work with the gravity forms form ‘object’.
Final option is to grab the gravity forms ‘object’ (array) and have your twig/blade templates work with that - in this case you would need new templates for each field type you intend to use. You can remove unneeded field types as options in the form build via the
The following may be useful when working with gravity forms - check gravityhelp for docs on each
Overall it’s a pretty configurable plugin, the API docs are pretty terrible though, good luck!