Le tireur, identifié comme Salvador Ramos, âgé de 18 ans, a apparemment été abattu lors de l'intervention des forces de l'ordre.
Les autorités ont indiqué que le suspect avait agi seul et que les raisons de son acte étaient encore inconnues.
Des officiers de police ont vu le tireur, qui portait un gilet pare-balle, sortir d'un véhicule accidenté, armé d'un fusil, mais n'ont pas réussi à empêcher le suspect de pénétrer dans l'école et d'ouvrir le feu, a déclaré le sergent Erick Estrada, du département de la sécurité publique du Texas (DPS), sur CNN.
Le président américain Joe Biden, visiblement ému, a demandé aux Américains de s'opposer au lobby des armes à feu après cette fusillade, alors qu'il s'exprimait depuis la Maison blanche.
Le gouverneur du Texas, Greg Abbott, a déclaré que Salvador Ramos avait apparemment été abattu par les forces de l'ordre, ajoutant que deux policiers avaient été légèrement blessés par des tirs.
Dans la confusion, le nombre de victimes a varié selon les rapports, jusqu'à ce que le bureau du procureur général de l'Etat ne fasse état dans un communiqué officiel de 18 enfants et deux adultes tués dans l'attaque, dont le tireur. Les enfants victimes de la fusillade étaient âgés de 7 à 10 ans.
Un porte-parole de la DPS a déclaré plus tard à CNN que 19 élèves et deux adultes avaient été tués, sans compter le tireur.
L'attaque est survenue en milieu de journée à l'école primaire Robb, dans la ville d'Uvalde, située à environ 130 kilomètres à l'ouest de San Antonio.
Les enquêteurs soupçonnent également Salvador Ramos d'avoir abattu sa grand-mère avant de se rendre à l'école primaire Robb.
L'hôpital universitaire de San Antonio a indiqué sur Twitter avoir reçu deux patients ayant été blessés lors de la fusillade d'Uvalde, un enfant et un adulte. Les deux patients, une femme de 66 ans et une fillette de 10 ans, sont dans un état critique.
Cette attaque est la dernière d'une série de fusillades de masse survenues dans des écoles américaines qui ont alimenté un débat acharné entre les partisans d'un contrôle plus strict des armes à feu et ceux qui s'opposent à toute législation qui pourrait compromettre le droit des Américains à porter des armes.
La fusillade d'Uvalde est l'une des plus meurtrières commise dans une école américaine depuis qu'un tireur a tué 26 personnes, dont 20 enfants âgés de cinq à dix ans, dans une attaque contre l'école primaire Sandy Hook, dans le Connecticut, en décembre 2012.
En 2018, un ancien élève du lycée Marjory Stoneman Douglas de Parkland, en Floride, a tué 17 élèves et éducateurs.