Duolingoworks offline but limited
Best overall language learning app
Duolingo is by far the most popular and modern way to learn a language today and deservedly so. It's free, fun to use, well designed, and very effective especially when starting out with a language. Their science based approach lets you learn via listening, translation, and some speaking and specifically is set up not so you just memorize vocabulary but so that you actually understand how a language works, like usage and grammar. However, many quickly outgrow it and want more advanced vocabulary, which is why it's usually combined with apps like Memrise.
Best flashcard app for learning vocabulary
Memrise is a well designed and easy to use flashcard style app that's great at helping you remember vocabulary words through a variety of methods including associating them with images. An effective strategy that many use is to learn the basics with Duolingo and then master advanced vocabulary with Memrise.
Official Memrise courses are guaranteed to be high quality, but anyone (including you) can make flashcard sets. These community created ones are plentiful, easy to find, and many are great quality. The best ones have audio spoken by native speakers, which is a big time saver.
Great for remembering hard vocabulary long term
Anki is a powerful flashcard system that advanced students of all academic pursuits swear by, not just for learning languages. It's great for helping you remember difficult items like your anniversary using a technique called spaced repetition (which other apps use, but not this well) and by letting you customize it to your heart's content.
However, Anki's design isn't as user friendly as apps like Duolingo and syncing between multiple devices is a pain, so it's harder to set up and get right. The iOS app also costs $25 (although the rest is free). If you're set on becoming a master though, investing the time and money into Anki can be worth it.
Learn by reading and listening to books
David enjoyed reading and listening to books as a way to learn languages but found it slow to constantly look up words he didn't know, so he decided to fix his own problem and create Beelinguapp. It displays a story in two languages side by side while giving you the option to have it be read out loud. The stories are translated and narrated by native speakers so you know it's right.
Currently Android only, but an iOS version is on the way. Some stories do cost money to read, but they're cheap.
Learn through conversations and talking to people
Tandem is a fun service that pairs people who are interested in speaking each other's languages and improve together. They add nifty features to make it easier like setting a desired topic, being able to correct each other, and providing multiple ways to converse (text, audio call, video call, photos). You can also pay to talk to professional language tutors. Assuming you already understand the basics, Tandem is an effective way to get to the ultimate goal of any language learner: to have fluid and rich conversations with another person.