Wanted to share my solution as I felt the other answers weren't very clear.
Magento ver. 2.3.4-p2
I don't want to just hide it (CSS trick above would suffice if I wanted to) but rather remove it to reduce resources on the browser and server.
I overrode the Magento_Checkout::view/shipping.phtml
file in a module and removed the 2 blocks of code that render this section.
Here are the 2 blocks of code that need to be removed from view/shipping.phtml
Heading
<div class="title" data-role="title">
<strong id="block-shipping-heading" role="heading" aria-level="2">
<?= $block->getQuote()->isVirtual()
? $block->escapeHtml(__('Estimate Tax'))
: $block->escapeHtml(__('Estimate Shipping and Tax'))
?>
</strong>
</div>
Content
<!-- ko template: getTemplate() --><!-- /ko -->
This is the full solution:
Override the template via a modules layout xml file (could also be done via your theme if wanted):
app/code/Your/Module/view/frontend/layout/checkout_cart_index.xml
<?xml version="1.0"?>
<page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:View/Layout/etc/page_configuration.xsd">
<body>
<referenceBlock name="checkout.cart.shipping">
<action method="setTemplate">
<argument name="template" xsi:type="string">Your_Module::cart/shipping.phtml</argument>
</action>
</referenceBlock>
</body>
</page>
Then add the modified template file:
app/code/Your/Module/view/frontend/templates/cart/shipping.phtml
<?php /** @var $block \Magento\Checkout\Block\Cart\Shipping */ ?>
<div id="block-shipping"
class="block shipping"
data-mage-init='{"collapsible":{"openedState": "active", "saveState": true}}'
>
<div id="block-summary"
data-bind="scope:'block-summary'"
class="content"
data-role="content"
aria-labelledby="block-shipping-heading"
>
<script type="text/x-magento-init">
{
"#block-summary": {
"Magento_Ui/js/core/app": <?= /* @noEscape */ $block->getJsLayout() ?>
}
}
</script>
<script>
window.checkoutConfig = <?= /* @noEscape */ $block->getSerializedCheckoutConfig() ?>;
window.customerData = window.checkoutConfig.customerData;
window.isCustomerLoggedIn = window.checkoutConfig.isCustomerLoggedIn;
require([
'mage/url',
'Magento_Ui/js/block-loader'
], function(url, blockLoader) {
blockLoader(
"<?= $block->escapeJs($block->escapeUrl($block->getViewFileUrl('images/loader-1.gif'))) ?>"
);
return url.setBaseUrl('<?= $block->escapeJs($block->escapeUrl($block->getBaseUrl())) ?>');
})
</script>
</div>
</div>