Start with domain experience, not the length of the client list. Ask for three or four case studies that match your domain and your stack, hire dedicated react native programmers 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 almost always mean you are talking to a reseller.
The paperwork deserves more scrutiny than the proposal. Three sections matter more than the rest: ownership of the code, confidentiality, and notice periods and handover. All the work product must transfer to you once invoices are settled, together with designs, scripts and infrastructure configuration. Be careful with any clause that keeps framework code in the vendor’s hands, as this is frequently the part you cannot replace later.
Ask how they estimate. An honest estimate arrives with the assumptions behind it, a breakdown per feature and a range rather than a single number. A fixed-bid deal is only reasonable when the scope is genuinely frozen; in any other case the supplier pads the number and you pay for uncertainty either way. Hourly billing shifts that risk to you, so it demands visible weekly reporting and a spending cap.
How the work is run beats headcount. Ask what happens when the scope changes, who writes the acceptance criteria and what the QA setup looks like. A well-run team can demonstrate a working build every one or two weeks. Acceptance criteria in writing stay your only real protection against endless rounds of rework.
Finally, plan for custom software development cost the day you no longer need this vendor before it becomes urgent. Ask that the source repository lives on infrastructure you own from the beginning, and that the documentation is refreshed in every sprint. A partner who is comfortable with this will agree quickly; hesitation here says quite a lot.