{"id":119985,"date":"2025-03-20T09:15:16","date_gmt":"2025-03-20T10:15:16","guid":{"rendered":"http:\/\/bestratefinders.com\/blog\/?p=119985"},"modified":"2025-03-24T12:09:56","modified_gmt":"2025-03-24T12:09:56","slug":"mediterranean-egg-bites-gluten-free-and-dairy-free","status":"publish","type":"post","link":"https:\/\/bestratefinders.com\/blog\/everything-else\/mediterranean-egg-bites-gluten-free-and-dairy-free\/","title":{"rendered":"Mediterranean egg bites (gluten-free and dairy-free)"},"content":{"rendered":"<p><em>Today I&#8217;m sharing a dairy-free and gluten-free recipe for Mediterranean egg bites. Try this as a high-protein meal prep option!<\/em><\/p>\n<p>Hey hey! How\u2019s the week going? I hope you\u2019re having a great one so far! It\u2019s been busy as usual &#8211; but I\u2019m looking forward to some weekend fun with the crew. \ud83d\ude42<\/p>\n<p><a href=\"https:\/\/fitnessista.com\/mediterranean-egg-bites-gluten-free-and-dairy-free\/medterranean-egg-bites\/\" rel=\"attachment wp-att-156820 follow noopener noreferrer\" data-wpel-link=\"internal\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-156820 size-large\" title=\"Mediterranean egg bites\" src=\"http:\/\/bestratefinders.com\/blog\/wp-content\/uploads\/2022\/04\/medterranean-egg-bites-1024x683-1.jpg\" data-fslightbox=\"gallery1\"><\/a><\/p>\n<p>For today\u2019s post, I\u2019m so excited to share a recipe that we\u2019ve all been enjoying lately: Mediterranean egg bites. I made a batch as part of meal prep and they made amazing quick <a href=\"https:\/\/fitnessista.com\/category\/breakfast-recipes\/\" target=\"_blank\" rel=\"noopener follow noreferrer\" data-wpel-link=\"internal\">breakfast<\/a> and <a href=\"https:\/\/fitnessista.com\/category\/lunch-recipes\/\" target=\"_blank\" rel=\"noopener follow noreferrer\" data-wpel-link=\"internal\">lunchtime<\/a> staples. (I also love them in a Siete almond flour tortilla!) In addition, they freeze beautifully and the kids love them, too.<\/p>\n<p><a href=\"https:\/\/fitnessista.com\/mediterranean-egg-bites-gluten-free-and-dairy-free\/egg-bites-recipe-2\/\" rel=\"attachment wp-att-156818 follow noopener noreferrer\" data-wpel-link=\"internal\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-156818 size-large\" title=\"healthy breakfast recipe\" src=\"http:\/\/bestratefinders.com\/blog\/wp-content\/uploads\/2025\/03\/egg-bites-recipe-2-683x1024-1.jpg\" data-fslightbox=\"gallery1\"><\/a><\/p>\n<p>(I would be happy to say that Maisey didn\u2019t try any of these, but she might have stolen one or four from the countertop.)<\/p>\n<p>When I have a savory and protein-packed breakfast, I feel more satisfied throughout the morning and don\u2019t feel like I crave sweets or sugar as much throughout the day. In fact, this is a great meal idea for <a href=\"https:\/\/fitnessista.com\/how-to-improve-metabolic-flexibility\/\" target=\"_blank\" rel=\"noopener follow noreferrer\" data-wpel-link=\"internal\">metabolic flexibility.<\/a> And you could just enjoy the egg bites first before heading into fruit or oatmeal as a full breakfast.<\/p>\n<p><a href=\"https:\/\/fitnessista.com\/mediterranean-egg-bites-gluten-free-and-dairy-free\/mediterranean-egg-bites\/\" rel=\"attachment wp-att-156819 follow noopener noreferrer\" data-wpel-link=\"internal\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-156819 size-large\" title=\"egg bites gluten-free and dairy-free\" src=\"http:\/\/bestratefinders.com\/blog\/wp-content\/uploads\/2025\/03\/mediterranean-egg-bites-683x1024-1.jpg\" data-fslightbox=\"gallery1\"><\/a><\/p>\n<h2 style=\"text-align: center;\">\u00a0Mediterranean Egg Bites -Gluten-Free and Dairy-Free<\/h2>\n<h3>Ingredients:<\/h3>\n<p>&#8211; 3 cloves of minced garlic<\/p>\n<p>&#8211; 1\/2 sweet onion, chopped<\/p>\n<p>&#8211; 2 handfuls of fresh spinach<\/p>\n<p>&#8211; 6 whole eggs<\/p>\n<p>&#8211; 1\/4 cup almond milk<\/p>\n<p>&#8211; 1\/4 cup gluten-free all-purpose baking flour<\/p>\n<p>&#8211; 1\/2 teaspoon baking powder<\/p>\n<p>&#8211; 1\/2 teaspoon garlic powder<\/p>\n<p>&#8211; 1\/3 cup sun-dried tomatoes, chopped<\/p>\n<p>&#8211; 1\/3 cup kalamata olives<\/p>\n<p>&#8211; 1\/3 cup grated vegan parmesan (I LOVE Violife)<\/p>\n<p>&#8211; Avocado oil for greasing the muffin tins<\/p>\n<h3>Instructions:<\/h3>\n<h5>Step 1:<\/h5>\n<p>Preheat the oven to 350 and then grease a 12-standard muffin tin with avocado oil.<\/p>\n<h5>Step 2:<\/h5>\n<p>In a large bowl, whisk the eggs and then gently stir in the remaining ingredients.<\/p>\n<h5>Step 3:<\/h5>\n<p>Evenly distribute the mix into the 12 muffin spots in the pan. Bake for 20 minutes or until golden brown and set.<\/p>\n<h5>Step 4:<\/h5>\n<p>Cool completely before serving, otherwise they get stuck in the muffin tin.<\/p>\n<h3 style=\"text-align: center;\">Tips for Freezing Egg Muffins<\/h3>\n<p>&#8211; Make sure to let them cool completely before freezing. Once they reach room temperature, gently remove them from the muffin tin and place into a resealable Ziploc bag before freezing.<\/p>\n<p>&#8211; To reheat, just pop them onto a glass plate and then microwave for about 20 seconds.<\/p>\n<h3 style=\"text-align: center;\">How to Customize Egg Bites<\/h3>\n<p>&#8211; This recipe is super flexible and so easy to customize depending on your family\u2019s preferences.<\/p>\n<p>&#8211; Then feel free to add in basil, mushrooms, broccoli, bell peppers, or anything you like! Just make sure that you have 2\/3 cup add-in ingredients &#8211; otherwise, the egg-to-add-in ratio will be off.<\/p>\n<p>&#8211; If you don\u2019t have parmesan and want to use another cheese, try adding in 1\/3 cup feta. I didn\u2019t use the Violife feta in this recipe before it tends to get a little watery when it bakes.<\/p>\n<p><strong><span style=\"text-decoration: underline;\">Another tip:<\/span><\/strong><\/p>\n<p>You CAN use muffin tin liners but I find that with egg bites, it tends to make them a little soggy. The best method I\u2019ve tried is to use a greased muffin tin and let them cool before serving.<\/p>\n<p>So here\u2019s the full recipe if you\u2019d like to give them a whirl!<\/p>\n<p><svg aria-hidden=\"true\" style=\"position: absolute;width: 0;height: 0;overflow: hidden\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\">\n<defs>\n<symbol viewbox=\"9 9 46 42\" id=\"wpt-star-full\">\n\t<path d=\"m46.3 52-14.4-9.5-14.4 9.4L22 35.3 8.7 24.5l17.1-.9 6.2-16 6 16 17.2 1-13.4 10.7z\" \/>\n<\/symbol>\n<\/defs>\n<\/svg><br \/>\n<a class=\"button tasty-recipes-print-button tasty-recipes-no-print tasty-recipes-print-above-card\" href=\"https:\/\/fitnessista.com\/mediterranean-egg-bites-gluten-free-and-dairy-free\/print\/156822\/\" data-wpel-link=\"internal\" rel=\"follow noopener noreferrer\">Print<\/a><span class=\"tasty-recipes-jump-target\" id=\"tasty-recipes-156822-jump-target\" style=\"display:block;padding-top:2px;margin-top:-2px;\"><\/span><\/p>\n<div id=\"tasty-recipes-156822\" data-tr-id=\"156822\" class=\"tasty-recipes tasty-recipes-156822 tasty-recipes-display tasty-recipes-has-image\" data-tasty-recipes-customization=\"primary-color.background-color secondary-color.border-color\">\n<h2 class=\"tasty-recipes-title\" data-tasty-recipes-customization=\"h2-color.color h2-transform.text-transform\">Mediterranean Egg Bites (gluten-free and dairy-free)<\/h2>\n<div class=\"tasty-recipes-image-button-container\">\n<div class=\"tasty-recipes-image\">\n\t\t\t<img loading=\"lazy\" decoding=\"async\" width=\"300\" height=\"300\" src=\"http:\/\/bestratefinders.com\/blog\/wp-content\/uploads\/2025\/03\/medterranean-egg-bites-300x300-1.jpg\" class=\"attachment-thumbnail size-thumbnail\" alt=\"Mediterranean egg bites (gluten-free and dairy-free)\" data-pin-nopin=\"true\" \/>\t\t<\/div>\n<div class=\"tasty-recipes-buttons\">\n<div class=\"tasty-recipes-button-wrap\">\n<p><a class=\"button tasty-recipes-print-button tasty-recipes-no-print\" href=\"https:\/\/fitnessista.com\/mediterranean-egg-bites-gluten-free-and-dairy-free\/print\/156822\/\" target=\"_blank\" data-tasty-recipes-customization=\"\" data-wpel-link=\"internal\" rel=\"follow noopener noreferrer\"><br \/>\n\t\t\t<img decoding=\"async\" class=\"svg-print\" data-pin-nopin=\"true\" src=\"https:\/\/fitnessista.com\/wp-content\/plugins\/tasty-recipes\/templates\/buttons\/images\/icon-print.png\" \/><br \/>\n\t\tPrint Recipe<\/a>\n\t\t<\/div>\n<\/p><\/div>\n<\/div>\n<div class=\"tasty-recipes-rating\" data-tasty-recipes-customization=\"body-color.color\">\n<p><svg aria-hidden=\"true\" style=\"position: absolute;width: 0;height: 0;overflow: hidden\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\">\n<defs>\n<symbol viewbox=\"9 9 46 42\" id=\"wpt-star-full\">\n\t<path d=\"m46.3 52-14.4-9.5-14.4 9.4L22 35.3 8.7 24.5l17.1-.9 6.2-16 6 16 17.2 1-13.4 10.7z\" \/>\n<\/symbol>\n<\/defs>\n<\/svg><br \/>\n<span class=\"tasty-recipes-ratings-buttons tasty-recipes-no-ratings-buttons\" data-tr-default-rating=\"0\">\t\t<span class=\"tasty-recipes-rating\">\t\t<i class=\"checked\" data-rating=\"5\">\t\t\t<span class=\"tasty-recipes-rating-solid\" data-tr-clip=\"0\">\t\t\t\t<svg class=\"tasty-recipes-svg\"><use href=\"#wpt-star-full\" \/><\/svg>\t\t\t<\/span>\t\t\t<span class=\"tasty-recipes-screen-reader\">\t\t\t\t5 Stars\t\t\t<\/span>\t\t<\/i>\t<\/span>\t\t<span class=\"tasty-recipes-rating\">\t\t<i class=\"checked\" data-rating=\"4\">\t\t\t<span class=\"tasty-recipes-rating-solid\" data-tr-clip=\"0\">\t\t\t\t<svg class=\"tasty-recipes-svg\"><use href=\"#wpt-star-full\" \/><\/svg>\t\t\t<\/span>\t\t\t<span class=\"tasty-recipes-screen-reader\">\t\t\t\t4 Stars\t\t\t<\/span>\t\t<\/i>\t<\/span>\t\t<span class=\"tasty-recipes-rating\">\t\t<i class=\"checked\" data-rating=\"3\">\t\t\t<span class=\"tasty-recipes-rating-solid\" data-tr-clip=\"0\">\t\t\t\t<svg class=\"tasty-recipes-svg\"><use href=\"#wpt-star-full\" \/><\/svg>\t\t\t<\/span>\t\t\t<span class=\"tasty-recipes-screen-reader\">\t\t\t\t3 Stars\t\t\t<\/span>\t\t<\/i>\t<\/span>\t\t<span class=\"tasty-recipes-rating\">\t\t<i class=\"checked\" data-rating=\"2\">\t\t\t<span class=\"tasty-recipes-rating-solid\" data-tr-clip=\"0\">\t\t\t\t<svg class=\"tasty-recipes-svg\"><use href=\"#wpt-star-full\" \/><\/svg>\t\t\t<\/span>\t\t\t<span class=\"tasty-recipes-screen-reader\">\t\t\t\t2 Stars\t\t\t<\/span>\t\t<\/i>\t<\/span>\t\t<span class=\"tasty-recipes-rating\">\t\t<i class=\"checked\" data-rating=\"1\">\t\t\t<span class=\"tasty-recipes-rating-solid\" data-tr-clip=\"0\">\t\t\t\t<svg class=\"tasty-recipes-svg\"><use href=\"#wpt-star-full\" \/><\/svg>\t\t\t<\/span>\t\t\t<span class=\"tasty-recipes-screen-reader\">\t\t\t\t1 Star\t\t\t<\/span>\t\t<\/i>\t<\/span><\/span><\/p>\n<p><span data-tasty-recipes-customization=\"detail-label-color.color\" class=\"rating-label\">No reviews<\/span><\/p>\n<\/p><\/div>\n<div class=\"tasty-recipes-description\" data-tasty-recipes-customization=\"body-color.color\">\n<p><em>Sharing a dairy-free and gluten-free recipe for Mediterranean egg bites. Try this as a high-protein meal prep option!<\/em><\/p>\n<\/p><\/div>\n<div class=\"tasty-recipes-details\" data-tasty-recipes-customization=\"body-color.color\">\n<ul>\n<li class=\"author\"><strong data-tasty-recipes-customization=\"detail-label-color.color\" class=\"tasty-recipes-label\">Author:<\/strong> <span data-tasty-recipes-customization=\"detail-value-color.color\" class=\"tasty-recipes-author-name\">Gina Harney \/\/ The Fitnessista<\/span><\/li>\n<\/ul><\/div>\n<div class=\"tasty-recipes-ingredients\">\n<div class=\"tasty-recipes-ingredients-header\">\n<div class=\"tasty-recipes-ingredients-clipboard-container\">\n<h3 data-tasty-recipes-customization=\"h3-color.color h3-transform.text-transform\">Ingredients<\/h3>\n<\/p><\/div>\n<div class=\"tasty-recipes-units-scale-container\">\n\t\t\t\t\t\t\t\t\t\t\t<\/div>\n<\/p><\/div>\n<div class=\"tasty-recipes-ingredients-body\" data-tasty-recipes-customization=\"body-color.color\">\n<p>&#8211; 3 cloves of minced garlic<\/p>\n<p>&#8211; 1\/2 sweet onion, chopped<\/p>\n<p>&#8211; 2 handfuls of fresh spinach<\/p>\n<p>&#8211; 6 whole eggs<\/p>\n<p>&#8211; 1\/4 cup almond milk<\/p>\n<p>&#8211; 1\/4 cup gluten-free all purpose baking flour<\/p>\n<p>&#8211; 1\/2 teaspoon baking powder<\/p>\n<p>&#8211; 1\/2 teaspoon garlic powder<\/p>\n<p>&#8211; 1\/3 cup sun-dried tomatoes, chopped<\/p>\n<p>&#8211; 1\/3 cup kalamata olives<\/p>\n<p>&#8211; 1\/3 cup grated vegan parmesan (I LOVE Violife)<\/p>\n<p>&#8211; Avocado oil for greasing the muffin tins<\/p>\n<p><!--INSIDE_INGREDIENTS-->\t\t<\/div>\n<div class=\"tasty-recipes-cook-mode\">\n<div class=\"tasty-recipes-cook-mode__container\">\n\t\t<label class=\"tasty-recipes-cook-mode__switch\"><br \/>\n\t\t\t<input type=\"checkbox\" id=\"tasty_recipes_67e14b8c2dcbd_cookmode\" \/><br \/>\n\t\t\t<span class=\"tasty-recipes-cook-mode__switch-slider tasty-recipes-cook-mode__switch-round\" data-tasty-recipes-customization=\"button-color.background button-text-color.color\"><\/span><br \/>\n\t\t<\/label><br \/>\n\t\t<label for=\"tasty_recipes_67e14b8c2dcbd_cookmode\"><br \/>\n\t\t\t<span class=\"tasty-recipes-cook-mode__label\">Cook Mode<\/span><br \/>\n\t\t\t<span class=\"tasty-recipes-cook-mode__helper\"><br \/>\n\t\t\t\tPrevent your screen from going dark\t\t\t<\/span><br \/>\n\t\t<\/label>\n\t<\/div>\n<\/div><\/div>\n<div class=\"tasty-recipe-instructions\">\n<div class=\"tasty-recipes-instructions-header\">\n<h3 data-tasty-recipes-customization=\"h3-color.color h3-transform.text-transform\">Instructions<\/h3>\n<\/p><\/div>\n<div class=\"tasty-recipes-instructions-body\" data-tasty-recipes-customization=\"body-color.color\">\n<h4>Step 1:<\/h4>\n<p id=\"instruction-step-1\">Preheat the oven to 350 and grease a 12 standard muffin tin with avocado oil.<\/p>\n<h4>Step 2:<\/h4>\n<p id=\"instruction-step-2\">In a large bowl, whisk the eggs and then gently stir in the remaining ingredients.<\/p>\n<h4>Step 3:<\/h4>\n<p id=\"instruction-step-3\">Evenly distribute the mix into the 12 muffin spots in the pan. Bake for 20 minutes or until golden brown and set.<\/p>\n<h4>Step 4:<\/h4>\n<p id=\"instruction-step-4\">Cool completely before serving, otherwise they get stuck in the muffin tin.<\/p>\n<\/p><\/div>\n<\/p><\/div>\n<footer class=\"tasty-recipes-entry-footer\">\n<h3 data-tasty-recipes-customization=\"footer-heading-color.color h3-transform.text-transform footer-heading.innerText\">Did you make this recipe?<\/h3>\n<div data-tasty-recipes-customization=\"footer-description-color.color footer-description.innerHTML\">\n<p>Tag <a href=\"https:\/\/www.instagram.com\/fitnessista\" target=\"_blank\" rel=\"noreferrer noopener\" data-wpel-link=\"external\">@fitnessista<\/a> on Instagram<\/p>\n<\/div>\n<\/footer>\n<p><script>\nwindow.trCommon={\"minRating\":6,\"ajaxurl\":\"https:\/\/fitnessista.com\/wp-admin\/admin-ajax.php\",\"ratingNonce\":\"\",\"postId\":156816};\nwindow.TastyRecipes = window.TastyRecipes || {};<\/p>\n<p>window.TastyRecipes.smoothScroll = {\ninit() {\ndocument.addEventListener( 'click', ( e ) => {\nlet anchor = e.target;\nif ( anchor.tagName !== 'A' ) {\nanchor = anchor.closest( 'a.tasty-recipes-scrollto' );\n}<\/p>\n<p>if ( ! anchor || ! anchor.classList.contains( 'tasty-recipes-scrollto' ) ) {\nreturn;\n}<\/p>\n<p>const elementHref = anchor.getAttribute( 'href' );\nif ( ! elementHref ) {\nreturn;\n}<\/p>\n<p>e.preventDefault();\nthis.goToSelector( elementHref );\n});\n},\ngoToSelector( selector ) {\nconst element = document.querySelector( selector );\nif ( ! element ) {\nreturn;\n}\nelement.scrollIntoView( { behavior: 'smooth' } );\n}\n};<\/p>\n<p>document.addEventListener(\n'DOMContentLoaded',\n() => window.TastyRecipes.smoothScroll.init()\n);<\/p>\n<p>window.TastyRecipes = window.TastyRecipes || {};\nwindow.TastyRecipes.cookMode = {\nwakeLockApi: false,\nwakeLock: false,\ncookModeSelector: '.tasty-recipes-cook-mode',\ninit() {\nif (\"wakeLock\" in navigator && \"request\" in navigator.wakeLock) {\nthis.wakeLockApi = navigator.wakeLock;\n}<\/p>\n<p>const cookModes = document.querySelectorAll(this.cookModeSelector);<\/p>\n<p>if (cookModes.length > 0) {\nfor (const cookMode of cookModes) {\nif (this.wakeLockApi) {\ncookMode.querySelector('input[type=\"checkbox\"]').addEventListener(\"change\", event => {\nthis.checkboxChange(event.target);\n}, false);\n} else {\ncookMode.style.display = \"none\";\n}\n}\n}\n},\ncheckboxChange(checkbox) {\nif (checkbox.checked) {\nthis.lock();\n} else {\nthis.unlock();\n}\n},\nsetCheckboxesState(state) {\nconst checkboxes = document.querySelectorAll(this.cookModeSelector + ' input[type=\"checkbox\"]');\nfor (const checkbox of checkboxes) {\ncheckbox.checked = state;\n}\n},\nasync lock() {\ntry {\nthis.wakeLock = await this.wakeLockApi.request(\"screen\");\nthis.wakeLock.addEventListener(\"release\", () => {\nthis.wakeLock = false;\nthis.setCheckboxesState(false);\n});\nthis.setCheckboxesState(true);\n} catch (error) {\nthis.setCheckboxesState(false);\n}\n},\nunlock() {\nif (this.wakeLock) {\nthis.wakeLock.release();\nthis.wakeLock = false;\n}\nthis.setCheckboxesState(false);\n}\n};<\/p>\n<p>(function(callback) {\nif (document.readyState !== \"loading\") {\ncallback();\n} else {\ndocument.addEventListener(\"DOMContentLoaded\", callback);\n}\n})(() => {\nwindow.TastyRecipes.cookMode.init();\n});<\/p>\n<p>window.TastyRecipes = window.TastyRecipes || {};<\/p>\n<p>window.TastyRecipes.staticTooltip = {\nelement: null,\ntooltipElement: null,\ndeleting: false,\ninit( element ) {\nif ( this.deleting ) {\nreturn;\n}\nthis.element = element;\nthis.buildElements();\n},\ndestroy() {\nif ( ! this.tooltipElement || this.deleting ) {\nreturn;\n}<\/p>\n<p>this.deleting = true;\nthis.tooltipElement.classList.remove( 'opened' );<\/p>\n<p>setTimeout( () => {\nthis.tooltipElement.remove();\nthis.deleting = false;\n}, 500 );\n},\nbuildElements() {\nconst tooltipElement = document.createElement( 'div' );\ntooltipElement.classList.add( 'tasty-recipes-static-tooltip');\ntooltipElement.setAttribute( 'id', 'tasty-recipes-tooltip' );<\/p>\n<p>const currentTooltipElement = document.getElementById( 'tasty-recipes-tooltip' );\nif ( currentTooltipElement ) {\ndocument.body.replaceChild( tooltipElement, currentTooltipElement );\n} else {\ndocument.body.appendChild( tooltipElement );\n}<\/p>\n<p>this.tooltipElement = document.getElementById( 'tasty-recipes-tooltip' );\n},\nshow() {\nif ( ! this.tooltipElement ) {\nreturn;\n}<\/p>\n<p>const tooltipTop = this.element.getBoundingClientRect().top\n+ window.scrollY\n- 10 \/\/ 10px offset.\n- this.tooltipElement.getBoundingClientRect().height;\nconst tooltipLeft = this.element.getBoundingClientRect().left\n- ( this.tooltipElement.getBoundingClientRect().width \/ 2 )\n+ ( this.element.getBoundingClientRect().width \/ 2 ) - 1;\nconst posLeft = Math.max( 10, tooltipLeft );\nthis.maybeRemoveTail( posLeft !== tooltipLeft );<\/p>\n<p>this.tooltipElement.setAttribute( 'style', 'top:' + tooltipTop + 'px;left:' + posLeft + 'px;' );\nthis.tooltipElement.classList.add( 'opened' );<\/p>\n<p>},\nmaybeRemoveTail( removeTail ) {\nif ( removeTail ) {\nthis.tooltipElement.classList.add( 'tr-hide-tail' );\n} else {\nthis.tooltipElement.classList.remove( 'tr-hide-tail' );\n}\n},\nchangeMessage( message ) {\nif ( ! this.tooltipElement ) {\nreturn;\n}\nthis.tooltipElement.innerHTML = message;\n}\n};<\/p>\n<p>window.TastyRecipes.ajax = {\nsendPostRequest( url, data, success, failure ) {\nconst xhr = new XMLHttpRequest();\nxhr.open( 'POST', url, true );\nxhr.send( this.preparePostData( data ) );<\/p>\n<p>xhr.onreadystatechange = () => {\nif ( 4 !== xhr.readyState ) {\nreturn;\n}\nif ( xhr.status === 200 ) {\nsuccess( JSON.parse( xhr.responseText ) );\nreturn;\n}<\/p>\n<p>failure( xhr );\n};<\/p>\n<p>xhr.onerror = () => {\nfailure( xhr );\n};\n},\npreparePostData( data ) {\nconst formData = new FormData();<\/p>\n<p>for ( const key in data ) {\nformData.append( key, data[key] );\n}\nreturn formData;\n},\n};<\/p>\n<p>window.TastyRecipes.ratings = {\ndefaultRating: 0,\ncurrentRatingPercentage: 100,\nsavingRating: false,\ninit( minRating ) {\nthis.minRating = minRating;<\/p>\n<p>this.formWatchRating();\nthis.closeTooltipWhenClickOutside();\nthis.addBodyClassBasedOnSelectedRating();\nthis.backwardCompFormRatingPosition();\n},\nformWatchRating() {\nconst ratings = document.querySelectorAll('.tasty-recipes-no-ratings-buttons [data-rating]');\nif ( ratings.length <= 0 ) {\nreturn;\n}\nfor ( const rating of ratings ) {\nrating.addEventListener( 'click', event => {\nevent.preventDefault();\nthis.defaultRating = event.target.closest( '.checked' ).dataset.rating;\nthis.setCheckedStar( event.target );\nthis.maybeSendRating( this.defaultRating, event.target );\nthis.setRatingInForm( this.defaultRating );\n} );\n}\n},\ncloseTooltipWhenClickOutside() {\nwindow.addEventListener( 'click', e => {\n\/\/ Bailout (don't remove the tooltip) when the clicked element is a rating star, or it's the tooltip itself.\nif ( e.target.closest( '.tasty-recipes-rating' ) || e.target.classList.contains( 'tasty-recipes-static-tooltip' ) ) {\nreturn;\n}<\/p>\n<p>window.TastyRecipes.staticTooltip.destroy();\n} );\n},\n setRatingInForm( rating ) {\nconst ratingInput = document.querySelector( '#respond .tasty-recipes-rating[value=\"' + rating + '\"]' );\nif ( ! ratingInput ) {\nreturn;\n}\nratingInput.click();\n},\naddBodyClassBasedOnSelectedRating() {\nconst ratingInputs = document.querySelectorAll( 'input.tasty-recipes-rating' );\nif ( ! ratingInputs ) {\nreturn;\n}\nfor ( const ratingInput of ratingInputs ) {\nratingInput.addEventListener( 'click', currentEvent => {\nconst selectedRating = currentEvent.target.getAttribute( 'value' );\nthis.handleBodyClassByRating( selectedRating );\nthis.toggleCommentTextareaRequired( selectedRating );\n} );\n}\n},\nhandleBodyClassByRating( rating ) {\nif ( rating < this.minRating ) {\ndocument.body.classList.remove( 'tasty-recipes-selected-minimum-rating' );\nreturn;\n}\ndocument.body.classList.add( 'tasty-recipes-selected-minimum-rating' );\n},\ntoggleCommentTextareaRequired( rating ) {\nconst commentTextarea = document.getElementById( 'comment' );\nif ( ! commentTextarea ) {\nreturn;\n}\n\nif ( rating < this.minRating ) {\ncommentTextarea.setAttribute( 'required', '' );\nreturn;\n}\n\ncommentTextarea.removeAttribute( 'required' );\n},\nmaybeSendRating( rating, element ) {\nif ( this.savingRating === rating ) {\nreturn;\n}\n\nthis.savingRating = rating;\nwindow.TastyRecipes.staticTooltip.init( element );\n\nconst recipeCardElement = element.closest( '.tasty-recipes' );\nif ( ! recipeCardElement ) {\nwindow.TastyRecipes.staticTooltip.destroy();\nreturn;\n}\n\nwindow.TastyRecipes.ajax.sendPostRequest(\nwindow.trCommon.ajaxurl,\n{\naction: 'tasty_recipes_save_rating',\nrating,\nnonce: window.trCommon.ratingNonce,\npost_id: window.trCommon.postId,\nrecipe_id: recipeCardElement.dataset.trId,\n},\n( response ) => {\nwindow.TastyRecipes.staticTooltip.changeMessage( response.data.message );\nwindow.TastyRecipes.staticTooltip.show();\nthis.updateAverageText( response.data, recipeCardElement );\nthis.maybeFillCommentForm( response.data );<\/p>\n<p>\/\/ Hide the tooltip after 5 seconds.\nsetTimeout( () => {\nthis.maybeResetTooltip( recipeCardElement, response.data, rating );\n}, 5000 );\n},\n() => {\nthis.resetTooltip( recipeCardElement );\n}\n);\n},\nupdateAverageText( data, recipeCardElement ) {\nif ( ! data.average ) {\nreturn;\n}\nthis.setRatingPercent( data );<\/p>\n<p>if ( ! data.count ) {\nreturn;\n}<\/p>\n<p>const quickLink = document.querySelector( '.tasty-recipes-rating-link' );\nif ( quickLink ) {\nthis.setTextInContainer( quickLink, data );\nthis.setPartialStar( quickLink );\n}<\/p>\n<p>const cardStars = recipeCardElement.querySelector( '.tasty-recipes-ratings-buttons' );\ncardStars.dataset.trDefaultRating = data.average;\nthis.setTextInContainer( recipeCardElement.querySelector( '.tasty-recipes-rating' ), data );\n},\nsetTextInContainer( container, data ) {\nif ( ! container ) {\nreturn;\n}<\/p>\n<p>if ( data.label ) {\nconst ratingLabelElement = container.querySelector( '.rating-label' );\nif ( ratingLabelElement ) {\nratingLabelElement.innerHTML = data.label;\n}\nreturn;\n}<\/p>\n<p>const averageElement = container.querySelector( '.average' );\nif ( averageElement ) {\naverageElement.textContent = data.average;\n}<\/p>\n<p>const countElement = container.querySelector( '.count' );\nif ( countElement ) {\ncountElement.textContent = data.count;\n}\n},\nsetPartialStar( container ) {\nconst highestStar = container.querySelector( '[data-rating=\"' + Math.ceil( this.defaultRating ) + '\"]' );\nif ( highestStar ) {\nhighestStar.dataset.trClip = this.currentRatingPercentage;\n}\n},\nsetRatingPercent( data ) {\nthis.defaultRating = data.average.toFixed( 1 );\nconst parts = data.average.toFixed( 2 ).toString().split( '.' );\nthis.currentRatingPercentage = parts[1] ? parts[1] : 100;\nif ( this.currentRatingPercentage === '00' ) {\nthis.currentRatingPercentage = 100;\n}\n},\nsetCheckedStar( target ) {\nconst cardRatingContainer = target.closest( '.tasty-recipes-ratings-buttons' );\nconst selectedRatingElement = cardRatingContainer.querySelector( '[data-tr-checked]' );\nif ( selectedRatingElement ) {\ndelete selectedRatingElement.dataset.trChecked;\n}<\/p>\n<p>const thisStar = target.closest( '.tasty-recipes-rating' );\nthisStar.dataset.trChecked = 1;\nthisStar.querySelector( '[data-tr-clip]' ).dataset.trClip = 100;\n},\nmaybeFillCommentForm( data ) {\nif ( ! data.comment || ! data.comment.content ) {\nreturn;\n}<\/p>\n<p>const commentForm = document.querySelector( '#commentform' );\nif ( ! commentForm ) {\nreturn;\n}<\/p>\n<p>const commentBox = commentForm.querySelector( '[name=comment]' );\nif ( ! commentBox || commentBox.value ) {\nreturn;\n}<\/p>\n<p>\/\/ Add comment details for editing.\ncommentBox.innerHTML = data.comment.content;\nif ( data.comment.name ) {\ncommentForm.querySelector( '[name=author]' ).value = data.comment.name;\ncommentForm.querySelector( '[name=email]' ).value = data.comment.email;\n}\n},\nmaybeResetTooltip( recipeCardElement, data, rating ) {\nif ( this.savingRating === rating ) {\nthis.resetTooltip( recipeCardElement, data );\n}\n},\nresetTooltip( recipeCardElement, data ) {\nwindow.TastyRecipes.staticTooltip.destroy();\nthis.savingRating = false;<\/p>\n<p>\/\/ Reset the default rating.\nconst cardRatingContainer = recipeCardElement.querySelector( '.tasty-recipes-ratings-buttons' );\nif ( cardRatingContainer ) {\nthis.defaultRating = ( data && data.average ) ? data.average.toFixed(1) : cardRatingContainer.dataset.trDefaultRating;\ncardRatingContainer.dataset.trDefaultRating = this.defaultRating;<\/p>\n<p>this.resetSelectedStar( cardRatingContainer, data );\n}\n},\nresetSelectedStar( cardRatingContainer ) {\nconst selectedRatingElement = cardRatingContainer.querySelector( '[data-rating=\"' + Math.ceil( this.defaultRating ) + '\"]' );\nif ( selectedRatingElement ) {\nselectedRatingElement.querySelector( '[data-tr-clip]' ).dataset.trClip = this.currentRatingPercentage;\nselectedRatingElement.parentNode.dataset.trChecked = 1;\n}<\/p>\n<p>const previousSelectedElement= cardRatingContainer.querySelector( '[data-tr-checked]' );\nif ( previousSelectedElement ) {\nconst currentSelectedRating = previousSelectedElement.querySelector('[data-rating]');\nif ( currentSelectedRating !== selectedRatingElement ) {\ndelete previousSelectedElement.dataset.trChecked;\n}\n}\n},\nbackwardCompFormRatingPosition() {\nconst ratingsButtons = document.querySelector( '#respond .tasty-recipes-ratings-buttons, #tasty-recipes-comment-rating .tasty-recipes-ratings-buttons' );\nif ( ! ratingsButtons ) {\nreturn;\n}\nconst ratingsButtonsStyles = window.getComputedStyle(ratingsButtons);\nif ( ! ratingsButtonsStyles.display.includes( 'flex' ) ) {\nratingsButtons.style.direction = 'rtl';\n}<\/p>\n<p>if ( typeof tastyRecipesRating !== 'undefined' ) {\n\/\/ Select the rating that was previously selected in admin.\nratingsButtons.querySelector( '.tasty-recipes-rating[value=\"' + tastyRecipesRating + '\"]' ).checked = true;\n}<\/p>\n<p>const ratingSpans = ratingsButtons.querySelectorAll( '.tasty-recipes-rating' );\nfor (const ratingSpan of ratingSpans) {\nratingSpan.addEventListener( 'click', event => {\nif ( ratingSpan === event.target ) {\nreturn;\n}\nratingSpan.previousElementSibling.click();\n} );\n}\n}\n};<\/p>\n<p>(function(callback) {\nif (document.readyState !== \"loading\") {\ncallback();\n} else {\nwindow.addEventListener( 'load', callback );\n}\n})(() => {\nwindow.TastyRecipes.ratings.init( window.trCommon ? window.trCommon.minRating : 4 );\n});\n<\/script><\/div>\n<p><a href=\"https:\/\/fitnessista.com\/mediterranean-egg-bites-gluten-free-and-dairy-free\/mediterranean-egg-bites-recipe\/\" rel=\"attachment wp-att-156821 follow noopener noreferrer\" data-wpel-link=\"internal\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-156821 size-large\" title=\"dairy-free and gluten-free egg bites\" src=\"http:\/\/bestratefinders.com\/blog\/wp-content\/uploads\/2025\/03\/mediterranean-egg-bites-recipe-683x1024-1.jpg\" data-fslightbox=\"gallery1\"><\/a><\/p>\n<p>xoxo<\/p>\n<p>Gina<\/p>\n<p><strong><span style=\"text-decoration: underline;\">More of my favorite prep-ahead breakfast options:<\/span><\/strong><\/p>\n<p><a href=\"https:\/\/fitnessista.com\/something-worth-waking-up-for\/\" target=\"_blank\" rel=\"noopener follow noreferrer\" data-wpel-link=\"internal\">\u00a0The original breakfast cookie!<\/a> The girls and I had these for weekday breakfasts last week and they were a huge hit. (I mean, anything is a hit when it has a chocolate chip smiley face.)<\/p>\n<ul>\n<li><a href=\"https:\/\/fitnessista.com\/protein-packed-make-ahead-breakfast-burritos\/\" target=\"_blank\" rel=\"noopener follow noreferrer\" data-wpel-link=\"internal\">Make-ahead breakfast burritos<\/a><\/li>\n<li><a href=\"https:\/\/fitnessista.com\/sweet-potato-goat-cheese-and-turkey-bacon-egg-bake\/\" target=\"_blank\" rel=\"noopener follow noreferrer\" data-wpel-link=\"internal\">Sweet potato, turkey bacon, and goat cheese casserole<\/a><\/li>\n<li><a href=\"https:\/\/fitnessista.com\/pumpkin-oatmeal-bake\/\" target=\"_blank\" rel=\"noopener follow noreferrer\" data-wpel-link=\"internal\">Pumpkin oatmeal bake<\/a><\/li>\n<li><a href=\"https:\/\/fitnessista.com\/20-healthy-on-the-go-breakfasts\/\" target=\"_blank\" rel=\"noopener follow noreferrer\" data-wpel-link=\"internal\">20 healthy on-the-go breakfasts<\/a><\/li>\n<\/ul>\n<p>The post <a href=\"https:\/\/fitnessista.com\/mediterranean-egg-bites-gluten-free-and-dairy-free\/\">Mediterranean egg bites (gluten-free and dairy-free)<\/a> appeared first on <a href=\"https:\/\/fitnessista.com\">The Fitnessista<\/a>.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Today I\u2019m sharing a dairy-free and gluten-free recipe for Mediterranean egg bites. Try this as a high-protein meal prep option! Hey hey! How\u2019s the week going? I hope you\u2019re having a great one so far! It\u2019s been busy as usual \u2013 but I\u2019m looking forward to some weekend fun with the crew. \ud83d\ude42 For today\u2019s\u2026<br \/>\nThe post Mediterranean egg bites (gluten-free and dairy-free) appeared first on The Fitnessista.<\/p>\n","protected":false},"author":1,"featured_media":2469,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"wprm-recipe-roundup-name":"","wprm-recipe-roundup-description":""},"categories":[20,1,21,22,19],"tags":[],"_links":{"self":[{"href":"https:\/\/bestratefinders.com\/blog\/wp-json\/wp\/v2\/posts\/119985"}],"collection":[{"href":"https:\/\/bestratefinders.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/bestratefinders.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/bestratefinders.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/bestratefinders.com\/blog\/wp-json\/wp\/v2\/comments?post=119985"}],"version-history":[{"count":3,"href":"https:\/\/bestratefinders.com\/blog\/wp-json\/wp\/v2\/posts\/119985\/revisions"}],"predecessor-version":[{"id":119992,"href":"https:\/\/bestratefinders.com\/blog\/wp-json\/wp\/v2\/posts\/119985\/revisions\/119992"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/bestratefinders.com\/blog\/wp-json\/wp\/v2\/media\/2469"}],"wp:attachment":[{"href":"https:\/\/bestratefinders.com\/blog\/wp-json\/wp\/v2\/media?parent=119985"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/bestratefinders.com\/blog\/wp-json\/wp\/v2\/categories?post=119985"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/bestratefinders.com\/blog\/wp-json\/wp\/v2\/tags?post=119985"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}