You can actually get high-quality code out of them -- at least with Claude; not had a great experience with Gemini -- but for complex tasks requires riding them very, very hard and really understanding where things can go wrong and poking at them repeatedly. Iterate, iterate, iterate.
That describes my last week. What made it most annoying, was the need to release through TestFlight, because the memory issues would not appear, when tethered. Also, I was checking in constantly, because I had to revert and reset the context, several times.