I'd guess the lack of defined backend contracts is caused by the same issue that made you unable to fix those any later.
Anyway, the frontend / backend split is stupid and ridiculous. It's even worse because both sides usually include tasks that do need to be split up.