Vue definitely has some bugs around this. I find that although registering a component like so
components: { MyComponent }
will work most of the time, and can be used as MyComponent or my-component automatically, sometimes you have to spell it out as such
components: { 'my-component' : MyComponent }
And use it strictly as my-component