Underscore.js defines a default variable called 'obj' for use in referencing your JS data from your HTML templates (see https://github.com/documentcloud/underscore/blob/master/underscore.js#L1027). lodash will read the default data variable name from lodash.templateSettings.variable, which does not exist - just like in Underscore.js. lodash fails if an underscore template use 'obj' without explicitly setting the variable name to 'obj' in the call to _.template. This breaks the "drop-in replacement" requirement.