I assume you have application exports in some version management system.
Usually there is separated development, test and production systems.
So you work on test environment and users use production. If changes are ok, then you move those to test, for user testing. And when tests are passed you move to production.
If you do not have separated enviroments, you can copy application to new id and make changes. Users continue use old app id.
If changes are ok, you export application and import it back to old id.
One trick I use is to give end-users only the application alias in the URL to the application. By controlling which application ID will have the 'production URL' with the application alias it is easy to have 2 versions of the applications online.
0.) Make development copy (export-import) of your current production application
1.) Apex --> Edit Application Definition --> Name:alias -- give your current production application alias e.g. prod_foobar
and give your development version application alias e.g. dev_foobar
3.) When you want to toggle your development version to replace the current version,
just set the current version to unavailable
and change the alias to something e.g. obsoleted_foobar
and change the alias in the development version to prod_foobar
Note 1 you can place URL redirect with friendly message to the "Unavailable (with URL redirect)" which takes care of the end-users who have bookmarked the old application id.
Note 2 on the same Apex instance the application aliases need to be unique, or otherwise you need to give the workspace as well in the URL, see trick for that from here