An app shows data to the user through the User Interface (UI). When the data changes, the app must update the UI accordingly.
In an imperative approach, the UI is not updated automatically. The programmer must update the UI manually, through imperative instructions. The imperative approach is laborious and error-prone, as the complexity of the task grows exponentially with the number of UI elements.
In a declarative approach, the UI is updated automatically. First, the developer states that an UI element is to be linked with a certain data element. Then, at runtime, the library listens for data changes and update the UI element accordingly. The automation removes the "out of sync" errors and makes for shorter code.
The React library provides such automation and enables development of better web apps. You can learn more about React.