Start with domain experience, not the length of the client list. Request a couple of engagements that sit close to your stack, and then ask specifically which engineers actually built it. An honest provider is happy to connect you with the people who would work on your project. Vague answers at this stage generally mean you are talking to a reseller.

The agreement needs a slower read than the pitch. Three clauses do most of the work: assignment of intellectual property, confidentiality, and exit terms and handover. All the work product should transfer to you on payment, including designs, scripts and infrastructure configuration. Watch for wording that keeps reusable components in the vendor’s hands, as this is frequently exactly the piece that locks you in.

Ask how they estimate. An honest estimate arrives with the assumptions behind it, a task-level breakdown and a best case and a worst case. A fixed-bid deal is only reasonable when the requirements are stable and hire dedicated expo developer documented; otherwise the provider prices the risk in and you fund the buffer regardless. A time-and-materials model puts the risk on your side, so it needs a cap, regular demos and transparent reporting.

How the work is run matters as much as headcount. Ask how a new requirement enters the plan, who signs off on a feature and what the QA setup looks like. A mature team will be able to walk you through running software rather than status reports. Acceptance criteria in writing are your only real protection against endless rounds of rework.

Finally, think about the day you no longer need this vendor before it becomes urgent. Ask that the repository stays on infrastructure you own from day one, and which is better livewire or alpine js that the documentation is refreshed in every sprint. A partner who is comfortable with this will agree quickly; a long negotiation over it says quite a lot.