gracefully handle empty appId