This, a hundred times this. Immersion is not only effective in getting you used to the language, but also really helps you solidify what you've learned, and is extremely motivating.
Virtually all of the people that I know in the Japanese learning community who learned the language really fast heavily immersed in a lot of content.
In my own language learning app that I'm making I'm explicitly targeting a feedback loop which looks something like this:
1) You pick an easy show/book/etc. to consume. (I have a list ranked according to difficulty, generated through machine learning.)
2) You prelearn the vocabulary used within using an SRS.
3) You consume it.
4) You continue maintaining your vocabulary through SRS, so the app knows which words you're supposed to know.
5) The app recommends you the next show/book/etc. to consume based on what you've already learned.
6) Rinse and repeat. Gradually the whole thing snowballs and you have to learn less and less for each new work you consume.
I personally believe this to be the most effective way of learning a language, and I'm already seeing some of my users having a lot of success with it.
Here's the link in case you want to take a look: https://jpdb.io
Just a fair bit of warning: it still has ways go to, so don't expect a perfectly polished experienced. That said, in spite of its rough edges I do already have users who use it do hundreds of cards per week and successfully immerse, so it is usable.
You share Twitter accounts with a service, and it would use the tweets of that account to generate a language course.
I was hoping that this would lead to learning something that I could use right away.
Right now the system is a mixture of SRS on your own, sourcing vocabulary from songs and podcasts, and combined with immersive multiplayer mini-games with the native speaking partner.