Use Case
User types a search query in a Block Extension → clicks a button → navigates to Action Extension → I want to pre-fill a form field with that search query.
What I’ve Tried
1. URL Query Parameters
// Block Extension
navigation.navigate(`extension:my-action?query=${encodeURIComponent(searchTerm)}`);
// Action Extension
const urlParams = new URLSearchParams(window.location.search);
const query = urlParams.get("query"); // Always null
2. Session/Local Storage
sessionStorage.setItem("data", JSON.stringify({ query }));
// ReferenceError: sessionStorage is not defined
3. Shopify Data Object
const { data } = shopify;
// No custom parameters found
Question
Is there an official way to pass custom data between extensions during navigation, or do I need a server-side approach (temporary metafields/database storage)?
Minimal Example
// Extension A (Block)
const handleNavigate = () => {
const userInput = "some value";
// How to pass userInput to Extension B?
navigation.navigate("extension:my-action");
};
// Extension B (Action)
const Extension = () => {
const [formValue, setFormValue] = useState("");
// Need to pre-fill formValue with data from Extension A
};
Any guidance appreciated!