Marie Bostwick's Blog, page 4

February 10, 2025

Classic Homemade Cheese Fondue

The finished Homemade Cheese Fondue with dippers

The finished Homemade Cheese Fondue with dippers

Your favorite dippers plunged into rich, gooey, melted cheese sauce. Homemade Cheese Fondue is easy to love and even easier to make!  Perfect for parties, date nights, or a festive family dinner.

Homemade Cheese Fondue – A Retro Dish That Deserves A Comeback!

Those of us who grew up in the 60s and 70s probably remember cheese fondue.

This delectable dish originated in Switzerland and was very popular back then, possibly owing to the 60s era craze for Scandinavian décor. Or maybe because Americans were traveling more and new recipes home with them.

Whatever the reason, cheese fondue was something I ate often as a kid, especially if my mom was entertaining. In addition to being slightly exotic and absolutely delish, fondue was a lot of fun! What’s not to love about dipping something yummy into a bowl of molten cheese?

However, Homemade Cheese Fondue fell out of fashion at some point. I hadn’t made it for years.

The memory of that fabulous bubbly cheese bubbled up into my brain while I was working on my 1960s-era novel, The Book Club for Troublesome Women. Soon, I was digging through cupboards in search of my old fondue pot.

It was dusty but still in working order. When I texted my book club to say I was making Homemade Cheese Fondue for our next meeting, the response was an enthusiastic and universal, “Hooray!”

Marie's fondue being served at her bookclub

I wasn’t surprised. Fondue is one of those things that almost everybody loves. It’s simple but it’s also kind of special. And as far as I’m concerned, it’s due for a comeback.

With Valentine’s Day just around the corner, this might be the perfect time to give it a try. I can’t think of a better date night dish to share you a special someone.

Equipment and Ingredients for Homemade Cheese Fondue

Maybe, like me, you have a fondue pot hidden away somewhere. If not, they’re easy to find online.

The same 3-quart electric Cuisinart model I’ve had forever is still available. It comes with color-coded fondue forks, is easy to clean, and has an adjustable temperature probe so you can heat cheese, chocolate, broth, or oil to the perfect temperature.

I’ve had mine for at least ten years and it still works great. Here’s a link

If you don’t mind a smaller, 2-quart version, this might be right for you. It has many of the same features as the Cuisinart fondue pots, but costs less than $40. Here’s a link

Of course, you don’t absolutely need a fondue pot to make fondue. A heavy-bottomed pan over a slow and steady heat source can work too. But I prefer the convenience of a proper fondue pot for a couple of reasons.

First, a fondue pot makes it easier to control the temperature and avoid burning the cheese. Second, it’s much better for serving.

If you’re cooking fondue on the stove, you’ve got to keep it there so cheese will stay melted. Having guests gather around the stove to eat fondue just feels a little awkward to me.

The ingredients and equipment for the fondue laid out on a table

The ingredients for Homemade Cheese Fondue are simple and few. All you need is…

Swiss cheeseEmmentaler or Gruyere cheese (Gruyere has a slightly stronger flavor)Dry white wine (needs to be a good wine, one you’d be willing to drink by itself)Juice of one lemon (fresh is best but can sub bottled juice)Flour (you can sub gluten-free flour or cornstarch for gluten-free fondue)GarlicNutmeg (optional but it does add extra depth and a nice, nutty flavor)Mustard (also optional but brings in a bit of a tang)Dippers of your choice – bread cubes (use a firm bread, such as sourdough, French, or rye), apple or pear slices, small boiled potatoes, oven-roasted mushrooms, cherry tomatoes, sweet pepper chunks, cooked steak or chicken cubesMaking Homemade Cheese Fondue

Making Homemade Cheese Fondue is simple. But there are a few tricks to making sure your fondue is silky smooth, not stringy or ropey.

Grate the cheese before you start, using the largest holes on your grater. Cheese that’s grated, as opposed to diced, melts more easily.

The cheese after being grated on the largest hole

Toss the grated cheeses with the flour. The flour is a very important ingredient because it keeps the cheese and wine from separating. Tossing the cheese with the flour will help prevent flour lumps. Nobody likes lumpy fondue!

Add the wine and the fresh lemon juice to the fondue pot and turn on the heat to medium-low, warming the liquid until small bubbles start to form.

Marie placing in the grated cheese as the wine and lemon juice mix begins to bubble

Add the cheese in batches, a couple of handfuls at a time. Stir thoroughly until the cheese is melted into the liquid before adding more. Take your time with this.

Once the cheese, wine, and flour have been incorporated into a thick, smooth sauce, lower the temperature slightly. Stir in the remaining ingredients and start dipping!

You’ll need to keep the heat going under the pot the whole time so the fondue will stay warm and liquid enough or dipping. It will start to get thicker the longer it stays on the heat. If it starts to get too thick, thin it out by stirring in a couple more tablespoons of wine.

A skewer dipping a cubed bread piece into the Homemade Cheese Fondue

Homemade Cheese Fondue is best served immediately. However, in the unlikely event of leftovers, fondue can be reheated.

Just put it into the pot on a low heat, add more wine, and stir until melted again. You may need to use quite a bit of wine to get the fondue to the right consistency.

Print A skewer dipping a cubed bread piece into the Homemade Cheese Fondue Classic Homemade Cheese Fondue

Author: Marie Bostwick Yield: Serves 6-8 as an appetizer [image error] Print Recipe [image error] Pin Recipe const share_pin_buttons = document.getElementsByClassName( 'share-pin button' ); if ( share_pin_buttons ) { for ( let share_key = 0; share_key < share_pin_buttons.length; share_key++ ) { share_pin_buttons[share_key].addEventListener( 'click', (e) => { e.stopPropagation(); window.open(e.target.dataset.href,'targetWindow','toolbar=no,location=no,status=no,menubar=no,scrollbars=yes,resizable=yes,width=500,height=500'); return false; } ); } } Ingredients 1 garlic clove, peeled and halved8 oz Swiss Cheese, grated8 oz Gruyere or Emmentaler Cheese, grated2 T flour (can sub gluten free flour or cornstarch for gluten free version)1 cup dry white wine (plus additional if sauce becomes thick)Juice of one lemon (fresh juice is best but can sub 2 T bottled lemon juice)¼ tsp grated nutmeg2 tsp Dijon mustard Cook Mode Prevent your screen from going dark Instructions Rub the two halves of the cut garlic clove around the inside surface of the fondue pot.Place the two grated cheeses in a medium sized bowl. Sprinkle the flour over the cheeses and gently toss to distribute.Turn the fondue pot onto a medium low heat. Pour the wine and lemon juice into the pot. Heat until bubbles just begin to form.Add a couple of handfuls of the cheese/flour mixture to the pot. Stir until the cheese completely and combined with the wine. Add more cheese as above, working in batches and stirring after each addition.When all the cheese is melted and well combined with the wine, creating a smooth sauce. Lower the heat slightly, then stir in the nutmeg and mustard. Taste and adjust seasonings if necessary.Serve immediately with your favorite dippers (see post for dipper suggestions). If the sauce starts to become too thick, stir a little more wine to the pot, adding as much as needed to achieve the desired consistency. Did you make this recipe?

Tag @mariebostwick on Instagram and hashtag it #fiercelymarie

