Most people asking "should we hire or outsource?" are really asking who will still understand this system a year from now.
Outsourcing fails when it's one contractor who leaves with everything in their head. It works when the arrangement covers roles, backend, QA, delivery, someone who knows how the deploy works, so the answer to any question is never "we'd have to ask him."
That part is worth checking before you sign anything: if the person you talk to went quiet for two weeks, does the work stop? If you've outsourced before, the thing that broke was probably the handover and not the code.