{"record":{"id":"63a71866c3aae348","repo":"DioxusLabs/dioxus","slug":"notarization-requires-either-apple-id-apple-pa","errorCode":null,"errorMessage":"Notarization requires either:\n- APPLE_ID, APPLE_PASSWORD, and APPLE_TEAM_ID env vars, or\n- APPLE_API_KEY, APPLE_API_ISSUER, and APPLE_API_KEY_PATH env vars","messagePattern":"Notarization requires either:\n- APPLE_ID, APPLE_PASSWORD, and APPLE_TEAM_ID env vars, or\n- APPLE_API_KEY, APPLE_API_ISSUER, and APPLE_API_KEY_PATH env vars","errorType":"exception","errorClass":"anyhow::Error","httpStatus":null,"severity":"error","filePath":"packages/cli/src/bundler/macos.rs","lineNumber":877,"sourceCode":"    let apple_team_id = std::env::var(\"APPLE_TEAM_ID\").ok();\n    let api_key = std::env::var(\"APPLE_API_KEY\").ok();\n    let api_issuer = std::env::var(\"APPLE_API_ISSUER\").ok();\n    let api_key_path = std::env::var(\"APPLE_API_KEY_PATH\").ok();\n\n    let mut cmd = Command::new(\"xcrun\");\n    cmd.args([\"notarytool\", \"submit\"]);\n    cmd.arg(notarize_path);\n\n    if let (Some(key), Some(issuer), Some(key_path)) = (&api_key, &api_issuer, &api_key_path) {\n        cmd.args([\"--key\", key_path]);\n        cmd.args([\"--key-id\", key]);\n        cmd.args([\"--issuer\", issuer]);\n    } else if let (Some(id), Some(pwd), Some(team)) = (&apple_id, &apple_password, &apple_team_id) {\n        cmd.args([\"--apple-id\", id]);\n        cmd.args([\"--password\", pwd]);\n        cmd.args([\"--team-id\", team]);\n    } else {\n        bail!(\n            \"Notarization requires either:\\n\\\n             - APPLE_ID, APPLE_PASSWORD, and APPLE_TEAM_ID env vars, or\\n\\\n             - APPLE_API_KEY, APPLE_API_ISSUER, and APPLE_API_KEY_PATH env vars\"\n        );\n    }\n\n    cmd.arg(\"--wait\");\n\n    tracing::info!(\"Submitting {} for notarization...\", notarize_path.display());\n    run_command(&mut cmd, \"xcrun notarytool submit\").await?;\n\n    tracing::info!(\"Stapling notarization ticket...\");\n    let mut staple_cmd = Command::new(\"xcrun\");\n    staple_cmd.args([\"stapler\", \"staple\"]).arg(staple_path);\n    run_command(&mut staple_cmd, \"xcrun stapler staple\").await?;\n\n    tracing::info!(\"Notarization complete for {}\", staple_path.display());\n    Ok(())","sourceCodeStart":859,"sourceCodeEnd":895,"githubUrl":"https://github.com/DioxusLabs/dioxus/blob/24f6a829df0dfa203961a98ea4cae21c2ff27e28/packages/cli/src/bundler/macos.rs#L859-L895","documentation":"The notarization step found neither a complete App ID credential set (APPLE_ID+APPLE_PASSWORD+APPLE_TEAM_ID) nor a complete API key set (APPLE_API_KEY+APPLE_API_ISSUER+APPLE_API_KEY_PATH) in the environment. `xcrun notarytool submit` requires one full set, so the step bails listing both options.","triggerScenarios":"Thrown at packages/cli/src/bundler/macos.rs:877 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":["Set the notarization credentials: either APPLE_ID, APPLE_PASSWORD, and APPLE_TEAM_ID, or APPLE_API_KEY, APPLE_API_ISSUER, and APPLE_API_KEY_PATH."],"exampleFix":null,"handlingStrategy":"validation","validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"backgroundTag":null,"analyzedSha":"24f6a829df0dfa203961a98ea4cae21c2ff27e28","analyzedAt":"2026-08-23T07:10:14.078Z","contentChangedAt":"2026-08-23T07:10:14.078Z","schemaVersion":2},"datasetVersion":"2026-09-14T05:17:10.506Z"}