diff --git a/packages/ember-htmlbars/lib/env.js b/packages/ember-htmlbars/lib/env.js
index 9486e1570bd..353fbebcac7 100644
--- a/packages/ember-htmlbars/lib/env.js
+++ b/packages/ember-htmlbars/lib/env.js
@@ -80,7 +80,6 @@ import partial from 'ember-htmlbars/keywords/partial';
import input from 'ember-htmlbars/keywords/input';
import textarea from 'ember-htmlbars/keywords/textarea';
import yieldKeyword from 'ember-htmlbars/keywords/yield';
-import legacyYield from 'ember-htmlbars/keywords/legacy-yield';
import mut, { privateMut } from 'ember-htmlbars/keywords/mut';
import readonly from 'ember-htmlbars/keywords/readonly';
import getKeyword from 'ember-htmlbars/keywords/get';
@@ -95,7 +94,6 @@ registerKeyword('partial', partial);
registerKeyword('input', input);
registerKeyword('textarea', textarea);
registerKeyword('yield', yieldKeyword);
-registerKeyword('legacy-yield', legacyYield);
registerKeyword('mut', mut);
registerKeyword('@mut', privateMut);
registerKeyword('readonly', readonly);
diff --git a/packages/ember-htmlbars/lib/keywords/legacy-yield.js b/packages/ember-htmlbars/lib/keywords/legacy-yield.js
deleted file mode 100644
index 17324987cc4..00000000000
--- a/packages/ember-htmlbars/lib/keywords/legacy-yield.js
+++ /dev/null
@@ -1,24 +0,0 @@
-import ProxyStream from 'ember-metal/streams/proxy-stream';
-
-export default function legacyYield(morph, env, _scope, params, hash, template, inverse, visitor) {
- let scope = _scope;
- let block = scope.getBlock('default');
-
- if (block.arity === 0) {
- // Typically, the `controller` local persists through lexical scope.
- // However, in this case, the `{{legacy-yield}}` in the legacy each view
- // needs to override the controller local for the template it is yielding.
- // This megahaxx allows us to override the controller, and most importantly,
- // prevents the downstream scope from attempting to bind the `controller` local.
- if (hash.controller) {
- scope = env.hooks.createChildScope(scope);
- scope.bindLocal('controller', new ProxyStream(hash.controller, 'controller'));
- scope.overrideController = true;
- }
- block.invoke(env, [], params[0], morph, scope, visitor);
- } else {
- block.invoke(env, params, undefined, morph, scope, visitor);
- }
-
- return true;
-}