SwiftKey Keyboard has been my go to keyboard app for the last couple of years.
The keyboard uses Artificial Intelligence to automatically learn your writing style, including the emoji you love to use (if you use emoji), the words that matter to you and how you like to type. That means autocorrect and predictive text that actually works because it adapts to you.
Highly customisable but many of the themes used to cost money. However, with the latest update to the Android app I noticed that these in-app purchases have been scrapped! 8)