What breaks
Form submit not working in Safari: find why
Your form sends in Chrome and does nothing in Safari, with no error on the screen. Mimiq sends a simulated visitor through the same form and shows the step where it stopped.
Why is my form submit not working in Safari?
Safari fails on a short list of things Chrome handles. Autofill can fill a field without firing the input events your script listens for, a required field can be hidden from view, iPhone may ignore a tap on an element that is not a button, and Safari blocks cookies from other domains by default. Open Safari's Web Inspector and read the Network tab after you press Send: if no request leaves the browser, the fault is in the page, and if a request comes back 401 or 403, the server or a cookie is the problem. A simulated visitor run shows the step where the form stopped.
What this looks like in a report
“I typed my name and email and hit Send. The button just sat there. I tapped it again and nothing changed, so I assumed the shop was closed and left.”
The fix. Make the submit control a real button and attach its handler after the page loads. Show each validation message as text beside its field, and show an error under the button whenever the request fails.
An illustration. Run a test to see your own.See a real sample report
In Safari, a failed submit looks like a button that does nothing
Safari fails quietly. The form sends nothing, or it sends a request that the server rejects, and the page shows no message. Autofill can fill the visible text while the script's copy of the field stays empty. A required field can sit in a closed panel, so the browser blocks the submit and its message may land on a field the visitor cannot see. On iPhone, a tap on a styled div may never reach the click handler. A form that posts to another domain can lose the cookie it needs, because Safari blocks cookies from other domains.
- Open Safari's Web Inspector, press Send, and check the Network tab for a request to the form's address.
- Type every field by hand with autofill off, then press Send. If the form sends, autofill is part of the cause.
- Read the Console on page load for a script error. A script that fails stops the submit handler from attaching.
- Look for required fields that are hidden or inside a collapsed panel, and compare the same form in Chrome.
- On iPhone, make sure the submit control is a real button, so the tap reaches the click handler.
What the visitor sees, in order
The visitor opens the form in Safari, lets autofill fill in name and email, and types a question. They press Send. Then one of three things happens. The button does nothing. It spins and stops with no message. Or the page reloads with the fields empty. The visitor presses Send again, then leaves. Your analytics show a page view and no submission, and your inbox stays empty.
Four causes that only show up in Safari
The first cause is autofill. Safari can write text into a field without firing the input events the script uses to store it, so the field looks full while the script's copy is empty. The second is a required field that is hidden, for example inside a closed panel. The browser then blocks the submit and tries to show its message on that field, which the visitor cannot see. Nothing visible happens, and nothing is sent.
The third cause is the tap. On iPhone, Safari may not send a click to an element that is not a link, a button or a form control, such as a styled div used as a button, unless the element sets a cursor style or an onclick handler. The fourth is the cookie. Safari blocks cookies from other domains by default, so a form that posts to a different domain can arrive without the session or security cookie the server checks.
Read the Network tab: no request, a 401 or a silent reply
Open the Web Inspector before you test. On a Mac, turn on the Develop menu in Safari's Advanced settings. On an iPhone, turn on Web Inspector under Settings, Safari, Advanced, connect the phone to the Mac, and open it from the Develop menu. Press Send, then read the Network tab. If no request to the form address appears, the fault is in the page. Check the Console on page load too.
A request that returns 401 or 403 means the server refused it, usually because a cookie did not arrive. A request that returns success but leaves the page unchanged usually means the page is ignoring the reply. Then open the same form in Chrome with the same data. If Chrome logs that an invalid form control is not focusable, the console line names the hidden field.
A clean run in Chrome does not clear Safari
A simulated visitor fills the form the way a stranger would, presses Send, and reports the step where it stopped, with a screenshot and a fix prompt. Before you read a clean run as a Safari result, confirm which browser the visitors used. A pass in another browser does not clear Safari, and the Network tab check above still applies. If the form leads to checkout, the test stops at the payment step and never pays with a real card.
What you get with Mimiq
- 01
Run it by hand, or on every pull request
Paste a link and a task in the app and watch the visitors work. Or run them on every preview deploy: the GitHub Action comments on the pull request, any other CI can call the MCP endpoint, and your coding agent can run it too.
- 02
Bugs and usability problems in one report
The browser records errors and failed or slow requests on the step they happened. The visitors say where the wording or the steps confused them, and where they left.
- 03
Visitors that behave like your audience
Each visitor is a different profile with a reason to be there, matched to who the page is for, described by you, or built from your own customers.
- 04
A prompt to fix each problem
Every problem comes with a fix to paste into Cursor, Claude Code, Lovable or any coding agent, and one prompt hands over the top problems at once. Then send the same visitors through again.
- 05
Follow every visitor
See each visitor's whole path, step by step with screenshots, and what it was thinking at every step. Ask any visitor a question.
The browser records relevant JavaScript errors and failed or slow app requests encountered during the run, attached to the step where they occurred. The visitors are simulated: they find problems, they do not predict how many real people will convert.
A new script or field can break Safari submit in the next release
The same Safari fault can return after the next release, when a new script or a changed field breaks it again. Rerun the same visitors after each fix to see who got further. If the form sits behind a login, test it with a test account, and check each preview deploy before release.
Starter
Try it on one launch
About 4 tests of 5 visitors
- Visitors on your landing page, signup and checkout
- Where they left and why, with a fix to copy for each problem
- Run it in the app or on every pull request
- Ask any visitor a question, included
- Test accounts and protected previews
Builder
Test every build
About 20 tests of 5 visitors
- Everything in Starter
- Credits refill each month, and what is left rolls over once
- Cancel anytime
Pro
Test every release, as a team
About 60 tests of 5 visitors
- Everything in Starter
- Credits refill each month, and what is left rolls over once
- Cancel anytime
Scale
Test at scale, every day
About 240 tests of 5 visitors
- Everything in Starter
- Credits refill each month, and what is left rolls over once
- Priority support
- Cancel anytime
Questions
Does this happen in every version of Safari?
Not always. A script that uses a syntax older Safari does not understand fails on that version every time. Autofill, hidden fields, taps and blocked cookies can fail on current versions too. Test on the newest Safari you can open, and on an older iPhone if your visitors still use one.
Why does the form send in Chrome but not in Safari?
The two browsers handle autofill events, cookie rules, touch taps and validation messages differently, so the same form can pass in one and stop in the other. Open the Network tab for the same submit in both browsers. The first request that appears in one and not the other points at the cause.
Can a simulated test tell me which Safari cause I have?
It shows the step where the form stopped, the field that was empty, and a screenshot of the page at that moment. It cannot tell you the cause from a screenshot alone, and it does not predict how many real visitors will hit the same stop.
Should the form show an error every time it fails?
Yes. A form that fails silently is the hardest bug to find, because the only sign is a lead that never arrives. Show each validation message as text beside its field, and show a message under the button when the request fails. Then the visitor sees the problem, and so do you.
Keep reading
Send visitors and see what breaks first.
Your first test is free: sign in with Google and it starts right away. Last checked 2026-11-02.