The original church consisted of a west tower, a small nave, a square chancel and a semicircular apse. Unusually for this part of Sweden, it also had a second tower above the chancel, though this was taken down in 1758. A sacristy and porch are thought to have been added later in the medieval period, and a narrow north transept, sometimes called the "new church", was built in 1757 - so narrow that only a few of those seated there could follow the service at the altar.
Disaster struck on 21 July 1764, when lightning set the church ablaze. The fire destroyed almost everything inside, leaving only the blackened walls standing. Among the few items saved was a graceful bronze chandelier, probably dating from the sixteenth century, which had been donated to the church in 1706 by Christina Gynterfeldt of Löfsta. It still hangs at the front of the church today.
Rebuilding and refitting took many years. The vaults seen today date from this reconstruction, along with larger windows. The altar was built in 1779, though an altarpiece was not obtained until several years later. Much of the new furnishing came from the derelict old church at Kärnbo near Mariefred, including a late medieval altar cabinet made around 1500 - sources differ on whether it was crafted in Antwerp or Brussels.
The church acquired its first organ in 1849 or 1852, built by Gustaf Andersson according to one source and by Johan Lund of Stockholm according to another; a further instrument followed in 1907, and the current mechanical organ was built in 1975 by the East German firm VEB Orgelbau Gebrüder Jehmlich of Dresden.
Outside the church stands a runestone with eleventh-century carving, and two stone slabs with older rock carvings, known as the Tunahällarna, can be found near the churchyard entrance. Across the road lies a small red building, once used to store the parish tithe. The church underwent a significant interior renovation between 2014 and 2018, reopening a chancel window and introducing new altar furnishings designed by architect Jerk Alton, before being reconsecrated by Bishop Johan Dalman.