This is a working page about the experiences & features I’ve built at Traeger Grills, where I joined in mid 2023. It was the first time I’ve been a part of something bigger than a company. Bigger than a company you ask? Yeah, almost like a neighborhood where everyone has a smokin’ grill on their porch. A neighborhood called the Traegerhood.
A Search for Smoke • Revamped Recipe Search
Having inherited legacy projects in the past, one of the most daunting realizations is that everything will be rebuilt at some point in some capacity. In 2025, that moment arrived for Recipe Search.
The existing search had some real friction points:
- Getting between browsing and searching felt disorienting — like the app couldn’t decide what it wanted to be
- Results showed up one at a time, making it hard to scan and compare
- Executing a search felt like more work than it should
With those pain points in mind, here’s how we designed a better experience.
- One-tap activation of the search bar, complete with a satisfying shrink-and-expand animation that makes room for an exit button
- Dropping into search mode surfaces a list of recent searches right away
- Chips for commonly searched foods keep the most-used shortcuts within easy reach
- Results display in a grid — easier to scan, easier to browse, easier to find what you’re actually looking for
A large focus of mine during the rebuild was integrating small pops of feeling throughout the experience; making the mundane a little more saucy. A haptic here, an animation there. I particularly like the back arrow animation that shifts in and out of view as the search context changes.
Probe Swiping
Grill culture has an unwritten rule: don’t tell someone else how to smoke their meat. The same goes for how they want to read a cook—there’s no single right layout for everyone’s grate.
Connected cooks average about 1.1 probes per session, but the app has to handle up to four without turning the cook screen into a wall of numbers. Showing every probe at once is noisy; hiding them behind tabs just trades clutter for extra taps.
The cook widget borrows from iOS Smart Stack: one probe card in focus, vertical swipe to bring the next forward—the same idea as cycling through Weather, Photos, and Clock in a single widget slot, but for temps and doneness.
Grill Care & Maintenance
Built a dead simple way to access all of the information related to your grill. Guides, videos, how-tos, tips, etc. Clean and easy to use!
Cook Setup
We needed to build a flow that allowed the user to be able to associate different meats with their probes. This also gives us the chance to educate users on optimal Traeger Recommended internal temperatures regarding doneness.
Firstly, the user picks the protein they’ll be cooking; obviously we allow them to bypass this if they choose & go straight to picking a goal temperature.
Secondly, the user is presented with a list of cuts (if applicable); for example if the protein is beef, then we give the user a list of cuts like steak, brisket, burger, tri-tip, etc. Depending on the selected cut, we give a list of temperatures including what we Traeger recommends.
Finally, the user can begin their cook, where we show them a quick animation on how to insert a probe into your meat.
Zooming in: Custom Scrolling Picker
The cook-setup flow leans on a temperature picker—and the small stuff adds up: tick marks, scroll speed, snap behavior, and motion were tuned until landing on a degree felt intentional, not accidental.
> The Technical Details
Under the hood it’s a UICollectionView inside a UIViewRepresentable—the best of both worlds: smooth, efficient, precise, flawless scrolling & snapping only offered by UICollectionView & UIScrollView, plus the satisfying .contentTransition modifier SwiftUI gives you for the temperature readout.
For doneness, we tightened deceleration rate so even a hard flick only moves you about 30–40°F. The arrows on either side of the ticks nudge the selection one degree at a time.
If the SwiftUI scroll-performance debate comes up, Jacob’s write-up on hitting 120fps is the piece I send people.
> Multi-functional
What started as a cook-setup picker became shared infrastructure: the same control now handles grill temperature, the app’s other main temp-setting surface.
Steak doneness is a narrow window; grill temp is not. When the scale jumps from ~30º to hundreds of degrees, we reach back into deceleration rate—a flick that nudges doneness by 30–40º can swing grill temp by ~300º. Context-aware scroll speed is what keeps both modes feeling right.
The preset temperatures are also nice for this one.