Faits: A. A._, ressortissant suisse né en 1977, se trouve en détention provisoire depuis le 31 octobre 2011 sous la prévention, entre autres infractions, de tentative de meurtre, lésions corporelles graves et simples et mise en danger de la vie d'autrui. Il lui est reproché d'avoir, lors d'une altercation à Lucens le 31 octobre 2011, près du domicile de la famille A._, tiré plusieurs coups de feu sur un véhicule, puis d'avoir pris en chasse ce véhicule, faisant à nouveau feu sur lui à plusieurs reprises. L'un des occupants a été grièvement blessé. Il est aussi mis en cause pour avoir, le même soir avec son frère, agressé une personne qui lui devait de l'argent. B. La détention provisoire a été ordonnée, puis prolongée pour trois mois par ordonnances des 4 novembre 2011 et 25 janvier 2012, en raison des risques de collusion et de récidive. Par ordonnance du 24 avril 2012, le Tribunal des mesures de contrainte du canton de Vaud a rejeté une demande de mise en liberté et autorisé une nouvelle prolongation de trois mois de la détention jusqu'au 30 juillet 2012. C. Par arrêt du 7 mai 2012, la Chambre des recours pénale du Tribunal cantonal vaudois a confirmé cette dernière ordonnance. Les charges n'étaient pas contestées par le prévenu. Celui-ci avait agi dans le cadre d'un litige divisant des membres de la communauté kosovare; ce conflit ne paraissait pas réglé, de sorte que le risque de représailles était important. L'intéressé avait aussi commis une agression peu avant, dans le cadre d'un litige financier. Selon les conclusions déposées oralement par les experts, il existait un risque de récidive "léger à moyen" dans le cas où le prévenu se retrouverait dans la même situation. L'existence d'un risque pour la sécurité justifiait le maintien en détention. D. Par acte du 29 mai 2012, A._ forme un recours en matière pénale par lequel il demande la réforme de l'arrêt précité (en ce sens que la demande de prolongation de la détention est rejetée) ainsi que sa mise en liberté immédiate. Subsidiairement, il conclut à l'annulation de l'arrêt cantonal et au renvoi de la cause à la cour cantonale pour nouvelle décision dans le sens des considérants. La Chambre des recours pénale et le Ministère public se réfèrent à l'arrêt attaqué, sans observations.