Faits : A. A.a. Depuis le 1 er novembre 1994, A._ SA en qualité de locataire et B._ AG en tant que bailleresse étaient liées par des contrats de bail ayant pour objets une arcade de 46 mètres carrés au rez-de-chaussée d'un immeuble à Genève, un dépôt en sous-sol et deux emplacements de parking. Les locaux étaient destinés à l'exploitation d'une bijouterie de luxe. Le loyer mensuel total était de 18'805 fr. dès le 1 er avril 2012. A.b. Par pli du 13 mars 2012, la bailleresse a mis la locataire en demeure de s'acquitter des loyers de février et mars dans les trente jours, avec menace de résiliation. Le 24 avril 2012, elle a fait de même pour le loyer d'avril. Par pli du 14 juin 2012, la bailleresse a une nouvelle fois sommé la locataire, sous menace de résiliation, de régler dans les trente jours la somme totale de 37'630 fr. correspondant aux loyers pour les mois de mai et juin plus 20 fr. de frais de rappel; ce pli a été distribué le 15 juin 2012. Le 4 juillet 2012, la locataire a payé 18'805 francs. En procédure (cf. infra let. B), elle a allégué avoir téléphoné à la gérance de la bailleresse le lundi 16 juillet 2012 pour obtenir un délai de 24 heures; la personne responsable, non joignable, devait prétendument la contacter le lendemain, ce qu'elle aurait omis de faire. Le 18 juillet 2012, la bailleresse a notifié à la locataire quatre avis de résiliation pour l'arcade, le dépôt et les deux emplacements de parking. La résiliation était motivée par le non-paiement des loyers malgré la mise en demeure du 14 juin 2012 (art. 257d CO). Le 19 juillet 2012, la locataire a procédé à un versement de 18'805 fr., correspondant au solde du montant réclamé le 14 juin 2012, à l'exception des frais de rappel. B. B.a. Le 14 août 2012, la locataire a contesté les résiliations devant la Commission de conciliation; non conciliée, la cause a été portée devant le Tribunal des baux et loyers du canton de Genève. Le 11 décembre 2012, la bailleresse a déposé une requête en évacuation auprès de l'autorité de conciliation, puis devant le Tribunal des baux, qui a joint les deux causes. Par jugement du 10 juin 2014, le tribunal a déclaré valables les résiliations notifiées le 18 juillet 2012 pour le 31 août 2012 relatives à l'arcade et sa dépendance, à savoir le dépôt, ainsi qu'aux deux emplacements de parking; il a ordonné l'évacuation immédiate de la locataire. En droit, le tribunal a notamment relevé que le second paiement de 18'805 fr. était intervenu après l'échéance du délai comminatoire et que la locataire n'avait pas apporté la preuve qu'un délai supplémentaire lui aurait été accordé. Il a nié que les résiliations soient contraires à la bonne foi. B.b. La locataire a déféré cette décision à la Chambre des baux et loyers de la Cour de justice, qui a rejeté l'appel par arrêt du 30 mars 2015. En substance, la cour a constaté que les parties s'accordaient à dire que les conditions de l'art. 257d CO étaient réunies; la locataire invoquait uniquement l'annulabilité des résiliations au motif qu'elles contrevenaient aux règles de la bonne foi. La cour ne pouvait suivre ce point de vue. En effet, le second paiement était intervenu trois jours après l'échéance de la mise en demeure, étant précisé que le 15 juillet 2012 était un dimanche. Il n'était pas nécessaire de trancher la question de savoir si un tel retard pourrait être considéré comme admissible; dans le cas présent, il était indéniable que la locataire ne s'était pas toujours acquittée à temps du loyer dans le passé et avait fait l'objet de mises en demeure reçues quelques mois auparavant. C. La locataire (ci-après: la recourante) a saisi le Tribunal fédéral d'un recours en matière civile concluant à l'annulation des résiliations. La bailleresse (ci-après: l'intimée) a conclu au rejet du recours dans la mesure où il est recevable. La recourante a ultérieurement déposé des observations. L'autorité précédente s'est référée à son arrêt. Par ordonnance du 11 juin 2015, la Présidente de la cour de céans a fait droit à la requête de la recourante et accordé l'effet suspensif au recours.