How to list installed apps on a iOS simulator

This lists apps from a named simulator, converts to json, then finds non-apple apps.

xcrun simctl listapps "iPad Air (5th generation)" \
| plutil -convert json -o - -- - \
| jq '. | keys | .[] | select(. | startswith("com.apple") | not)'

This requires that you know the name of your simulator and have jq installed.

You can also replace the device name with booted if you want, but I prefer to use the name of the simulator.

Here are the docs for using a simulator name versus booted for simctl.

For subcommands that require a <device> argument, you may specify a device UDID
or the special "booted" string which will cause simctl to pick a booted device.
If multiple devices are booted when the "booted" device is selected, simctl
will choose one of them.

Note: as far as I can tell, there are no docs for listapps or even anything stating its existence in the man page for simctl.