1. A method comprising: initiating a preview graphical user interface (GUI) of a new Internet of Things (IoT) device within an IoT development application, wherein the preview GUI includes one or more graphical elements including a plurality of user-modifiable fields associated with one or more IoT device attributes; in response to initiating the preview GUI of the new IoT device, determining whether a corresponding real IoT device exists and, if not, then generating a virtual IoT device, wherein generating a virtual IoT device comprises searching for an existing device type definition that has a specific virtual device class set and, if found, using the existing device type definition, or creating a new device type definition if an existing device type definition is not found; associating the virtual IoT device or the corresponding real IoT device with a set of device attributes and presentation definitions; establishing a communication channel between the virtual IoT device or the real IoT device with a mobile app; in response to detecting updates to the attributes and/or presentation definitions from the preview GUI, transmitting the updates to the mobile app, the mobile app dynamically updating the attributes and presentation definitions.