Begin with relevant experience, not the size of the portfolio. Request three or four engagements that resemble your technology stack, and symfony ecommerce framework then ask specifically who actually wrote that code. A serious vendor will introduce you to the engineers. Evasive answers at this stage usually mean the delivery team is not the team you were shown.

The paperwork deserves more attention than the sales deck. Three clauses do most of the work: assignment of intellectual property, non-disclosure, and exit terms and handover. All the work product must transfer to you once invoices are settled, together with designs, scripts and infrastructure configuration. Be careful with wording that keeps reusable components with the vendor, because that is often the part you cannot replace later.

Ask where their numbers come from. A serious estimate comes with the assumptions behind it, a task-level breakdown and a best case and a worst case. A fixed-price contract is only reasonable when the specification is complete; in any other case the supplier pads the number and outsource react development you pay for uncertainty either way. A time-and-materials model puts the risk on your side, so it requires a cap, regular demos and transparent reporting.

How the work is run beats team size. Ask how change requests are handled, who signs off on a feature and how quality assurance works. A team will be able to show you a working build every one or two weeks. Clear, written acceptance criteria stay your only real protection against endless rounds of rework.

Before signing, plan for the day you no longer need this vendor before it becomes urgent. Insist that the source repository sits on infrastructure you own from day one, and that documentation is written as you go rather than left to the end. A vendor with nothing to hide says yes immediately; a long negotiation over it says quite a lot.