I’m building a Shopify POS UI extension app using Remix. The app consists of a backend in the routes directory and doesn’t use a database (except for Shopify’s default session storage).
I’ve deployed the app using AWS and SST, following the guide. I’ve set up the Shopify CLI and deployed via a Lambda function. Also updated the callback URLs in Shopify Admin with the SST-generated Lambda URL.
The problem is that after installing the app, I get a 500 error(Application Error) when trying to use it, and it fails to connect to the SST-provided URL.
Do I need to troubleshoot this in AWS or elsewhere, like Shopify Admin or SST config? Any advice on debugging or common issues with this setup would be helpful!
A 500 Application Error means the issue is on your server, not in your Shopify settings.
The request is reaching your AWS Lambda function, but the code is crashing during execution. The first and most important step is to check the AWS CloudWatch logs for your function, as they will contain the exact error message.
The crash is almost always caused by one of two things: either you are missing critical environment variables like SHOPIFY_API_SECRET or the correct APP_URL in your sst.config.ts file (as these are not automatically deployed from your .env file), or your app is still using the default SQLite-based session storage, which is incompatible with a serverless environment and must be replaced with a solution like DynamoDB.
In short, inspect your CloudWatch logs, and the error will almost certainly point to your environment variables or session storage configuration.
A 500 error after deploying a Shopify POS UI extension with Remix on AWS via SST often points to a backend issue. First, check the CloudWatch logs for your Lambda function. This is the most direct way to see the specific error causing the 500. Common causes include misconfigured environment variables (e.g., SHOPIFY_API_KEY, SHOPIFY_API_SECRET), incorrect callback URLs that prevent the OAuth flow from completing, or a problem with session storage initialization. Verify that the SST-generated URL in your Shopify app’s admin panel matches the one used by your extension. If the logs are unclear, review your sst.config.ts to ensure all necessary resources and permissions are correctly defined. The problem is likely in the interaction between Shopify’s request and your Lambda’s code or configuration, so focusing on AWS and your SST setup is the best approach.