{"slug": "the-app-that-lives-between-shows", "title": "The App That Lives Between Shows", "summary": "Zabriskie, a live-event app for Goose fans, shipped 787 pull requests between tours to solve the problem of user engagement between shows, adding a watch client and a redesigned chat. The app's community grew slowly without ads, relying on stickers and word-of-mouth, and the Big Modern! tour saw the chat fill up as intended.", "body_md": "“Thank god this app rocks and I can live through the chompers.”(a chomper, in the chat, on a night they could not make the show)\n\nTwo months ago I [wrote up Goose Spring ‘26](https://christophermeiklejohn.com/ai/zabriskie/development/2026/04/26/spring-tour-recap.html). The through-line of that post was that the live show finally worked. Live Activities stayed up, the setlist was seconds behind the room instead of minutes, song calls landed, and forty people spent a tour sending each other 3,737 messages from their couches and their seats. The app was good for the two and a half hours a night that a band was on stage.\n\nThat was the easy half. The hard half is the other twenty-one and a half hours, and the days between shows, and the weeks between tours.\n\nHere is the thing nobody tells you about building a live-event app: the event is not the problem. The gap is the problem. The tour ends, the chat empties out, the lock-screen Live Activity goes dark, and everyone drifts back to their normal feeds until the next run gets announced. I said this in the Spring post, in the section about the jam bracket, and then I spent the next two months building against it on purpose. The whole point of a third place is that you can go there when nothing is happening. A bar that only opens during the game is not a bar. It is a stadium.\n\nSo this is a post about what we shipped to make Zabriskie worth opening on a Tuesday in the middle of June with no show anywhere. But I want to say the real thing first, because it is the reason the rest of it exists. I am proud of this one. I love this app in a way I have not loved something I built in a long time, and I love it because it is not really mine. It is a small and genuinely growing community of people who love the same bands I do, and we are growing it the slow way, by hand, one person at a time, with no ads, no growth team, and no playbook. Two of us build it. One of us has spent the last few months handing out stickers on the lot and talking strangers into it between sets. That is the entire marketing department, and I will get to him, because he deserves most of this post.\n\nIt is also a post about whether the between-shows bet worked, which is a question you answer with numbers, and I am going to be honest about the numbers, including the ones that did not go the way I wanted.\n\nI counted the PRs again, the same way I did in April. Between the last show of Spring tour and today, **787 pull requests** merged into [Zabriskie](https://github.com/cmeiklejohn/zabriskie). That is more than two and a half times the entire Spring tour, in about the same span of calendar. The app went from build 25-ish to **iOS 53 and Android 51**, shipped **v1.5.0 to the App Store and the Play Store**, and grew an entire second client: it runs on your **watch** now, which Patrick built end to end. And nearly half of those 787 pull requests are his, which is the single most important fact in this post and the one I want to sit on for a minute before anything else.\n\nThere was also a real deadline this time. Goose put out a new album, **Big Modern!**, and took it on the road this summer. The album drop and the tour behind it are the biggest moment a band’s community gets all year, and I wanted every surface of the app ready for it: the live chat, the show page, the home screen, the band’s whole history one tap away. So a lot of what follows is us getting the room ready for the party. And when the Big Modern! tour actually started in June, the room filled. I will show you the chat numbers, because they are the ones I am proudest of.\n\nStart with the room everyone actually lives in during a show: the chat.\n\nDuring a show the chat is called the Chomp, and it is the beating heart of the whole app. The big move this window was rebuilding it from the studs into **Live Chat V2**: a full cinematic redesign, shipped over weeks in May, warmer and bigger and more editorial, less like a database with a skin on it and more like an actual room. That redesign is the real story of this section. The flashiest single piece, the **reaction heatbar**, was actually the *last* thing we added, at the very end of June, right as the Big Modern! tour turned the room hot. The commit history is honest about the order: the room got rebuilt first, and the thermometer went on the wall last.\n\nThe heatbar sits above the chat and shows the room temperature. It counts the reactions flying right now, so you can feel a jam landing before you have read a single word. It turns out a lot of people want to be in the room without composing a sentence, and a tap of 🔥 is a much lower bar than typing. Around it we shipped set markers (“🎼 Set 1 begins,” a “Set break” vote chip), duration-sized song progress bars, role badges, a spoiler-safe delay for couch viewers so the people in the building do not ruin the song for the people on the stream, and, because we are on the App Store now, report-and-block moderation on every message.\n\nOne detail I love more than I expected to: the reactions are **band-specific.** The palette changes depending on whose show you are in. Walk into a Goose chat and your reactions are the band: 🥸 for Peter, 👟 for Rick’s yellow Chuck Taylors, 🕶️ for Trevor, 🌽 for Cotter (yes, a corn). Walk into a Phish chat and it is 🎹 Page, 🎸 Trey, 🌵 Mike, and ⭕ Fishman. Every band we add gets its own kit drawn from its own members, all server-driven so we can hand a new band its reactions without shipping an app update. And there are conditional sit-in reactions, so Stuart Bogie’s 🎷 slots into the Goose lineup, right between Rick’s Chucks and Trevor’s shades, on the nights he actually sits in. This one has a lineage worth naming: **Nicole had the original idea**, and **Patrick built it** into the server-driven kit it is now. It is a small thing that tells the regulars we know exactly whose room they are standing in.\n\nThe chat noticed the second we shipped it: *“New reactions are super cute. Rick, Peter, Trevor, Cotter?”*\n\nAnd the chat is wired into the stats the whole time. Tap any song in the setlist and a stat sheet slides up: when the band last played it, the gap since, its first-time-played, and your own history with the song, including how many times you personally have caught it live.\n\nDuring the **Big Modern!** tour that last number turned into a running joke. The album’s songs were suddenly in every setlist, and people watched their personal counts climb show by show, in real time. One chomper, a few nights deep:\n\n“I’ve now seen 27 of 35 Big Modern! ever played 🤣”\n\nThat same history powers the feature I am fondest of, the **FTP witness**. FTP is “first time played,” a song’s debut show. When a song lands in a live setlist, the app quietly checks everyone in the room, and if any of them were RSVP’d to that song’s very first performance, an inline 👀 pill drops into the chat: “2 people in the chomp were at this song’s FTP.” Tap it and it opens the debut show. It is the app reaching back years to tell a room that someone standing in it was there at the beginning, and nothing makes a chat feel more like a community than being reminded, live, that the person you are talking to caught the debut of the song you are both hearing right now.\n\nHere is the honest engagement picture, and it is the number I am happiest about in the whole post. Reactions were basically dormant through May, a handful a week. Then the **Big Modern!** tour started and the chat went vertical: **312, then 1,067, then 897 reactions in three consecutive weeks.** In just the last three weeks of tour, the Goose live chats carried roughly **1,500 messages and 2,300 reactions**, about 3,800 interactions total, which rivals the entire fourteen-show Spring tour in a fraction of the nights. When the band finally gave everyone something to be loud about, the redesigned room was ready to be loud in.\n\nThe people in it will tell you what it feels like better than I can:\n\n“Still an hour 20 til show time but I opened the chomp.”\n\n“I love the time counter for the song.”\n\nWhen you open Zabriskie now, you do not land on a feed. You land on **The Lot**.\n\nThe Lot is a personalized home. It is the leftmost tab and the default route, and it is built to answer one question the feed never could: what is worth my attention right now, for me. If a band you follow is on stage somewhere, the hero card is that show with a live setlist preview ticking underneath it. If nothing is live, it reaches for the next best thing, and it has a lot of next-best things to reach for: tonight’s shows and who is going to them, last night’s auto-generated recap, the jam bracket that is still taking votes, a new album to go listen to (it pushed the **Big Modern!** listening party the week it dropped), an “On This Day” card that surfaces a show from your own history or a band anniversary, a historical show worth revisiting, a bookmark to return to, a one-tap RSVP, even a nudge to post to the Flow if you have been quiet for a week. Every card is a real destination, not a placeholder. The Lot’s whole job is to always have one more good reason to stay.\n\nThe design principle underneath The Lot is the same one that governs the whole app: it never shows you an empty room. If there is nothing live, it does not say “nothing is live.” It finds the thing about your history, or your friends, or the band’s history, that is worth a tap. An app that opens onto a dead feed teaches you to stop opening it. The Lot is the counter to that reflex, and it is the surface that most of the rest of this post feeds into.\n\nEvery show now opens into a redesigned, cinematic **show detail page**, and it is doing a lot of jobs at once. Before the show it is a countdown and a planning surface. During the show it hands off to the live chat. After the show it is the recap and the setlist for good.\n\nThe hero is a sunset marquee with a live flip-clock counting down to doors. Under it, three avatar rows show your people sorted into **GOING**, **COUCH** (couch touring), and **WANT TIX**, so you can see the shape of the night at a glance and who to find. You can **call the opener right from the show page**, days before doors, the same one-tap prediction game that lives on the Lot and in the live room (they all share one store, so your pick follows you everywhere). You can share **where you are sitting** and see where everyone else is, section and row, so your friends can actually find each other in a shed. There is trip planning for lodging, a “the stage is dark” empty state that flips to a live setlist when the first song lands, and, once it is over, the full setlist with gaps, sit-ins, and a recap blurb built from the room’s own reactions.\n\nThat “call the opener from anywhere” detail is a small example of a rule we hold hard: a feature should be one thing with one source of truth, reachable from wherever you happen to be. Your opener call is the same object whether you make it on the Lot four days out, on the show page the morning of, or in the live room as the lights drop. People noticed. One night in the chat: *“we should build a closer call feature for pre show lol.”* That is the app working, when the users start designing it with you.\n\nThis is the feature I care about most for the actual between-shows problem, because it is the one that reaches into the dead weeks and keeps people listening.\n\nWhen a tour ends, the app seeds a **March Madness style bracket** of that tour’s best jams. The seeding is not editorial: we run sentiment over every show’s live chat, weight it by song, cross-reference the historical setlist data for bustouts and rarities, and the top sixteen jams become the bracket. Then the rounds release on a schedule, Round of 16, Quarters, Semis, Final, and the community votes each one. Ties break by seed. Followers get a push when a new round opens.\n\nThe part that makes it work is the audio. Every matchup card has an **inline player for both jams**, streaming from **Relisten** where the recording exists, with a nugs.net “listen on” link as the fallback when it does not. You cannot vote between two twenty-minute jams without hearing them, so voting in the bracket means re-listening to the tour you just watched, one jam at a time, for weeks after the lights came up. By the time we crown a Jam of the Tour, the next run is already on the calendar and nobody ever fully left.\n\nThe gap between tours is where most music apps quietly die. The bracket is the deliberate answer: it turns the dead weeks into a reason to open the app every few days, re-listen to a jam, and argue about it in the chat, right up until the next tour makes the argument moot.\n\nThe other way to earn a Tuesday open is to be worth reading when nothing is happening. So a big chunk of the 787 went into turning Zabriskie into a browsable reference for the bands themselves, and this is the part where the usage numbers actually show up.\n\n**The Songbook.** We rewrote the old song-search box into a full **catalog directory**: every band’s entire songbook, browsable, with a band-switcher rail so you can jump from Goose’s book to Phish’s to Billy’s. It is styled as a “Gold Ledger,” with letter headers and per-song play counts, and it marks the songs you personally have caught live so your own book fills in as you tour. There are **17,326 songs** in it across every band we track. It is the thing you open in a hotel room at 1am to settle a bet about how many times they have played a song.\n\n**The Poster Archive.** Every show can carry its posters now, including multiple variants per show (the foil, the rainbow, the artist edition) with proper variant labels and a carousel. Admins get a variant picker and an “add another” flow, and there is an in-app button to **sync posters straight from the Goose store**, backed by a cron job that refreshes the archive daily. This is the poster-archive goal I have had for a while: not “the one official poster,” but the whole wall of variants a fan might recognize from a show they were at.\n\n**Sit-ins and Guests.** This one is Patrick’s, top to bottom. When a guest sits in with the band, that is now first-class data: a `/guests`\n\ndirectory, guest credits on the song page and the setlist with per-instrument icons, band-emoji guest reactions, and a backfill of the guest history across the whole catalog. Phish alone came in at 151 guests over 1,006 appearances, plus JRAD, Greensky, Goose, and more. If you ever wanted to know every time a specific person walked on stage with a band, that list exists now because Patrick built it, and it is the kind of thing only a real fan thinks to build.\n\nNone of these three are things you open during a show. They are things you open because you are a fan and it is a slow afternoon and you want to fall into your band’s history for twenty minutes. That is the whole idea, and this is the part people actually did all summer. More on that below.\n\nEach band gets a **band mode**, a tour companion tailored to one band at a time, and Goose Mode got most of the love because Goose is home base. It knows the band’s calendar, colors, and vocabulary. The centerpiece is a tour timeline with a live countdown to the next show, past shows checked off, upcoming shows carrying weather and which of your friends are going, and your friends annotated in and out of the run leg by leg. Every band also has a full band page: recent shows with inline-expand setlists, your personal history with that band, and a jump straight into the Songbook. Adding a band is a whole project (find a setlist source, backfill the history, wire the page and the mode), and we did it more than a dozen times, because the more homes there are, the more nights someone has a reason to open the app.\n\nWe built an entire new client this window: the **Wear OS and Apple Watch** apps, essentially all of it Patrick’s work, from the SwiftUI screens to the WidgetKit complications to the connectivity layer. They are not in the stores yet, and that is on purpose. We ran them on our own wrists through the whole Big Modern! summer tour as a live field test, and they ship for real for **Fall tour**. Everything below already works. It just is not public yet.\n\nThe headline feature is an **always-on live show on your wrist**. When a band you follow is playing, an OngoingActivity and a watch-face complication put the current song, set, and elapsed time on your watch, persistent, glanceable, updating as the setlist moves. There is a countdown complication for the gap between shows, so even when nothing is live your watch face can tell you how long until the next one. We mirrored the live reaction kit to the watch, so you can react to a song without pulling your phone out of your pocket at all.\n\nThe watch is the purest expression of the “be present at the show” argument I keep having with people, turned inside out. The complaint is that the app pulls you into your phone. The watch is the app admitting the phone is too much during the show, and shrinking down to a glance and a tap on your wrist so you can put the phone away and still be in the conversation. It is the app taking the criticism seriously and building the answer.\n\nNone of this happened in isolation. The Lot, the live chat, the show page, the Flow, profiles, notifications, festivals, and the band modes all got “v2” cinematic redesigns in the same language: warm parchment and sunset gradients, film grain, an editorial serif for the venues, less like a database with a skin on it and more like a thing made by people who love the thing. The whole app changed clothes this window. This is a big deal operationally because of how it ships. Every redesign runs behind a version flag, keyed to the client build, so an old phone that has not updated keeps getting the old design and a fresh install gets the new one, and neither breaks. That is the machinery that lets us redesign a live surface without stranding the person watching a show on a two-month-old binary. It is unglamorous and it is most of why we can move this fast without breaking the people already here.\n\nThe band list kept growing. We backfilled full histories for **Widespread Panic (3,114 shows), Eggy, and Dizgo**, on top of the dozen bands we added during Spring, each with the full treatment: a source for the setlists, a band page, a band mode, a spot in the directory. There are **102 bands and 38,894 shows** in the catalog now.\n\nWe built out **festivals** as their own surface: a multi-stage schedule grid, a plan phase, and a full **festival recap** that reads the whole weekend rather than one show, with a program block, hero moments, a route map, and per-day bookends. **Viva El Gonzo** in Cabo got the destination-festival treatment (down to canonicalizing every set to San José del Cabo), and we seeded lineups for All Good Now and Northlands. Every new tour gets wired in the moment it is announced.\n\nThe point of all of it is the same: the more bands and the more festivals live in the app, the more nights of the year there is something happening for somebody, and the fewer truly dead Tuesdays there are.\n\nA festival is a different animal from a tour stop, so it gets its own mode. The centerpiece is a **multi-stage schedule grid**, and the closest honest comparison is a work conference program: stages down one axis, set times across the other, every slot a block you can tap. Except the sessions are sets, the tracks are stages, and, exactly like a good conference app, the schedule is *yours*. In each timeslot several bands are playing at once across the stages, and you pick the one set you are actually going to. The app assembles those picks into your personal day, one choice per slot, the same way you would star the talks you want at a conference and let it hide the rest.\n\nAnd because a festival grounds is a place you can genuinely get lost in, it does the other thing a conference app does that you never knew you needed: it tells you **where to go.** Between sets it surfaces your next pick, points you at the right stage, and tells you how far the walk is, so you are not squinting at a paper map in the sun wondering whether you can make it from the Beach Stage to the Jungle Stage before the band you actually care about starts. It flags your overlaps, carries each day’s weather, and lights up the set happening right now. When the weekend is over, Festival Mode writes a **recap of the whole event**, not one show but the full arc: a program block, the standout moments, a route map of where the weekend went, and per-day bookends. **Viva El Gonzo** in Cabo got the full treatment this year, down to canonicalizing every set to San José del Cabo.\n\nI need to stop and do this properly, because if you have read this far you have been reading “we” the whole time and the “we” is doing a lot of quiet work.\n\nPatrick McCaughey (he is `@blimpalot`\n\nin the app) wrote **nearly half of the 787 pull requests in this window.** Not helper commits. Whole features, end to end, that are among the best things in the product. The Apple Watch app is his. The entire sit-in and guest-credit system is his. Group DMs and the Messages hub are his. Birthdays, big chunks of the poster archive, huge swaths of Tour Stats, the band backfills, the reaction kits for new bands. When I said the reference library is the part people actually used all summer, I was mostly describing Patrick’s work.\n\nI said it myself in the chat one night, and I am quoting it because it is both generous and exactly backwards about who actually deserves the credit:\n\n“I might have wrote the app but all the cool shit in the app isn’t me it’s Patrick lol”\n\nHe would tell you the opposite. We are both a little bit right, and he is more right than I am.\n\nAnd here is the part that does not show up in a commit log at all. **Patrick made stickers.** Actual, physical, die-cut vinyl slaps, and he brings them to **every single show** and hands them out: on the lot, in the lot line, in the pit, to the person next to him, to the bartender, to total strangers between sets. He is not just leaving them on a table. He is walking up to people, showing them the app on his own phone, and talking them into it one human conversation at a time, night after night, city after city. Every growth chart later in this post that ticks up, ticks up because Patrick stood in a parking lot in the heat and sold someone on a thing he helped build. The man is a mensch. I do not know a better word for it, and I do not think there is one. Half the code and all of the street team, cheerfully, for the love of it.\n\nThat is the growth engine. Not a referral loop or a viral coefficient. A person who loves the thing, standing in front of another person, in the place they both love to be. You cannot buy that and you cannot fake it, and it is the entire reason a two-person app has a real community around it at all.\n\nI promised numbers, not vibes, so here they are, including the ones I would have quietly dropped if I were selling something.\n\n**Users grew from 251 to 426.** That is 70% growth in two months, which sounds great until you look at *when* it happened.\n\nThere is one milestone I am, as the proprietor of a jam band app, contractually obligated to report. Somewhere during the two-night Raleigh run at the end of June, right about the time Goose hit the stage at Red Hat, the registered user count ticked over to exactly **420.** We did not plan this. We are, however, precisely the crowd that was going to notice, screenshot it, and refuse to shut up about it. It has since climbed to a spiritually inferior 426, but **for one perfect night in Raleigh, the fanbase was, numerically, blazing it.**\n\nSignups are event-driven. They spiked during the tour and the week after (the wrap-up avalanche, word of mouth, and Patrick’s stickers), then dropped to single digits a week through June. This is the thing I got wrong going in: I half-expected the between-shows features to keep pulling new people in on their own. They did not. **You acquire people at shows, from other people.** Nothing I shipped in May moved that needle, and pretending otherwise would be exactly the kind of thing this blog exists to call out.\n\nBut I want to be clear that I am proud of that chart, spike and cliff and all. Those 426 people are not a paid-acquisition cohort. Every one of them is someone who was at a show, or in a chat, or handed a sticker, and decided this was worth their time. That is the only kind of growth I actually want. I would rather have 426 people who love it than 40,000 who installed it and forgot, and the shape of that chart is what growing something real and by hand actually looks like.\n\nSo if new signups are a tour phenomenon, the real job of everything in this post is not acquisition. It is **retention**: keeping the people who showed up in Spring around and warm until the next run, so the community is intact when it matters. And on that, the numbers are better and more honest:\n\nAnd the numbers I am **not** going to give you: a clean daily-active-users chart. We record a row when a user opens the app, but that table has multi-week holes in it from May and early June where the logging was broken, so any DAU or “percent active on non-show days” figure I quoted would be built on gaps. I would rather tell you the table is broken than draw a confident line through missing data. Fixing that instrumentation is now on the list, because the between-shows thesis deserves a real measurement and right now I cannot give it one.\n\nThe one-line version: **we are not going viral, and I do not want to. We are growing a thing I love slowly, by hand, and keeping the room warm between tours. Mostly we did.**\n\nAnd I should say the obvious thing, the thing under all of it, the reason two people spend nights and tour weekends building a couch-touring app instead of doing literally anything else: **Goose fucks.** That is the whole premise. The band is that good, the jams are worth talking about at 1am, the bustouts are worth calling from your couch, and the community around them is worth building a home for. Everything in this post is downstream of a band being good enough that people want to be in the same room about it, even when the room is a chat.\n\nGoose Summer is in the books now, and this post is the receipt for it. Phish is up next, then Goose Fall after that. The festivals are seeded, the watch is on my wrist, and Patrick built it. The app is not done, and the real test of everything here is not this recap. It is whether the room stays this alive between now and the next run, while it is still just an announcement away.\n\nIf you toured with us this summer, thanks for chomping. If you have been in the chat on the dead Tuesdays, you are one of the 42 who kept it alive, and you are the entire experiment working. If Patrick handed you a sticker in a parking lot and you scanned it, welcome, you are the growth chart. And if you have never tried it and an app that is good company between shows sounds like something you want, come find us. There is probably something worth reading tonight, even if nothing is live.\n\n*One housekeeping note, same as last time: the screens in this post are mockups, not real screenshots, drawn to make each feature legible in one frame. The real app looks slightly different on iOS, Android, and the watch (Live Activities vs. ongoing notifications, complication styling, system fonts). The features themselves all shipped, and Patrick’s stickers are real. The growth figures are real production numbers as of June 30, including the unflattering ones. Patrick’s share of the work is real too, and if anything I undersold it.*", "url": "https://wpnews.pro/news/the-app-that-lives-between-shows", "canonical_source": "https://christophermeiklejohn.com/ai/zabriskie/development/2026/06/30/the-app-that-lives-between-shows.html", "published_at": "2026-06-30 19:00:00+00:00", "updated_at": "2026-07-01 15:19:44.411627+00:00", "lang": "en", "topics": ["ai-tools", "developer-tools"], "entities": ["Zabriskie", "Goose", "Big Modern!", "Patrick", "App Store", "Play Store"], "alternates": {"html": "https://wpnews.pro/news/the-app-that-lives-between-shows", "markdown": "https://wpnews.pro/news/the-app-that-lives-between-shows.md", "text": "https://wpnews.pro/news/the-app-that-lives-between-shows.txt", "jsonld": "https://wpnews.pro/news/the-app-that-lives-between-shows.jsonld"}}