Time Out says
Finally, a DC superhero movie that doesn’t take itself (at all) seriously.
If you think most superhero movies are basically about overgrown kids, ‘Shazam!’ is here to prove you absolutely right. Be prepared, though, for it to win you over with its goofy, Tom-Hanks-in-‘Big’-ness: This is a story in which foster child Billy Batson (Asher Angel) suddenly becomes a man with massive guns, a white cape and a giggly sense of invincibility.
Director David F Sandberg (‘Lights Out’) gets the trippy origin nonsense out of the way fast: there’s an ancient cave and a benevolent, ultra-serious wizard (Djimon Hounsou) who needs to find a champion. One boy fails the test – he’ll become the villain (Mark Strong, doing his villainy thing) – before Billy steps up. ‘Gross,’ he says, when commanded to grab the wizard’s magical staff. Still, the transformation works, and the movie explodes into a riotous midsection, mainly thanks to Zachary Levi’s perfect, gleeful turn as the adult Billy and ‘It’ breakout star Jack Dylan Grazer as his painfully neurotic foster brother.
Big emotions don’t tend to be common currency in the DC Universe, so I’m happy to report that this one comes with a heart-filled script, plus a richly developed surrogate family, a visible appreciation of Philadelphia and its heroic ‘Rocky’ iconography, and two expert jokes involving a strip club. Yes, there are some weighty moments near the end, and the usual splurge of cheesy CGI, but in the spirit of a spandexed Harry Potter, it’s a teen-centric flick that’s euphoric and playful.