This apple cranberry crisp combines tart contemporary berries and candy apples with a golden, buttery oat topping. It’s the proper straightforward dessert for a crowd!

As an enormous fan of apple crisp, I’ve discovered a dessert I’d love even slightly bit extra: apple cranberry crisp! The tartness of contemporary berries melds with candy, cozy crisp apples in a cinnamon-spiced fruit layer.
The berries add a zingy taste and a brilliant purple shade to the fruit layer that’s topped with golden buttery crisp crumbles. This apple cranberry crisp has turn out to be a staple in my fall and winter baking rotation. It feels festive sufficient for a Thanksgiving or Christmas unfold, however is straightforward sufficient for a comfortable night time in.
Why This Recipe Works
Including cranberries to your apple crisp or apple crumble enhances the flavour, sort of like in a strawberry rhubarb pie. Right here is why this model has earned a everlasting spot in my recipe field:
- Zingy candy tart taste: Apples are candy, however baking them with cranberries creates a sweet-tart complexity.
- Good crumble texture: The fruit filling cooks down right into a jammy compote that contrasts the crunch of the rolled oats and butter topping.
- Versatility: It really works brilliantly with contemporary or frozen cranberries, making it a year-round choice
Ingredient Highlight: What You Want
This apple cranberry crisp is a spin on the basic apple dessert with a handful of contemporary cranberries thrown within the combine. Right here’s what you want:
- Apples: You need agency, crisp, sweet-tart cooking apples. Pink Girl and Honeycrisp are my favorites for baking as a result of they maintain their form, however Granny Smith or Golden Scrumptious are additionally glorious selections.
- Cranberries: This works with contemporary or frozen berries. It’s an awesome concept for utilizing up leftover contemporary cranberries from cranberry sauce, or purchase a bag and use the remainder in bread, muffins or a smoothie.
- Orange Zest: Don’t skip this! Orange provides a floral aroma that completely brings out the flavour of the filling.
- Cornstarch: This thickens the juices launched by the fruit so the underside layer doesn’t get soupy.
- Outdated-Usual Rolled Oats: These present the basic chew and rustic look. I keep away from fast oats right here as they will get too mushy.
- Butter: Chilly butter is crucial for creating these distinct, crumbly nuggets of topping.
- Sugars: I exploit a mixture of granulated sugar for the fruit and brown sugar for the topping. (Maple syrup or honey don’t work as sweeteners as a result of it makes for soggy crumbles.)

Learn how to Make Apple Cranberry Crisp
This recipe comes collectively rapidly, which is why it’s certainly one of my high Thanksgiving desserts. Listed here are my suggestions for getting it proper each time (or soar to the recipe beneath):
1. Prep the Fruit
I like to chop my apples into ½-inch chunks quite than slices. I discover that chunks make the crisp simpler to scoop and eat. Toss the apples and cranberries with the sugar, cornstarch, cinnamon, and orange zest proper within the baking dish to save lots of on washing an additional bowl.
2. Work the Butter
In a medium bowl, whisk your dry substances (flour, oats, sugar, spices). Then, reduce the chilly butter into small items. I exploit a fork or a pastry cutter to work the butter into the flour combination till it seems to be like coarse crumbs (on the finish, I normally combine it along with my fingers).
3. Bake Till Bubbly
Unfold the topping evenly over the fruit. Bake at 350°F for about 45 to 50 minutes. The visible cue is the fruit filling effervescent up across the edges and the topping turning a deep golden brown.

