Tutorials//Feline Festive Greetings: Build a Cat-Themed Holiday App with Power Apps
intermediate

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.

NA
Narmer Abader
@narmer · Published June 3, 2026

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 NameTypeExample Value
TitleTextMaria Santos
EmailTextmaria@example.com
GreetingMessageTextMew‑rrry Christmas, Maria!
CatImageURLTexthttps://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 X and Y to 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:

powerfxApp OnStart (or Timer OnTimerEnd)
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:

powerfxImage.Image property
If(!IsBlank(CurrentDonor.CatImageURL), CurrentDonor.CatImageURL, "")

4. Add Auto‑Cycling with a Timer

Insert a Timer control and set these properties:

PropertyValue
AutoStarttrue
Duration5000 (5 seconds)
OnTimerEndSet(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

Delegation with Shuffle

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 CatImageURL end with .gif, .jpg, or .png.
  • Forgetting to clear the variable: If you reuse the app for multiple sessions, consider resetting CurrentDonor on App.OnStart to avoid stale data.
  • No handling for empty list: If Donors has zero rows, First(Shuffle(…)) will return Blank. Use If(!IsEmpty(Donors), …) to avoid errors.
  • Timer running on a non‑active screen: A timer on a hidden screen still runs. To save resources, set AutoStart to false and 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