Changelog
Follow up on the latest improvements andΒ updates.
RSS
Your dashboard has been redesigned from the ground up to answer one question at a glance:
is everything running OK?
What's new
Health at a glance
β the new top strip shows your active scripts, runs and errors from the last 24 hours, what's running right now (live), and your credit usage with a projection of when you'll hit your limit.Needs attention
β failing scripts now surface themselves. Criticals and warnings across your whole store appear at the top of the dashboard with occurrence counts, deep links to pre-filtered logs, and per-issue dismissal.AI-suggested fixes
β¨ β when a script fails, DataJet's AI analyzes the error, your code, and your configuration, then tells you what went wrong in plain language. When the fix is a code change, you get a side-by-side diff you can apply with one click
β and the issue switches to "Monitoring" until a successful run confirms the fix.Script details pages
β every task now has its own page with an AI-generated description of what it does, statistics, last-run status, performance hints, and its full configuration β no more digging through modals.A better configuration experience
β task and function settings render in a clean two-column layout with grouped sections, named product/collection pickers, inline validation, and unsaved-change protection.Global configuration page
β shared variables and secrets moved out of a modal into a dedicated page, including a "used by" column showing which tasks reference each value.Logs
β logs open in a slide-out panel with severity, date, and category filters, live streaming, and one-click export. "View logs" from Needs attention lands you exactly on the errors that matter.AI descriptions everywhere
β scripts and
checkout functions now get automatic plain-language descriptions: a one-liner in the list and a full explanation on the details page.The Functions Console gets a fifth category:
Cart Transform
. Write JavaScript that reshapes the cart itself β bundle products together, break bundles apart, or change how lines are presented, with any logic you can express in code.- π§© Mergeβ combine several cart lines into a single bundle line, with an optional bundle discount.
- π¦ Expandβ split one line (a bundle SKU) into the component items it contains.
- π¨ Updateβ override a line's title, image or price (Shopify Plus and development stores).
How it works
Open the
Cart Transform
folder in the Functions Console and click Add new
. Pick the General
family, or Tags
to build rules around product and customer tags β think "merge everything tagged bundle
into one discounted line". Write a function body that returns transform operations; the starter code documents the exact shapes, and the editor's autocomplete knows your input inside out.Turn the function on and it runs on
every cart change
β buyers see merged bundles and expanded components in the cart immediately, no checkout required.A few things worth knowing
- Each store can have onecart transform function β it's the single place your cart-reshaping logic lives.
- The function's title is internal β buyers never see it.
- Bundle parent variants and component IDs are best kept in variables, so merchants can point the rule at different products from the dashboard without touching code.
- Like all functions, cart transforms are freeβ they don't consume credits.
- Cart transforms fail open: if your code errors, the cart is left unchanged β buyers are never blocked.
- The AI assistantcan build cart transforms for you β describe the bundle logic in Build with AI and review what it writes.
Full guide and ready-made examples in the docs:
Functions β Cart Transform
.The Functions Console gets a fourth category:
Discounts
. Write JavaScript that applies automatic discounts at checkout β any rule you can express in code, from "10% off tagged products" to "amount off orders over a threshold for returning customers".- π·οΈ Product discountsβ percentage or fixed amount off individual cart lines, targeted by product, tags, collections or anything else in the input.
- π§Ύ Order discountsβ discount the order subtotal based on cart totals, customer, address, time of day and more.
How it works
Open the
Discounts
folder in the Functions Console and click Add new
. Pick a family β the same 13 families you know from validations and customizations decide which checkout data your code sees β and write a function body that returns discount operations. The starter code documents the exact shapes, and the editor's autocomplete knows your input inside out.Turn the function on and the discount is live at checkout immediately. It also shows up on the Shopify admin
Discounts
page like any other automatic discount, and it combines with your existing discounts.A few things worth knowing
- The function's title is shown to buyersat checkout as the discount name β pick something shelf-ready likeLoyalty 10% off.
- New discount functions are created turned offso you can review the code first. Active discounts count toward your plan's active-function limit, and Shopify allows up to 25 active automatic discounts per store.
- Like all functions, discounts are freeβ they don't consume credits.
- Discounts fail open: if your code errors, checkout continues with no discount applied β buyers are never blocked.
- Query and code variables work exactly like in the other categories, so merchants can tweak thresholds and percentages from the dashboard without touching code.
- The AI assistantcan build discount functions for you β describe the rule in Build with AI and review what it writes.
Full guide and ready-made examples in the docs:
Functions β Discounts
.You can now write JavaScript that runs
inside Shopify checkout
β synchronously, on every order, enforced by Shopify itself. Where scripts react to events after they happen, Functions let you set rules that apply before
the order is placed.Three things you can build:
- π Cart & Checkout Validationβ block checkout with custom error messages: order limits, address rules, customer restrictions, or any other condition you can express in code.
- π Delivery Customizationβ hide, rename or reorder the delivery options shown at checkout.
- π³ Payment Customizationβ hide, rename or reorder payment methods.
How it works
Head to the new
Functions Console
in the app and click Add new
. Pick a family β it decides which checkout data your code receives (cart, customer, addresses, tags, selling plans, time and more) β and write a plain JavaScript function body. The editor gives you full autocomplete for your input data, adjustable variables
so values like thresholds can be changed without touching code, and built-in version history
β every save is committed, and you can view diffs and restore any previous version.A few things worth knowing:
- No credits usedβ functions run on Shopify's infrastructure, so they don't consume DataJet credits. They're included on the Advanced plan and higher, and free on development stores.
- Fail-open by designβ if your code ever throws, checkout continues unaffected. Broken code never blocks your buyers.
- Merchant-friendly configurationβ on the dashboard, each function exposes a simple form for adjusting its variables, so anyone on the team can tweak a limit without opening the editor.
- Build with AIβ the AI Assistant can create and update functions for you; just describe the rule you need.
Not sure where to start? We've collected ready-to-use examples β order limits, PO Box blocking, B2B payment rules, free-shipping perks for loyal customers, and more.
The number of simultaneously active functions depends on your plan (Advanced: 1, Pro: 5, DataJet: 25). See the Functions documentation for full details.
Managing many open tasks just got easier.
Right-click a tab
for quick actions:- Closeβ close the tab (with a heads-up if it has unsaved changes)
- Close Othersβ keep just this tab
- Close to the Rightβ tidy up everything after it
- Close Savedβ close all tabs without unsaved changes
- Close Allβ start fresh
Drag & drop to reorder
β grab any tab and drop it where you want it. Your tab order is remembered, so it's right where you left it next time you open the Developer Console.Closed a tab by accident?
β₯β§T
(Alt+Shift+T) brings it back.The Developer Console just got a lot faster to move around in. Press
ββ₯K
(Ctrl+Alt+K) β or ?
β anytime to see the full shortcut list right in the editor.Find things instantly
- βP / Ctrl+Pβ Quick-open: start typing a task name and jump straight to it, no sidebar scrolling needed
- ββ§F / Ctrl+Shift+Fβ Search across the code ofallyour tasks at once. Results show the matching line, and picking one opens the task and jumps right to it β unsaved changes are searched too
Work across tabs
- ββ₯β / ββ₯β(Ctrl+Alt+β/β) β Switch to the previous / next editor tab
- ββ₯W(Ctrl+Alt+W) β Close the current tab (you'll be asked before unsaved changes are discarded)
- β₯β§T(Alt+Shift+T) β Reopen the tab you just closed
- ββ§S / Ctrl+Shift+Sβ Save all tabs with unsaved changes in one go
And more
- ββ§H / Ctrl+Shift+Hβ Open the version history of the current task
- Tabs now show a dot indicatorwhen they have unsaved changes β and those changes are kept safe when you switch tabs, open the variables panels, or navigate to another page and back
- The old favorites still work: βSsave,βRrun,βB / βJ / β\to toggle the sidebar, logs, or both
new
Export logs
You can now export a script's full log history and have it delivered straight to your inbox β no more scrolling through the log viewer or copying entries by hand.
Open the
action menu
next to any script and choose Export logs
, enter the email address to send to, and we'll do the rest in the background.Switching between scripts in the editor now feels instant and remembers exactly where you left off.
- Folds and position are preservedβ collapsed code regions (query definitions, JSON tags,ifblocks, etc.), scroll position, and cursor location are kept per script. Jump to another tab and back and your view is exactly as you left it.
- Instant tab switchingβ scripts are already loaded in memory, so we removed the old loading skeleton. Tabs now swap the moment you click, with no flicker or delay.
- No cross-tab bleedβ in-editor changes stay tied to their own script, so opening variable panels or switching tabs never carries content into the wrong file.
Editor tabs
- Open multiple scripts at once and switch between them with tabs above the editor. Click the Γ to close.
- Tabs persist per user β your last open tabs and active tab are restored when you come back.
Collapsible layout
- Side panels can be collapsed via thin clickable rails between columns; collapse state persists per user.
- Editor now takes whatever horizontal space is left, so columns no longer get squeezed at narrow viewports.
- Smooth animation on collapse/expand.
Keyboard shortcuts
- Cmd/Ctrl + Bβ toggle left sidebar
- Cmd/Ctrl + Jβ toggle right logs panel
- Cmd/Ctrl + \β toggle both (focus mode)
You can now define repeatable sections inside variables, making it easier to manage structured, multi-item content (lists of features, FAQ items, testimonials, etc.) directly from DataJet.
- Define a section once, reuse it across as many entries as you need.
- Edit content in one place; every storefront output updates together.
Load More
β