Custom Field is disabled
After both your field and your field instance are created, you need to enable it in the related form:

entity_get_form_display('node', $bundle, 'default')
  -&gt;setComponent('field_custom', array(
    'type' =&gt; 'string'
  ))
  -&gt;save();