Jeremy Crabb’s review published on Letterboxd:
I was honestly not really looking forward to Toy Story 4. I was sure that I would like it, but the trailers just never really hooked me. But having now seen it, I can definitely say that I kind of loved this movie, and it completely justifies its existence, even if it's still a bit of an unnecessary sequel. It's funny, heartfelt, and has a very good story with strong themes, particularly involving the character of Woody, who has a beautiful arc that leads to an ending that genuinely had me in tears. The animation is the best in the franchise, and it's scary how far Pixar has come with their animation since that first film. As far as problems go, I do think that some aspects of the plot felt a bit repetitive after a while, and there were times where I wasn't really feeling what the film wanted me to feel, at least until its fantastic ending scene. There are also some characters that didn't get as much screentime as I would've liked, but thankfully all of the new characters are fun as well, and they feel like they warrant their screentime. Overall, this was a great entry in one of my all-time favorite franchises, even if it's my least favorite in the franchise. I really did have a great time, and I could see my grade going up in the future.
GRADE: B+
Jeremy liked these reviews
' ].join(''); if ( adsScript && adsScript === 'bandsintown' && adsPlatforms && ((window.isIOS && adsPlatforms.indexOf("iOS") >= 0) || (window.isAndroid && adsPlatforms.indexOf("Android") >= 0)) && adsLocations && adsMode && ( (adsMode === 'include' && adsLocations.indexOf(window.adsLocation) >= 0) || (adsMode === 'exclude' && adsLocations.indexOf(window.adsLocation) == -1) ) ) { var opts = { artist: "", song: "", adunit_id: 100005950, div_id: "cf_async_f5fff455-ff49-4c2d-b5e6-1a917058f586" }; adUnit.id = opts.div_id; if (target) { target.insertAdjacentElement('beforeend', adUnit); } else { tag.insertAdjacentElement('afterend', adUnit); } var c=function(){cf.showAsyncAd(opts)};if(typeof window.cf !== 'undefined')c();else{cf_async=!0;var r=document.createElement("script"),s=document.getElementsByTagName("script")[0];r.async=!0;r.src="//srv.tunefindforfans.com/fruits/apricots.js";r.readyState?r.onreadystatechange=function(){if("loaded"==r.readyState||"complete"==r.readyState)r.onreadystatechange=null,c()}:r.onload=c;s.parentNode.insertBefore(r,s)}; } else { adUnit.id = 'pw-f5fff455-ff49-4c2d-b5e6-1a917058f586'; adUnit.className = 'pw-div -tile300x250 -alignleft -bottommargin'; adUnit.setAttribute('data-pw-' + (renderMobile ? 'mobi' : 'desk'), 'med_rect_btf'); if (target) { target.insertAdjacentElement('beforeend', adUnit); } else { tag.insertAdjacentElement('afterend', adUnit); } window.addEventListener('DOMContentLoaded', (event) => { adUnit.insertAdjacentHTML('afterend', kicker); window.ramp.que.push(function () { window.ramp.addTag('pw-f5fff455-ff49-4c2d-b5e6-1a917058f586'); }); }, { once: true }); } } tag.remove(); })(document.getElementById('script-f5fff455-ff49-4c2d-b5e6-1a917058f586'));
' ].join(''); if ( adsScript && adsScript === 'bandsintown' && adsPlatforms && ((window.isIOS && adsPlatforms.indexOf("iOS") >= 0) || (window.isAndroid && adsPlatforms.indexOf("Android") >= 0)) && adsLocations && adsMode && ( (adsMode === 'include' && adsLocations.indexOf(window.adsLocation) >= 0) || (adsMode === 'exclude' && adsLocations.indexOf(window.adsLocation) == -1) ) ) { var opts = { artist: "", song: "", adunit_id: 100005950, div_id: "cf_async_60a60ace-ab1a-43b3-9e7e-4cd4c7cbb121" }; adUnit.id = opts.div_id; if (target) { target.insertAdjacentElement('beforeend', adUnit); } else { tag.insertAdjacentElement('afterend', adUnit); } var c=function(){cf.showAsyncAd(opts)};if(typeof window.cf !== 'undefined')c();else{cf_async=!0;var r=document.createElement("script"),s=document.getElementsByTagName("script")[0];r.async=!0;r.src="//srv.tunefindforfans.com/fruits/apricots.js";r.readyState?r.onreadystatechange=function(){if("loaded"==r.readyState||"complete"==r.readyState)r.onreadystatechange=null,c()}:r.onload=c;s.parentNode.insertBefore(r,s)}; } else { adUnit.id = 'pw-60a60ace-ab1a-43b3-9e7e-4cd4c7cbb121'; adUnit.className = 'pw-div'; adUnit.setAttribute('data-pw-' + (renderMobile ? 'mobi' : 'desk'), 'sky_btf'); if (target) { target.insertAdjacentElement('beforeend', adUnit); } else { tag.insertAdjacentElement('afterend', adUnit); } window.addEventListener('DOMContentLoaded', (event) => { adUnit.insertAdjacentHTML('afterend', kicker); window.ramp.que.push(function () { window.ramp.addTag('pw-60a60ace-ab1a-43b3-9e7e-4cd4c7cbb121'); }); }, { once: true }); } } tag.remove(); })(document.getElementById('script-60a60ace-ab1a-43b3-9e7e-4cd4c7cbb121'));