Serving Ideas
Apple cranberry crisp is the proper fall or winter dessert, superb for serving as a Thanksgiving dessert, at Christmas, or for any meal. Like most crisps, one of the best topping is vanilla ice cream. The distinction of wealthy cream in opposition to the candy tart cranberries is perfection! Or, use one of many following toppings:
- A La Mode: A scoop of Vanilla Ice Cream is the gold commonplace. The melting cream mingling with the nice and cozy spiced fruit is unbeatable.
- Whipped Cream: A dollop of Selfmade Whipped Cream or my favourite Yogurt Whipped Cream provides a lighter, tangy end.
- Breakfast: I received’t inform if you happen to eat the leftovers for breakfast! It pairs surprisingly properly with a dollop of Greek yogurt and a sizzling espresso.
Leftover Storage
Cranberry apple crisp tastes greatest the day it’s made, but it surely saves very properly! The crisp texture holds up properly over time. Listed here are one of the best practices for the best way to retailer a crisp:
- Hold it loosely coated at room temperature for 1 to 2 days. Maintaining it loosely coated helps to keep up the crumble texture.
- Refrigerate for as much as 3 days. It holds up properly within the fridge, and tastes even higher when reheated.
- Freeze for as much as 3 months. Freeze for as much as 3 months in a sealed container. Reheat it in a 350°F oven till bubbly.
Dietary Notes
This apple cranberry crisp recipe is vegetarian. To make it gluten-free or vegan, listed below are a number of ingredient swaps:
- Gluten-free: Swap out the all-purpose flour with almond flour: it really works like a allure and makes an irresistibly crunchy topping
- Vegan / dairy-free: Use vegan butter or refined coconut oil rather than the butter, and use vegan vanilla ice cream as a topping.
Apple Cranberry Crisp
This apple cranberry crisp is a pleasant and simple dessert, with a candy tart spiced fruit layer and golden buttery crumble topping!
- Prep Time: 20 minutes
- Prepare dinner Time: 50 minutes
- Whole Time: 1 hour 10 minutes
- Yield: 8
- Class: Dessert
- Methodology: Baked
- Delicacies: Baked
- Weight loss plan: Vegetarian
Elements
For the cranberry apple filling
- 5 cups (4 medium to massive or 1 1/2 kilos) candy tart apples
- 1 ½ cups contemporary or frozen cranberries* (5 ounces)
- ½ cup granulated sugar
- ¼ cup packed brown sugar
- 2 tablespoons cornstarch
- ¼ teaspoon orange zest (elective; or ½ teaspoon lemon zest)
- 1 teaspoon floor cinnamon
For the topping
- ¾ cup all-purpose flour (or almond flour for gluten-free)
- ¾ cup Outdated Usual rolled oats
- ½ cup packed brown sugar
- 1 teaspoon vanilla extract
- ½ teaspoon floor cinnamon
- ¼ teaspoon kosher salt
- 8 tablespoons chilly unsalted or salted butter (or vegan butter**), reduce into items
Directions
- Preheat the oven to 350°F.
- Make the filling: Core, peel and reduce the apples into 1/2-inch chunks. Mix the apples with cranberries, orange zest, granulated sugar, brown sugar, cornstarch, and cinnamon in a big bowl and toss till properly coated. Pour right into a 7 x 11 baking dish.
- Make the topping: In a medium bowl, combine collectively the oats, flour, brown sugar, cinnamon, vanilla, and kosher salt. Lower the butter into small items after which use a fork to combine it into the oats till totally distributed and a crumbly dough kinds. It might take some time so be affected person; it’s also possible to use a fork or pastry cutter if you happen to desire. (If utilizing coconut oil, it may be room temperature; use the identical technique so as to add it.) Pour the crumble on high and clean it into an excellent layer together with your fingers.
- Bake: Bake for 45 to 50 minutes till the highest is evenly golden brown and the filling is bubbly. Cool for half-hour to 1 hour, then serve heat. You may pass over your crisp on the counter for as much as 1 day (coated, at night time) so the topping can keep crisp. After 1 day, refrigerate any leftovers. This crumble additionally freezes properly for a number of months in a sealed container; reheat it in a 350°F oven till bubbly and the topping is crisp.
Notes
Dried berries: Dried cranberries can even work, however use solely ¾ cup of the dried berries.
Vegan swaps: You can even substitute room temperature refined coconut oil or vegan butter for a vegan crisp.
Pan Measurement: This recipe suits completely in a 7×11 baking dish, however a deep 9-inch sq. pan or a pie dish works properly too.
(operate(){
window.addEventListener( ‘message’, operate( occasion ){
if ( ( ‘https://nutrifox.com’ !== occasion.origin && ‘https://nutrifox.check’ !== occasion.origin ) ||
typeof occasion.information !== ‘string’ ) {
return;
}
var payload = JSON.parse( occasion.information );
swap ( payload.occasion ) {
case ‘setHeight’:
var iframe = doc.getElementById( ‘nutrifox-label-‘ + payload.recipeId );
iframe.model.top = payload.top + ‘px’;
break;
}
} );
}());
window.trCommon={“minRating”:6,”ajaxurl”:”https://www.acouplecooks.com/wp-admin/admin-ajax.php”,”ratingNonce”:””,”postId”:150441};
window.TastyRecipes = window.TastyRecipes || {};
window.TastyRecipes.smoothScroll = {
init() {
doc.addEventListener( ‘click on’, ( e ) => {
let anchor = e.goal;
if ( anchor.tagName !== ‘A’ ) {
anchor = anchor.closest( ‘a.tasty-recipes-scrollto’ );
}
if ( ! anchor || ! anchor.classList.comprises( ‘tasty-recipes-scrollto’ ) ) {
return;
}
const elementHref = anchor.getAttribute( ‘href’ );
if ( ! elementHref ) {
return;
}
e.preventDefault();
this.goToSelector( elementHref );
});
},
goToSelector( selector ) {
const aspect = doc.querySelector( selector );
if ( ! aspect ) {
return;
}
aspect.scrollIntoView( { habits: ‘clean’ } );
}
};
doc.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 = doc.querySelectorAll(this.cookModeSelector);
if (cookModes.size > 0) {
for (const cookMode of cookModes) {
if (this.wakeLockApi) {
cookMode.querySelector(‘enter[type=”checkbox”]’).addEventListener(“change”, occasion => {
this.checkboxChange(occasion.goal);
}, false);
} else {
cookMode.model.show = “none”;
}
}
}
},
checkboxChange(checkbox) {
if (checkbox.checked) {
this.lock();
} else {
this.unlock();
}
},
setCheckboxesState(state) {
const checkboxes = doc.querySelectorAll(this.cookModeSelector + ‘ enter[type=”checkbox”]’);
for (const checkbox of checkboxes) {
checkbox.checked = state;
}
},
async lock() {
attempt {
this.wakeLock = await this.wakeLockApi.request(“display screen”);
this.wakeLock.addEventListener(“launch”, () => {
this.wakeLock = false;
this.setCheckboxesState(false);
});
this.setCheckboxesState(true);
} catch (error) {
this.setCheckboxesState(false);
}
},
unlock() {
if (this.wakeLock) {
this.wakeLock.launch();
this.wakeLock = false;
}
this.setCheckboxesState(false);
}
};
(operate(callback) {
if (doc.readyState !== “loading”) {
callback();
} else {
doc.addEventListener(“DOMContentLoaded”, callback);
}
})(() => {
window.TastyRecipes.cookMode.init();
});
window.TastyRecipes = window.TastyRecipes || {};
window.TastyRecipes.staticTooltip = {
aspect: null,
tooltipElement: null,
deleting: false,
init( aspect ) {
if ( this.deleting ) {
return;
}
this.aspect = aspect;
this.buildElements();
},
destroy() {
if ( ! this.tooltipElement || this.deleting ) {
return;
}
this.deleting = true;
this.tooltipElement.classList.take away( ‘opened’ );
setTimeout( () => {
this.tooltipElement.take away();
this.deleting = false;
}, 500 );
},
buildElements() {
const tooltipElement = doc.createElement( ‘div’ );
tooltipElement.classList.add( ‘tasty-recipes-static-tooltip’);
tooltipElement.setAttribute( ‘id’, ‘tasty-recipes-tooltip’ );
const currentTooltipElement = doc.getElementById( ‘tasty-recipes-tooltip’ );
if ( currentTooltipElement ) {
doc.physique.replaceChild( tooltipElement, currentTooltipElement );
} else {
doc.physique.appendChild( tooltipElement );
}
this.tooltipElement = doc.getElementById( ‘tasty-recipes-tooltip’ );
},
present() {
if ( ! this.tooltipElement ) {
return;
}
const tooltipTop = this.aspect.getBoundingClientRect().high
+ window.scrollY
– 10 // 10px offset.
– this.tooltipElement.getBoundingClientRect().top;
const tooltipLeft = this.aspect.getBoundingClientRect().left
– ( this.tooltipElement.getBoundingClientRect().width / 2 )
+ ( this.aspect.getBoundingClientRect().width / 2 ) – 1;
const posLeft = Math.max( 10, tooltipLeft );
this.maybeRemoveTail( posLeft !== tooltipLeft );
this.tooltipElement.setAttribute( ‘model’, ‘high:’ + 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.take away( ‘tr-hide-tail’ );
}
},
changeMessage( message ) {
if ( ! this.tooltipElement ) {
return;
}
this.tooltipElement.innerHTML = message;
}
};
window.TastyRecipes.ajax = {
sendPostRequest( url, information, success, failure ) {
const xhr = new XMLHttpRequest();
xhr.open( ‘POST’, url, true );
xhr.ship( this.preparePostData( information ) );
xhr.onreadystatechange = () => {
if ( 4 !== xhr.readyState ) {
return;
}
if ( xhr.standing === 200 ) {
success( JSON.parse( xhr.responseText ) );
return;
}
failure( xhr );
};
xhr.onerror = () => {
failure( xhr );
};
},
preparePostData( information ) {
const formData = new FormData();
for ( const key in information ) {
formData.append( key, information[key] );
}
return formData;
},
};
window.TastyRecipes.scores = {
defaultRating: 0,
currentRatingPercentage: 100,
savingRating: false,
init( minRating ) {
this.minRating = minRating;
this.formWatchRating();
this.closeTooltipWhenClickOutside();
this.addBodyClassBasedOnSelectedRating();
this.backwardCompFormRatingPosition();
},
formWatchRating() {
const scores = doc.querySelectorAll(‘.tasty-recipes-no-ratings-buttons [data-rating]’);
if ( scores.size {
occasion.preventDefault();
this.defaultRating = occasion.goal.closest( ‘.checked’ ).dataset.ranking;
this.setCheckedStar( occasion.goal );
this.maybeSendRating( this.defaultRating, occasion.goal );
this.setRatingInForm( this.defaultRating );
} );
}
},
closeTooltipWhenClickOutside() {
window.addEventListener( ‘click on’, e => {
// Bailout (do not take away the tooltip) when the clicked aspect is a ranking star, or it is the tooltip itself.
if ( e.goal.closest( ‘.tasty-recipes-rating’ ) || e.goal.classList.comprises( ‘tasty-recipes-static-tooltip’ ) ) {
return;
}
window.TastyRecipes.staticTooltip.destroy();
} );
},
setRatingInForm( ranking ) {
const ratingInput = doc.querySelector( ‘#reply .tasty-recipes-rating[value=”‘ + rating + ‘”]’ );
if ( ! ratingInput ) {
return;
}
ratingInput.click on();
},
addBodyClassBasedOnSelectedRating() {
const ratingInputs = doc.querySelectorAll( ‘enter.tasty-recipes-rating’ );
if ( ! ratingInputs ) {
return;
}
for ( const ratingInput of ratingInputs ) {
ratingInput.addEventListener( ‘click on’, currentEvent => {
const selectedRating = currentEvent.goal.getAttribute( ‘worth’ );
this.handleBodyClassByRating( selectedRating );
this.toggleCommentTextareaRequired( selectedRating );
} );
}
},
handleBodyClassByRating( ranking ) {
if ( ranking < this.minRating ) {
doc.physique.classList.take away( 'tasty-recipes-selected-minimum-rating' );
return;
}
doc.physique.classList.add( 'tasty-recipes-selected-minimum-rating' );
},
toggleCommentTextareaRequired( ranking ) {
const commentTextarea = doc.getElementById( 'remark' );
if ( ! commentTextarea ) {
return;
}
if ( ranking {
window.TastyRecipes.staticTooltip.changeMessage( response.information.message );
window.TastyRecipes.staticTooltip.present();
this.updateAverageText( response.information, recipeCardElement );
this.maybeFillCommentForm( response.information );
// Cover the tooltip after 5 seconds.
setTimeout( () => {
this.maybeResetTooltip( recipeCardElement, response.information, ranking );
}, 5000 );
},
() => {
this.resetTooltip( recipeCardElement );
}
);
},
updateAverageText( information, recipeCardElement ) {
if ( ! information.common ) {
return;
}
this.setRatingPercent( information );
if ( ! information.depend ) {
return;
}
const quickLink = doc.querySelector( ‘.tasty-recipes-rating-link’ );
if ( quickLink ) {
this.setTextInContainer( quickLink, information );
this.setPartialStar( quickLink );
}
const cardStars = recipeCardElement.querySelector( ‘.tasty-recipes-ratings-buttons’ );
cardStars.dataset.trDefaultRating = information.common;
this.setTextInContainer( recipeCardElement.querySelector( ‘.tasty-recipes-rating’ ), information );
},
setTextInContainer( container, information ) {
if ( ! container ) {
return;
}
if ( information.label ) {
const ratingLabelElement = container.querySelector( ‘.rating-label’ );
if ( ratingLabelElement ) {
ratingLabelElement.innerHTML = information.label;
}
return;
}
const averageElement = container.querySelector( ‘.common’ );
if ( averageElement ) {
averageElement.textContent = information.common;
}
const countElement = container.querySelector( ‘.depend’ );
if ( countElement ) {
countElement.textContent = information.depend;
}
},
setPartialStar( container ) {
const highestStar = container.querySelector( ‘[data-rating=”‘ + Math.ceil( this.defaultRating ) + ‘”]’ );
if ( highestStar ) {
highestStar.dataset.trClip = this.currentRatingPercentage;
}
},
setRatingPercent( information ) {
this.defaultRating = information.common.toFixed( 1 );
const elements = information.common.toFixed( 2 ).toString().cut up( ‘.’ );
this.currentRatingPercentage = elements[1] ? elements[1] : 100;
if ( this.currentRatingPercentage === ’00’ ) {
this.currentRatingPercentage = 100;
}
},
setCheckedStar( goal ) {
const cardRatingContainer = goal.closest( ‘.tasty-recipes-ratings-buttons’ );
const selectedRatingElement = cardRatingContainer.querySelector( ‘[data-tr-checked]’ );
if ( selectedRatingElement ) {
delete selectedRatingElement.dataset.trChecked;
}
const thisStar = goal.closest( ‘.tasty-recipes-rating’ );
thisStar.dataset.trChecked = 1;
thisStar.querySelector( ‘[data-tr-clip]’ ).dataset.trClip = 100;
},
maybeFillCommentForm( information ) {
if ( ! information.remark || ! information.remark.content material ) {
return;
}
const commentForm = doc.querySelector( ‘#commentform’ );
if ( ! commentForm ) {
return;
}
const commentBox = commentForm.querySelector( ‘[name=comment]’ );
if ( ! commentBox || commentBox.worth ) {
return;
}
// Add remark particulars for enhancing.
commentBox.innerHTML = information.remark.content material;
if ( information.remark.title ) {
commentForm.querySelector( ‘[name=author]’ ).worth = information.remark.title;
commentForm.querySelector( ‘[name=email]’ ).worth = information.remark.e mail;
}
},
maybeResetTooltip( recipeCardElement, information, ranking ) {
if ( this.savingRating === ranking ) {
this.resetTooltip( recipeCardElement, information );
}
},
resetTooltip( recipeCardElement, information ) {
window.TastyRecipes.staticTooltip.destroy();
this.savingRating = false;
// Reset the default ranking.
const cardRatingContainer = recipeCardElement.querySelector( ‘.tasty-recipes-ratings-buttons’ );
if ( cardRatingContainer ) {
this.defaultRating = ( information && information.common ) ? information.common.toFixed(1) : cardRatingContainer.dataset.trDefaultRating;
cardRatingContainer.dataset.trDefaultRating = this.defaultRating;
this.resetSelectedStar( cardRatingContainer, information );
}
},
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 = doc.querySelector( ‘#reply .tasty-recipes-ratings-buttons, #tasty-recipes-comment-rating .tasty-recipes-ratings-buttons’ );
if ( ! ratingsButtons ) {
return;
}
const ratingsButtonsStyles = window.getComputedStyle(ratingsButtons);
if ( ! ratingsButtonsStyles.show.contains( ‘flex’ ) ) {
ratingsButtons.model.path = ‘rtl’;
}
if ( typeof tastyRecipesRating !== ‘undefined’ ) {
// Choose the ranking that was beforehand chosen 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 on’, occasion => {
if ( ratingSpan === occasion.goal ) {
return;
}
ratingSpan.previousElementSibling.click on();
} );
}
}
};
(operate(callback) {
if (doc.readyState !== “loading”) {
callback();
} else {
window.addEventListener( ‘load’, callback );
}
})(() => {
window.TastyRecipes.scores.init( window.trCommon ? window.trCommon.minRating : 4 );
});
Extra Cranberry Recipes
- Cranberry Smoothie
- Straightforward Cranberry Salsa
- Cranberry Cream Cheese Dip
- Cranberry Sauce
- Cranberry Orange Bread
- Cranberry Orange Muffins




