The accepted answer could be related broadly - but I think the original issue posted is specifically to do with Swatches, as we've just found the same issue.
Symptom: When you load a configurable product which uses swatches, by using a url hash to set the options, the correct swatch is selected, but the tier price block doesnt render.
Url will look something like: www.domain.com/my-conf-product#153=22
I've traced the issue to;
/vendor/magento/module-swatches/view/base/web/js/swatch-renderer.js
Copy this file to your own theme, here;
/app/design/frontend/yourvendor/yourtheme/Magento_Swatches/web/js/swatch-renderer.js
The problem is around line 958, in the function _UpdatePrice, where 'this.options.tierPriceTemplate' is not defined on load, change this:
_UpdatePrice: function () {
var $widget = this,
$product = $widget.element.parents($widget.options.selectorProduct),
$productPrice = $product.find(this.options.selectorProductPrice),
result = $widget._getNewPrices(),
tierPriceHtml,
isShow;
$productPrice.trigger(
'updatePrice',
{
'prices': $widget._getPrices(result, $productPrice.priceBox('option').prices)
}
);
isShow = typeof result != 'undefined' && result.oldPrice.amount !== result.finalPrice.amount;
$product.find(this.options.slyOldPriceSelector)[isShow ? 'show' : 'hide']();
if (typeof result != 'undefined' && result.tierPrices && result.tierPrices.length) {
if (this.options.tierPriceTemplate) {
tierPriceHtml = mageTemplate(
this.options.tierPriceTemplate,
{
'tierPrices': result.tierPrices,
'$t': $t,
'currencyFormat': this.options.jsonConfig.currencyFormat,
'priceUtils': priceUtils
}
);
$(this.options.tierPriceBlockSelector).html(tierPriceHtml).show();
}
.....
To this;
_UpdatePrice: function () {
var $widget = this,
$product = $widget.element.parents($widget.options.selectorProduct),
$productPrice = $product.find(this.options.selectorProductPrice),
result = $widget._getNewPrices(),
tierPriceHtml,
isShow;
$productPrice.trigger(
'updatePrice',
{
'prices': $widget._getPrices(result, $productPrice.priceBox('option').prices)
}
);
isShow = typeof result != 'undefined' && result.oldPrice.amount !== result.finalPrice.amount;
$product.find(this.options.slyOldPriceSelector)[isShow ? 'show' : 'hide']();
if (typeof result != 'undefined' && result.tierPrices && result.tierPrices.length) {
// PIXIE ADDED - THIS IS EMPTY WHEN USING HASH LOAD
if (this.options.tierPriceTemplate = $(this.options.tierPriceTemplateSelector).html()) {
// PIXIE END
tierPriceHtml = mageTemplate(
this.options.tierPriceTemplate,
{
'tierPrices': result.tierPrices,
'$t': $t,
'currencyFormat': this.options.jsonConfig.currencyFormat,
'priceUtils': priceUtils
}
);
$(this.options.tierPriceBlockSelector).html(tierPriceHtml).show();
}
....