Feline Festive Greetings: Build a Cat-Themed Holiday App with Power Apps
Ring in the New Year with a playful Power Apps greeting that showcases your customization skills and spreads cheer.
The holiday season is a perfect time to experiment with Power Apps features you might not use every day. Building a light‑hearted, themed app helps you practice variables, randomization, and integrating SharePoint data — while delivering a smile to your users. Whether you’re creating an internal team greeting or a customer‑facing holiday card, the same principles apply: clean data, simple controls, and a bit of festive flair.
Let’s walk through building a cat‑themed holiday greeting app for a fictional pet rescue, Paws & Whiskers Rescue. The app will display a personalized message alongside a random cat GIF, and it can cycle through greetings automatically or on demand.
Scenario and Data Setup
Your data lives in a SharePoint list named Donors. Each row holds a donor’s name, email, a custom greeting, and a link to a cat GIF. Here’s the schema we’ll use:
| Column Name | Type | Example Value |
|---|---|---|
| Title | Text | Maria Santos |
| Text | maria@example.com | |
| GreetingMessage | Text | Mew‑rrry Christmas, Maria! |
| CatImageURL | Text | https://media.giphy.com/media/.../cat-dance.gif |
Add a few rows to test, using direct links to GIFs or images. Avoid links to web pages – the Image control needs a direct media file URL.
Step-by-Step Implementation
1. Create the App and Connect to Data
From Power Apps Studio, create a Tablet‑sized blank app. Add the Donors SharePoint list as a data source (Add data > SharePoint).
2. Build the Greeting Screen
Rename the screen to GreetingScreen. Add these controls:
- Image – will show the cat GIF. Set its
XandYto center it. - Label – for the donor’s name.
- Label – for the greeting message.
- Button – with text “Purr‑next” to manually advance.
- Timer (optional) – to cycle automatically.
Set the screen’s Fill property to a festive holiday colour (e.g. RGBA(200, 230, 255, 1)).
Right‑click the screen and add a global variable to hold the current donor:
Set(CurrentDonor, First(Shuffle(Donors)))
For the button’s OnSelect, use the same expression so it picks a new random donor.
3. Wire the Controls
- Image.Image =
CurrentDonor.CatImageURL - NameLabel.Text =
CurrentDonor.Title - GreetingLabel.Text =
CurrentDonor.GreetingMessage
If a donor row contains blanks in CatImageURL, the image control will show a broken link. Add a simple condition to handle that:
If(!IsBlank(CurrentDonor.CatImageURL), CurrentDonor.CatImageURL, "")
4. Add Auto‑Cycling with a Timer
Insert a Timer control and set these properties:
| Property | Value |
|---|---|
| AutoStart | true |
| Duration | 5000 (5 seconds) |
| OnTimerEnd | Set(CurrentDonor, First(Shuffle(Donors))) |
When the app opens, the timer fires and updates the display every 5 seconds. The user can still press the button to jump ahead.
5. Visual Polish
- Change the button’s Radius to make it round.
- Add a festive icon (use the Icon control).
- Use a cat emoji in the screen’s title (🐱).
Security, Performance, and Delegation Notes
The Shuffle function is delegable for SharePoint lists, but it returns a random subset of only the first 500 items (the default delegation limit). If your donor list grows beyond that, the random selection will only ever pick from those 500 rows. For production apps with larger data, consider creating a separate numeric list of indices, or use Power Automate to generate a random ID on demand.
- Permissions: SharePoint item‑level security works here. Users will only see donor data they have permission to view.
- Image loading: If users are on a slow network, enable Image.Cached and consider compressing GIFs before storing.
Common Mistakes
- URLs pointing to a web page: The Image control cannot render an HTML page. Verify that the URLs in
CatImageURLend with.gif,.jpg, or.png. - Forgetting to clear the variable: If you reuse the app for multiple sessions, consider resetting
CurrentDonoronApp.OnStartto avoid stale data. - No handling for empty list: If
Donorshas zero rows,First(Shuffle(…))will returnBlank. UseIf(!IsEmpty(Donors), …)to avoid errors. - Timer running on a non‑active screen: A timer on a hidden screen still runs. To save resources, set
AutoStarttofalseand start/stop it from the visible screen.
Recommendation
This app is a fun, low‑risk project to master variable management and media controls in Power Apps. Once it’s working, you can easily adapt it for birthdays, anniversaries, or any event that benefits from a personalised card.
After testing your cat‑themed greeting, share it with your team and see who can find the most ridiculous cat GIF. Happy building!
References
- Matthew Devaney’s original holiday post (source of inspiration) – https://www.matthewdevaney.com/
- Microsoft Learn: Shuffle function in Power Apps
- Microsoft Learn: Image control in Power Apps
How I went from a CPA obsessing over spreadsheets to a full-time Power Platform developer by building apps on nights and weekends.
Combine your love for cats and low-code with this easy Power Apps project. Learn how to use collections, random selection, and galleries to create a festive seasonal app.
Inspired by a recent appearance on the XRM Toolcast, here’s a practical guide to choosing custom pages for your Power Apps solutions—no chicken sandwiches required.