shopify/lighthouse-ci-action
March 11, 2026 · View on GitHub
About this repo | Usage | Authentication | Configuration
About this repo
Lighthouse CI on Shopify Theme Pull Requests using GitHub Actions.
Usage
Add shopify/lighthouse-ci-action to the workflow of your Shopify theme.
# .github/workflows/lighthouse-ci.yml
name: Shopify Lighthouse CI
on: [push]
jobs:
lhci:
name: Lighthouse
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Lighthouse
uses: shopify/lighthouse-ci-action@v1
with:
store: ${{ secrets.SHOP_STORE }}
client_id: ${{ secrets.SHOP_CLIENT_ID }}
client_secret: ${{ secrets.SHOP_CLIENT_SECRET }}
lhci_github_app_token: ${{ secrets.LHCI_GITHUB_APP_TOKEN }}
lhci_min_score_performance: 0.9
lhci_min_score_accessibility: 0.9
Authentication
Dev Dashboard App (recommended — required for apps created after Jan 2026)
- Create an app via the Shopify Dev Dashboard.
- When creating the app version, configure these required access scopes:
read_productswrite_themes
- Install the app on your store.
- Copy the
client_idandclient_secretfrom the app credentials. - Add the following to your repository's GitHub Secrets:
SHOP_CLIENT_ID: the client IDSHOP_CLIENT_SECRET: the client secretSHOP_STORE: Shopify store<store>.myshopify.comURL
Tokens are fetched automatically at the start of each action run and are valid for 24 hours — well beyond the duration of a typical run.
- uses: shopify/lighthouse-ci-action@v1
with:
store: ${{ secrets.SHOP_STORE }}
client_id: ${{ secrets.SHOP_CLIENT_ID }}
client_secret: ${{ secrets.SHOP_CLIENT_SECRET }}
Legacy Custom App (for apps created before Jan 2026)
Important
As of January 1, 2026 Shopify no longer allows creating new custom apps. Existing custom apps continue to work with this method.
- Create the app.
- Click the
Configure Admin API Scopesbutton. - Enable the following scopes:
read_productswrite_themes
- Click
Save. - From the
API credentialstab, install the app. - Take note of the
Admin API access token. - Add the following to your repository's GitHub Secrets:
SHOP_ACCESS_TOKEN: the Admin API access tokenSHOP_STORE: Shopify store<store>.myshopify.comURL
- uses: shopify/lighthouse-ci-action@v1
with:
store: ${{ secrets.SHOP_STORE }}
access_token: ${{ secrets.SHOP_ACCESS_TOKEN }}
Configuration
The shopify/lighthouse-ci-action accepts the following arguments:
Authentication (one method required):
client_id- Client ID for a Dev Dashboard app (use withclient_secret)client_secret- Client secret for a Dev Dashboard app (use withclient_id)access_token- Legacy custom app access token (for apps created before Jan 2026)
Store:
store- (required) Shopify store Admin URL, e.g.my-store.myshopify.com.
Optional:
password- For password protected shopsproduct_handle- Product handle to run the product page Lighthouse run on. Defaults to the first product.theme_root- The root folder for the theme files that will be uploaded. Defaults to.collection_handle- Collection handle to run the collection page Lighthouse run on. Defaults to the first collection.pull_theme- The ID or name of a theme from which the settings and JSON templates should be used. If not provided Lighthouse will be run against the theme's default settings.lhci_min_score_performance- (default: 0.6) Minimum performance score for a passed audit (must be between 0 and 1).lhci_min_score_accessibility- (default: 0.9) Minimum accessibility score for a passed audit
For the GitHub Status Checks on PR. One of the two arguments is required:
lhci_github_app_token- (optional) Lighthouse GitHub app tokenlhci_github_token- (optional) GitHub personal access token
For more details on the implications of choosing one over the other, refer to the Lighthouse CI Getting Started Page