BlogChangelogDocsPricing
LoginSign up
All systems operational

Product

  • Dashboard
  • Documentation
  • Pricing
  • Changelog

Company

  • Blog
  • Brand Assets
  • Support

Legal

  • Privacy Policy
  • Terms of Service
  • Acceptable Use
© 2026 Nitric Inc.
DiscordXLinkedIn
All UpdatesFeatureImprovementFixAdjustment
RSS Feed
Apr 2, 2026Fix
Apr 2, 2026Fix

Canvas node positioning and selection fixes

A round of fixes to how nodes behave on the deployment canvas:

  • Services no longer appear behind the config panel when added to the canvas. Centering now accounts for the side panel width.
  • Adding a new service opens the config tab automatically. Switching between existing services preserves whichever tab you were on.
  • Unmounting a volume no longer sends it off screen. Detached volumes now reposition next to their parent node.
  • Undo after deleting a node restores it to its original position on the canvas.
Mar 20, 2026Fix
Mar 20, 2026Fix

Variable masking improvement

Switched environment variable masking from native input type toggling to CSS-based masking. This fixes cross-browser inconsistencies where some browsers would offer to save masked values as passwords or interfere with copy/paste behavior.

Feb 9, 2026Fix
Feb 9, 2026Fix

Canvas viewport improvements

Fixed several canvas viewport issues:

  • New nodes now center correctly in the viewport regardless of sidebar state
  • Fixed offset calculation when the sidebar is open, so nodes don't appear shifted
  • Volume deletion no longer causes sync issues that could desync the canvas state
Jan 19, 2026Fix
Jan 19, 2026Fix

Resource name validation

Resource names are now validated before deployment to catch naming issues early. Previously, invalid names (too long, unsupported characters) would only fail at deployment with cryptic error messages. Now you get clear feedback in the UI before you deploy.

Dec 30, 2025Fix
Dec 30, 2025Fix

Google Translate compatibility

We fixed several issues where Google Translate broke the Suga dashboard for users with auto-translate enabled in their browser.

The problem#

Google Translate works by walking the DOM and replacing `TextNode` elements with `<font>` elements containing the translated text. This is fundamentally incompatible with React, which maintains references to the original DOM nodes. When React tries to update or remove a node that Google Translate already replaced, two things happen:

  1. Stale content: React updates its reference to the old `TextNode`, but that node is no longer in the DOM. The translated `<font>` element stays unchanged, so dynamic content like form values and status indicators stop updating.
  2. Crashes: When React tries to call `removeChild` on a node that Google Translate already removed, it throws a `NotFoundError` that can crash the entire component tree.

Martijn Hols wrote an excellent deep dive on this exact issue, which informed our approach.

Our fix#

We took two approaches:

  1. `translate="no"` attributes on interactive elements and dynamic content: dialog inputs, endpoint URLs, form fields, and status text that updates in real-time. This tells Google Translate to leave those nodes alone while still translating static UI labels and descriptions.

  2. Wrapping conditional `TextNode`s in `<span>` elements. When React conditionally renders a text node (e.g., `{isLoading ? "Loading..." : "Done"}`), Google Translate can replace the bare `TextNode` before React swaps it out, causing the `removeChild` crash. Wrapping these in a `<span>` gives React a stable parent element to work with, which solved a large chunk of the crashes.

This is not a perfect solution (as the blog post explains, there is no complete fix for this incompatibility), but it protects the critical paths where stale or broken content would cause real problems.

Dec 15, 2025Fix
Dec 15, 2025Fix

Deployment stream reliability

Fixed an issue where long-running deployments could time out and lose their connection to the deployment stream. Deployments now maintain a stable connection throughout the entire rollout process, so you always see the final result.