Changelog: Monday, November 24
Happy Monday. In the three weeks since our last changelog, we've celebrated National Pizza with the Works but not Anchovies Day. We also celebrated National Absurdity Day for those of you who want anchovies.
We recently completed an extensive QA process of the updated Neon Checkout experience, squashing 61 bugs over the past few weeks! Some of the highlights:
- Rohan added two new fields to our API and docs,
itemsSubtotalAmountandtotalExcludingTaxesAmount, and deprecatedsubtotalAmountto clear up an inconsistency with our naming patterns- Conventionally,
subtotalAmountrefers to the item total (i.e. the total amount before discounts; sometimes after taxes, if the country typically includes taxes in item prices). We used it to refer to the total excluding taxes, i.e. the amount used to calculate the payout (after fees) in our APIs, but used "Subtotal" to label the item total correctly in the UI - To avoid making a backwards-incompatible change (or versioning the API), we instead now provide two new fields;
itemsSubtotalAmountrefers to the item total before discounts, i.e. the conventional definition of "subtotal", andtotalExcludingTaxesAmountrefers to the total minus taxes, i.e. the amount previously referred to assubtotalAmount subtotalAmountis still available, but deprecated. Please update your integrations accordingly.
- Conventionally,
- Elangeni updated our standard error page to match our new design system
- Hailey fixed a bug where a PayPal purchase for an unavailable item (e.g. an expired offer) could still be started (but not completed)
- Hailey and Shreyas fixed a few text inconsistencies for specific error messages and expiration scenarios
- Jinting fixed a bug that prevented deleting the last card in the Neon Wallet
- Jinting fixed an issue that caused item images to flicker when collapsing and expanding the cart summary in Checkout
- Jinting fixed a bug that caused certain SVGs to render incorrectly in MS Edge
- Luis updated the favicons in Checkout to use the developer logo instead of the Neon logo
- Rohan fixed an issue with merging accounts that caused the default card on the source account to be unmarked as the default on merge
- Shreyas fixed an issue with the selected payment method disappearing when rotating from landscape to portrait mode on mobile devices
- George fixed a number of bugs with certain analytics events missing specific properties they were intended to have
- Luis and Shreyas fixed a few visual regressions with the purchase and refund confirmation emails
Meanwhile, we updated our Developer Dashboard to support game-level account provisioning, meaning that we can now create user accounts that only have access to a specific game.
- Elangeni moved our permissioning system from Auth0 to in-house
- Elangeni updated the permissions logic to work at the property level instead of the developer level
Neon now supports games without a game server! You can read more in detail here.
- Jinting added client-side checkout creation and purchase claim endpoints
Promo Codes now support account-level restrictions! You can now create a promo code via the Developer Dashboard that's restricted to a specific set of account IDs.
- Shreyas added account ID restrictions to promo codes
Neon now supports analytics exports to Google Cloud! Contact your Neon support team for more information.
- Shreyas added GCS exports for our analytics event data
Our analytics events now track server-side events more accurately:
- George updated our handling of server-side event device IDs
- Our analytics provider uses a "device ID" to match events from the same device together, allowing device information (browser, device type, etc) to persist across all events matching that device ID
- For server-side events, there necessarily is no device ID; previously, we used a static device ID to simulate the Neon server; however, this caused that device ID to get rate-limited, and caused some event pollution (since if that device ID were ever tagged mistakenly with any device information, all server-side events would be tagged with the same device information)
- Now, we instead use a random device ID each time when calling our analytics provider; however, when providing analytics exports to developers, we still use the same static ID to maintain analytics pipelines
And, as always, miscellany:
- George fixed an issue that caused the transaction review page in the Developer Dashboard to show timestamps in UTC instead of the user's local time zone
- Elangeni updated our payment method buttons to stretch and shrink to fit the label, rather than having a fixed width and cutting off overflow with "..."
- Rohan added minimum order sizes to free-item Promo Codes
