Maintaining a church app across thirteen years.

Trinity Lutheran Church’s app: built in 2013, rewritten from nothing in 2020, redesigned for version 3.0 in 2026.

Version 1 in 2013: the Trinity Lutheran logo, Today's Verse, the week's events and four tabs.
Version 2 in 2020: the same verse card and events, rebuilt on Ionic.
Version 3 in 2026: a live-service banner, the verse of the day and this week's services.
2013Version 1 · Adobe Flex
2020Version 2 · Ionic
2026Version 3 · Ionic, redesigned

Trinity Lutheran Church in Sheboygan has had its own app since 2013, and I have built and looked after it for all thirteen years. Members use it to check service times, read the daily verse and watch Sunday services live. Most of the work since has gone into keeping it working as the technology it was built on was replaced.

Five sections · about a 5 minute read

The calendar came first.

The first commit, in October 2013, is an Adobe Flex project, with Adobe AIR turning it into iPhone and Android apps.

One requirement shaped the whole app: members had to see the church calendar without signing in to anything. The usual way to read a Google Calendar asks each person to sign in to Google first, and for this congregation that would have stopped most people at the first screen. So the church publishes its calendar publicly and the app reads it directly, with no accounts to create and nothing to keep signed in. That calendar is still the first thing on the home screen.

Three versions, two ground-up builds.

Version 1 was built on Adobe AIR. Once Adobe stopped supporting it, it was only a matter of time before the app stores stopped accepting it. None of the old code could be reused, so I wrote version 2 from scratch, keeping the screens and tabs almost exactly as they were.

  1. 2013

    Version 1, in Adobe Flex. A daily verse, the week’s events, and four tabs: Home, About, Liturgy and Watch.

  2. 2020

    Version 2, in Ionic and Angular. The same screens on entirely new code, plus a feed of recorded services from the church’s YouTube channel.

  3. 2026

    Version 3, still on Ionic. Built on version 2’s code rather than from scratch, with a redesign on top. Liturgy moved under About, leaving three tabs, and the week’s bulletin moved to the home screen, where people were already looking for it.

What version 3.0 looks like.

Home screen in dark mode: live-now banner, verse of the day, quick actions and this week's services. The same home screen in light mode.
Drag the line to compare. The app follows the phone’s light or dark setting and remembers your choice. Shipped 3.0 build, iPhone 17 Pro Max.
Today's Verse sheet showing the verse and the full chapter around it.
The daily verse opens the whole chapter, with a share button, instead of sending you to a Bible website.

One feed for the live service

The live banner on Home and the listing under Watch come from the same feed, so they always agree on whether a service is on.

Search that reads inside the bulletins

Bulletins and newsletters are PDFs, and searching their file names finds almost nothing: a file called “Bulletin 7-13” does not mention the events inside it. The app reads the text inside each PDF, so searching “divine service” finds this week’s bulletin by what it says, and opening it highlights every match. Reading a PDF is slow, so the text is saved on the phone for seven days and opening search again is instant.

Year by year.

Two busy years, five quiet ones, a rebuild, then steady upkeep: 216 commits in all, and 2026 is the busiest year so far.

Bars show commits in each period, October 2013 to August 2026.

  1. 2013 – 2014

    Version 1 in both stores

    Forty commits across the first two years. The app learned to keep the calendar on the phone, so the week’s events still showed with no signal, and picked up support for the larger iPhone 6 screens.

    40
  2. 2015 – 2019

    Five quiet years

    Seven commits in five years: an update for YouTube’s newer API, a bulletin page, fixes for new iPhones. The app worked and the church needed nothing more.

    7
  3. February 2020

    Starting again on Ionic

    On February 12, 2020 I started over in Ionic. The new version took a year to fully replace the old code, in March 2021.

    10
  4. 2021 – 2023

    Keeping it current

    Mostly upkeep: updating the framework underneath, and fixing the verse of the day and the YouTube feed when they broke. A November 2022 commit is titled “bump version final commit for a while?”, and 2023 has two.

    31
  5. 2024 – 2025

    Moving the video list to a server

    In February 2024 the list of church videos moved out of the app and onto a small server job that checks YouTube and saves the result for every phone to read. The second hurdle below explains why. In 2025 the old video player plug-in was retired, and December’s version 2.6 updated the look for iOS 26.

    25
  6. 2026

    The busiest year

    103 commits, more than any other year. Version 3.0 went out in late July with a redesigned home screen, light and dark modes, the live-service banner and search inside the bulletins. Version 3.0.2 followed in August.

    103

Three hurdles along the way.

Three problems that held the app up, and what I did about each.

Getting videos to play reliably

The problem

Recorded services played through a plug-in that wrapped YouTube’s player. It was unreliable, and its makers eventually abandoned it.

What I did

I switched to YouTube’s own player inside the app. It won’t reliably play any video handed to it on the spot, so the app saves the video list ahead of time and only asks for ones it knows exist.

Over the YouTube limit in about three hours

The problem

Asking YouTube from every phone used up the day’s allowance in about three hours. The more people used the app, the sooner it broke for everyone.

What I did

A server job asks YouTube a few times a day and saves the answer for every phone to read, so the cost no longer grows with the number of people using it.

Live screens that could only be tested on Sunday

The problem

The church streams once a week, so the live banner and Watch screen only had something to show on a Sunday morning.

What I did

A development switch puts the app into its live state on any day, so problems get fixed during the week instead of during a service.