window.trCommon={"minRating":6,"ajaxurl":"https:\/\/mariebostwick.com\/wp-admin\/admin-ajax.php","ratingNonce":"","postId":19226};window.TastyRecipes = window.TastyRecipes || {};window.TastyRecipes.smoothScroll = {init() {document.addEventListener( 'click', ( e ) => {let anchor = e.target;if ( anchor.tagName !== 'A' ) {anchor = anchor.closest( 'a.tasty-recipes-scrollto' );}if ( ! anchor || ! anchor.classList.contains( 'tasty-recipes-scrollto' ) ) {return;}const elementHref = anchor.getAttribute( 'href' );if ( ! elementHref ) {return;}e.preventDefault();this.goToSelector( elementHref );});},goToSelector( selector ) {const element = document.querySelector( selector );if ( ! element ) {return;}element.scrollIntoView( { behavior: 'smooth' } );}};document.addEventListener('DOMContentLoaded',() => window.TastyRecipes.smoothScroll.init());window.TastyRecipes = window.TastyRecipes || {};window.TastyRecipes.cookMode = {wakeLockApi: false,wakeLock: false,cookModeSelector: '.tasty-recipes-cook-mode',init() {if ("wakeLock" in navigator && "request" in navigator.wakeLock) {this.wakeLockApi = navigator.wakeLock;}const cookModes = document.querySelectorAll(this.cookModeSelector);if (cookModes.length > 0) {for (const cookMode of cookModes) {if (this.wakeLockApi) {cookMode.querySelector('input[type="checkbox"]').addEventListener("change", event => {this.checkboxChange(event.target);}, false);} else {cookMode.style.display = "none";}}}},checkboxChange(checkbox) {if (checkbox.checked) {this.lock();} else {this.unlock();}},setCheckboxesState(state) {const checkboxes = document.querySelectorAll(this.cookModeSelector + ' input[type="checkbox"]');for (const checkbox of checkboxes) {checkbox.checked = state;}},async lock() {try {this.wakeLock = await this.wakeLockApi.request("screen");this.wakeLock.addEventListener("release", () => {this.wakeLock = false;this.setCheckboxesState(false);});this.setCheckboxesState(true);} catch (error) {this.setCheckboxesState(false);}},unlock() {if (this.wakeLock) {this.wakeLock.release();this.wakeLock = false;}this.setCheckboxesState(false);}};(function(callback) {if (document.readyState !== "loading") {callback();} else {document.addEventListener("DOMContentLoaded", callback);}})(() => {window.TastyRecipes.cookMode.init();});window.TastyRecipes = window.TastyRecipes || {};window.TastyRecipes.staticTooltip = {element: null,tooltipElement: null,deleting: false,init( element ) {if ( this.deleting ) {return;}this.element = element;this.buildElements();},destroy() {if ( ! this.tooltipElement || this.deleting ) {return;}this.deleting = true;this.tooltipElement.classList.remove( 'opened' );setTimeout( () => {this.tooltipElement.remove();this.deleting = false;}, 500 );},buildElements() {const tooltipElement = document.createElement( 'div' );tooltipElement.classList.add( 'tasty-recipes-static-tooltip');tooltipElement.setAttribute( 'id', 'tasty-recipes-tooltip' );const currentTooltipElement = document.getElementById( 'tasty-recipes-tooltip' );if ( currentTooltipElement ) {document.body.replaceChild( tooltipElement, currentTooltipElement );} else {document.body.appendChild( tooltipElement );}this.tooltipElement = document.getElementById( 'tasty-recipes-tooltip' );},show() {if ( ! this.tooltipElement ) {return;}const tooltipTop = this.element.getBoundingClientRect().top+ window.scrollY- 10 // 10px offset.- this.tooltipElement.getBoundingClientRect().height;const tooltipLeft = this.element.getBoundingClientRect().left- ( this.tooltipElement.getBoundingClientRect().width / 2 )+ ( this.element.getBoundingClientRect().width / 2 ) - 1;const posLeft = Math.max( 10, tooltipLeft );this.maybeRemoveTail( posLeft !== tooltipLeft );this.tooltipElement.setAttribute( 'style', 'top:' + tooltipTop + 'px;left:' + posLeft + 'px;' );this.tooltipElement.classList.add( 'opened' );},maybeRemoveTail( removeTail ) {if ( removeTail ) {this.tooltipElement.classList.add( 'tr-hide-tail' );} else {this.tooltipElement.classList.remove( 'tr-hide-tail' );}},changeMessage( message ) {if ( ! this.tooltipElement ) {return;}this.tooltipElement.innerHTML = message;}};window.TastyRecipes.ajax = {sendPostRequest( url, data, success, failure ) {const xhr = new XMLHttpRequest();xhr.open( 'POST', url, true );xhr.send( this.preparePostData( data ) );xhr.onreadystatechange = () => {if ( 4 !== xhr.readyState ) {return;}if ( xhr.status === 200 ) {success( JSON.parse( xhr.responseText ) );return;}failure( xhr );};xhr.onerror = () => {failure( xhr );};},preparePostData( data ) {const formData = new FormData();for ( const key in data ) {formData.append( key, data[key] );}return formData;},};window.TastyRecipes.ratings = {defaultRating: 0,currentRatingPercentage: 100,savingRating: false,init( minRating ) {this.minRating = minRating;this.formWatchRating();this.closeTooltipWhenClickOutside();this.addBodyClassBasedOnSelectedRating();this.backwardCompFormRatingPosition();},formWatchRating() {const ratings = document.querySelectorAll('.tasty-recipes-no-ratings-buttons [data-rating]');if ( ratings.length <= 0 ) {return;}for ( const rating of ratings ) {rating.addEventListener( 'click', event => {event.preventDefault();this.defaultRating = event.target.closest( '.checked' ).dataset.rating;this.setCheckedStar( event.target );this.maybeSendRating( this.defaultRating, event.target );this.setRatingInForm( this.defaultRating );} );}},closeTooltipWhenClickOutside() {window.addEventListener( 'click', e => {// Bailout (don't remove the tooltip) when the clicked element is a rating star, or it's the tooltip itself.if ( e.target.closest( '.tasty-recipes-rating' ) || e.target.classList.contains( 'tasty-recipes-static-tooltip' ) ) {return;}window.TastyRecipes.staticTooltip.destroy();} );}, setRatingInForm( rating ) {const ratingInput = document.querySelector( '#respond .tasty-recipes-rating[value="' + rating + '"]' );if ( ! ratingInput ) {return;}ratingInput.click();},addBodyClassBasedOnSelectedRating() {const ratingInputs = document.querySelectorAll( 'input.tasty-recipes-rating' );if ( ! ratingInputs ) {return;}for ( const ratingInput of ratingInputs ) {ratingInput.addEventListener( 'click', currentEvent => {const selectedRating = currentEvent.target.getAttribute( 'value' );this.handleBodyClassByRating( selectedRating );this.toggleCommentTextareaRequired( selectedRating );} );}},handleBodyClassByRating( rating ) {if ( rating < this.minRating ) {document.body.classList.remove( 'tasty-recipes-selected-minimum-rating' );return;}document.body.classList.add( 'tasty-recipes-selected-minimum-rating' );},toggleCommentTextareaRequired( rating ) {const commentTextarea = document.getElementById( 'comment' );if ( ! commentTextarea ) {return;}if ( rating < this.minRating ) {commentTextarea.setAttribute( 'required', '' );return;}commentTextarea.removeAttribute( 'required' );},maybeSendRating( rating, element ) {if ( this.savingRating === rating ) {return;}this.savingRating = rating;window.TastyRecipes.staticTooltip.init( element );const recipeCardElement = element.closest( '.tasty-recipes' );if ( ! recipeCardElement ) {window.TastyRecipes.staticTooltip.destroy();return;}window.TastyRecipes.ajax.sendPostRequest(window.trCommon.ajaxurl,{action: 'tasty_recipes_save_rating',rating,nonce: window.trCommon.ratingNonce,post_id: window.trCommon.postId,recipe_id: recipeCardElement.dataset.trId,},( response ) => {window.TastyRecipes.staticTooltip.changeMessage( response.data.message );window.TastyRecipes.staticTooltip.show();this.updateAverageText( response.data, recipeCardElement );this.maybeFillCommentForm( response.data );// Hide the tooltip after 5 seconds.setTimeout( () => {this.maybeResetTooltip( recipeCardElement, response.data, rating );}, 5000 );},() => {this.resetTooltip( recipeCardElement );});},updateAverageText( data, recipeCardElement ) {if ( ! data.average ) {return;}this.setRatingPercent( data );if ( ! data.count ) {return;}const quickLink = document.querySelector( '.tasty-recipes-rating-link' );if ( quickLink ) {this.setTextInContainer( quickLink, data );this.setPartialStar( quickLink );}const cardStars = recipeCardElement.querySelector( '.tasty-recipes-ratings-buttons' );cardStars.dataset.trDefaultRating = data.average;this.setTextInContainer( recipeCardElement.querySelector( '.tasty-recipes-rating' ), data );},setTextInContainer( container, data ) {if ( ! container ) {return;}if ( data.label ) {const ratingLabelElement = container.querySelector( '.rating-label' );if ( ratingLabelElement ) {ratingLabelElement.innerHTML = data.label;}return;}const averageElement = container.querySelector( '.average' );if ( averageElement ) {averageElement.textContent = data.average;}const countElement = container.querySelector( '.count' );if ( countElement ) {countElement.textContent = data.count;}},setPartialStar( container ) {const highestStar = container.querySelector( '[data-rating="' + Math.ceil( this.defaultRating ) + '"]' );if ( highestStar ) {highestStar.dataset.trClip = this.currentRatingPercentage;}},setRatingPercent( data ) {this.defaultRating = data.average.toFixed( 1 );const parts = data.average.toFixed( 2 ).toString().split( '.' );this.currentRatingPercentage = parts[1] ? parts[1] : 100;if ( this.currentRatingPercentage === '00' ) {this.currentRatingPercentage = 100;}},setCheckedStar( target ) {const cardRatingContainer = target.closest( '.tasty-recipes-ratings-buttons' );const selectedRatingElement = cardRatingContainer.querySelector( '[data-tr-checked]' );if ( selectedRatingElement ) {delete selectedRatingElement.dataset.trChecked;}const thisStar = target.closest( '.tasty-recipes-rating' );thisStar.dataset.trChecked = 1;thisStar.querySelector( '[data-tr-clip]' ).dataset.trClip = 100;},maybeFillCommentForm( data ) {if ( ! data.comment || ! data.comment.content ) {return;}const commentForm = document.querySelector( '#commentform' );if ( ! commentForm ) {return;}const commentBox = commentForm.querySelector( '[name=comment]' );if ( ! commentBox || commentBox.value ) {return;}// Add comment details for editing.commentBox.innerHTML = data.comment.content;if ( data.comment.name ) {commentForm.querySelector( '[name=author]' ).value = data.comment.name;commentForm.querySelector( '[name=email]' ).value = data.comment.email;}},maybeResetTooltip( recipeCardElement, data, rating ) {if ( this.savingRating === rating ) {this.resetTooltip( recipeCardElement, data );}},resetTooltip( recipeCardElement, data ) {window.TastyRecipes.staticTooltip.destroy();this.savingRating = false;// Reset the default rating.const cardRatingContainer = recipeCardElement.querySelector( '.tasty-recipes-ratings-buttons' );if ( cardRatingContainer ) {this.defaultRating = ( data && data.average ) ? data.average.toFixed(1) : cardRatingContainer.dataset.trDefaultRating;cardRatingContainer.dataset.trDefaultRating = this.defaultRating;this.resetSelectedStar( cardRatingContainer, data );}},resetSelectedStar( cardRatingContainer ) {const selectedRatingElement = cardRatingContainer.querySelector( '[data-rating="' + Math.ceil( this.defaultRating ) + '"]' );if ( selectedRatingElement ) {selectedRatingElement.querySelector( '[data-tr-clip]' ).dataset.trClip = this.currentRatingPercentage;selectedRatingElement.parentNode.dataset.trChecked = 1;}const previousSelectedElement= cardRatingContainer.querySelector( '[data-tr-checked]' );if ( previousSelectedElement ) {const currentSelectedRating = previousSelectedElement.querySelector('[data-rating]');if ( currentSelectedRating !== selectedRatingElement ) {delete previousSelectedElement.dataset.trChecked;}}},backwardCompFormRatingPosition() {const ratingsButtons = document.querySelector( '#respond .tasty-recipes-ratings-buttons, #tasty-recipes-comment-rating .tasty-recipes-ratings-buttons' );if ( ! ratingsButtons ) {return;}const ratingsButtonsStyles = window.getComputedStyle(ratingsButtons);if ( ! ratingsButtonsStyles.display.includes( 'flex' ) ) {ratingsButtons.style.direction = 'rtl';}if ( typeof tastyRecipesRating !== 'undefined' ) {// Select the rating that was previously selected in admin.ratingsButtons.querySelector( '.tasty-recipes-rating[value="' + tastyRecipesRating + '"]' ).checked = true;}const ratingSpans = ratingsButtons.querySelectorAll( '.tasty-recipes-rating' );for (const ratingSpan of ratingSpans) {ratingSpan.addEventListener( 'click', event => {if ( ratingSpan === event.target ) {return;}ratingSpan.previousElementSibling.click();} );}}};(function(callback) {if (document.readyState !== "loading") {callback();} else {window.addEventListener( 'load', callback );}})(() => {window.TastyRecipes.ratings.init( window.trCommon ? window.trCommon.minRating : 4 );});
 •  0 comments  •  flag
Share on Twitter
Published on February 10, 2025 08:25

February 3, 2025

Valentine Heart Magnets – Easy Valentine Craft for Kids or Adults

The finished Valentine Heart Magnets

The finished Valentine Heart Magnets in a tin

Colorful Valentine Heart Magnets are cute as can be and fun to make! No special crafting skills or equipment are needed – use scrap fabric or colored papers. An easy Valentine craft for kids or adults!

Need An Easy Craft For Kids Or Adults? Make Some Valentine Heart Magnets!

As a Grammy to seven adorable and very advanced granddarlings, I’m always on the lookout for easy crafts for kids.

It’s a quest that’s tougher than you might guess at first glance.

Oftentimes, supposedly kid-friendly crafts are harder or messier to make than advertised (Looking at you, yarn pumpkins) Also, a lot of them are just kind of dumb, as in something that nobody needs or would use.

These Valentine Heart Magnets are neither of those things.

When I say they’re easy to make and require no special crafting skills, I mean it. Anybody who can use scissors and hold a paintbrush can make Valentine Heart Magnets that look just as good as the ones in my pictures. Really!

Marie holding one of the Valentine Heart Magnets

(Oh, and not to worry if your little crafters aren’t quite ready to handle scissors. If a grownup does the cutting, there will still be tasks for them to do.)

Also, unlike many other kid-friendly crafts, this is one easy craft for kids that’s actually useful. Everybody can use and appreciate a cute magnet. How else are you going to keep all that kid-generated artwork from falling off the fridge door? Not to mention your grocery list and the plumber’s business card?

Bottom line; if you’re looking for an easy, useful, not dumb valentine craft for kids or adults – this is it.

What Do You Need to Make Valentine Heart Magnets?

The materials needed to make the Valentine Heart Magnets

Something else I love about these magnets is that you only need a few items to make them, including…

Clear glass magnetsI ordered mine from Amazon. I paid less than $18 for 72 magnets, which means that each one was just 25 cents. Since the rest of what I needed to make my Valentine heart magnets was either stuff I already had on hand or pretty inexpensive, this turned out to be a very affordable craft! Seventy-two is a lot of magnets, but the extras will be great gifts. 

ModPodge – ModPodge is a glue/sealer/adhesive that is completely clear when it dries. I use it for all kinds of projects, so I already had some on hand. You can find it in most craft stores or online

Fabric Scraps or Scrapbooking Paper – I found a booklet of sturdy, Valentine-themed scrapbooking papers at Michaels for this project. But then I realized that fabric would work just as well. My fabric scrap bin was loaded with cute pink and red fabric, and this was a fun way to use some of it.

Whether you’re using paper or fabric, the surface needs to be smooth! My paper booklet included some with a glittered surface, and that didn’t work well at all. Use only smooth paper or cotton fabric with no bumps, nap, or raised pattern.

Paintbrush – You can use a regular paintbrush or the foam kind. Both will work just as well.

Fabric or Craft Scissors – Use fabric scissors to cut fabric. Use craft scissors to cut paper. Scissors are not a “one-size-fits-all” sort of tool. Seriously!

Optional Boxes for Gift Giving – They’re not required, but I ordered some metal storage boxes with clear lids to put my magnets in. They look so cute and the magnets stick nicely to the metal. There were 12 boxes in each order, so putting six magnets in each box gave me 12 darling magnet sets for gift-giving.

Counting the cost of magnets, ModPodge, and boxes, each gift of 6 magnets was less than $4. Gotta love that!

How to Make Valentine Magnet Hearts

Even little or beginning crafters will be able to make their own Valentine magnets in just minutes.

Start by assembling your materials and covering your work surface with paper or a drop cloth, in case of spills. Donning an apron or smock is a good idea too, especially if you’re crafting with kids.

(If any ModPodge spills onto clothes, wash it out with hot water right away, before it has a chance to dry. When you’re done with the project, paintbrushes should likewise be washed out while they’re still wet.)

Next, peel the paper off the back of one of the heart-shaped magnets. Press it firmly onto the wrong side of the fabric or paper you’re using.

Cutting the heart shaped fabric around the magnet

Use your scissors to trim around the edge of the magnet, as closely as possible. Little kids who aren’t quite ready to handle scissors can have a grownup help with this part.

Paint a thin, even coat of ModPodge onto the fabric or paper-covered surface of the heart. Make sure you get the edges too.

Set the heart magnet down on the table, fabric, or paper side up. Center a glass heart over the magnet and then press down, sticking them together.

Your magnet may look a little cloudy at this point, but it will become clear as the ModPodge dries.

Valentine Heart Magnets – A Great Craft Project for Almost Anyone

The finished Valentine Heart Magnets

Valentine Heart Magnets are perfect for teachers, scout leaders, parents, grandparents, fun uncles, or anyone who is looking for an easy Valentine craft for kids.

They’d also be a terrific project to make at Galentine parties, bridal or baby showers, or as an ice-breaker project at your next retreat or club gathering.

Boxed magnet sets are also perfect for gift-giving, or to sell at craft fairs. I’m planning on donating some of mine to my quilt guild, to sell in the boutique at our annual quilt show.

No matter what you plan to do with them, Valentine Heart Magnets are a fun and easy craft that everyone will enjoy making!

Print The finished Valentine Heart Magnets Valentine Heart Magnets

Author: Marie Bostwick [image error] Print Recipe [image error] Pin Recipe const share_pin_buttons = document.getElementsByClassName( 'share-pin button' ); if ( share_pin_buttons ) { for ( let share_key = 0; share_key < share_pin_buttons.length; share_key++ ) { share_pin_buttons[share_key].addEventListener( 'click', (e) => { e.stopPropagation(); window.open(e.target.dataset.href,'targetWindow','toolbar=no,location=no,status=no,menubar=no,scrollbars=yes,resizable=yes,width=500,height=500'); return false; } ); } } Ingredients

• Clear glass heart magnets (clear glass on top section, magnets with adhesive on the lower section)
• Colorful fabric or paper scraps (must be smooth, without bumps, nap, or raised patterns)
• Scissors (use paper scissors for paper, fabric scissors for fabric_
• ModPodge
• Paint brush (crafting or foam variety)
• Drop cloth or paper to protect the worksurface
• Optional box for presentation and storage of finished magnets

Cook Mode Prevent your screen from going dark Instructions Cover work surface with paper or drop cloth to protect against spills. Assemble materials.Peel paper off the back of a magnet and press it onto the wrong side of paper for fabric (so the pretty side is showing).
Trim away any excess paper or fabric, cutting as close to the edge of the magnet as possible.Paint a thin, even coat of ModPodge onto the paper or fabric covered surface of the heart. Place the coated magnet on the table, fabric or paper side up. Center a glass heart over the magnet and press down gently, sticking the two pieces together.Allow finished magnets to dry. (Don’t worry if they look cloudy at first, they will become clear as the ModPodge dries.) Did you make this recipe?

Tag @mariebostwick on Instagram and hashtag it #fiercelymarie

window.trCommon={"minRating":6,"ajaxurl":"https:\/\/mariebostwick.com\/wp-admin\/admin-ajax.php","ratingNonce":"","postId":19195};window.TastyRecipes = window.TastyRecipes || {};window.TastyRecipes.smoothScroll = {init() {document.addEventListener( 'click', ( e ) => {let anchor = e.target;if ( anchor.tagName !== 'A' ) {anchor = anchor.closest( 'a.tasty-recipes-scrollto' );}if ( ! anchor || ! anchor.classList.contains( 'tasty-recipes-scrollto' ) ) {return;}const elementHref = anchor.getAttribute( 'href' );if ( ! elementHref ) {return;}e.preventDefault();this.goToSelector( elementHref );});},goToSelector( selector ) {const element = document.querySelector( selector );if ( ! element ) {return;}element.scrollIntoView( { behavior: 'smooth' } );}};document.addEventListener('DOMContentLoaded',() => window.TastyRecipes.smoothScroll.init());window.TastyRecipes = window.TastyRecipes || {};window.TastyRecipes.cookMode = {wakeLockApi: false,wakeLock: false,cookModeSelector: '.tasty-recipes-cook-mode',init() {if ("wakeLock" in navigator && "request" in navigator.wakeLock) {this.wakeLockApi = navigator.wakeLock;}const cookModes = document.querySelectorAll(this.cookModeSelector);if (cookModes.length > 0) {for (const cookMode of cookModes) {if (this.wakeLockApi) {cookMode.querySelector('input[type="checkbox"]').addEventListener("change", event => {this.checkboxChange(event.target);}, false);} else {cookMode.style.display = "none";}}}},checkboxChange(checkbox) {if (checkbox.checked) {this.lock();} else {this.unlock();}},setCheckboxesState(state) {const checkboxes = document.querySelectorAll(this.cookModeSelector + ' input[type="checkbox"]');for (const checkbox of checkboxes) {checkbox.checked = state;}},async lock() {try {this.wakeLock = await this.wakeLockApi.request("screen");this.wakeLock.addEventListener("release", () => {this.wakeLock = false;this.setCheckboxesState(false);});this.setCheckboxesState(true);} catch (error) {this.setCheckboxesState(false);}},unlock() {if (this.wakeLock) {this.wakeLock.release();this.wakeLock = false;}this.setCheckboxesState(false);}};(function(callback) {if (document.readyState !== "loading") {callback();} else {document.addEventListener("DOMContentLoaded", callback);}})(() => {window.TastyRecipes.cookMode.init();});window.TastyRecipes = window.TastyRecipes || {};window.TastyRecipes.staticTooltip = {element: null,tooltipElement: null,deleting: false,init( element ) {if ( this.deleting ) {return;}this.element = element;this.buildElements();},destroy() {if ( ! this.tooltipElement || this.deleting ) {return;}this.deleting = true;this.tooltipElement.classList.remove( 'opened' );setTimeout( () => {this.tooltipElement.remove();this.deleting = false;}, 500 );},buildElements() {const tooltipElement = document.createElement( 'div' );tooltipElement.classList.add( 'tasty-recipes-static-tooltip');tooltipElement.setAttribute( 'id', 'tasty-recipes-tooltip' );const currentTooltipElement = document.getElementById( 'tasty-recipes-tooltip' );if ( currentTooltipElement ) {document.body.replaceChild( tooltipElement, currentTooltipElement );} else {document.body.appendChild( tooltipElement );}this.tooltipElement = document.getElementById( 'tasty-recipes-tooltip' );},show() {if ( ! this.tooltipElement ) {return;}const tooltipTop = this.element.getBoundingClientRect().top+ window.scrollY- 10 // 10px offset.- this.tooltipElement.getBoundingClientRect().height;const tooltipLeft = this.element.getBoundingClientRect().left- ( this.tooltipElement.getBoundingClientRect().width / 2 )+ ( this.element.getBoundingClientRect().width / 2 ) - 1;const posLeft = Math.max( 10, tooltipLeft );this.maybeRemoveTail( posLeft !== tooltipLeft );this.tooltipElement.setAttribute( 'style', 'top:' + tooltipTop + 'px;left:' + posLeft + 'px;' );this.tooltipElement.classList.add( 'opened' );},maybeRemoveTail( removeTail ) {if ( removeTail ) {this.tooltipElement.classList.add( 'tr-hide-tail' );} else {this.tooltipElement.classList.remove( 'tr-hide-tail' );}},changeMessage( message ) {if ( ! this.tooltipElement ) {return;}this.tooltipElement.innerHTML = message;}};window.TastyRecipes.ajax = {sendPostRequest( url, data, success, failure ) {const xhr = new XMLHttpRequest();xhr.open( 'POST', url, true );xhr.send( this.preparePostData( data ) );xhr.onreadystatechange = () => {if ( 4 !== xhr.readyState ) {return;}if ( xhr.status === 200 ) {success( JSON.parse( xhr.responseText ) );return;}failure( xhr );};xhr.onerror = () => {failure( xhr );};},preparePostData( data ) {const formData = new FormData();for ( const key in data ) {formData.append( key, data[key] );}return formData;},};window.TastyRecipes.ratings = {defaultRating: 0,currentRatingPercentage: 100,savingRating: false,init( minRating ) {this.minRating = minRating;this.formWatchRating();this.closeTooltipWhenClickOutside();this.addBodyClassBasedOnSelectedRating();this.backwardCompFormRatingPosition();},formWatchRating() {const ratings = document.querySelectorAll('.tasty-recipes-no-ratings-buttons [data-rating]');if ( ratings.length <= 0 ) {return;}for ( const rating of ratings ) {rating.addEventListener( 'click', event => {event.preventDefault();this.defaultRating = event.target.closest( '.checked' ).dataset.rating;this.setCheckedStar( event.target );this.maybeSendRating( this.defaultRating, event.target );this.setRatingInForm( this.defaultRating );} );}},closeTooltipWhenClickOutside() {window.addEventListener( 'click', e => {// Bailout (don't remove the tooltip) when the clicked element is a rating star, or it's the tooltip itself.if ( e.target.closest( '.tasty-recipes-rating' ) || e.target.classList.contains( 'tasty-recipes-static-tooltip' ) ) {return;}window.TastyRecipes.staticTooltip.destroy();} );}, setRatingInForm( rating ) {const ratingInput = document.querySelector( '#respond .tasty-recipes-rating[value="' + rating + '"]' );if ( ! ratingInput ) {return;}ratingInput.click();},addBodyClassBasedOnSelectedRating() {const ratingInputs = document.querySelectorAll( 'input.tasty-recipes-rating' );if ( ! ratingInputs ) {return;}for ( const ratingInput of ratingInputs ) {ratingInput.addEventListener( 'click', currentEvent => {const selectedRating = currentEvent.target.getAttribute( 'value' );this.handleBodyClassByRating( selectedRating );this.toggleCommentTextareaRequired( selectedRating );} );}},handleBodyClassByRating( rating ) {if ( rating < this.minRating ) {document.body.classList.remove( 'tasty-recipes-selected-minimum-rating' );return;}document.body.classList.add( 'tasty-recipes-selected-minimum-rating' );},toggleCommentTextareaRequired( rating ) {const commentTextarea = document.getElementById( 'comment' );if ( ! commentTextarea ) {return;}if ( rating < this.minRating ) {commentTextarea.setAttribute( 'required', '' );return;}commentTextarea.removeAttribute( 'required' );},maybeSendRating( rating, element ) {if ( this.savingRating === rating ) {return;}this.savingRating = rating;window.TastyRecipes.staticTooltip.init( element );const recipeCardElement = element.closest( '.tasty-recipes' );if ( ! recipeCardElement ) {window.TastyRecipes.staticTooltip.destroy();return;}window.TastyRecipes.ajax.sendPostRequest(window.trCommon.ajaxurl,{action: 'tasty_recipes_save_rating',rating,nonce: window.trCommon.ratingNonce,post_id: window.trCommon.postId,recipe_id: recipeCardElement.dataset.trId,},( response ) => {window.TastyRecipes.staticTooltip.changeMessage( response.data.message );window.TastyRecipes.staticTooltip.show();this.updateAverageText( response.data, recipeCardElement );this.maybeFillCommentForm( response.data );// Hide the tooltip after 5 seconds.setTimeout( () => {this.maybeResetTooltip( recipeCardElement, response.data, rating );}, 5000 );},() => {this.resetTooltip( recipeCardElement );});},updateAverageText( data, recipeCardElement ) {if ( ! data.average ) {return;}this.setRatingPercent( data );if ( ! data.count ) {return;}const quickLink = document.querySelector( '.tasty-recipes-rating-link' );if ( quickLink ) {this.setTextInContainer( quickLink, data );this.setPartialStar( quickLink );}const cardStars = recipeCardElement.querySelector( '.tasty-recipes-ratings-buttons' );cardStars.dataset.trDefaultRating = data.average;this.setTextInContainer( recipeCardElement.querySelector( '.tasty-recipes-rating' ), data );},setTextInContainer( container, data ) {if ( ! container ) {return;}if ( data.label ) {const ratingLabelElement = container.querySelector( '.rating-label' );if ( ratingLabelElement ) {ratingLabelElement.innerHTML = data.label;}return;}const averageElement = container.querySelector( '.average' );if ( averageElement ) {averageElement.textContent = data.average;}const countElement = container.querySelector( '.count' );if ( countElement ) {countElement.textContent = data.count;}},setPartialStar( container ) {const highestStar = container.querySelector( '[data-rating="' + Math.ceil( this.defaultRating ) + '"]' );if ( highestStar ) {highestStar.dataset.trClip = this.currentRatingPercentage;}},setRatingPercent( data ) {this.defaultRating = data.average.toFixed( 1 );const parts = data.average.toFixed( 2 ).toString().split( '.' );this.currentRatingPercentage = parts[1] ? parts[1] : 100;if ( this.currentRatingPercentage === '00' ) {this.currentRatingPercentage = 100;}},setCheckedStar( target ) {const cardRatingContainer = target.closest( '.tasty-recipes-ratings-buttons' );const selectedRatingElement = cardRatingContainer.querySelector( '[data-tr-checked]' );if ( selectedRatingElement ) {delete selectedRatingElement.dataset.trChecked;}const thisStar = target.closest( '.tasty-recipes-rating' );thisStar.dataset.trChecked = 1;thisStar.querySelector( '[data-tr-clip]' ).dataset.trClip = 100;},maybeFillCommentForm( data ) {if ( ! data.comment || ! data.comment.content ) {return;}const commentForm = document.querySelector( '#commentform' );if ( ! commentForm ) {return;}const commentBox = commentForm.querySelector( '[name=comment]' );if ( ! commentBox || commentBox.value ) {return;}// Add comment details for editing.commentBox.innerHTML = data.comment.content;if ( data.comment.name ) {commentForm.querySelector( '[name=author]' ).value = data.comment.name;commentForm.querySelector( '[name=email]' ).value = data.comment.email;}},maybeResetTooltip( recipeCardElement, data, rating ) {if ( this.savingRating === rating ) {this.resetTooltip( recipeCardElement, data );}},resetTooltip( recipeCardElement, data ) {window.TastyRecipes.staticTooltip.destroy();this.savingRating = false;// Reset the default rating.const cardRatingContainer = recipeCardElement.querySelector( '.tasty-recipes-ratings-buttons' );if ( cardRatingContainer ) {this.defaultRating = ( data && data.average ) ? data.average.toFixed(1) : cardRatingContainer.dataset.trDefaultRating;cardRatingContainer.dataset.trDefaultRating = this.defaultRating;this.resetSelectedStar( cardRatingContainer, data );}},resetSelectedStar( cardRatingContainer ) {const selectedRatingElement = cardRatingContainer.querySelector( '[data-rating="' + Math.ceil( this.defaultRating ) + '"]' );if ( selectedRatingElement ) {selectedRatingElement.querySelector( '[data-tr-clip]' ).dataset.trClip = this.currentRatingPercentage;selectedRatingElement.parentNode.dataset.trChecked = 1;}const previousSelectedElement= cardRatingContainer.querySelector( '[data-tr-checked]' );if ( previousSelectedElement ) {const currentSelectedRating = previousSelectedElement.querySelector('[data-rating]');if ( currentSelectedRating !== selectedRatingElement ) {delete previousSelectedElement.dataset.trChecked;}}},backwardCompFormRatingPosition() {const ratingsButtons = document.querySelector( '#respond .tasty-recipes-ratings-buttons, #tasty-recipes-comment-rating .tasty-recipes-ratings-buttons' );if ( ! ratingsButtons ) {return;}const ratingsButtonsStyles = window.getComputedStyle(ratingsButtons);if ( ! ratingsButtonsStyles.display.includes( 'flex' ) ) {ratingsButtons.style.direction = 'rtl';}if ( typeof tastyRecipesRating !== 'undefined' ) {// Select the rating that was previously selected in admin.ratingsButtons.querySelector( '.tasty-recipes-rating[value="' + tastyRecipesRating + '"]' ).checked = true;}const ratingSpans = ratingsButtons.querySelectorAll( '.tasty-recipes-rating' );for (const ratingSpan of ratingSpans) {ratingSpan.addEventListener( 'click', event => {if ( ratingSpan === event.target ) {return;}ratingSpan.previousElementSibling.click();} );}}};(function(callback) {if (document.readyState !== "loading") {callback();} else {window.addEventListener( 'load', callback );}})(() => {window.TastyRecipes.ratings.init( window.trCommon ? window.trCommon.minRating : 4 );});
 •  0 comments  •  flag
Share on Twitter
Published on February 03, 2025 07:54

January 27, 2025

Filling Salads: Wild Rice Salad with Sweet Potato and Black Beans

The finished Wild Rice Salad - an example of filling salads

The finished Wild Rice Salad - an example of filling salads

Great vegetarian lunch or a satisfying side dish, Wild Rice Salad with Sweet Potatoes and Black Beans is a hit at our house! Chewy wild rice, sweet roasted veggies, and healthy black beans in a delicious, smoky dressing make for one of the best healthy and filling salads.

Fillings Salads Recipes – Wild Rice Salad with Sweet Potato And Black Beans

Now that the holidays are over, I’ve been excited (and actually kind of relieved) to get back to healthier eating.

Some of that comes from a desire to take off a couple of Christmas pounds. But more than anything, I just feel better when I’m eating fresh, healthy dishes made in my very own kitchen.

However, if the dish doesn’t taste good then it really doesn’t matter how healthy the ingredients may be, am I right? Food can and should be one of life’s pleasures. Taking a break in the day to enjoy a good meal should be an experience we look forward to.

Wild Rice Salad with Sweet Potato and Black Beans is one of those meals.

The chopped ingredients for the base of the salad - including lots of fiber and protein so it's a filling salads

I love filling salads that give me plenty of fuel for busy days. This one is loaded with great tasting ingredients that also happen to be great for you – savory black beans and chewy wild rice for a one-two punch of protein, vitamin-rich fresh and roasted veggies  – in a heart-healthy olive oil and vinegar dressing laced with spices and a touch of smokey flavor.

It all adds up to a great-tasting salad that also happens to be great for you.

What Do You Need to Make Wild Rice Salad With Sweet Potato And Black Beans?

The ingredients for the base of the wild rice salad

So, let’s talk ingredients!

Most of what you’ll need to make this dish is probably familiar and should be easy to find in your local supermarket. But I do have some thoughts about possible substitutions, and one or two of the ingredients may be new to you. Starting with…

Wild Rice – Interestingly, wild rice really isn’t rice. It’s actually the long grain of a semi-aquatic grass. It’s got lots of fiber and is a great source of manganese, phosphorous, and zinc. On top of all that, it contains a lot of protein – twice as much as brown rice.

I love wild rice’s slightly nutty flavor and chewy texture and chose to use it on its own for this recipe. However, some people might find the texture a little too chewy. No worries, you can always substitute a wild rice blend – with a mixture of regular and wild rice – in the recipe. It won’t have quite as much protein or as many minerals, but it’s still a very healthy and tasty choice.

Black beans – one of my favorites, but any type of canned beans will work here.Sweet potatoes – For me, they’re a must. But if you simply don’t care for them, you might try substituting some canned for fresh corn kernels.Bell peppers – I used a blend of red and yellow peppers but green would be great too, just not quite as sweet in flavor.Green onions – if you don’t have any on hand, you could dice a small regular onion and roast it with the other veggies.Cilantro – for me, it’s the perfect herb to complement the Southwestern flavor profile of this dish. But if you just don’t like cilantro, feel free to use parsley.Olive oil

The dressing ingredients mixed into a bowl

Cider vinegar – the robust flavor of cider vinegar is great here, but white wine vinegar could work in a pinch. I’d stay away from balsamic, however. It’s just a little too sweet for this salad.Tomato pasteSpices – I used smoked paprika and cumin in the dressing. It brings in a lovely smokey taste that’s perfect with these Southwestern-inspired ingredients. But, feel free to experiment with other spices if you’d like.Brown sugar – not a lot; just enough to help boost the smokey taste of the paprika.Lime juice – freshly squeezed lime juice adds a wonderful tang to the dressing, but you can also use bottled juice or simply skip it.Salt and pepper – Be sure to taste the dressing before you pour it over the salad. I didn’t add much salt because I prefer to let the other spices carry the day. You can always put in a bit more if you want to.Tips For Filling Salads – Wild Rice Salad with Sweet Potato And Black Beans

The recipe instructions you’ll find below are very straightforward, so I won’t go over that here.

But do look over my comments about using 100% wild rice above. If the texture is too chewy for you, a wild rice blend can be great too. Something else to note about wild rice, it does take quite a long time to boil. Keep that in mind when you’re starting this recipe.

With such a variety of ingredients that include protein, healthy carbs, and fats, this wild rice salad is a meal unto itself. One that you can serve to almost anyone, no matter their dietary restrictions!

Because in addition to being tasty and healthy, wild rice salad with sweet potatoes and black beans is gluten-free, vegetarian, and vegan.  (But check that the brown sugar you’re using is vegan). 

Also, this is a generous recipe. You can’t always cut it in half if you like, but the salad will keep stored covered in the fridge for three to four days.

Print The finished Wild Rice Salad - an example of filling salads Filling Salads: Wild Rice Salad with Sweet Potato and Black Beans

Author: Marie Bostwick Yield: 6-8 servings [image error] Print Recipe [image error] Pin Recipe const share_pin_buttons = document.getElementsByClassName( 'share-pin button' ); if ( share_pin_buttons ) { for ( let share_key = 0; share_key < share_pin_buttons.length; share_key++ ) { share_pin_buttons[share_key].addEventListener( 'click', (e) => { e.stopPropagation(); window.open(e.target.dataset.href,'targetWindow','toolbar=no,location=no,status=no,menubar=no,scrollbars=yes,resizable=yes,width=500,height=500'); return false; } ); } } Ingredients

For the Base:

1 cup diced sweet peppers – red, yellow, orange, green or mixed1 large sweet potato, peeled and diced into ¾ inch pieces1 T olive oil2 cups wild rice, cooked according to package directions (can sub wild rice mix)1 14oz can black beans, drained1 bunch green onions, white and pale green parts only, sliced½ bunch cilantro, chopped (can sub parsley)Kosher saltFresh ground pepper

For the Dressing:

1/2 cup olive oil1/2 cup cider vinegar2 T fresh lime juice, (can sub additional vinegar)1.5 T tomato paste1.5 T smoked paprika1.5 T brown sugar1 tsp ground cumin¾ tsp Kosher salt1/4 tsp fresh ground pepper Cook Mode Prevent your screen from going dark Instructions Preheat the oven to 400 degrees. Line a rimmed baking sheet with foil.Place the peppers and sweet potatoes on the baking sheet. Drizzle with 1 T olive oil and stir to coat. Sprinkle vegetable lightly with Kosher salt and a few grinds of pepper. Place sheet in preheated oven. Roast for 25-30 minutes, stirring and flipping halfway through so veggies are cooking evenly.Place cooked wild rice, roasted sweet potatoes and peppers, green onions, black beans, and chopped cilantro in a serving bowl. Stir to combine and set aside while you make the dressing.Whisk together all dressing ingredients together in a small mixing bowl. Pour dressing over the salad and stir. Salad will keep covered in the refrigerator for 3-4 days. Did you make this recipe?

Tag @mariebostwick on Instagram and hashtag it #fiercelymarie

window.trCommon={"minRating":6,"ajaxurl":"https:\/\/mariebostwick.com\/wp-admin\/admin-ajax.php","ratingNonce":"","postId":19180};window.TastyRecipes = window.TastyRecipes || {};window.TastyRecipes.smoothScroll = {init() {document.addEventListener( 'click', ( e ) => {let anchor = e.target;if ( anchor.tagName !== 'A' ) {anchor = anchor.closest( 'a.tasty-recipes-scrollto' );}if ( ! anchor || ! anchor.classList.contains( 'tasty-recipes-scrollto' ) ) {return;}const elementHref = anchor.getAttribute( 'href' );if ( ! elementHref ) {return;}e.preventDefault();this.goToSelector( elementHref );});},goToSelector( selector ) {const element = document.querySelector( selector );if ( ! element ) {return;}element.scrollIntoView( { behavior: 'smooth' } );}};document.addEventListener('DOMContentLoaded',() => window.TastyRecipes.smoothScroll.init());window.TastyRecipes = window.TastyRecipes || {};window.TastyRecipes.cookMode = {wakeLockApi: false,wakeLock: false,cookModeSelector: '.tasty-recipes-cook-mode',init() {if ("wakeLock" in navigator && "request" in navigator.wakeLock) {this.wakeLockApi = navigator.wakeLock;}const cookModes = document.querySelectorAll(this.cookModeSelector);if (cookModes.length > 0) {for (const cookMode of cookModes) {if (this.wakeLockApi) {cookMode.querySelector('input[type="checkbox"]').addEventListener("change", event => {this.checkboxChange(event.target);}, false);} else {cookMode.style.display = "none";}}}},checkboxChange(checkbox) {if (checkbox.checked) {this.lock();} else {this.unlock();}},setCheckboxesState(state) {const checkboxes = document.querySelectorAll(this.cookModeSelector + ' input[type="checkbox"]');for (const checkbox of checkboxes) {checkbox.checked = state;}},async lock() {try {this.wakeLock = await this.wakeLockApi.request("screen");this.wakeLock.addEventListener("release", () => {this.wakeLock = false;this.setCheckboxesState(false);});this.setCheckboxesState(true);} catch (error) {this.setCheckboxesState(false);}},unlock() {if (this.wakeLock) {this.wakeLock.release();this.wakeLock = false;}this.setCheckboxesState(false);}};(function(callback) {if (document.readyState !== "loading") {callback();} else {document.addEventListener("DOMContentLoaded", callback);}})(() => {window.TastyRecipes.cookMode.init();});window.TastyRecipes = window.TastyRecipes || {};window.TastyRecipes.staticTooltip = {element: null,tooltipElement: null,deleting: false,init( element ) {if ( this.deleting ) {return;}this.element = element;this.buildElements();},destroy() {if ( ! this.tooltipElement || this.deleting ) {return;}this.deleting = true;this.tooltipElement.classList.remove( 'opened' );setTimeout( () => {this.tooltipElement.remove();this.deleting = false;}, 500 );},buildElements() {const tooltipElement = document.createElement( 'div' );tooltipElement.classList.add( 'tasty-recipes-static-tooltip');tooltipElement.setAttribute( 'id', 'tasty-recipes-tooltip' );const currentTooltipElement = document.getElementById( 'tasty-recipes-tooltip' );if ( currentTooltipElement ) {document.body.replaceChild( tooltipElement, currentTooltipElement );} else {document.body.appendChild( tooltipElement );}this.tooltipElement = document.getElementById( 'tasty-recipes-tooltip' );},show() {if ( ! this.tooltipElement ) {return;}const tooltipTop = this.element.getBoundingClientRect().top+ window.scrollY- 10 // 10px offset.- this.tooltipElement.getBoundingClientRect().height;const tooltipLeft = this.element.getBoundingClientRect().left- ( this.tooltipElement.getBoundingClientRect().width / 2 )+ ( this.element.getBoundingClientRect().width / 2 ) - 1;const posLeft = Math.max( 10, tooltipLeft );this.maybeRemoveTail( posLeft !== tooltipLeft );this.tooltipElement.setAttribute( 'style', 'top:' + tooltipTop + 'px;left:' + posLeft + 'px;' );this.tooltipElement.classList.add( 'opened' );},maybeRemoveTail( removeTail ) {if ( removeTail ) {this.tooltipElement.classList.add( 'tr-hide-tail' );} else {this.tooltipElement.classList.remove( 'tr-hide-tail' );}},changeMessage( message ) {if ( ! this.tooltipElement ) {return;}this.tooltipElement.innerHTML = message;}};window.TastyRecipes.ajax = {sendPostRequest( url, data, success, failure ) {const xhr = new XMLHttpRequest();xhr.open( 'POST', url, true );xhr.send( this.preparePostData( data ) );xhr.onreadystatechange = () => {if ( 4 !== xhr.readyState ) {return;}if ( xhr.status === 200 ) {success( JSON.parse( xhr.responseText ) );return;}failure( xhr );};xhr.onerror = () => {failure( xhr );};},preparePostData( data ) {const formData = new FormData();for ( const key in data ) {formData.append( key, data[key] );}return formData;},};window.TastyRecipes.ratings = {defaultRating: 0,currentRatingPercentage: 100,savingRating: false,init( minRating ) {this.minRating = minRating;this.formWatchRating();this.closeTooltipWhenClickOutside();this.addBodyClassBasedOnSelectedRating();this.backwardCompFormRatingPosition();},formWatchRating() {const ratings = document.querySelectorAll('.tasty-recipes-no-ratings-buttons [data-rating]');if ( ratings.length <= 0 ) {return;}for ( const rating of ratings ) {rating.addEventListener( 'click', event => {event.preventDefault();this.defaultRating = event.target.closest( '.checked' ).dataset.rating;this.setCheckedStar( event.target );this.maybeSendRating( this.defaultRating, event.target );this.setRatingInForm( this.defaultRating );} );}},closeTooltipWhenClickOutside() {window.addEventListener( 'click', e => {// Bailout (don't remove the tooltip) when the clicked element is a rating star, or it's the tooltip itself.if ( e.target.closest( '.tasty-recipes-rating' ) || e.target.classList.contains( 'tasty-recipes-static-tooltip' ) ) {return;}window.TastyRecipes.staticTooltip.destroy();} );}, setRatingInForm( rating ) {const ratingInput = document.querySelector( '#respond .tasty-recipes-rating[value="' + rating + '"]' );if ( ! ratingInput ) {return;}ratingInput.click();},addBodyClassBasedOnSelectedRating() {const ratingInputs = document.querySelectorAll( 'input.tasty-recipes-rating' );if ( ! ratingInputs ) {return;}for ( const ratingInput of ratingInputs ) {ratingInput.addEventListener( 'click', currentEvent => {const selectedRating = currentEvent.target.getAttribute( 'value' );this.handleBodyClassByRating( selectedRating );this.toggleCommentTextareaRequired( selectedRating );} );}},handleBodyClassByRating( rating ) {if ( rating < this.minRating ) {document.body.classList.remove( 'tasty-recipes-selected-minimum-rating' );return;}document.body.classList.add( 'tasty-recipes-selected-minimum-rating' );},toggleCommentTextareaRequired( rating ) {const commentTextarea = document.getElementById( 'comment' );if ( ! commentTextarea ) {return;}if ( rating < this.minRating ) {commentTextarea.setAttribute( 'required', '' );return;}commentTextarea.removeAttribute( 'required' );},maybeSendRating( rating, element ) {if ( this.savingRating === rating ) {return;}this.savingRating = rating;window.TastyRecipes.staticTooltip.init( element );const recipeCardElement = element.closest( '.tasty-recipes' );if ( ! recipeCardElement ) {window.TastyRecipes.staticTooltip.destroy();return;}window.TastyRecipes.ajax.sendPostRequest(window.trCommon.ajaxurl,{action: 'tasty_recipes_save_rating',rating,nonce: window.trCommon.ratingNonce,post_id: window.trCommon.postId,recipe_id: recipeCardElement.dataset.trId,},( response ) => {window.TastyRecipes.staticTooltip.changeMessage( response.data.message );window.TastyRecipes.staticTooltip.show();this.updateAverageText( response.data, recipeCardElement );this.maybeFillCommentForm( response.data );// Hide the tooltip after 5 seconds.setTimeout( () => {this.maybeResetTooltip( recipeCardElement, response.data, rating );}, 5000 );},() => {this.resetTooltip( recipeCardElement );});},updateAverageText( data, recipeCardElement ) {if ( ! data.average ) {return;}this.setRatingPercent( data );if ( ! data.count ) {return;}const quickLink = document.querySelector( '.tasty-recipes-rating-link' );if ( quickLink ) {this.setTextInContainer( quickLink, data );this.setPartialStar( quickLink );}const cardStars = recipeCardElement.querySelector( '.tasty-recipes-ratings-buttons' );cardStars.dataset.trDefaultRating = data.average;this.setTextInContainer( recipeCardElement.querySelector( '.tasty-recipes-rating' ), data );},setTextInContainer( container, data ) {if ( ! container ) {return;}if ( data.label ) {const ratingLabelElement = container.querySelector( '.rating-label' );if ( ratingLabelElement ) {ratingLabelElement.innerHTML = data.label;}return;}const averageElement = container.querySelector( '.average' );if ( averageElement ) {averageElement.textContent = data.average;}const countElement = container.querySelector( '.count' );if ( countElement ) {countElement.textContent = data.count;}},setPartialStar( container ) {const highestStar = container.querySelector( '[data-rating="' + Math.ceil( this.defaultRating ) + '"]' );if ( highestStar ) {highestStar.dataset.trClip = this.currentRatingPercentage;}},setRatingPercent( data ) {this.defaultRating = data.average.toFixed( 1 );const parts = data.average.toFixed( 2 ).toString().split( '.' );this.currentRatingPercentage = parts[1] ? parts[1] : 100;if ( this.currentRatingPercentage === '00' ) {this.currentRatingPercentage = 100;}},setCheckedStar( target ) {const cardRatingContainer = target.closest( '.tasty-recipes-ratings-buttons' );const selectedRatingElement = cardRatingContainer.querySelector( '[data-tr-checked]' );if ( selectedRatingElement ) {delete selectedRatingElement.dataset.trChecked;}const thisStar = target.closest( '.tasty-recipes-rating' );thisStar.dataset.trChecked = 1;thisStar.querySelector( '[data-tr-clip]' ).dataset.trClip = 100;},maybeFillCommentForm( data ) {if ( ! data.comment || ! data.comment.content ) {return;}const commentForm = document.querySelector( '#commentform' );if ( ! commentForm ) {return;}const commentBox = commentForm.querySelector( '[name=comment]' );if ( ! commentBox || commentBox.value ) {return;}// Add comment details for editing.commentBox.innerHTML = data.comment.content;if ( data.comment.name ) {commentForm.querySelector( '[name=author]' ).value = data.comment.name;commentForm.querySelector( '[name=email]' ).value = data.comment.email;}},maybeResetTooltip( recipeCardElement, data, rating ) {if ( this.savingRating === rating ) {this.resetTooltip( recipeCardElement, data );}},resetTooltip( recipeCardElement, data ) {window.TastyRecipes.staticTooltip.destroy();this.savingRating = false;// Reset the default rating.const cardRatingContainer = recipeCardElement.querySelector( '.tasty-recipes-ratings-buttons' );if ( cardRatingContainer ) {this.defaultRating = ( data && data.average ) ? data.average.toFixed(1) : cardRatingContainer.dataset.trDefaultRating;cardRatingContainer.dataset.trDefaultRating = this.defaultRating;this.resetSelectedStar( cardRatingContainer, data );}},resetSelectedStar( cardRatingContainer ) {const selectedRatingElement = cardRatingContainer.querySelector( '[data-rating="' + Math.ceil( this.defaultRating ) + '"]' );if ( selectedRatingElement ) {selectedRatingElement.querySelector( '[data-tr-clip]' ).dataset.trClip = this.currentRatingPercentage;selectedRatingElement.parentNode.dataset.trChecked = 1;}const previousSelectedElement= cardRatingContainer.querySelector( '[data-tr-checked]' );if ( previousSelectedElement ) {const currentSelectedRating = previousSelectedElement.querySelector('[data-rating]');if ( currentSelectedRating !== selectedRatingElement ) {delete previousSelectedElement.dataset.trChecked;}}},backwardCompFormRatingPosition() {const ratingsButtons = document.querySelector( '#respond .tasty-recipes-ratings-buttons, #tasty-recipes-comment-rating .tasty-recipes-ratings-buttons' );if ( ! ratingsButtons ) {return;}const ratingsButtonsStyles = window.getComputedStyle(ratingsButtons);if ( ! ratingsButtonsStyles.display.includes( 'flex' ) ) {ratingsButtons.style.direction = 'rtl';}if ( typeof tastyRecipesRating !== 'undefined' ) {// Select the rating that was previously selected in admin.ratingsButtons.querySelector( '.tasty-recipes-rating[value="' + tastyRecipesRating + '"]' ).checked = true;}const ratingSpans = ratingsButtons.querySelectorAll( '.tasty-recipes-rating' );for (const ratingSpan of ratingSpans) {ratingSpan.addEventListener( 'click', event => {if ( ratingSpan === event.target ) {return;}ratingSpan.previousElementSibling.click();} );}}};(function(callback) {if (document.readyState !== "loading") {callback();} else {window.addEventListener( 'load', callback );}})(() => {window.TastyRecipes.ratings.init( window.trCommon ? window.trCommon.minRating : 4 );});
 •  0 comments  •  flag
Share on Twitter
Published on January 27, 2025 14:20

January 20, 2025

Gluten-Free Swedish Meatballs

The finished and plated Gluten-Free Swedish Meatballs

The finished and plated The finished and plated Gluten-Free Swedish Meatballs

These gluten-Free Swedish Meatballs are just as yummy as the IKEA version we all know and love. Tender meatballs with mild, warming spices in a rich creamy sauce. A gluten-free dinner the whole family will love! 

Gluten-Free Swedish Meatballs – A Family-Friendly Dinner for the Whole Family

Though I have no problem with it, quite a few of my family members and friends can’t tolerate gluten. So, I’ve become more aware of the challenges of eating gluten-free, especially when you’re trying to make family meals (find some of my other gluten-free recipes here!). That’s why I decided to try adapting a traditional Swedish Meatball recipe to make it gluten-free.

The end result was even better than I had hoped!

The finished and plated The finished and plated gluten-free meatballs

When I make a gluten-free recipe, I can usually taste the difference. But not this time. These gluten-free Swedish Meatballs taste just as good as their gluten-full cousins, and just as yummy as the meatballs I’ve been buying from IKEA for years.

(Sorry, IKEA. I won’t be buying your meatballs in the future. But I still love your Billy Bookcases!)

But what I really love about this recipe is how family-friendly it is. Swedish Meatballs are one of those dishes that everybody in the family, kids as well as adults, love to eat.

Thanks to a mixture of warming spices in the meatballs and the wonderful creamy sauce brightened by a bit of mustard, this is a dish that has plenty of flavor, which adult will appreciate. But the spices flavors are subtle enough that kids will gobble it down too, especially if you serve it with a side of the optional, sweet and tart lingonberry sauce. 

I took this recipe to a family who just welcomed a new baby. It was a big hit with the parents and the three kids. 

What Do You Need to Make Gluten-Free Swedish Meatballs?

The ingredients set out on a counter

The list of ingredients for gluten-free Swedish meatballs might look a little long, but don’t let that intimidate you. You probably have most of the ingredients in your pantry, and the others are easy to find at the supermarket, including…

Ground chicken and ground porkOnion – any type will do. I grate the onion on a box grater for this recipe. You could also also chop them into very, very small pieces.ParsleyEggSpices – allspice, nutmeg, garlic powder, salt, pepperGluten-Free Panko Breadcrumbs – these are like regular panko breadcrumbs, light and crispy, but made with rice. Look for them in the supermarket, alongside regular panko breadcrumbs. My favorite brand is Kikkoman. If you’re not concerned about gluten, you can sub regular panko breadcrumbs.ButterGluten-Free Flour – I used Bob’s One-to-One Baking Flour, but any brand will do, as long as the measurements are equal. If you’re not concerned about gluten, you can use regular, all-purpose flour.Beef broth – if you’re buying rather than using homemade, check the label to make sure it’s gluten free. If it doesn’t say gluten free, read the ingredients to make sure there’s no wheat or wheat products. I prefer low sodium broth; none of us needs that extra salt!Worcestershire sauce – again, make sure the brand you use is gluten free. I used Kroger brand.Dijon mustard – I use a little more mustard in my sauce than some recipes call for because it some extra punch to sauce that has quite a subtle flavor. If you’re cooking for kids who might balk at a more flavorful sauce, you can reduce the mustard by half. It will still taste good.Sour cream – I don’t use a lot, just enough to add a little extra richness to the sauce.Lingonberry sauce – This is served alongside the dish as a condiment. It’s optional, but the sweet-tart lingonberries are SO good with Swedish meatballs! You should be able to find them in the jam section at the market. In a pinch, you could substitute cranberry sauce.How to Make Gluten-Free Swedish Meatballs – Or Make Them Ahead!

Making the meatballs is super easy. You just smoosh the ingredients together in a mixing bowl, roll them into balls, and bake them in the oven. Couldn’t be simpler.

But one of the things I adore about this recipe is that fact that the cooked meatballs can be cooled and stored in a plastic zipper bag in the freezer for 3-4 months. It’s so convenient to have a big bag of Swedish Meatballs on hand for busy days, unexpected guests, or when you want to bring a meal to a friend.

The prepped meatballs set on a tray

The gluten-free Swedish meatballs I made for that family with the new baby came from my freezer stash. I also like to keep them on hand to use in other recipes, such as my Slow Cooker Cranberry Meatballs. They were a ginormous hit at our last party!

Please note: this meatball recipe makes far more than I would use for my two-person family. So, I generally freeze half at least half to use later. The ingredient amounts in the sauce recipe reflect that. If you’re going to serve all the meatballs at once, you may want to double the sauce.

Making the sauce is simple too. If you’ve ever made any kind of white sauce, the process will be familiar.

TheThe ingredients for making the sauce

Just melt some butter in a skillet, then sift in the flour a little at a time, whisking to create a thick, smooth roux. Adding the flour through a sifter or fine mesh sieve is the best method. In a pinch, you can just sprinkle in the flour with your hands, but be sure to whisk the mixture thoroughly to get rid of any lumps.

It’s important to let the butter and flour roux cook for at least three minutes, whisking it constantly to prevent sticking. Otherwise, your sauce will have a raw flour taste. The color will deepen, turning darker and golden brown. That’s how you’ll know it’s time to add the broth.

Adding the broth in a little at a time, whisking it smooth before you add more, is important to prevent lumps. Once the broth is incorporated, you’ll whisk in the remaining ingredients, including the sour cream.

After tasting and adjusting the seasonings, you’ll put the meatballs in the pan, stirring to coat with the sauce. They’ll warm as the sauce simmers and thickens. 

What to Serve with Gluten-Free Swedish Meatballs?

The meatballs and sauce are good on their own, but serving them with lingonberry sauce as a condiment takes them from good to great. You should be able to find lingonberry sauce in most grocery stores. However, as I said above, cranberry sauce will work in a pinch.

Serve the meatballs and a nice helping of sauce over rice, mashed potatoes, or a portion of gluten-free pasta, sprinkled with a little extra parsley for color.  Add a fresh green salad and dinner is served!

Whether you make my gluten-free version or substitute regular flour and breadcrumbs for a gluten-full preparation, Swedish Meatballs are a great choice for weeknight meals.

Give them a try soon!

Print The finished and plated Gluten-Free Swedish Meatballs Gluten-Free Swedish Meatballs

Author: Marie Bostwick Yield: Makes 30-36 meatballs, approximately 8 servings. Cooked meatballs can be frozen for 3-4 months [image error] Print Recipe [image error] Pin Recipe const share_pin_buttons = document.getElementsByClassName( 'share-pin button' ); if ( share_pin_buttons ) { for ( let share_key = 0; share_key < share_pin_buttons.length; share_key++ ) { share_pin_buttons[share_key].addEventListener( 'click', (e) => { e.stopPropagation(); window.open(e.target.dataset.href,'targetWindow','toolbar=no,location=no,status=no,menubar=no,scrollbars=yes,resizable=yes,width=500,height=500'); return false; } ); } } Ingredients

For the Meatballs:

1 lb ground pork1 lb ground chicken1 cup gluten free panko bread crumbs (Kikkoman brand is my favorite)½ medium onion, grated2 T chopped fresh parsley, plus more for garnish1 egg1 tsp ground allspice1 tsp ground nutmeg1 tsp garlic powder1 tsp kosher salt½ tsp fresh ground pepper

For the Sauce: (Note: if serving all the meatballs at one time, double the sauce)

4 T butter4 T Bob’s 1 to 1 Baking Flour (or other gluten free flour)2 C beef broth (check label to make sure it’s gluten free)1 T Worcestershire sauce (make sure it’s gluten free. I used Kroger brand)2 tsp Dijon mustard½ cup sour creamSalt and pepper to taste*Lingonberry sauce – Optional for serving Cook Mode Prevent your screen from going dark Instructions Preheat the oven to 400 degrees. Line a large rimmed baking sheet with foil.Add all the meatball ingredients – ground chicken, ground pork, bread crumbs, onion, parsley, egg, allspice, nutmeg, garlic powder, salt, pepper — to a large mixing bowl. Stir to combine and evenly distribute ingredients.Use your hands to form the mixture into balls of approximately 1 ounce, about the size of a ping pong ball. Place the meatballs onto the baking sheet, leaving some space between.Bake in the preheated oven for 20 minutes. Remove from oven. (If freezing any or all of the meatballs, allow to cool completely before placing in plastic zipper bags and freezing. Frozen meatballs will keep for 3-4 months. If serving all the meatballs at once, double the sauce recipe.)Make the sauce. Melt butter in a large, heavy bottomed skillet over medium heat. Sift or sprinkle flour into melted butter, whisking vigorously to create a thick roux. Whisk roux continuously for 3-5 minutes, until perfectly smooth and beginning to turn golden brown.Whisk the broth into the roux, a little at a time, creating a smooth sauce. Whisk in Worcestershire sauce, mustard, and sour cream. Add the cooked meatballs to the pan and stir to coat with sauce. Lower the heat. Allow the meatballs to simmer for about 3-5 minutes, as the sauce thickens slightly.Serve meatballs and sauce over rice, mashed potatoes, or gluten-free pasta, garnished with a sprinkle of chopped parsley, and with a generous spoonful of lingonberry sauce if using. Did you make this recipe?

Tag @mariebostwick on Instagram and hashtag it #fiercelymarie

window.trCommon={"minRating":6,"ajaxurl":"https:\/\/mariebostwick.com\/wp-admin\/admin-ajax.php","ratingNonce":"","postId":19163};window.TastyRecipes = window.TastyRecipes || {};window.TastyRecipes.smoothScroll = {init() {document.addEventListener( 'click', ( e ) => {let anchor = e.target;if ( anchor.tagName !== 'A' ) {anchor = anchor.closest( 'a.tasty-recipes-scrollto' );}if ( ! anchor || ! anchor.classList.contains( 'tasty-recipes-scrollto' ) ) {return;}const elementHref = anchor.getAttribute( 'href' );if ( ! elementHref ) {return;}e.preventDefault();this.goToSelector( elementHref );});},goToSelector( selector ) {const element = document.querySelector( selector );if ( ! element ) {return;}element.scrollIntoView( { behavior: 'smooth' } );}};document.addEventListener('DOMContentLoaded',() => window.TastyRecipes.smoothScroll.init());window.TastyRecipes = window.TastyRecipes || {};window.TastyRecipes.cookMode = {wakeLockApi: false,wakeLock: false,cookModeSelector: '.tasty-recipes-cook-mode',init() {if ("wakeLock" in navigator && "request" in navigator.wakeLock) {this.wakeLockApi = navigator.wakeLock;}const cookModes = document.querySelectorAll(this.cookModeSelector);if (cookModes.length > 0) {for (const cookMode of cookModes) {if (this.wakeLockApi) {cookMode.querySelector('input[type="checkbox"]').addEventListener("change", event => {this.checkboxChange(event.target);}, false);} else {cookMode.style.display = "none";}}}},checkboxChange(checkbox) {if (checkbox.checked) {this.lock();} else {this.unlock();}},setCheckboxesState(state) {const checkboxes = document.querySelectorAll(this.cookModeSelector + ' input[type="checkbox"]');for (const checkbox of checkboxes) {checkbox.checked = state;}},async lock() {try {this.wakeLock = await this.wakeLockApi.request("screen");this.wakeLock.addEventListener("release", () => {this.wakeLock = false;this.setCheckboxesState(false);});this.setCheckboxesState(true);} catch (error) {this.setCheckboxesState(false);}},unlock() {if (this.wakeLock) {this.wakeLock.release();this.wakeLock = false;}this.setCheckboxesState(false);}};(function(callback) {if (document.readyState !== "loading") {callback();} else {document.addEventListener("DOMContentLoaded", callback);}})(() => {window.TastyRecipes.cookMode.init();});window.TastyRecipes = window.TastyRecipes || {};window.TastyRecipes.staticTooltip = {element: null,tooltipElement: null,deleting: false,init( element ) {if ( this.deleting ) {return;}this.element = element;this.buildElements();},destroy() {if ( ! this.tooltipElement || this.deleting ) {return;}this.deleting = true;this.tooltipElement.classList.remove( 'opened' );setTimeout( () => {this.tooltipElement.remove();this.deleting = false;}, 500 );},buildElements() {const tooltipElement = document.createElement( 'div' );tooltipElement.classList.add( 'tasty-recipes-static-tooltip');tooltipElement.setAttribute( 'id', 'tasty-recipes-tooltip' );const currentTooltipElement = document.getElementById( 'tasty-recipes-tooltip' );if ( currentTooltipElement ) {document.body.replaceChild( tooltipElement, currentTooltipElement );} else {document.body.appendChild( tooltipElement );}this.tooltipElement = document.getElementById( 'tasty-recipes-tooltip' );},show() {if ( ! this.tooltipElement ) {return;}const tooltipTop = this.element.getBoundingClientRect().top+ window.scrollY- 10 // 10px offset.- this.tooltipElement.getBoundingClientRect().height;const tooltipLeft = this.element.getBoundingClientRect().left- ( this.tooltipElement.getBoundingClientRect().width / 2 )+ ( this.element.getBoundingClientRect().width / 2 ) - 1;const posLeft = Math.max( 10, tooltipLeft );this.maybeRemoveTail( posLeft !== tooltipLeft );this.tooltipElement.setAttribute( 'style', 'top:' + tooltipTop + 'px;left:' + posLeft + 'px;' );this.tooltipElement.classList.add( 'opened' );},maybeRemoveTail( removeTail ) {if ( removeTail ) {this.tooltipElement.classList.add( 'tr-hide-tail' );} else {this.tooltipElement.classList.remove( 'tr-hide-tail' );}},changeMessage( message ) {if ( ! this.tooltipElement ) {return;}this.tooltipElement.innerHTML = message;}};window.TastyRecipes.ajax = {sendPostRequest( url, data, success, failure ) {const xhr = new XMLHttpRequest();xhr.open( 'POST', url, true );xhr.send( this.preparePostData( data ) );xhr.onreadystatechange = () => {if ( 4 !== xhr.readyState ) {return;}if ( xhr.status === 200 ) {success( JSON.parse( xhr.responseText ) );return;}failure( xhr );};xhr.onerror = () => {failure( xhr );};},preparePostData( data ) {const formData = new FormData();for ( const key in data ) {formData.append( key, data[key] );}return formData;},};window.TastyRecipes.ratings = {defaultRating: 0,currentRatingPercentage: 100,savingRating: false,init( minRating ) {this.minRating = minRating;this.formWatchRating();this.closeTooltipWhenClickOutside();this.addBodyClassBasedOnSelectedRating();this.backwardCompFormRatingPosition();},formWatchRating() {const ratings = document.querySelectorAll('.tasty-recipes-no-ratings-buttons [data-rating]');if ( ratings.length <= 0 ) {return;}for ( const rating of ratings ) {rating.addEventListener( 'click', event => {event.preventDefault();this.defaultRating = event.target.closest( '.checked' ).dataset.rating;this.setCheckedStar( event.target );this.maybeSendRating( this.defaultRating, event.target );this.setRatingInForm( this.defaultRating );} );}},closeTooltipWhenClickOutside() {window.addEventListener( 'click', e => {// Bailout (don't remove the tooltip) when the clicked element is a rating star, or it's the tooltip itself.if ( e.target.closest( '.tasty-recipes-rating' ) || e.target.classList.contains( 'tasty-recipes-static-tooltip' ) ) {return;}window.TastyRecipes.staticTooltip.destroy();} );}, setRatingInForm( rating ) {const ratingInput = document.querySelector( '#respond .tasty-recipes-rating[value="' + rating + '"]' );if ( ! ratingInput ) {return;}ratingInput.click();},addBodyClassBasedOnSelectedRating() {const ratingInputs = document.querySelectorAll( 'input.tasty-recipes-rating' );if ( ! ratingInputs ) {return;}for ( const ratingInput of ratingInputs ) {ratingInput.addEventListener( 'click', currentEvent => {const selectedRating = currentEvent.target.getAttribute( 'value' );this.handleBodyClassByRating( selectedRating );this.toggleCommentTextareaRequired( selectedRating );} );}},handleBodyClassByRating( rating ) {if ( rating < this.minRating ) {document.body.classList.remove( 'tasty-recipes-selected-minimum-rating' );return;}document.body.classList.add( 'tasty-recipes-selected-minimum-rating' );},toggleCommentTextareaRequired( rating ) {const commentTextarea = document.getElementById( 'comment' );if ( ! commentTextarea ) {return;}if ( rating < this.minRating ) {commentTextarea.setAttribute( 'required', '' );return;}commentTextarea.removeAttribute( 'required' );},maybeSendRating( rating, element ) {if ( this.savingRating === rating ) {return;}this.savingRating = rating;window.TastyRecipes.staticTooltip.init( element );const recipeCardElement = element.closest( '.tasty-recipes' );if ( ! recipeCardElement ) {window.TastyRecipes.staticTooltip.destroy();return;}window.TastyRecipes.ajax.sendPostRequest(window.trCommon.ajaxurl,{action: 'tasty_recipes_save_rating',rating,nonce: window.trCommon.ratingNonce,post_id: window.trCommon.postId,recipe_id: recipeCardElement.dataset.trId,},( response ) => {window.TastyRecipes.staticTooltip.changeMessage( response.data.message );window.TastyRecipes.staticTooltip.show();this.updateAverageText( response.data, recipeCardElement );this.maybeFillCommentForm( response.data );// Hide the tooltip after 5 seconds.setTimeout( () => {this.maybeResetTooltip( recipeCardElement, response.data, rating );}, 5000 );},() => {this.resetTooltip( recipeCardElement );});},updateAverageText( data, recipeCardElement ) {if ( ! data.average ) {return;}this.setRatingPercent( data );if ( ! data.count ) {return;}const quickLink = document.querySelector( '.tasty-recipes-rating-link' );if ( quickLink ) {this.setTextInContainer( quickLink, data );this.setPartialStar( quickLink );}const cardStars = recipeCardElement.querySelector( '.tasty-recipes-ratings-buttons' );cardStars.dataset.trDefaultRating = data.average;this.setTextInContainer( recipeCardElement.querySelector( '.tasty-recipes-rating' ), data );},setTextInContainer( container, data ) {if ( ! container ) {return;}if ( data.label ) {const ratingLabelElement = container.querySelector( '.rating-label' );if ( ratingLabelElement ) {ratingLabelElement.innerHTML = data.label;}return;}const averageElement = container.querySelector( '.average' );if ( averageElement ) {averageElement.textContent = data.average;}const countElement = container.querySelector( '.count' );if ( countElement ) {countElement.textContent = data.count;}},setPartialStar( container ) {const highestStar = container.querySelector( '[data-rating="' + Math.ceil( this.defaultRating ) + '"]' );if ( highestStar ) {highestStar.dataset.trClip = this.currentRatingPercentage;}},setRatingPercent( data ) {this.defaultRating = data.average.toFixed( 1 );const parts = data.average.toFixed( 2 ).toString().split( '.' );this.currentRatingPercentage = parts[1] ? parts[1] : 100;if ( this.currentRatingPercentage === '00' ) {this.currentRatingPercentage = 100;}},setCheckedStar( target ) {const cardRatingContainer = target.closest( '.tasty-recipes-ratings-buttons' );const selectedRatingElement = cardRatingContainer.querySelector( '[data-tr-checked]' );if ( selectedRatingElement ) {delete selectedRatingElement.dataset.trChecked;}const thisStar = target.closest( '.tasty-recipes-rating' );thisStar.dataset.trChecked = 1;thisStar.querySelector( '[data-tr-clip]' ).dataset.trClip = 100;},maybeFillCommentForm( data ) {if ( ! data.comment || ! data.comment.content ) {return;}const commentForm = document.querySelector( '#commentform' );if ( ! commentForm ) {return;}const commentBox = commentForm.querySelector( '[name=comment]' );if ( ! commentBox || commentBox.value ) {return;}// Add comment details for editing.commentBox.innerHTML = data.comment.content;if ( data.comment.name ) {commentForm.querySelector( '[name=author]' ).value = data.comment.name;commentForm.querySelector( '[name=email]' ).value = data.comment.email;}},maybeResetTooltip( recipeCardElement, data, rating ) {if ( this.savingRating === rating ) {this.resetTooltip( recipeCardElement, data );}},resetTooltip( recipeCardElement, data ) {window.TastyRecipes.staticTooltip.destroy();this.savingRating = false;// Reset the default rating.const cardRatingContainer = recipeCardElement.querySelector( '.tasty-recipes-ratings-buttons' );if ( cardRatingContainer ) {this.defaultRating = ( data && data.average ) ? data.average.toFixed(1) : cardRatingContainer.dataset.trDefaultRating;cardRatingContainer.dataset.trDefaultRating = this.defaultRating;this.resetSelectedStar( cardRatingContainer, data );}},resetSelectedStar( cardRatingContainer ) {const selectedRatingElement = cardRatingContainer.querySelector( '[data-rating="' + Math.ceil( this.defaultRating ) + '"]' );if ( selectedRatingElement ) {selectedRatingElement.querySelector( '[data-tr-clip]' ).dataset.trClip = this.currentRatingPercentage;selectedRatingElement.parentNode.dataset.trChecked = 1;}const previousSelectedElement= cardRatingContainer.querySelector( '[data-tr-checked]' );if ( previousSelectedElement ) {const currentSelectedRating = previousSelectedElement.querySelector('[data-rating]');if ( currentSelectedRating !== selectedRatingElement ) {delete previousSelectedElement.dataset.trChecked;}}},backwardCompFormRatingPosition() {const ratingsButtons = document.querySelector( '#respond .tasty-recipes-ratings-buttons, #tasty-recipes-comment-rating .tasty-recipes-ratings-buttons' );if ( ! ratingsButtons ) {return;}const ratingsButtonsStyles = window.getComputedStyle(ratingsButtons);if ( ! ratingsButtonsStyles.display.includes( 'flex' ) ) {ratingsButtons.style.direction = 'rtl';}if ( typeof tastyRecipesRating !== 'undefined' ) {// Select the rating that was previously selected in admin.ratingsButtons.querySelector( '.tasty-recipes-rating[value="' + tastyRecipesRating + '"]' ).checked = true;}const ratingSpans = ratingsButtons.querySelectorAll( '.tasty-recipes-rating' );for (const ratingSpan of ratingSpans) {ratingSpan.addEventListener( 'click', event => {if ( ratingSpan === event.target ) {return;}ratingSpan.previousElementSibling.click();} );}}};(function(callback) {if (document.readyState !== "loading") {callback();} else {window.addEventListener( 'load', callback );}})(() => {window.TastyRecipes.ratings.init( window.trCommon ? window.trCommon.minRating : 4 );});
 •  0 comments  •  flag
Share on Twitter
Published on January 20, 2025 08:29

January 13, 2025

Chicken French Dip Sandwich – A Healthier French Dip

Marie dipping a the Chicken French Dip Sandwich

Marie dipping a the Chicken French Dip Sandwich

Kick up your lunchtime game with my Chicken French Dip Sandwich. Tender sliced chicken, sweet caramelized onions, and gooey melted cheese with an herbed dipping broth. So good!

Get Out of Your Sandwich Rut – Make A Chicken French Dip Sandwich

My eldest son likes to tell a funny story about the time the Chairman slipped on some ice and broke his ankle, only days before I was due to leave town for a month-long book tour.

Being a good son, and having a job that allowed him to work remotely, he flew to town to care of his bedridden Dad in my absence. One of his duties involved making the meals.

At some point, our dear boy and his father, a normally active guy who was feeling understandably frustrated after days stuck in bed, had a slightly testy exchange. When my son pointed out all the things he was doing for his father, including all the cooking, the Chairman came back with, “Oh, don’t I know it. Sandwich, after sandwich, after sandwich.”

Sandwich, after sandwich, after sandwich has become a favorite family tagline around here, something we pull out in all kinds of situations. It always gets a laugh.

But sandwich ruts really are a thing! And during our very busy lives, it’s so easy to fall into one. 

If you’re tired of making (and eating) the same old sandwich, after sandwich, after sandwich, this Chicken French Dip Sandwich is a delicious and easy way to shake up your routine!

A Chicken French Dip Sandwich cut in half and served on a plate

Chicken French Dip Sandwich – A Fresh Twist on The Classic

A classic French dip sandwich is always tasty. But for those of us who are trying to limit our intake of red meat, this Chicken French Dip is a really great alternative (as you can see, chicken is one of my favorite proteins!).

But I think my version tastes even better!

In addition to a generous pile of thinly sliced chicken, another generous pile of caramelized onions adds a rich, savory sweetness. Slices of gooey melted cheese make it extra decadent. A wonderful chicken dipping broth flavored with fresh, fragrant herbs is an extra special finishing touch.

Everything about this scrumptious twist on the classic is special, a sandwich that will transform your lunchtime routine into a meal you’ll really enjoy.

And though they require a little more effort than a same-old-same old sandwich, Chicken French Dip Sandwiches are super easy to make.

What Do You Need to Make Chicken French Dip Sandwiches?

The ingredients for the Chicken French Dip Sandwich laid out on a counter

Before we get to the instructions for making your sandwiches, let’s go through the ingredient list and my recommendations for each….

Chicken Broth – If possible, homemade chicken broth is preferred here. But a good quality, low salt broth purchased from the store can work too. Why low salt? One, because most of us are getting too much sodium. Two, because a lower salt broth lets the flavor of the herbs come through.Fresh Herbs – I used fresh rosemary and thyme. But you could substitute another robustly flavored herb, such as oregano or sage.Onions – I prefer the yellow variety for this dish, but any variety of onions will work here.Olive Oil – for cooking the onionsButter – from grilling the sandwichesBread – I love marble rye for these sandwiches. Its hearty flavor complements the other ingredients beautifully. But any firm-textured bread, including sourdough, will be great.Chicken – Freshly and thinly sliced chicken breast from the deli counter. You can use plain, but peppered or smoked flavors would be good too.Cheese – I recommend Swiss, Monterrey Jack, Pepper Jack if you like a little heat or any semi-hard white cheese. What about cheddar, you ask? My feeling is that the other cheeses mentioned compliment the milder flavor of chicken and those wonderful caramelized onions perfectly, whereas cheddar might overpower the other flavors. If you’re just crazy for cheddar, go ahead and give it a try.How To Make Chicken French Dip Sandwiches

Before you start making the sandwich, you’ll get the dipping broth going.

You’ll just the fresh herbs into the broth and let it simmer while you’re making the sandwiches. I was out of garlic (I know, I couldn’t believe it either) but I think I’ll add one large clove, sliced in half the next time.

While the broth is simmering, you’ll prepare the onions.

You just need to slice them very, very thinly. This is one of those times when I bring out my Borner V-Slicer. I’ve had mine for about fifteen years, and use it every week. A truly indispensable kitchen tool! 

Next, you’ll cook the sliced onions in a little olive oil over medium heat until they turn a deep golden brown. Caramelizing onions takes time, probably 10-15 minutes. But the rich, sweet flavor you’ll get is more than worth it, so don’t rush this part!

The sandwich being assembled with chicken, cheese, and onion

When the onions are done, it’s time to assemble and grill your Chicken French Dip Sandwich.

Though you could melt the butter in the pan, I prefer to spread the softened butter on each slice of bread. It keeps me from using more butter than necessary and ensures that every slice is evenly grilled.

Grilling the sandwiches in a pan stovetop

To cook the sandwiches, I put two slices of buttered bread in the skillet, add a slice of cheese, the chicken, the caramelized onions, and another cheese slice before putting the second slice of bread on top.

You can leave out the second slice of cheese if you want. However, I like how the two slices of melted cheese act as a kind of “glue”, so the sandwich holds together when you pick it up.

You’ll grill the sandwiches in the skillet over medium heat, flipping over halfway, until the bread is golden brown and the cheese is melted.

Finally, pour the warm broth through a fine mesh sieve to remove the herbs, and pour it into two small bowls. Cut the sandwiches into half, put them on a plate with the bowl of dipping broth, and enjoy!

Print Marie dipping a the Chicken French Dip Sandwich Chicken French Dip Sandwich – A Healthier French Dip

Author: Marie Bostwick Yield: 2 servings [image error] Print Recipe [image error] Pin Recipe const share_pin_buttons = document.getElementsByClassName( 'share-pin button' ); if ( share_pin_buttons ) { for ( let share_key = 0; share_key < share_pin_buttons.length; share_key++ ) { share_pin_buttons[share_key].addEventListener( 'click', (e) => { e.stopPropagation(); window.open(e.target.dataset.href,'targetWindow','toolbar=no,location=no,status=no,menubar=no,scrollbars=yes,resizable=yes,width=500,height=500'); return false; } ); } } Ingredients 4 slices sandwich bread (any firm bread – marble rye, sourdough, etc.)2 cup homemade or low sodium chicken stock2 sprigs fresh rosemary4 sprigs fresh thyme1 large clove garlic, peeled and halved – Optional1.5 T olive oil1 medium-large onion, peeled and very thinly sliced6 oz. deli-sliced chicken breast2–4 slices semi-hard white cheese (Swiss, Monterey Jack, or Pepper Jack)2–3 T butter, softenedKosher SaltPepper Cook Mode Prevent your screen from going dark Instructions Make the herbed broth. Place the broth, rosemary, thyme, and garlic (optional) into a small pot or saucepan over medium high heat. Once the broth is boil, lower the heat and allow it to simmer while you’re making the sandwiches.Prepare the onions. Place the olive oil in the skillet over medium heat. Add the onions and stir to coat with olive oil. Season the onions with salt (about ¼ tsp) and a few grinds of pepper. Cook onions, stirring occasionally, for about 10-15 minutes, until they are caramelized and a deep golden brown. Take pan off stove and set aside.Assemble the sandwiches. Spread the softened butter evenly on one side of each of the four slices of bread. Place two slices of bread in a skillet, butter side down. Layer each piece of bread with a slice of cheese, half the chicken, half the caramelized onions, and another piece of cheese. Top each sandwich with another slice of bread, butter side up.Grill the sandwiches in the pan over medium heat, flipping over halfway through cooking, until the bread is golden brown and the cheese is melted. Cut into halvesRemove the broth from the stove. Strain through a fine mesh sieve or colander to remove the herbs and garlic, and pour into small, individual bowls.Place a bowl of broth onto each plate with two sandwich halves. Enjoy! Did you make this recipe?

Tag @mariebostwick on Instagram and hashtag it #fiercelymarie

window.trCommon={"minRating":6,"ajaxurl":"https:\/\/mariebostwick.com\/wp-admin\/admin-ajax.php","ratingNonce":"","postId":19123};window.TastyRecipes = window.TastyRecipes || {};window.TastyRecipes.smoothScroll = {init() {document.addEventListener( 'click', ( e ) => {let anchor = e.target;if ( anchor.tagName !== 'A' ) {anchor = anchor.closest( 'a.tasty-recipes-scrollto' );}if ( ! anchor || ! anchor.classList.contains( 'tasty-recipes-scrollto' ) ) {return;}const elementHref = anchor.getAttribute( 'href' );if ( ! elementHref ) {return;}e.preventDefault();this.goToSelector( elementHref );});},goToSelector( selector ) {const element = document.querySelector( selector );if ( ! element ) {return;}element.scrollIntoView( { behavior: 'smooth' } );}};document.addEventListener('DOMContentLoaded',() => window.TastyRecipes.smoothScroll.init());window.TastyRecipes = window.TastyRecipes || {};window.TastyRecipes.cookMode = {wakeLockApi: false,wakeLock: false,cookModeSelector: '.tasty-recipes-cook-mode',init() {if ("wakeLock" in navigator && "request" in navigator.wakeLock) {this.wakeLockApi = navigator.wakeLock;}const cookModes = document.querySelectorAll(this.cookModeSelector);if (cookModes.length > 0) {for (const cookMode of cookModes) {if (this.wakeLockApi) {cookMode.querySelector('input[type="checkbox"]').addEventListener("change", event => {this.checkboxChange(event.target);}, false);} else {cookMode.style.display = "none";}}}},checkboxChange(checkbox) {if (checkbox.checked) {this.lock();} else {this.unlock();}},setCheckboxesState(state) {const checkboxes = document.querySelectorAll(this.cookModeSelector + ' input[type="checkbox"]');for (const checkbox of checkboxes) {checkbox.checked = state;}},async lock() {try {this.wakeLock = await this.wakeLockApi.request("screen");this.wakeLock.addEventListener("release", () => {this.wakeLock = false;this.setCheckboxesState(false);});this.setCheckboxesState(true);} catch (error) {this.setCheckboxesState(false);}},unlock() {if (this.wakeLock) {this.wakeLock.release();this.wakeLock = false;}this.setCheckboxesState(false);}};(function(callback) {if (document.readyState !== "loading") {callback();} else {document.addEventListener("DOMContentLoaded", callback);}})(() => {window.TastyRecipes.cookMode.init();});window.TastyRecipes = window.TastyRecipes || {};window.TastyRecipes.staticTooltip = {element: null,tooltipElement: null,deleting: false,init( element ) {if ( this.deleting ) {return;}this.element = element;this.buildElements();},destroy() {if ( ! this.tooltipElement || this.deleting ) {return;}this.deleting = true;this.tooltipElement.classList.remove( 'opened' );setTimeout( () => {this.tooltipElement.remove();this.deleting = false;}, 500 );},buildElements() {const tooltipElement = document.createElement( 'div' );tooltipElement.classList.add( 'tasty-recipes-static-tooltip');tooltipElement.setAttribute( 'id', 'tasty-recipes-tooltip' );const currentTooltipElement = document.getElementById( 'tasty-recipes-tooltip' );if ( currentTooltipElement ) {document.body.replaceChild( tooltipElement, currentTooltipElement );} else {document.body.appendChild( tooltipElement );}this.tooltipElement = document.getElementById( 'tasty-recipes-tooltip' );},show() {if ( ! this.tooltipElement ) {return;}const tooltipTop = this.element.getBoundingClientRect().top+ window.scrollY- 10 // 10px offset.- this.tooltipElement.getBoundingClientRect().height;const tooltipLeft = this.element.getBoundingClientRect().left- ( this.tooltipElement.getBoundingClientRect().width / 2 )+ ( this.element.getBoundingClientRect().width / 2 ) - 1;const posLeft = Math.max( 10, tooltipLeft );this.maybeRemoveTail( posLeft !== tooltipLeft );this.tooltipElement.setAttribute( 'style', 'top:' + tooltipTop + 'px;left:' + posLeft + 'px;' );this.tooltipElement.classList.add( 'opened' );},maybeRemoveTail( removeTail ) {if ( removeTail ) {this.tooltipElement.classList.add( 'tr-hide-tail' );} else {this.tooltipElement.classList.remove( 'tr-hide-tail' );}},changeMessage( message ) {if ( ! this.tooltipElement ) {return;}this.tooltipElement.innerHTML = message;}};window.TastyRecipes.ajax = {sendPostRequest( url, data, success, failure ) {const xhr = new XMLHttpRequest();xhr.open( 'POST', url, true );xhr.send( this.preparePostData( data ) );xhr.onreadystatechange = () => {if ( 4 !== xhr.readyState ) {return;}if ( xhr.status === 200 ) {success( JSON.parse( xhr.responseText ) );return;}failure( xhr );};xhr.onerror = () => {failure( xhr );};},preparePostData( data ) {const formData = new FormData();for ( const key in data ) {formData.append( key, data[key] );}return formData;},};window.TastyRecipes.ratings = {defaultRating: 0,currentRatingPercentage: 100,savingRating: false,init( minRating ) {this.minRating = minRating;this.formWatchRating();this.closeTooltipWhenClickOutside();this.addBodyClassBasedOnSelectedRating();this.backwardCompFormRatingPosition();},formWatchRating() {const ratings = document.querySelectorAll('.tasty-recipes-no-ratings-buttons [data-rating]');if ( ratings.length <= 0 ) {return;}for ( const rating of ratings ) {rating.addEventListener( 'click', event => {event.preventDefault();this.defaultRating = event.target.closest( '.checked' ).dataset.rating;this.setCheckedStar( event.target );this.maybeSendRating( this.defaultRating, event.target );this.setRatingInForm( this.defaultRating );} );}},closeTooltipWhenClickOutside() {window.addEventListener( 'click', e => {// Bailout (don't remove the tooltip) when the clicked element is a rating star, or it's the tooltip itself.if ( e.target.closest( '.tasty-recipes-rating' ) || e.target.classList.contains( 'tasty-recipes-static-tooltip' ) ) {return;}window.TastyRecipes.staticTooltip.destroy();} );}, setRatingInForm( rating ) {const ratingInput = document.querySelector( '#respond .tasty-recipes-rating[value="' + rating + '"]' );if ( ! ratingInput ) {return;}ratingInput.click();},addBodyClassBasedOnSelectedRating() {const ratingInputs = document.querySelectorAll( 'input.tasty-recipes-rating' );if ( ! ratingInputs ) {return;}for ( const ratingInput of ratingInputs ) {ratingInput.addEventListener( 'click', currentEvent => {const selectedRating = currentEvent.target.getAttribute( 'value' );this.handleBodyClassByRating( selectedRating );this.toggleCommentTextareaRequired( selectedRating );} );}},handleBodyClassByRating( rating ) {if ( rating < this.minRating ) {document.body.classList.remove( 'tasty-recipes-selected-minimum-rating' );return;}document.body.classList.add( 'tasty-recipes-selected-minimum-rating' );},toggleCommentTextareaRequired( rating ) {const commentTextarea = document.getElementById( 'comment' );if ( ! commentTextarea ) {return;}if ( rating < this.minRating ) {commentTextarea.setAttribute( 'required', '' );return;}commentTextarea.removeAttribute( 'required' );},maybeSendRating( rating, element ) {if ( this.savingRating === rating ) {return;}this.savingRating = rating;window.TastyRecipes.staticTooltip.init( element );const recipeCardElement = element.closest( '.tasty-recipes' );if ( ! recipeCardElement ) {window.TastyRecipes.staticTooltip.destroy();return;}window.TastyRecipes.ajax.sendPostRequest(window.trCommon.ajaxurl,{action: 'tasty_recipes_save_rating',rating,nonce: window.trCommon.ratingNonce,post_id: window.trCommon.postId,recipe_id: recipeCardElement.dataset.trId,},( response ) => {window.TastyRecipes.staticTooltip.changeMessage( response.data.message );window.TastyRecipes.staticTooltip.show();this.updateAverageText( response.data, recipeCardElement );this.maybeFillCommentForm( response.data );// Hide the tooltip after 5 seconds.setTimeout( () => {this.maybeResetTooltip( recipeCardElement, response.data, rating );}, 5000 );},() => {this.resetTooltip( recipeCardElement );});},updateAverageText( data, recipeCardElement ) {if ( ! data.average ) {return;}this.setRatingPercent( data );if ( ! data.count ) {return;}const quickLink = document.querySelector( '.tasty-recipes-rating-link' );if ( quickLink ) {this.setTextInContainer( quickLink, data );this.setPartialStar( quickLink );}const cardStars = recipeCardElement.querySelector( '.tasty-recipes-ratings-buttons' );cardStars.dataset.trDefaultRating = data.average;this.setTextInContainer( recipeCardElement.querySelector( '.tasty-recipes-rating' ), data );},setTextInContainer( container, data ) {if ( ! container ) {return;}if ( data.label ) {const ratingLabelElement = container.querySelector( '.rating-label' );if ( ratingLabelElement ) {ratingLabelElement.innerHTML = data.label;}return;}const averageElement = container.querySelector( '.average' );if ( averageElement ) {averageElement.textContent = data.average;}const countElement = container.querySelector( '.count' );if ( countElement ) {countElement.textContent = data.count;}},setPartialStar( container ) {const highestStar = container.querySelector( '[data-rating="' + Math.ceil( this.defaultRating ) + '"]' );if ( highestStar ) {highestStar.dataset.trClip = this.currentRatingPercentage;}},setRatingPercent( data ) {this.defaultRating = data.average.toFixed( 1 );const parts = data.average.toFixed( 2 ).toString().split( '.' );this.currentRatingPercentage = parts[1] ? parts[1] : 100;if ( this.currentRatingPercentage === '00' ) {this.currentRatingPercentage = 100;}},setCheckedStar( target ) {const cardRatingContainer = target.closest( '.tasty-recipes-ratings-buttons' );const selectedRatingElement = cardRatingContainer.querySelector( '[data-tr-checked]' );if ( selectedRatingElement ) {delete selectedRatingElement.dataset.trChecked;}const thisStar = target.closest( '.tasty-recipes-rating' );thisStar.dataset.trChecked = 1;thisStar.querySelector( '[data-tr-clip]' ).dataset.trClip = 100;},maybeFillCommentForm( data ) {if ( ! data.comment || ! data.comment.content ) {return;}const commentForm = document.querySelector( '#commentform' );if ( ! commentForm ) {return;}const commentBox = commentForm.querySelector( '[name=comment]' );if ( ! commentBox || commentBox.value ) {return;}// Add comment details for editing.commentBox.innerHTML = data.comment.content;if ( data.comment.name ) {commentForm.querySelector( '[name=author]' ).value = data.comment.name;commentForm.querySelector( '[name=email]' ).value = data.comment.email;}},maybeResetTooltip( recipeCardElement, data, rating ) {if ( this.savingRating === rating ) {this.resetTooltip( recipeCardElement, data );}},resetTooltip( recipeCardElement, data ) {window.TastyRecipes.staticTooltip.destroy();this.savingRating = false;// Reset the default rating.const cardRatingContainer = recipeCardElement.querySelector( '.tasty-recipes-ratings-buttons' );if ( cardRatingContainer ) {this.defaultRating = ( data && data.average ) ? data.average.toFixed(1) : cardRatingContainer.dataset.trDefaultRating;cardRatingContainer.dataset.trDefaultRating = this.defaultRating;this.resetSelectedStar( cardRatingContainer, data );}},resetSelectedStar( cardRatingContainer ) {const selectedRatingElement = cardRatingContainer.querySelector( '[data-rating="' + Math.ceil( this.defaultRating ) + '"]' );if ( selectedRatingElement ) {selectedRatingElement.querySelector( '[data-tr-clip]' ).dataset.trClip = this.currentRatingPercentage;selectedRatingElement.parentNode.dataset.trChecked = 1;}const previousSelectedElement= cardRatingContainer.querySelector( '[data-tr-checked]' );if ( previousSelectedElement ) {const currentSelectedRating = previousSelectedElement.querySelector('[data-rating]');if ( currentSelectedRating !== selectedRatingElement ) {delete previousSelectedElement.dataset.trChecked;}}},backwardCompFormRatingPosition() {const ratingsButtons = document.querySelector( '#respond .tasty-recipes-ratings-buttons, #tasty-recipes-comment-rating .tasty-recipes-ratings-buttons' );if ( ! ratingsButtons ) {return;}const ratingsButtonsStyles = window.getComputedStyle(ratingsButtons);if ( ! ratingsButtonsStyles.display.includes( 'flex' ) ) {ratingsButtons.style.direction = 'rtl';}if ( typeof tastyRecipesRating !== 'undefined' ) {// Select the rating that was previously selected in admin.ratingsButtons.querySelector( '.tasty-recipes-rating[value="' + tastyRecipesRating + '"]' ).checked = true;}const ratingSpans = ratingsButtons.querySelectorAll( '.tasty-recipes-rating' );for (const ratingSpan of ratingSpans) {ratingSpan.addEventListener( 'click', event => {if ( ratingSpan === event.target ) {return;}ratingSpan.previousElementSibling.click();} );}}};(function(callback) {if (document.readyState !== "loading") {callback();} else {window.addEventListener( 'load', callback );}})(() => {window.TastyRecipes.ratings.init( window.trCommon ? window.trCommon.minRating : 4 );});
 •  0 comments  •  flag
Share on Twitter
Published on January 13, 2025 08:17

January 6, 2025

It’s Time to Dust Off Your Dreams: Pursuing Dreams at Any Age

 

Though you won’t read it until after the ball has dropped in Times Square, I’m writing this post on December 30th, the cusp of a new year. Traditionally, these are days I reserve for reflecting on goals of the year that has passed and setting out more for the year to come.

It’s also the time of year when I often write a post encouraging you to create goals of your own along with practical tips to help you turn those goals into accomplishments. As you can probably tell, I’m very big on goals.

But today I want to talk about dreams – and pursuing dreams at any age.

Pursuing Dreams at Any Age

Dreams get a bad rap sometimes, especially among people who are big on goals. The reason behind that attitude (not entirely unfounded) is that dreams and wishes untethered to goals and action plans usually go unfulfilled.

Even so, dreams matter. They matter a lot. Because dreams are the first step toward goals fulfilled, talents tapped, opportunities seized.

Almost every worthwhile accomplishment – everything from winning an Olympic medal, to writing a book, to visiting all fifty U.S. states or all 429 national parks, to climbing a mountain, to earning a degree, to singing in a choir, or starting a business, or seeing one of your quilts win a ribbon in a quilt show – began with a dream, a willingness to tap into the things we secretly long for and give them a name.

Children dream a lot, I’ve noticed. Adults far less.

There’s a logic to that, of course. Few people get to pass through adolescence without being pelted by the hard rain of defeat and disappointment, the sad realization that some dreams will never come true.

But there’s an illogic to it as well.

Why Adults Have More Power to Pursue Their Dreams

As adults, we have often have far more ability, resources, and agency when it comes to pursuing dreams at any age than we did when we were children. Not control – defined as the power to bend circumstances and other people to our will –  but agency, which is the ability to make choices and plans, and to take actions that increase their odds of success.

The next time some audacious, long-dimmed dream comes floating to the surface of your consciousness, take a moment to consider that before pushing it back down to the depths. Pause long enough to catalog the resources you have at your disposal that were unavailable to you as a child.

Agency matters for dreamers of dreams, and you probably have more of it than you realize.

Even so, you still might feel hesitant about dusting off your old dreams or dreaming up new ones. There may be all kinds of reasons for that, some more valid than others. But it’s likely that much of your hesitancy is rooted in fear, specifically fear of failure.

I get it. I really do.

From Hidden Manuscript to Published Author

After spending four years of my life writing and re-writing a novel, the fear of failure and the very real likelihood rejection drove me to hide those pages in a drawer for more than a year, trying my best to forget about all the effort, hours, and yes, dreams I have invested in them.

Eventually, I realized that being rejected couldn’t possibly be worse than spending the rest of my life wondering what might have been.

Twenty years later, and just four months from publishing my eighteen novel, The Book Club for Troublesome Women, I’m so glad I shouted down my fears of failure and took a chance on my dreams.

It could all have turned out differently, of course. The odds were long from the get-go, and I received scores of rejections before somebody finally said yes. Had a dice rolled another number, I might never have published even one book, let alone twenty-two. Who can say?

But here’s what I know for certain.

If I’d never found the courage to open that drawer and dust off the dream that wouldn’t leave me alone, the chance of seeing it come true would have been exactly zero. 

As business executive and author Chester Barnard wrote, “To try and fail is at least to learn; to fail to try is to suffer the inestimable loss of what might have been.”

So true.

Even if my dream of becoming a published author hadn’t come to pass, even if that singular “yes” in the vast sea of rejections had never come my way, I would still have known the joy of creating and the satisfaction that accompanies effort. And I would never have had to spend my life wondering what might have been.

Dreams Have No Deadlines: Why It’s Never Too Late to Chase Your Passion

Though we’ve never met in person, I’m pretty sure that a lady named Kim Hale would agree one hundred percent.

After years of rejection and discouragement, Kim Hale left New York. She also left behind her dream of dancing in a Broadway show. But during the pandemic, she started dancing again. At the age of 56, she pulled that dream out of mothballs, moved back to New York, and started auditioning.

Apart from a one-night-only, special appearance in the show Chicago, her dream has yet to be realized. But she hasn’t given up, and she’s learned a lot along the way. (If you’ve a couple of minutes after you finish reading this post, watch this interview with her. It’s very inspiring!).

Kim’s personal mantra, “Dreams have no deadlines,” has a resounding ring of truth for me. Though the voice of fear will try to convince us otherwise, past failure doesn’t eliminate the possibility of future success. Nor does age.

Pursuing dreams at any age really is possible. Even so, our earthly existence passes quickly, and days are too precious to waste in wondering what might have been.

And so, as we begin another trip around the sun, I hope you’ll take some time to set some goals for the year to come. As well as put some time to outlining the concrete steps to help you achieve them.

Before you do that, take a deep breath and open the drawers of your mind. Blow the dust from your archived dreams. This could be the year to bring new energy to your dreams, and to your life.

1 like ·   •  0 comments  •  flag
Share on Twitter
Published on January 06, 2025 07:22

December 30, 2024

Flavored Simple Syrups for Mocktails, Cocktails, and Lattes at Home

The four Flavored Simple Syrups in ramekins

The four Flavored Simple Syrups in ramekins

Making delicious bespoke mocktails, cocktails, or lattes at home that taste just as good as those made professionally is easy with these four recipes for flavored simple syrups – and a real money saver. And though the thought of making simple syrup at home might seem daunting, infusing your favorite flavors into simple syrup is a snap.

Great for the sober curious, dry January adherents, those looking to decrease their alcohol intake, or anyone who wants to step up their mixology game!

Flavored Simple Syrups – The Key to Tasty, Inexpensive Mocktails And Cocktails

Like just about everything else, the price of mocktails and cocktails continues to climb. In our town, most restaurants are charging fifteen to twenty dollars for cocktails. And flavored coffees and lattes aren’t much better, coming in at five to eight dollars. 

After reading so many articles about the health impacts of imbibing, I’ve cut way back on my alcohol consumption. Though I continue to enjoy the ritual of sipping a special drink from an elegant glass, my beverage of choice is often a mocktail. But if you’re ordering from bar, they’re pricey too.

That’s why I started checking out restaurant drink recipes a while back, hoping to recreate some delicious mocktails at home. But most of the time, I’d find that the drink recipes included ingredients I didn’t keep on hand – including flavored simple syrups. And there’s only so many combinations you can get without having these ingredients (such as my Coconut-Lime Mocktails).

But I’ve got good news. Making your own flavored simple syrups for mocktails and cocktails is, well…simple! And I mean really simple, as in three ingredients and you’re set simple.

The better news is this – once you have a variety of flavored simple syrups on hand, you’ll be able to concoct all kinds of delicious, bespoke mocktails, cocktails, or lattes at home.

And the best news is that (assuming you don’t use edible gold leaf as a garnish – yes, that’s an actual thing) your home mixed beverages will cost a fraction of what you’d pay in your local restaurant, bar, or coffee shop.

Gotta love that, right?

But before I share the recipes and methods for making your own flavored simple syrups for mocktails, cocktails, and lattes, let’s discuss one important question.

What Is Simple Syrup Anyway? And Can I Make it at Home?

The ingredients for the Flavored Simple Syrups set out on a counter

Simple syrup is a key ingredient in all kinds of classic cocktails, including Old Fashioneds, Manhattans, Mai Tais, Mint Juleps, French 75s, and many more. It’s also used in many, if not most, mocktail recipes.

What actually goes into simple syrup?

Just two things – sugar and water. No kidding. That’s all it is; sugar and water boiled together so the sugar dissolves completely, making a sweet syrup that blends easily with other liquids.

Plain simple syrup is a great thing to keep in your bar.

However, if you want to up your mixology game so you can make creative, surprising, delicious drinks at home – making some flavored simple syrups is definitely worth doing.

Syrups infused with herbs, citrus, or other ingredients can add an extra layer of flavor to traditional cocktails.

But they really shine in mocktails, bringing a depth and complexity that can make a non-alcoholic drink into a satisfying, grown-up beverage worth sipping and savoring.  If you’re sober curious, cutting back, observing a dry January, or never drink at all, you’re going to love making your own flavored simple syrups.

A Simple Syrup Recipe Base, Methods, and Storage

All manner of fresh herbs, fruits, peels, and spices can be used to make flavored simple syrups. Don’t be afraid to experiment with ingredients and blends.

My (very successful!) experiment resulted in four different flavored simple syrups – basil, rosemary, orange, and coffee.

In each case, the base recipe is the same, one cup of water and one cup of sugar, brought to a low boil over medium heat for 1 to 2 minutes, then cooled and bottled. The difference lies in the extra ingredient type and amounts used for each syrup, plus the method of infusion.

Homemade simple syrup can be stored covered in the refrigerator for 4 to 6 weeks. I store mine in these swing-top bottles I found on Amazon. They’re super cute and the perfect size, and can also be used to store homemade salad dressing or flavored vinegars. 

The Flavored Simple Syrups stored in bottles

Four Recipes for Flavored Simple Syrups for at Home Mocktails and Cocktails

Following are the recipe amounts for each of the syrups I made.

Basil Simple Syrup – 1 cup water, 1 cup granulated sugar, 1 packed cup fresh basil leavesRosemary Simple Syrup – 1 cup water, 1 cup granulated sugar, ¼ cup packed rosemary leavesOrange Simple Syrup – 1 cup water, 1 cup granulated sugar, peel of two large oranges (the orange peel only, not the white pith)Coffee Simple Syrup – 1 cup water, 1 cup granulated sugar, 2 T fresh ground coffee

The cooking method is similar for each.

Bring the water and sugar to a boil in a heavy bottomed pot over medium heat. Reduce heat to simmer. Add the basil, rosemary, orange peel, or ground coffee to the pot and simmer for 1-2 minutes, stirring frequently.

The rosemary infusing and boiling with the simple syrup

Remove the pot from heat and allow the syrup to steep for 30 to 60 minutes. Pour the cooled syrup through a fine strainer to remove herbs, peels, or coffee. (Strain the coffee syrup twice to remove all the grounds. Press the basil leaves against the strainer with the back of the spoon to extract as much syrup as possible.)

Straining out the orange peels

Pour syrup into a covered jar or bottle with a lid. Finished syrup can be store covered in the refrigerator for four to six weeks.

What To Do With Flavored Simple Syrups – A Sample Beginner Mocktail Recipe

Ideas for mocktails and cocktails made with flavored simple syrups are as vast as your imagination. Try making a few recipes of your own and you’ll soon see what I mean.

Since the syrup is sweet, try balancing it by using mixers, juices, tonic, vinegars, or sodas that bring a touch of acidity or bitterness to the party. And look for flavors that complement each other.

For example, if I wanted to make a cocktail with the orange syrup, I might shake it up with some lime juice, and a jigger of coconut-flavored vodka and see what happens. For a mocktail, I might swap ginger beer for the vodka and pour it into a tall glass over ice.

Again, don’t be afraid to experiment!

However, if you’re feeling short on inspiration, a quick internet search for “mocktails with orange simple syrup” will bring up dozens of hits.

Here’s a recipe I came up with to start you off…

The Cherry and Rosemary Cocktaile

Marie’s Rosemary Blush Mocktail2 T rosemary simple syrup5 oz tart cherry juice (pure juice, no sugar added)2 oz Fever Tree Elderflower Tonic

Pour rosemary simple syrup and cherry juice into a cocktail shaker filled with ice. Shake vigorously to combine. Pour mixture into a highball glass (with or without ice), top with tonic and stir. Garnish with rosemary sprig if desired.

Alternative preparation – Pour syrup and cherry juice combination into a tall glass filled with ice. Fill glass to the rim with tonic and stir.

Flavored simple syrups are so easy to make and so delicious to use in all kinds of mocktails and cocktails. Mix up a batch of your own soon and get the new year off to a great start!

Print The four Flavored Simple Syrups in ramekins Infused Simple Syrups

Author: Marie Bostwick Yield: Each recipe makes 8oz flavored simple syrup [image error] Print Recipe [image error] Pin Recipe const share_pin_buttons = document.getElementsByClassName( 'share-pin button' ); if ( share_pin_buttons ) { for ( let share_key = 0; share_key < share_pin_buttons.length; share_key++ ) { share_pin_buttons[share_key].addEventListener( 'click', (e) => { e.stopPropagation(); window.open(e.target.dataset.href,'targetWindow','toolbar=no,location=no,status=no,menubar=no,scrollbars=yes,resizable=yes,width=500,height=500'); return false; } ); } } Ingredients Basil Simple Syrup – 1 cup water, 1 cup granulated sugar, 1 packed cup fresh basil leavesRosemary Simple Syrup – 1 cup water, 1 cup granulated sugar, ¼ cup packed rosemary leavesOrange Simple Syrup – 1 cup water, 1 cup granulated sugar, peel of two large oranges (the orange peel only, not the white pith)Coffee Simple Syrup – 1 cup water, 1 cup granulated sugar, 2 T fresh ground coffee

(Each recipe makes approximately 8 ounces of flavored simple syrup.)

Cook Mode Prevent your screen from going dark Instructions Bring the water and sugar to a boil in a heavy bottomed pot over medium heat. Reduce heat to simmer.Add the basil, rosemary, orange peel, or ground coffee to the pot, depending on the flavor, and simmer for 1-2 minutes, stirring frequently to prevent boiling over.Remove pot from heat. Allow the ingredients to steep for 30 to 60 minutes. Pour the cooled syrup through a fine strainer to remove herbs, peels, or coffee. (Strain the coffee syrup twice to remove all the grounds. Press the basil leaves against the strainer with the back of the spoon to extract as much syrup as possible.)Pour syrup into a covered jar or bottle with a lid. Finished syrup can be store covered in the refrigerator for four to six weeks. Did you make this recipe?

Tag @mariebostwick on Instagram and hashtag it #fiercelymarie

window.trCommon={"minRating":6,"ajaxurl":"https:\/\/mariebostwick.com\/wp-admin\/admin-ajax.php","ratingNonce":"","postId":19049};window.TastyRecipes = window.TastyRecipes || {};window.TastyRecipes.smoothScroll = {init() {document.addEventListener( 'click', ( e ) => {let anchor = e.target;if ( anchor.tagName !== 'A' ) {anchor = anchor.closest( 'a.tasty-recipes-scrollto' );}if ( ! anchor || ! anchor.classList.contains( 'tasty-recipes-scrollto' ) ) {return;}const elementHref = anchor.getAttribute( 'href' );if ( ! elementHref ) {return;}e.preventDefault();this.goToSelector( elementHref );});},goToSelector( selector ) {const element = document.querySelector( selector );if ( ! element ) {return;}element.scrollIntoView( { behavior: 'smooth' } );}};document.addEventListener('DOMContentLoaded',() => window.TastyRecipes.smoothScroll.init());window.TastyRecipes = window.TastyRecipes || {};window.TastyRecipes.cookMode = {wakeLockApi: false,wakeLock: false,cookModeSelector: '.tasty-recipes-cook-mode',init() {if ("wakeLock" in navigator && "request" in navigator.wakeLock) {this.wakeLockApi = navigator.wakeLock;}const cookModes = document.querySelectorAll(this.cookModeSelector);if (cookModes.length > 0) {for (const cookMode of cookModes) {if (this.wakeLockApi) {cookMode.querySelector('input[type="checkbox"]').addEventListener("change", event => {this.checkboxChange(event.target);}, false);} else {cookMode.style.display = "none";}}}},checkboxChange(checkbox) {if (checkbox.checked) {this.lock();} else {this.unlock();}},setCheckboxesState(state) {const checkboxes = document.querySelectorAll(this.cookModeSelector + ' input[type="checkbox"]');for (const checkbox of checkboxes) {checkbox.checked = state;}},async lock() {try {this.wakeLock = await this.wakeLockApi.request("screen");this.wakeLock.addEventListener("release", () => {this.wakeLock = false;this.setCheckboxesState(false);});this.setCheckboxesState(true);} catch (error) {this.setCheckboxesState(false);}},unlock() {if (this.wakeLock) {this.wakeLock.release();this.wakeLock = false;}this.setCheckboxesState(false);}};(function(callback) {if (document.readyState !== "loading") {callback();} else {document.addEventListener("DOMContentLoaded", callback);}})(() => {window.TastyRecipes.cookMode.init();});window.TastyRecipes = window.TastyRecipes || {};window.TastyRecipes.staticTooltip = {element: null,tooltipElement: null,deleting: false,init( element ) {if ( this.deleting ) {return;}this.element = element;this.buildElements();},destroy() {if ( ! this.tooltipElement || this.deleting ) {return;}this.deleting = true;this.tooltipElement.classList.remove( 'opened' );setTimeout( () => {this.tooltipElement.remove();this.deleting = false;}, 500 );},buildElements() {const tooltipElement = document.createElement( 'div' );tooltipElement.classList.add( 'tasty-recipes-static-tooltip');tooltipElement.setAttribute( 'id', 'tasty-recipes-tooltip' );const currentTooltipElement = document.getElementById( 'tasty-recipes-tooltip' );if ( currentTooltipElement ) {document.body.replaceChild( tooltipElement, currentTooltipElement );} else {document.body.appendChild( tooltipElement );}this.tooltipElement = document.getElementById( 'tasty-recipes-tooltip' );},show() {if ( ! this.tooltipElement ) {return;}const tooltipTop = this.element.getBoundingClientRect().top+ window.scrollY- 10 // 10px offset.- this.tooltipElement.getBoundingClientRect().height;const tooltipLeft = this.element.getBoundingClientRect().left- ( this.tooltipElement.getBoundingClientRect().width / 2 )+ ( this.element.getBoundingClientRect().width / 2 ) - 1;const posLeft = Math.max( 10, tooltipLeft );this.maybeRemoveTail( posLeft !== tooltipLeft );this.tooltipElement.setAttribute( 'style', 'top:' + tooltipTop + 'px;left:' + posLeft + 'px;' );this.tooltipElement.classList.add( 'opened' );},maybeRemoveTail( removeTail ) {if ( removeTail ) {this.tooltipElement.classList.add( 'tr-hide-tail' );} else {this.tooltipElement.classList.remove( 'tr-hide-tail' );}},changeMessage( message ) {if ( ! this.tooltipElement ) {return;}this.tooltipElement.innerHTML = message;}};window.TastyRecipes.ajax = {sendPostRequest( url, data, success, failure ) {const xhr = new XMLHttpRequest();xhr.open( 'POST', url, true );xhr.send( this.preparePostData( data ) );xhr.onreadystatechange = () => {if ( 4 !== xhr.readyState ) {return;}if ( xhr.status === 200 ) {success( JSON.parse( xhr.responseText ) );return;}failure( xhr );};xhr.onerror = () => {failure( xhr );};},preparePostData( data ) {const formData = new FormData();for ( const key in data ) {formData.append( key, data[key] );}return formData;},};window.TastyRecipes.ratings = {defaultRating: 0,currentRatingPercentage: 100,savingRating: false,init( minRating ) {this.minRating = minRating;this.formWatchRating();this.closeTooltipWhenClickOutside();this.addBodyClassBasedOnSelectedRating();this.backwardCompFormRatingPosition();},formWatchRating() {const ratings = document.querySelectorAll('.tasty-recipes-no-ratings-buttons [data-rating]');if ( ratings.length <= 0 ) {return;}for ( const rating of ratings ) {rating.addEventListener( 'click', event => {event.preventDefault();this.defaultRating = event.target.closest( '.checked' ).dataset.rating;this.setCheckedStar( event.target );this.maybeSendRating( this.defaultRating, event.target );this.setRatingInForm( this.defaultRating );} );}},closeTooltipWhenClickOutside() {window.addEventListener( 'click', e => {// Bailout (don't remove the tooltip) when the clicked element is a rating star, or it's the tooltip itself.if ( e.target.closest( '.tasty-recipes-rating' ) || e.target.classList.contains( 'tasty-recipes-static-tooltip' ) ) {return;}window.TastyRecipes.staticTooltip.destroy();} );}, setRatingInForm( rating ) {const ratingInput = document.querySelector( '#respond .tasty-recipes-rating[value="' + rating + '"]' );if ( ! ratingInput ) {return;}ratingInput.click();},addBodyClassBasedOnSelectedRating() {const ratingInputs = document.querySelectorAll( 'input.tasty-recipes-rating' );if ( ! ratingInputs ) {return;}for ( const ratingInput of ratingInputs ) {ratingInput.addEventListener( 'click', currentEvent => {const selectedRating = currentEvent.target.getAttribute( 'value' );this.handleBodyClassByRating( selectedRating );this.toggleCommentTextareaRequired( selectedRating );} );}},handleBodyClassByRating( rating ) {if ( rating < this.minRating ) {document.body.classList.remove( 'tasty-recipes-selected-minimum-rating' );return;}document.body.classList.add( 'tasty-recipes-selected-minimum-rating' );},toggleCommentTextareaRequired( rating ) {const commentTextarea = document.getElementById( 'comment' );if ( ! commentTextarea ) {return;}if ( rating < this.minRating ) {commentTextarea.setAttribute( 'required', '' );return;}commentTextarea.removeAttribute( 'required' );},maybeSendRating( rating, element ) {if ( this.savingRating === rating ) {return;}this.savingRating = rating;window.TastyRecipes.staticTooltip.init( element );const recipeCardElement = element.closest( '.tasty-recipes' );if ( ! recipeCardElement ) {window.TastyRecipes.staticTooltip.destroy();return;}window.TastyRecipes.ajax.sendPostRequest(window.trCommon.ajaxurl,{action: 'tasty_recipes_save_rating',rating,nonce: window.trCommon.ratingNonce,post_id: window.trCommon.postId,recipe_id: recipeCardElement.dataset.trId,},( response ) => {window.TastyRecipes.staticTooltip.changeMessage( response.data.message );window.TastyRecipes.staticTooltip.show();this.updateAverageText( response.data, recipeCardElement );this.maybeFillCommentForm( response.data );// Hide the tooltip after 5 seconds.setTimeout( () => {this.maybeResetTooltip( recipeCardElement, response.data, rating );}, 5000 );},() => {this.resetTooltip( recipeCardElement );});},updateAverageText( data, recipeCardElement ) {if ( ! data.average ) {return;}this.setRatingPercent( data );if ( ! data.count ) {return;}const quickLink = document.querySelector( '.tasty-recipes-rating-link' );if ( quickLink ) {this.setTextInContainer( quickLink, data );this.setPartialStar( quickLink );}const cardStars = recipeCardElement.querySelector( '.tasty-recipes-ratings-buttons' );cardStars.dataset.trDefaultRating = data.average;this.setTextInContainer( recipeCardElement.querySelector( '.tasty-recipes-rating' ), data );},setTextInContainer( container, data ) {if ( ! container ) {return;}if ( data.label ) {const ratingLabelElement = container.querySelector( '.rating-label' );if ( ratingLabelElement ) {ratingLabelElement.innerHTML = data.label;}return;}const averageElement = container.querySelector( '.average' );if ( averageElement ) {averageElement.textContent = data.average;}const countElement = container.querySelector( '.count' );if ( countElement ) {countElement.textContent = data.count;}},setPartialStar( container ) {const highestStar = container.querySelector( '[data-rating="' + Math.ceil( this.defaultRating ) + '"]' );if ( highestStar ) {highestStar.dataset.trClip = this.currentRatingPercentage;}},setRatingPercent( data ) {this.defaultRating = data.average.toFixed( 1 );const parts = data.average.toFixed( 2 ).toString().split( '.' );this.currentRatingPercentage = parts[1] ? parts[1] : 100;if ( this.currentRatingPercentage === '00' ) {this.currentRatingPercentage = 100;}},setCheckedStar( target ) {const cardRatingContainer = target.closest( '.tasty-recipes-ratings-buttons' );const selectedRatingElement = cardRatingContainer.querySelector( '[data-tr-checked]' );if ( selectedRatingElement ) {delete selectedRatingElement.dataset.trChecked;}const thisStar = target.closest( '.tasty-recipes-rating' );thisStar.dataset.trChecked = 1;thisStar.querySelector( '[data-tr-clip]' ).dataset.trClip = 100;},maybeFillCommentForm( data ) {if ( ! data.comment || ! data.comment.content ) {return;}const commentForm = document.querySelector( '#commentform' );if ( ! commentForm ) {return;}const commentBox = commentForm.querySelector( '[name=comment]' );if ( ! commentBox || commentBox.value ) {return;}// Add comment details for editing.commentBox.innerHTML = data.comment.content;if ( data.comment.name ) {commentForm.querySelector( '[name=author]' ).value = data.comment.name;commentForm.querySelector( '[name=email]' ).value = data.comment.email;}},maybeResetTooltip( recipeCardElement, data, rating ) {if ( this.savingRating === rating ) {this.resetTooltip( recipeCardElement, data );}},resetTooltip( recipeCardElement, data ) {window.TastyRecipes.staticTooltip.destroy();this.savingRating = false;// Reset the default rating.const cardRatingContainer = recipeCardElement.querySelector( '.tasty-recipes-ratings-buttons' );if ( cardRatingContainer ) {this.defaultRating = ( data && data.average ) ? data.average.toFixed(1) : cardRatingContainer.dataset.trDefaultRating;cardRatingContainer.dataset.trDefaultRating = this.defaultRating;this.resetSelectedStar( cardRatingContainer, data );}},resetSelectedStar( cardRatingContainer ) {const selectedRatingElement = cardRatingContainer.querySelector( '[data-rating="' + Math.ceil( this.defaultRating ) + '"]' );if ( selectedRatingElement ) {selectedRatingElement.querySelector( '[data-tr-clip]' ).dataset.trClip = this.currentRatingPercentage;selectedRatingElement.parentNode.dataset.trChecked = 1;}const previousSelectedElement= cardRatingContainer.querySelector( '[data-tr-checked]' );if ( previousSelectedElement ) {const currentSelectedRating = previousSelectedElement.querySelector('[data-rating]');if ( currentSelectedRating !== selectedRatingElement ) {delete previousSelectedElement.dataset.trChecked;}}},backwardCompFormRatingPosition() {const ratingsButtons = document.querySelector( '#respond .tasty-recipes-ratings-buttons, #tasty-recipes-comment-rating .tasty-recipes-ratings-buttons' );if ( ! ratingsButtons ) {return;}const ratingsButtonsStyles = window.getComputedStyle(ratingsButtons);if ( ! ratingsButtonsStyles.display.includes( 'flex' ) ) {ratingsButtons.style.direction = 'rtl';}if ( typeof tastyRecipesRating !== 'undefined' ) {// Select the rating that was previously selected in admin.ratingsButtons.querySelector( '.tasty-recipes-rating[value="' + tastyRecipesRating + '"]' ).checked = true;}const ratingSpans = ratingsButtons.querySelectorAll( '.tasty-recipes-rating' );for (const ratingSpan of ratingSpans) {ratingSpan.addEventListener( 'click', event => {if ( ratingSpan === event.target ) {return;}ratingSpan.previousElementSibling.click();} );}}};(function(callback) {if (document.readyState !== "loading") {callback();} else {window.addEventListener( 'load', callback );}})(() => {window.TastyRecipes.ratings.init( window.trCommon ? window.trCommon.minRating : 4 );});
 •  0 comments  •  flag
Share on Twitter
Published on December 30, 2024 10:32

December 22, 2024

Holiday Appetizers: Stuffed Dates with Cheese and Herbs

The platter of finished Stuffed Dates with Cheese and Herbs

Marie holding up one of the Stuffed Dates with Cheese and Herbs

Sweet, chewy dates stuffed with a mix of tangy chevre and fresh herbs, and topped with crunchy pecans. My Stuffed Dates with Cheese and Herbs is crazy-easy, no-cook holiday appetizer! So simple! SO good!

Holiday Appetizers for Busy Cooks – Stuffed Dates With Cheese And Herbs 

Sometimes, even people who love to cook are too busy to do it.

That was me in early December, the day before my quilt guild Christmas potluck. Between the bustle of gift procurement, holiday decorating, and making plans to host our own Christmas party, the annual guild potluck kind of slipped off my radar.

When an alert from my online calendar reminded me about the party, I only had hours to come up with a potluck dish. There was literally no time to cook.

Could I have just picked up something from the store? Sure.

But my Cranberry Mustard Meatballs were a big hit last year, and I wanted to bring something that would be just as popular. Also, with our own holiday gathering just around the corner, I thought this would be a good opportunity to audition a dish for my party as well.

I dug through the pantry and fridge, pulled out some ingredients, and got to work. Twenty minutes later, I was ready to go with twenty-four lovely appetizers.

My personal taste test said they were utterly delicious and the empty platter that came home from the potluck confirmed it. Even though I tripled the recipe for our home Christmas party, the result was the same – empty platters and loads of compliments.

And without so much as turning on the stove or preheating the oven! 

The platter of finished Stuffed Dates with Cheese and Herbs

What I Love About Stuffed Dates with Cheese And Herbs

Topping the list of what I love – make that adore – about these appetizers is the taste. Divine is not too strong a word to use here, because they really are heavenly.

Tangy goat cheese with lots of fresh, bright flavored herbs and a subtle bite of minced shallot are a perfect flavor foil for the sweet and chewy medjool dates. Topping each one with a whole pecan adds a touch of savory and a wonderful crunch to each delicious bite. They’re just SO good!

The fact that they’re so easy to make is icing on the cake, and actually kind of amazing.

There is literally no cooking here! A little chopping, mixing, and stuffing is all it takes. In just minutes, you’ll have a plate of appetizers that any caterer would be proud to serve.

How often does that happen? (Answer: hardly ever.)

And because they’re so easy to make, this is a recipe you can hand off to a willing helper who might not have a lot of experience in the kitchen. (Looking at you, Mr. Chairman.) That can be a lifesaver when you’re hosting a big party.

But if it’s all on you, you can make the stuffed dates the day before and store them covered in the fridge until guests arrive.

Especially during the holidays, dishes that can be made ahead rank very high on my list of favorites.

Stuffed Dates with Cheese And Herbs – Ingredients

The ingredients set out on a cutting board

Apart from salt and pepper, you only need 6 ingredients to make Stuffed Dates with Cheese and Herbs. But it’s important that you choose the right six ingredients. Let’s dive in a little deeper….

Medjool Dates

Medjools are the best dates for this recipe. Many stores carry medjool dates these days. You can also find large packages of them at Costco. Medjools a little more expensive than some date varieties, but definitely worth it.

Because not only do they taste terrific, they’re extra-large. That’s important because you’re going to stuff a date, you need one that’s big enough to hold a good amount of filling.

It’s also important that your dates are fresh. Make sure the dates you buy are soft but chewy, and not dried out. Oh, and be sure you buy pitted dates. It’s a real time saver.

Cheese

Goat cheese, also known as chevre, is the best cheese for this recipe. It’s soft, creamy, and slightly tangy. However, the flavor is mild so it doesn’t overpower the herbs.

Herbs 

Thyme and rosemary are my herbs of choice for this recipe. I really think it’s the perfect combination. But you could also try other fresh herbs, such as oregano, parsley, cilantro, chives, or finely minced basil.

Three piles of minced herbs and onion

Shallots

Shallots are a milder tasting member of the onion family. They bring in just a little bit of bite, and add another level of flavor to this recipe. In a pinch, you could substitute minced green onion, but I’d use the part of the stalk that’s pale green rather than pure white. Stay away from regular onions for this recipe, the flavor would be too strong.

Pecans

Each appetizer is topped with a pecan, and it’s surprising how much they bring to the party. That little added crunch is a savory and satisfying little surprise. Whole pecans are the way to go here, not chopped. Make sure the pecans are fresh and crunchy. You could substitute walnuts, but I really prefer the pecans. 

Making Stuffed Dates with Cheese and Herbs

Because these yummy appetizers are so crazy simple to make, this will be a very short section.

Basically, you’ll put the cheese, minced herbs, minced shallots, and seasonings together in a bowl. Then, you’ll mash everything together with the fork to make sure the ingredients are evenly distributed.

The goat cheese and herbs in a bowl

Next, you’ll place a teaspoon or two of the cheese filling inside the pocket where the pit used to be. A good ratio of filling to date is important, so don’t be afraid mound a little extra on top. Finally, top each stuffed date with a whole pecan, pushing the nut partway into the filling.

One of the medjool dates stuffed with the mixture

That’s all there is to it!

These Stuffed Dates with Cheese and Herbs are one of those rare, unicorn recipes that can be ready in a flash and still taste incredible. Give them a try this week, your guests will thank you!

Print The platter of finished Stuffed Dates with Cheese and Herbs Holiday Appetizers: Stuffed Dates with Cheese and Herbs

Author: Marie Bostwick Yield: Makes approximately 20 appetizers [image error] Print Recipe [image error] Pin Recipe const share_pin_buttons = document.getElementsByClassName( 'share-pin button' ); if ( share_pin_buttons ) { for ( let share_key = 0; share_key < share_pin_buttons.length; share_key++ ) { share_pin_buttons[share_key].addEventListener( 'click', (e) => { e.stopPropagation(); window.open(e.target.dataset.href,'targetWindow','toolbar=no,location=no,status=no,menubar=no,scrollbars=yes,resizable=yes,width=500,height=500'); return false; } ); } } Ingredients 4 oz plain goat cheese (also known as chevre)2 tsp fine minced fresh rosemary2 tsp fine minced fresh thyme2 tsp minced shallot½ tsp fresh ground pepper½ tsp kosher salt9 oz Medjool dates, pitted (about 20–24 dates)20–24 whole pecans Cook Mode Prevent your screen from going dark Instructions Place the plain goat cheese, minced rosemary, thyme, shallots, salt and pepper in a small bowl. Use the back of a fork to mash the herbs, shallots, and spices into the cheese, mixing until the ingredients are evenly distributed throughout.Gently pinch the dates to open the little center pocket left when the pit was removed. Spoon a couple of teaspoons of cheese mixture into the pocket, mounding the cheese if necessary.Top each stuffed date with a pecan, pushing the nut partway into the filling.Place stuffed dates on a platter and serve immediately, or cover with plastic wrap and store in refrigerator until ready to enjoy. For best flavor and appearance, serve within 24 hours. Did you make this recipe?

Tag @mariebostwick on Instagram and hashtag it #fiercelymarie

window.trCommon={"minRating":6,"ajaxurl":"https:\/\/mariebostwick.com\/wp-admin\/admin-ajax.php","ratingNonce":"","postId":19037};window.TastyRecipes = window.TastyRecipes || {};window.TastyRecipes.smoothScroll = {init() {document.addEventListener( 'click', ( e ) => {let anchor = e.target;if ( anchor.tagName !== 'A' ) {anchor = anchor.closest( 'a.tasty-recipes-scrollto' );}if ( ! anchor || ! anchor.classList.contains( 'tasty-recipes-scrollto' ) ) {return;}const elementHref = anchor.getAttribute( 'href' );if ( ! elementHref ) {return;}e.preventDefault();this.goToSelector( elementHref );});},goToSelector( selector ) {const element = document.querySelector( selector );if ( ! element ) {return;}element.scrollIntoView( { behavior: 'smooth' } );}};document.addEventListener('DOMContentLoaded',() => window.TastyRecipes.smoothScroll.init());window.TastyRecipes = window.TastyRecipes || {};window.TastyRecipes.cookMode = {wakeLockApi: false,wakeLock: false,cookModeSelector: '.tasty-recipes-cook-mode',init() {if ("wakeLock" in navigator && "request" in navigator.wakeLock) {this.wakeLockApi = navigator.wakeLock;}const cookModes = document.querySelectorAll(this.cookModeSelector);if (cookModes.length > 0) {for (const cookMode of cookModes) {if (this.wakeLockApi) {cookMode.querySelector('input[type="checkbox"]').addEventListener("change", event => {this.checkboxChange(event.target);}, false);} else {cookMode.style.display = "none";}}}},checkboxChange(checkbox) {if (checkbox.checked) {this.lock();} else {this.unlock();}},setCheckboxesState(state) {const checkboxes = document.querySelectorAll(this.cookModeSelector + ' input[type="checkbox"]');for (const checkbox of checkboxes) {checkbox.checked = state;}},async lock() {try {this.wakeLock = await this.wakeLockApi.request("screen");this.wakeLock.addEventListener("release", () => {this.wakeLock = false;this.setCheckboxesState(false);});this.setCheckboxesState(true);} catch (error) {this.setCheckboxesState(false);}},unlock() {if (this.wakeLock) {this.wakeLock.release();this.wakeLock = false;}this.setCheckboxesState(false);}};(function(callback) {if (document.readyState !== "loading") {callback();} else {document.addEventListener("DOMContentLoaded", callback);}})(() => {window.TastyRecipes.cookMode.init();});window.TastyRecipes = window.TastyRecipes || {};window.TastyRecipes.staticTooltip = {element: null,tooltipElement: null,deleting: false,init( element ) {if ( this.deleting ) {return;}this.element = element;this.buildElements();},destroy() {if ( ! this.tooltipElement || this.deleting ) {return;}this.deleting = true;this.tooltipElement.classList.remove( 'opened' );setTimeout( () => {this.tooltipElement.remove();this.deleting = false;}, 500 );},buildElements() {const tooltipElement = document.createElement( 'div' );tooltipElement.classList.add( 'tasty-recipes-static-tooltip');tooltipElement.setAttribute( 'id', 'tasty-recipes-tooltip' );const currentTooltipElement = document.getElementById( 'tasty-recipes-tooltip' );if ( currentTooltipElement ) {document.body.replaceChild( tooltipElement, currentTooltipElement );} else {document.body.appendChild( tooltipElement );}this.tooltipElement = document.getElementById( 'tasty-recipes-tooltip' );},show() {if ( ! this.tooltipElement ) {return;}const tooltipTop = this.element.getBoundingClientRect().top+ window.scrollY- 10 // 10px offset.- this.tooltipElement.getBoundingClientRect().height;const tooltipLeft = this.element.getBoundingClientRect().left- ( this.tooltipElement.getBoundingClientRect().width / 2 )+ ( this.element.getBoundingClientRect().width / 2 ) - 1;const posLeft = Math.max( 10, tooltipLeft );this.maybeRemoveTail( posLeft !== tooltipLeft );this.tooltipElement.setAttribute( 'style', 'top:' + tooltipTop + 'px;left:' + posLeft + 'px;' );this.tooltipElement.classList.add( 'opened' );},maybeRemoveTail( removeTail ) {if ( removeTail ) {this.tooltipElement.classList.add( 'tr-hide-tail' );} else {this.tooltipElement.classList.remove( 'tr-hide-tail' );}},changeMessage( message ) {if ( ! this.tooltipElement ) {return;}this.tooltipElement.innerHTML = message;}};window.TastyRecipes.ajax = {sendPostRequest( url, data, success, failure ) {const xhr = new XMLHttpRequest();xhr.open( 'POST', url, true );xhr.send( this.preparePostData( data ) );xhr.onreadystatechange = () => {if ( 4 !== xhr.readyState ) {return;}if ( xhr.status === 200 ) {success( JSON.parse( xhr.responseText ) );return;}failure( xhr );};xhr.onerror = () => {failure( xhr );};},preparePostData( data ) {const formData = new FormData();for ( const key in data ) {formData.append( key, data[key] );}return formData;},};window.TastyRecipes.ratings = {defaultRating: 0,currentRatingPercentage: 100,savingRating: false,init( minRating ) {this.minRating = minRating;this.formWatchRating();this.closeTooltipWhenClickOutside();this.addBodyClassBasedOnSelectedRating();this.backwardCompFormRatingPosition();},formWatchRating() {const ratings = document.querySelectorAll('.tasty-recipes-no-ratings-buttons [data-rating]');if ( ratings.length <= 0 ) {return;}for ( const rating of ratings ) {rating.addEventListener( 'click', event => {event.preventDefault();this.defaultRating = event.target.closest( '.checked' ).dataset.rating;this.setCheckedStar( event.target );this.maybeSendRating( this.defaultRating, event.target );this.setRatingInForm( this.defaultRating );} );}},closeTooltipWhenClickOutside() {window.addEventListener( 'click', e => {// Bailout (don't remove the tooltip) when the clicked element is a rating star, or it's the tooltip itself.if ( e.target.closest( '.tasty-recipes-rating' ) || e.target.classList.contains( 'tasty-recipes-static-tooltip' ) ) {return;}window.TastyRecipes.staticTooltip.destroy();} );}, setRatingInForm( rating ) {const ratingInput = document.querySelector( '#respond .tasty-recipes-rating[value="' + rating + '"]' );if ( ! ratingInput ) {return;}ratingInput.click();},addBodyClassBasedOnSelectedRating() {const ratingInputs = document.querySelectorAll( 'input.tasty-recipes-rating' );if ( ! ratingInputs ) {return;}for ( const ratingInput of ratingInputs ) {ratingInput.addEventListener( 'click', currentEvent => {const selectedRating = currentEvent.target.getAttribute( 'value' );this.handleBodyClassByRating( selectedRating );this.toggleCommentTextareaRequired( selectedRating );} );}},handleBodyClassByRating( rating ) {if ( rating < this.minRating ) {document.body.classList.remove( 'tasty-recipes-selected-minimum-rating' );return;}document.body.classList.add( 'tasty-recipes-selected-minimum-rating' );},toggleCommentTextareaRequired( rating ) {const commentTextarea = document.getElementById( 'comment' );if ( ! commentTextarea ) {return;}if ( rating < this.minRating ) {commentTextarea.setAttribute( 'required', '' );return;}commentTextarea.removeAttribute( 'required' );},maybeSendRating( rating, element ) {if ( this.savingRating === rating ) {return;}this.savingRating = rating;window.TastyRecipes.staticTooltip.init( element );const recipeCardElement = element.closest( '.tasty-recipes' );if ( ! recipeCardElement ) {window.TastyRecipes.staticTooltip.destroy();return;}window.TastyRecipes.ajax.sendPostRequest(window.trCommon.ajaxurl,{action: 'tasty_recipes_save_rating',rating,nonce: window.trCommon.ratingNonce,post_id: window.trCommon.postId,recipe_id: recipeCardElement.dataset.trId,},( response ) => {window.TastyRecipes.staticTooltip.changeMessage( response.data.message );window.TastyRecipes.staticTooltip.show();this.updateAverageText( response.data, recipeCardElement );this.maybeFillCommentForm( response.data );// Hide the tooltip after 5 seconds.setTimeout( () => {this.maybeResetTooltip( recipeCardElement, response.data, rating );}, 5000 );},() => {this.resetTooltip( recipeCardElement );});},updateAverageText( data, recipeCardElement ) {if ( ! data.average ) {return;}this.setRatingPercent( data );if ( ! data.count ) {return;}const quickLink = document.querySelector( '.tasty-recipes-rating-link' );if ( quickLink ) {this.setTextInContainer( quickLink, data );this.setPartialStar( quickLink );}const cardStars = recipeCardElement.querySelector( '.tasty-recipes-ratings-buttons' );cardStars.dataset.trDefaultRating = data.average;this.setTextInContainer( recipeCardElement.querySelector( '.tasty-recipes-rating' ), data );},setTextInContainer( container, data ) {if ( ! container ) {return;}if ( data.label ) {const ratingLabelElement = container.querySelector( '.rating-label' );if ( ratingLabelElement ) {ratingLabelElement.innerHTML = data.label;}return;}const averageElement = container.querySelector( '.average' );if ( averageElement ) {averageElement.textContent = data.average;}const countElement = container.querySelector( '.count' );if ( countElement ) {countElement.textContent = data.count;}},setPartialStar( container ) {const highestStar = container.querySelector( '[data-rating="' + Math.ceil( this.defaultRating ) + '"]' );if ( highestStar ) {highestStar.dataset.trClip = this.currentRatingPercentage;}},setRatingPercent( data ) {this.defaultRating = data.average.toFixed( 1 );const parts = data.average.toFixed( 2 ).toString().split( '.' );this.currentRatingPercentage = parts[1] ? parts[1] : 100;if ( this.currentRatingPercentage === '00' ) {this.currentRatingPercentage = 100;}},setCheckedStar( target ) {const cardRatingContainer = target.closest( '.tasty-recipes-ratings-buttons' );const selectedRatingElement = cardRatingContainer.querySelector( '[data-tr-checked]' );if ( selectedRatingElement ) {delete selectedRatingElement.dataset.trChecked;}const thisStar = target.closest( '.tasty-recipes-rating' );thisStar.dataset.trChecked = 1;thisStar.querySelector( '[data-tr-clip]' ).dataset.trClip = 100;},maybeFillCommentForm( data ) {if ( ! data.comment || ! data.comment.content ) {return;}const commentForm = document.querySelector( '#commentform' );if ( ! commentForm ) {return;}const commentBox = commentForm.querySelector( '[name=comment]' );if ( ! commentBox || commentBox.value ) {return;}// Add comment details for editing.commentBox.innerHTML = data.comment.content;if ( data.comment.name ) {commentForm.querySelector( '[name=author]' ).value = data.comment.name;commentForm.querySelector( '[name=email]' ).value = data.comment.email;}},maybeResetTooltip( recipeCardElement, data, rating ) {if ( this.savingRating === rating ) {this.resetTooltip( recipeCardElement, data );}},resetTooltip( recipeCardElement, data ) {window.TastyRecipes.staticTooltip.destroy();this.savingRating = false;// Reset the default rating.const cardRatingContainer = recipeCardElement.querySelector( '.tasty-recipes-ratings-buttons' );if ( cardRatingContainer ) {this.defaultRating = ( data && data.average ) ? data.average.toFixed(1) : cardRatingContainer.dataset.trDefaultRating;cardRatingContainer.dataset.trDefaultRating = this.defaultRating;this.resetSelectedStar( cardRatingContainer, data );}},resetSelectedStar( cardRatingContainer ) {const selectedRatingElement = cardRatingContainer.querySelector( '[data-rating="' + Math.ceil( this.defaultRating ) + '"]' );if ( selectedRatingElement ) {selectedRatingElement.querySelector( '[data-tr-clip]' ).dataset.trClip = this.currentRatingPercentage;selectedRatingElement.parentNode.dataset.trChecked = 1;}const previousSelectedElement= cardRatingContainer.querySelector( '[data-tr-checked]' );if ( previousSelectedElement ) {const currentSelectedRating = previousSelectedElement.querySelector('[data-rating]');if ( currentSelectedRating !== selectedRatingElement ) {delete previousSelectedElement.dataset.trChecked;}}},backwardCompFormRatingPosition() {const ratingsButtons = document.querySelector( '#respond .tasty-recipes-ratings-buttons, #tasty-recipes-comment-rating .tasty-recipes-ratings-buttons' );if ( ! ratingsButtons ) {return;}const ratingsButtonsStyles = window.getComputedStyle(ratingsButtons);if ( ! ratingsButtonsStyles.display.includes( 'flex' ) ) {ratingsButtons.style.direction = 'rtl';}if ( typeof tastyRecipesRating !== 'undefined' ) {// Select the rating that was previously selected in admin.ratingsButtons.querySelector( '.tasty-recipes-rating[value="' + tastyRecipesRating + '"]' ).checked = true;}const ratingSpans = ratingsButtons.querySelectorAll( '.tasty-recipes-rating' );for (const ratingSpan of ratingSpans) {ratingSpan.addEventListener( 'click', event => {if ( ratingSpan === event.target ) {return;}ratingSpan.previousElementSibling.click();} );}}};(function(callback) {if (document.readyState !== "loading") {callback();} else {window.addEventListener( 'load', callback );}})(() => {window.TastyRecipes.ratings.init( window.trCommon ? window.trCommon.minRating : 4 );});

 

 •  0 comments  •  flag
Share on Twitter
Published on December 22, 2024 17:09

December 16, 2024

Chocolate Peppermint Crunch Ribbon Cookies

The finished Chocolate Peppermint Crunch Ribbon Cookies stacked on a plate

The finished Chocolate Peppermint Crunch Ribbon Cookies stacked on a plate

Featuring a favorite holiday flavor combo, these pretty Chocolate Peppermint Crunch Ribbon cookies will be the hit of your next party or cookie exchange. Fun, festive, fancy and SO good!

A Flavor Marriage Made in Heaven – Chocolate Peppermint Crunch Ribbon Cookies

As far as I’m concerned, chocolate is to sweet treats as black is to wardrobes – it goes great with just about everything.

However, of all the flavors that chocolate pairs well with, the combination of chocolate and peppermint tops my list. So, it was a natural choice when I set out to create a new holiday cookie for my upcoming neighborhood Christmas party.

Though they require a little more effort than my usual cookie recipes, it was totally worth it. The end result was all I’d hoped for and more.

The finisehd Chocolate Peppermint Crunch Ribbon Cookies

Two buttery sugar cookie doughs, one flavored with loads of rich chocolate, the other with sweet, bright peppermint and baked-in bits of candy for crunch. We’re talking cookie heaven!

The only thing that could possibly make this cookie any better would be if it looked as special as it tastes. But guess what? It does!

The story of how these pretty ribbon cookies came to be is really pretty funny. But before we get to that, let’s talk about whats, hows, and tips for baking these delightful and delicious little cookies.

What You’ll Need to Make Chocolate Peppermint Crunch Ribbon Cookies

The ingredients for the Chocolate Peppermint Crunch Ribbon Cookies

Salted butterSugarEggsFlourBaking PowderCocoa Powder (you can use either dutched or undutched cocoa, my favorite brand is Ghiradelli)Vanilla extractPeppermint ExtractPeppermint Crunch (you can either buy ready-made or break up peppermints or candy canes to make your own)Red Food Coloring

This recipe makes a LOT of cookies. Since they’ll store in the freezer for up to three months (just put them in a container with an airtight lid) that was fine with me. If there are extras after my party, I’ll just pull them out a few at a time to enjoy with an afternoon cup of tea.

But if that feels like too much for you, you can always divide the recipe in half.

Chocolate Peppermint Crunch Ribbon Cookies – Making the Doughs

You’ll make two separate doughs for these cookies. I know that might sound like a lot of work, but it’s really not because each begins with a nearly identical, super simple butter and cookie dough base.

Note that I said, “nearly identical”.

Because the cocoa powder adds a little extra dryness to the dough, I used a little less flour for the chocolate cookies. So be sure to pay attention to amounts when you’re reading the recipe. That little bit of flour makes a difference.

Marie creaming together the butter and sugar

As for many cookie recipes, you’ll start by creaming together butter and sugar, and adding the eggs and flavor extracts. (Please note, the butter should be slightly but not totally soft. Leave it out on the counter for 30 minutes to an hour before you put it in the mixer.)

Then you’ll either add cocoa powder for the chocolate dough or peppermint crunch and food coloring for the peppermint dough. Easy, right?

Let’s take a moment to discuss food coloring.

During my first attempt at making these cookies, I used only 5 drops of color for the peppermint dough. The result was pale, even a little sad. Getting the pretty pink color that I wanted took four times that much.

If the idea of adding that much food coloring bothers you, just leave it out. The cookies won’t be quite as pretty, but will still taste terrific.

Divide each batch of dough into four equal balls. I like to use my food scale for this (each ball ended up being a bit over 8 ounces) but you can just eyeball it if you prefer.

Press each ball into a 4 x 5-inch rectangle, then cover it with plastic wrap and chill in the refrigerator for about an hour. You’ll end up with eight dough rectangles in total, four chocolate, and four peppermint crunch.

Got it? Good! Now, let’s roll!

Chocolate Peppermint Crunch Ribbon Cookies – Rolling the Dough

As I said above, the story of how these ribbon cookies came to be is pretty funny, a tale of snatching victory from the jaws of defeat. You see, my original plan was to make chocolate peppermint crunch pinwheel cookies.

Now, I’m not saying that rolling out neat and tidy pinwheel cookies with two different doughs is impossible. I’m sure there’s some brilliant baker out there who can manage it. But I am not one of them.

I tried it three different times. My third attempt, while not a complete and utter disaster, still resulted in some really ugly and uneven pinwheels.

The

Yes, they still tasted great. But it’s Christmas, dang it! And I wanted to serve my guests delicious, fancy little cookies. Was too much to ask?

About the time I was starting to think it might be, I remembered the Christmas ribbon candy of my childhood and decided to go another direction.

Though the rolling portion of this recipe is a little fiddly, it’s way easier (and more successful!) than trying to roll two-dough pinwheels. And once you’ve rolled the dough out, you’ll be able to cut dozens of pretty, identically sized cookies in no time. So it really doesn’t end up taking any more time than making cutouts.

The adorable, uniform ribbon cookies

SO much prettier than the hideous pinwheels, yes? And SO much simpler! However, I do have a couple of tips to achieve these lovely results, starting with baking parchment.

Rolling the dough on baking parchment makes the process so much easier. The dough will be less likely to stick to parchment than to a countertop or plastic baking mat. Also, it makes it easier to stack the doughs when the time comes.

Take two peppermint and two chocolate doughs out of the refrigerator.

Start with one of the peppermint doughs, sprinkling a little flour on the parchment and rolling the dough into a 6×8 rectangle. Do the same with a chocolate dough but this time, sprinkle cocoa powder on the parchment instead of flour. 

Pick up the rolled chocolate dough (leaving it on the parchment) and flip it over on top of the rolled-out peppermint dough, matching the sides as much as possible. Roll out the remaining two doughs, then place them on the stack. 

When all four doughs are stacked, press the sides of the stack to even them up. Next, roll the stacked doughs again, adding about a half an inch to each side of the rectangle. (This will ensure that the layers fuse together during baking.) The stacked, rolled dough should stand about one inch high.

Cutting and Baking Your Beautiful Ribbon Cookies

 

Trim a little dough off each side of the stack, so the edges are neat and even. Again, you’re aiming for a 6×8 rectangle.

Make half-inch slices along the long edge of the dough (15-16 slices total). Then make 1.5-inch slices along the short edge of the dough (3 slices total).

A pizza cutter works really well for this, but a sharp knife is fine too. I used my “Quilter’s Magic Wand” ruler, which is exactly a half inch wide, to cut the long edge slices. It worked great, but a regular ruler will also do the trick.

You should end up with about 60 cookies from that first batch of dough. Repeat the rolling, stacking, and cutting with the remaining dough, to get 120 cookies total. They won’t spread a lot, so you can place them fairly close together while baking.

Again, this recipe is very generous! But you can always cut it in half, and they will freeze beautifully for up to 3 months. Just take a few out at a time as needed, and leave them on the counter to thaw for a few minutes before serving.

These pretty and petite Chocolate Peppermint Crunch Ribbon Cookies will be a big hit at your next party, family gathering, or holiday cookie exchange. Give them a try soon!

Print The finished Chocolate Peppermint Crunch Ribbon Cookies stacked on a plate Chocolate Peppermint Crunch Ribbon Cookies

Author: Marie Bostwick Yield: Makes approximately 120 cookies [image error] Print Recipe [image error] Pin Recipe const share_pin_buttons = document.getElementsByClassName( 'share-pin button' ); if ( share_pin_buttons ) { for ( let share_key = 0; share_key < share_pin_buttons.length; share_key++ ) { share_pin_buttons[share_key].addEventListener( 'click', (e) => { e.stopPropagation(); window.open(e.target.dataset.href,'targetWindow','toolbar=no,location=no,status=no,menubar=no,scrollbars=yes,resizable=yes,width=500,height=500'); return false; } ); } } Ingredients

For the peppermint dough

2 tsp baking powder2 ¾ cups flour1 cup salted butter, slightly softened1 cup white granulated sugar1 large egg1 tsp peppermint extract20 drops of red food coloring (Pretty! But optional)¼ cup peppermint crunch (store-bought or can use crushed candy canes)

For the chocolate dough

2 tsp baking powder2 1/2 cups flour½ cup cocoa powder1 cup salted butter, slightly softened1 cup white granulated sugar1 large egg1 tsp vanilla extract Cook Mode Prevent your screen from going dark Instructions Make the peppermint dough – Cream butter and sugar together in mixer until smooth. Mix in egg and peppermint extract. Add food coloring. In a separate bowl, whisk together flour, baking powder, and peppermint crunch. With the mixer running on low speed, add flour mixture to the mixing bowl, about a cup at a time, creating a smooth and somewhat stiff dough. Separate the dough into four equal parts, press each one into a rectangle about 4×6 inch. Wrap dough with plastic wrap and place in refrigerator.Wash out mixing bowl and paddles before making second dough.Make the chocolate dough – Cream butter and sugar together in mixer until smooth. Mix in egg and vanilla extract. In a separate bowl, whisk together flour, cocoa powder, and baking powder. With the mixer running on low speed, add flour/cocoa mixture to the mixing bowl, about a cup at a time, creating a smooth and somewhat stiff dough. Separate the dough into four equal parts, press each one into a rectangle about 4×6 inch. Wrap dough with plastic wrap and place in refrigerator.Let the wrapped rectangles of dough chill for one hour, or up to overnight. When ready to bake, preheat the oven to 350 degrees and line a cookie sheet with baking parchment.Remove 2 peppermint and 2 chocolate dough portions from the refrigerator. Roll each portion into a 6×8 rectangle. (Roll doughs out on baking parchment to prevent sticking, sprinkle parchment with flour for peppermint dough, and with cocoa for chocolate dough.)Stack the four, rolled dough rectangles on top of each other as neatly as possible, alternating flavors. Roll the stacked doughs out another half inch or so on each side, pressing the doughs together. (The stack measure should measure about 1 inch in height.)Trim the sides to create clean, neat edges. Make half inch slices along the long edge of the dough — 15 slices total). Make 1.5 inch slices along the short edge of the dough — 3 slices total.Roll out the remaining dough, repeating steps 5-7, creating approximately 120 cookies total.Working in batches, place unbaked cookie slices onto prepared baking sheet, leaving about half an inch between. Bake in preheated oven for 13-15 minutes. Remove from oven and allow to cool on rack.Extra cookies can be store in the freezer in a covered, airtight container, for a up to 3 months. Did you make this recipe?

Tag @mariebostwick on Instagram and hashtag it #fiercelymarie

window.trCommon={"minRating":6,"ajaxurl":"https:\/\/mariebostwick.com\/wp-admin\/admin-ajax.php","ratingNonce":"","postId":19013};window.TastyRecipes = window.TastyRecipes || {};window.TastyRecipes.smoothScroll = {init() {document.addEventListener( 'click', ( e ) => {let anchor = e.target;if ( anchor.tagName !== 'A' ) {anchor = anchor.closest( 'a.tasty-recipes-scrollto' );}if ( ! anchor || ! anchor.classList.contains( 'tasty-recipes-scrollto' ) ) {return;}const elementHref = anchor.getAttribute( 'href' );if ( ! elementHref ) {return;}e.preventDefault();this.goToSelector( elementHref );});},goToSelector( selector ) {const element = document.querySelector( selector );if ( ! element ) {return;}element.scrollIntoView( { behavior: 'smooth' } );}};document.addEventListener('DOMContentLoaded',() => window.TastyRecipes.smoothScroll.init());window.TastyRecipes = window.TastyRecipes || {};window.TastyRecipes.cookMode = {wakeLockApi: false,wakeLock: false,cookModeSelector: '.tasty-recipes-cook-mode',init() {if ("wakeLock" in navigator && "request" in navigator.wakeLock) {this.wakeLockApi = navigator.wakeLock;}const cookModes = document.querySelectorAll(this.cookModeSelector);if (cookModes.length > 0) {for (const cookMode of cookModes) {if (this.wakeLockApi) {cookMode.querySelector('input[type="checkbox"]').addEventListener("change", event => {this.checkboxChange(event.target);}, false);} else {cookMode.style.display = "none";}}}},checkboxChange(checkbox) {if (checkbox.checked) {this.lock();} else {this.unlock();}},setCheckboxesState(state) {const checkboxes = document.querySelectorAll(this.cookModeSelector + ' input[type="checkbox"]');for (const checkbox of checkboxes) {checkbox.checked = state;}},async lock() {try {this.wakeLock = await this.wakeLockApi.request("screen");this.wakeLock.addEventListener("release", () => {this.wakeLock = false;this.setCheckboxesState(false);});this.setCheckboxesState(true);} catch (error) {this.setCheckboxesState(false);}},unlock() {if (this.wakeLock) {this.wakeLock.release();this.wakeLock = false;}this.setCheckboxesState(false);}};(function(callback) {if (document.readyState !== "loading") {callback();} else {document.addEventListener("DOMContentLoaded", callback);}})(() => {window.TastyRecipes.cookMode.init();});window.TastyRecipes = window.TastyRecipes || {};window.TastyRecipes.staticTooltip = {element: null,tooltipElement: null,deleting: false,init( element ) {if ( this.deleting ) {return;}this.element = element;this.buildElements();},destroy() {if ( ! this.tooltipElement || this.deleting ) {return;}this.deleting = true;this.tooltipElement.classList.remove( 'opened' );setTimeout( () => {this.tooltipElement.remove();this.deleting = false;}, 500 );},buildElements() {const tooltipElement = document.createElement( 'div' );tooltipElement.classList.add( 'tasty-recipes-static-tooltip');tooltipElement.setAttribute( 'id', 'tasty-recipes-tooltip' );const currentTooltipElement = document.getElementById( 'tasty-recipes-tooltip' );if ( currentTooltipElement ) {document.body.replaceChild( tooltipElement, currentTooltipElement );} else {document.body.appendChild( tooltipElement );}this.tooltipElement = document.getElementById( 'tasty-recipes-tooltip' );},show() {if ( ! this.tooltipElement ) {return;}const tooltipTop = this.element.getBoundingClientRect().top+ window.scrollY- 10 // 10px offset.- this.tooltipElement.getBoundingClientRect().height;const tooltipLeft = this.element.getBoundingClientRect().left- ( this.tooltipElement.getBoundingClientRect().width / 2 )+ ( this.element.getBoundingClientRect().width / 2 ) - 1;const posLeft = Math.max( 10, tooltipLeft );this.maybeRemoveTail( posLeft !== tooltipLeft );this.tooltipElement.setAttribute( 'style', 'top:' + tooltipTop + 'px;left:' + posLeft + 'px;' );this.tooltipElement.classList.add( 'opened' );},maybeRemoveTail( removeTail ) {if ( removeTail ) {this.tooltipElement.classList.add( 'tr-hide-tail' );} else {this.tooltipElement.classList.remove( 'tr-hide-tail' );}},changeMessage( message ) {if ( ! this.tooltipElement ) {return;}this.tooltipElement.innerHTML = message;}};window.TastyRecipes.ajax = {sendPostRequest( url, data, success, failure ) {const xhr = new XMLHttpRequest();xhr.open( 'POST', url, true );xhr.send( this.preparePostData( data ) );xhr.onreadystatechange = () => {if ( 4 !== xhr.readyState ) {return;}if ( xhr.status === 200 ) {success( JSON.parse( xhr.responseText ) );return;}failure( xhr );};xhr.onerror = () => {failure( xhr );};},preparePostData( data ) {const formData = new FormData();for ( const key in data ) {formData.append( key, data[key] );}return formData;},};window.TastyRecipes.ratings = {defaultRating: 0,currentRatingPercentage: 100,savingRating: false,init( minRating ) {this.minRating = minRating;this.formWatchRating();this.closeTooltipWhenClickOutside();this.addBodyClassBasedOnSelectedRating();this.backwardCompFormRatingPosition();},formWatchRating() {const ratings = document.querySelectorAll('.tasty-recipes-no-ratings-buttons [data-rating]');if ( ratings.length <= 0 ) {return;}for ( const rating of ratings ) {rating.addEventListener( 'click', event => {event.preventDefault();this.defaultRating = event.target.closest( '.checked' ).dataset.rating;this.setCheckedStar( event.target );this.maybeSendRating( this.defaultRating, event.target );this.setRatingInForm( this.defaultRating );} );}},closeTooltipWhenClickOutside() {window.addEventListener( 'click', e => {// Bailout (don't remove the tooltip) when the clicked element is a rating star, or it's the tooltip itself.if ( e.target.closest( '.tasty-recipes-rating' ) || e.target.classList.contains( 'tasty-recipes-static-tooltip' ) ) {return;}window.TastyRecipes.staticTooltip.destroy();} );}, setRatingInForm( rating ) {const ratingInput = document.querySelector( '#respond .tasty-recipes-rating[value="' + rating + '"]' );if ( ! ratingInput ) {return;}ratingInput.click();},addBodyClassBasedOnSelectedRating() {const ratingInputs = document.querySelectorAll( 'input.tasty-recipes-rating' );if ( ! ratingInputs ) {return;}for ( const ratingInput of ratingInputs ) {ratingInput.addEventListener( 'click', currentEvent => {const selectedRating = currentEvent.target.getAttribute( 'value' );this.handleBodyClassByRating( selectedRating );this.toggleCommentTextareaRequired( selectedRating );} );}},handleBodyClassByRating( rating ) {if ( rating < this.minRating ) {document.body.classList.remove( 'tasty-recipes-selected-minimum-rating' );return;}document.body.classList.add( 'tasty-recipes-selected-minimum-rating' );},toggleCommentTextareaRequired( rating ) {const commentTextarea = document.getElementById( 'comment' );if ( ! commentTextarea ) {return;}if ( rating < this.minRating ) {commentTextarea.setAttribute( 'required', '' );return;}commentTextarea.removeAttribute( 'required' );},maybeSendRating( rating, element ) {if ( this.savingRating === rating ) {return;}this.savingRating = rating;window.TastyRecipes.staticTooltip.init( element );const recipeCardElement = element.closest( '.tasty-recipes' );if ( ! recipeCardElement ) {window.TastyRecipes.staticTooltip.destroy();return;}window.TastyRecipes.ajax.sendPostRequest(window.trCommon.ajaxurl,{action: 'tasty_recipes_save_rating',rating,nonce: window.trCommon.ratingNonce,post_id: window.trCommon.postId,recipe_id: recipeCardElement.dataset.trId,},( response ) => {window.TastyRecipes.staticTooltip.changeMessage( response.data.message );window.TastyRecipes.staticTooltip.show();this.updateAverageText( response.data, recipeCardElement );this.maybeFillCommentForm( response.data );// Hide the tooltip after 5 seconds.setTimeout( () => {this.maybeResetTooltip( recipeCardElement, response.data, rating );}, 5000 );},() => {this.resetTooltip( recipeCardElement );});},updateAverageText( data, recipeCardElement ) {if ( ! data.average ) {return;}this.setRatingPercent( data );if ( ! data.count ) {return;}const quickLink = document.querySelector( '.tasty-recipes-rating-link' );if ( quickLink ) {this.setTextInContainer( quickLink, data );this.setPartialStar( quickLink );}const cardStars = recipeCardElement.querySelector( '.tasty-recipes-ratings-buttons' );cardStars.dataset.trDefaultRating = data.average;this.setTextInContainer( recipeCardElement.querySelector( '.tasty-recipes-rating' ), data );},setTextInContainer( container, data ) {if ( ! container ) {return;}if ( data.label ) {const ratingLabelElement = container.querySelector( '.rating-label' );if ( ratingLabelElement ) {ratingLabelElement.innerHTML = data.label;}return;}const averageElement = container.querySelector( '.average' );if ( averageElement ) {averageElement.textContent = data.average;}const countElement = container.querySelector( '.count' );if ( countElement ) {countElement.textContent = data.count;}},setPartialStar( container ) {const highestStar = container.querySelector( '[data-rating="' + Math.ceil( this.defaultRating ) + '"]' );if ( highestStar ) {highestStar.dataset.trClip = this.currentRatingPercentage;}},setRatingPercent( data ) {this.defaultRating = data.average.toFixed( 1 );const parts = data.average.toFixed( 2 ).toString().split( '.' );this.currentRatingPercentage = parts[1] ? parts[1] : 100;if ( this.currentRatingPercentage === '00' ) {this.currentRatingPercentage = 100;}},setCheckedStar( target ) {const cardRatingContainer = target.closest( '.tasty-recipes-ratings-buttons' );const selectedRatingElement = cardRatingContainer.querySelector( '[data-tr-checked]' );if ( selectedRatingElement ) {delete selectedRatingElement.dataset.trChecked;}const thisStar = target.closest( '.tasty-recipes-rating' );thisStar.dataset.trChecked = 1;thisStar.querySelector( '[data-tr-clip]' ).dataset.trClip = 100;},maybeFillCommentForm( data ) {if ( ! data.comment || ! data.comment.content ) {return;}const commentForm = document.querySelector( '#commentform' );if ( ! commentForm ) {return;}const commentBox = commentForm.querySelector( '[name=comment]' );if ( ! commentBox || commentBox.value ) {return;}// Add comment details for editing.commentBox.innerHTML = data.comment.content;if ( data.comment.name ) {commentForm.querySelector( '[name=author]' ).value = data.comment.name;commentForm.querySelector( '[name=email]' ).value = data.comment.email;}},maybeResetTooltip( recipeCardElement, data, rating ) {if ( this.savingRating === rating ) {this.resetTooltip( recipeCardElement, data );}},resetTooltip( recipeCardElement, data ) {window.TastyRecipes.staticTooltip.destroy();this.savingRating = false;// Reset the default rating.const cardRatingContainer = recipeCardElement.querySelector( '.tasty-recipes-ratings-buttons' );if ( cardRatingContainer ) {this.defaultRating = ( data && data.average ) ? data.average.toFixed(1) : cardRatingContainer.dataset.trDefaultRating;cardRatingContainer.dataset.trDefaultRating = this.defaultRating;this.resetSelectedStar( cardRatingContainer, data );}},resetSelectedStar( cardRatingContainer ) {const selectedRatingElement = cardRatingContainer.querySelector( '[data-rating="' + Math.ceil( this.defaultRating ) + '"]' );if ( selectedRatingElement ) {selectedRatingElement.querySelector( '[data-tr-clip]' ).dataset.trClip = this.currentRatingPercentage;selectedRatingElement.parentNode.dataset.trChecked = 1;}const previousSelectedElement= cardRatingContainer.querySelector( '[data-tr-checked]' );if ( previousSelectedElement ) {const currentSelectedRating = previousSelectedElement.querySelector('[data-rating]');if ( currentSelectedRating !== selectedRatingElement ) {delete previousSelectedElement.dataset.trChecked;}}},backwardCompFormRatingPosition() {const ratingsButtons = document.querySelector( '#respond .tasty-recipes-ratings-buttons, #tasty-recipes-comment-rating .tasty-recipes-ratings-buttons' );if ( ! ratingsButtons ) {return;}const ratingsButtonsStyles = window.getComputedStyle(ratingsButtons);if ( ! ratingsButtonsStyles.display.includes( 'flex' ) ) {ratingsButtons.style.direction = 'rtl';}if ( typeof tastyRecipesRating !== 'undefined' ) {// Select the rating that was previously selected in admin.ratingsButtons.querySelector( '.tasty-recipes-rating[value="' + tastyRecipesRating + '"]' ).checked = true;}const ratingSpans = ratingsButtons.querySelectorAll( '.tasty-recipes-rating' );for (const ratingSpan of ratingSpans) {ratingSpan.addEventListener( 'click', event => {if ( ratingSpan === event.target ) {return;}ratingSpan.previousElementSibling.click();} );}}};(function(callback) {if (document.readyState !== "loading") {callback();} else {window.addEventListener( 'load', callback );}})(() => {window.TastyRecipes.ratings.init( window.trCommon ? window.trCommon.minRating : 4 );});
 •  0 comments  •  flag
Share on Twitter
Published on December 16, 2024 06:27

December 9, 2024

DIY Fabric Gift Bags for Christmas – from Fabric Scraps!

The finished DIY Fabric Gift Bags for Christmas in front of a Christmas tree

These easy, fun-to-sew, super cute DIY Fabric Gift Bags add an extra special touch to holiday gifts. Use year after year to save money, paper, and bother. A great way to use up scrap fabric!

DIY Fabric Gift Bags – A Tutorial from A Talented Friend

If you’ve been following my blog posts for any length of time, you know I almost never hand the reins off to anybody else. Ninety-nine-plus percent of the blog posts you’ll find here are written by yours truly.

But once in a very great while, I ask a friend with special knowledge, skills, or insights to write a guest blog that I know you’ll enjoy. This is one of those times.

One of the things I love about my job is that I get to meet so many interesting, creative people like Ellyn Zinsmeister. We met when I was on tour in Texas many years ago, bonded over books, quilts, and our mutual weird sense of humor, and stayed in touch.

Ellyn is a wonderfully creative and inspiring art quilter, who shares her talents with quilt guilds through her lectures, and with the world as a whole through her blog – Ellyn’s Place. If you love quilts as much as I do, you definitely need to check it out!

Quilters obviously love making quilts. But stitching quicker, stash-busting projects – especially if the end result is something we’ll actually use – can also be fun. And oh-so satisfying!

Today’s tutorial for DIY Fabric Gift Bags ticks off all the boxes. I’m so grateful to Ellyn for showing us how to make these darling gift bags. They’re not only as cute as can be, but they can also be used year after year. And if you’re looking for other handmade ways to fill these DIY Fabric Gift Bags? Check out my series on handmade gifts!

Scroll down and let Ellyn Zinmeister show you how easy it is to make these sweet fabric gift bags for yourself! 

What You’ll Need to Make DIY Holiday Gift Bags

Hi everybody! Ellyn here, popping in with a fun tutorial for a fabric-sewn gift bag to contain your most important holiday gifts. This cute little bag is 6” wide, 7” tall and 3” deep. It’s the perfect size to hold a special ornament, a couple of pairs of socks, or all kinds of small to medium-sized gifts.

What your finished DIY Fabric Gift Bags should look like

Here’s what you’ll need to sew one gift bag:

Outside bag: Fabric 9”x20”

(If your print is directional – see mine in the photo below – cut 2 pieces, 9”x10 1/2”. Use a half-inch seam to sew the bottom edges together, so the print is right side up on front and back.)

Lining: contrasting fabric 9”x20”

2 straps: fabric 2 pieces 9”x3”

Lightweight quilt batting: 10”x21” for the bag, 2 pieces 3/4”x9 for straps

The cut out fabric and batting for the DIY Fabric Gift Bags

You’ll also need a sewing machine, thread, scissors, ruler, and other basic sewing notions. A walking foot is desirable for stitching your quilt batting to the fabric, but not absolutely necessary.

How To Make Your DIY Fabric BagSewing the Bag Body and Lining

Layer the batting on the wrong side of your outside bag piece and quilt the batting to the fabric. No need to go crazy with the quilting (unless you just want to) a few simple lines of quilting or cross-hatching will do. If you have one, a walking foot can be very helpful for this step.

Trim the quilted piece to 9”x20”. Fold the quilted piece in half with the fold at the bottom of the bag. Cut a rectangle from each corner, 1 1/4” up from the bottom, and 1 1/2” in from the side edge. Do the same with your lining piece.

The corners cut off of the main fabric pieces

Fold the quilted piece in half with the right sides together. Sew the side seams with a 1/4” seam. (Don’t sew the corner cutouts, just the side seams.)

Repeat with your lining piece, leaving a 3” gap in your stitching on one side seam. This will be used for turning your bag right side out in the end.

Pull out the unstitched corners of the outer bag body, pinching the opposite sides together and centering the fabric on the side seam (see photo below). Stitch across the raw edges of the fabric, creating boxed corners. Repeat with the lining fabric.

The batting attached to the main fabric pieces

Set the bag body and lining aside while you make the straps.

Sewing and Attaching the Straps

Fold each strap piece in half lengthwise and press, creating a folded center line.

Press each long edge in toward the folded center line and press.

The pressed and folded fabric straps

Insert a batting strip under one side of each strap, enclosing the entire piece inside one of the folds. Edge stitch the open edge closed. Add another row of edge stitching along the folded edge. 

Lay the top of your bag flat and pin strap piece on the front and the back.

The edges of your strap should be at the 3” and 5 1/2” mark (see photo below). Make sure your straps are not twisted! Baste the straps to the top of the bag.

The straps pinned to the main portion of the DIY Fabric Gift Bags

With the lining inside out and the bag body right side out, slide the bag inside the lining. Pin or clip around the top edge, matching side seams. The loop part of your straps will be tucked down between the two layers.

Stitch around the top of the bag using a 1/2” seam.

Turn your bag right side out through the gap in the lining side. Stitch the gap closed and tuck the lining inside the bag. Press the top of your bag.

Edgestitch around the top of the bag leaving the strap loops free.

Look at that! You have a beautiful gift bag for your holiday gift. Woo-hoo!

The finished DIY Fabric Gift Bags for Christmas in front of a Christmas tree

I even made a second bag piecing stripes into my outside piece. You can use up all of your holiday scraps this way!

Ready to Go! Your DIY Fabric Giftbag 

If you decide to make a gift bag, I hope you’ll share your finished projects with me. You can find me on Instagram as @ellynz. You can also visit my blog at www.ellynsplace.blogspot.com.

Thanks to Marie for inviting me to share with you today. I hope your holidays are filled with joy!

 •  0 comments  •  flag
Share on Twitter
Published on December 09, 2024 06:31