1. A computer-implemented method for developing a device agnostic application comprising: analyzing an application having one or more user interface components; extracting the user interface components from the application; building the user interface with the user interface components from a centralized repository; and extending the application having the one or more the user interface components to a plurality of channels or devices.