Rails engines allow developers to package rails functionality into reusable components. They were introduced into the Rails core in version 3.1 and provide the basic capabilities of a rails application like routes, middleware stack, and plugin support. Engines are useful for sharing code between applications and some popular engines include Devise, Rails Admin, and Tolk. While powerful, engines are not suitable for every application.