Enabling AJAX in Views breaks Form API AJAX button (Drupal 8)
The issue is in this line of RenderElement::preRenderAjaxForm:

$settings['url'] = Url::fromRoute('&lt;current&gt;');


When the form with the button "add to cart" is rendered inside of an ajax request of a view, then the url is set to the wrong endpoint /views/ajax.

A workaround would be to add a static url in the ajax setting of the form element, so that it won't be set dynamically:

use Drupal\Core\Form\FormBuilderInterface;

  '#ajax' =&gt; [
    'callback' =&gt; '::add',
    'wrapper' =&gt; $wrapper,
    'url' =&gt; Url::fromRoute('&lt;front&gt;'),   // set this to the route of the view page
    'options' =&gt; ['query' =&gt; \Drupal::request()-&gt;query-&gt;all() + [FormBuilderInterface::AJAX_FORM_REQUEST =&gt; TRUE]],
  ]


If you use the form in multiple pages you would need to adjust the code to only set the url when the form is rendered in this view.