Changelog

What's new in Opslane

New features, improvements, and fixes shipped in Opslane, newest first. RSS feed

  1. Improved

    Digest replay links open at the moment the problem happens

    Replay links on known-problem cards in the daily digest used to start at the beginning of the recording, so you had to scrub through a long session to find the part that mattered. They now open at the moment Opslane confirmed the problem.

    A card that fails Opslane’s own checks is also held back and written again the next day. Before, it went out as a rough fallback with a minified title and no Why line. And on a day with nothing to act on, the digest skips Slack entirely.

    Shipped inv26.8.24v26.8.25

  2. Fixed

    Replays play back at the width your user saw

    Until this fix, the session player squeezed every recording into its own width. Responsive apps replayed in a narrow layout the user never saw, clicks landed on the wrong element, and pages that scroll inside a container never showed the scrolled part.

    Replays now render at the recorded viewport and scale down to fit the player, so the cursor lands where the user actually clicked and the scroll position matches the recording. Links that open a replay partway through keep the right width too, even if the user resized their window earlier in the session.

    Shipped inv26.8.9v26.8.24

  3. Fixed

    Numeric user IDs no longer turn off session recording

    If your app passed a number to setUser, such as an autoincrement database ID, the server rejected the session. Recording stopped for those signed-in users, and their errors arrived without a user attached.

    setUser accepts user and account IDs as strings, safe integers, or bigints, and sends them as strings. Numbers too large for JavaScript to represent exactly are ignored, so pass those IDs as strings. Update to @opslane/sdk 4.2.1 to get the fix.

    Shipped in@opslane/sdk@4.2.1

  4. Improved

    Problems found in recordings are confirmed before they reach you

    Opslane used to group findings from session recordings by category and page, and that was too loose. One digest reported a date-picker bug as affecting 91 users when only one recording showed it. The other recordings on that page had unrelated problems.

    Now each finding is matched to a specific known problem: a particular control, the action taken on it, and the symptom. After three recordings match, Opslane re-reads them against that exact description. The problem is published only when at least three recordings confirm it and at least 40% of the checks agree. If identified users are involved, it needs at least two of them.

    It shows up in your digest with a Create fix PR button once an investigation finds a code cause that explains at least half of the confirmed evidence. Fixes for these problems wait for you to ask, unless you turn on automatic fixes for the project. The friction guide has the full rules.

    Shipped inv26.8.22

  5. New

    Set up Opslane from your coding agent

    Paste this into your coding agent:

    Set up https://docs.opslane.com/INSTALL.md

    The agent installs the SDK, identifies signed-in users, checks that an error from your app reaches Opslane, and sets up source-map uploads. It stops when it needs you: to approve the project in your browser, and to choose whether to connect GitHub, Slack, CI secrets, and MCP. At the end it can open a pull request containing only the setup changes.

    @opslane/sdk 4.2.0 shipped alongside it with two additions for Next.js apps. You can send SDK traffic through your own domain with a Next.js rewrite by setting endpoint to a same-origin path like /opslane. The new opslane-sourcemaps command uploads source maps after next build, Turbopack output included, and works with other bundlers too.

    Shipped inv26.8.20v26.8.21@opslane/sdk@4.2.0

  6. Improved

    Digest cards say what broke and why, in plain words

    Early digest cards leaned on internal terms and walls of numbers. Each card now has a plain title, a short description of what users ran into, and a one-sentence Why line drawn from the stored root cause. Impact figures such as visits this week come straight from Opslane’s measurements; the model that writes the card never types a number.

    Every card ends with one of three asks: approve the proposed fix, review the fix PR, or decide how to handle the issue. Cards also stopped saying a fix attempt failed when no fix ever ran.

    If an issue has no recording from its current stretch of waiting, the Watch replay button falls back to an older complete recording of the same issue instead of disappearing.

    Shipped inv26.8.16v26.8.17

  7. Improved

    Coding agents get the session timeline and the full diagnosis

    Two new MCP tools hand your coding agent more of the evidence Opslane already stores about an issue.

    opslane_session_timeline returns the browser activity around an error: network calls with their status and duration, plus console errors. It also lists failing requests from up to a minute before and after, each with the user action that triggered it. opslane_related_events counts the events and issues that share an error message and the people they reached, so an agent can see how far a bug spreads when it’s split across several issues.

    opslane_issue got more detail too. It lists the files the investigation identified as the cause, in ranked order, with the date and commit the diagnosis was made against. It shows up to three failing requests and a pointer to the session replay. And it returns the whole root cause instead of cutting it off partway.

    Shipped inv26.8.12v26.8.13

  8. Improved

    The daily digest is a native Slack message

    The daily digest is now a native Slack message split into two sections, Needs a decision and Fixes ready to merge, with buttons to watch the replay, review the PR, or open the issue. Before, it arrived as one long block of text.

    An issue waiting on your decision also keeps appearing in each digest, with how long it has been waiting, until someone acts on it. Before this change, issues found in session recordings could wait for days without ever showing up in the digest.

    Shipped inv26.8.9v26.8.10

  9. New

    Work Opslane issues from Claude Code or Codex over MCP

    Opslane runs a remote MCP server. Connect Claude Code or Codex, and your agent can read your latest digest, open an issue with its evidence, and link the pull request that fixes it without leaving the terminal.

    Create an MCP key under Project settings → API keys (it starts with opslane_ak_), then add https://app.opslane.com/mcp to your agent with the key as a bearer token. On a self-hosted server, use your own Opslane address instead. The MCP guide has the exact commands.

    There’s also a Claude Code skill for working through the digest. It fixes diagnosed errors on its own. For problems found in session recordings, where the right fix is a product call, it asks you which behavior you want before it writes any code.

    Shipped inv26.8.9

  10. New

    Errors now carry the timing of nearby network requests

    From @opslane/sdk 4.1.0, error events include timing for the fetch and XHR requests around them: which were still in flight, how long each took, and when the response headers arrived. For a timeout, that tells you whether the server never answered or the response stalled partway through.

    Since August 29, your coding agent can read these timings with the opslane_session_timeline MCP tool.

    Shipped in@opslane/sdk@4.1.0v26.8.3

  11. Improved

    Environments are created from the SDK label

    Set environment in init, and Opslane creates that environment the first time an event or recording uses it. You no longer create environments by hand.

    A missing or invalid label goes to the project’s default environment, which starts as production and can be changed under Settings → Environments. Labels are case-sensitive, so Staging and staging are two different environments. If staging traffic shows up as production, check that every non-production build sets the label. The environments guide covers the details.

    Shipped inv26.8.2

  12. New

    Readable stack traces from your Vite source maps

    Add the Opslane plugin to your Vite build and set OPSLANE_SOURCEMAP_KEY in CI. On each production build, the plugin uploads your source maps and removes them from the output, so they never ship to the browser. Opslane uses them to turn minified stack traces back into your real file names and line numbers when it investigates an error. No API returns a map once it’s uploaded.

    This release also split API keys in two. The ingest key in your browser bundle starts with opslane_pk_. The source-map key is a secret that stays in CI, and it starts with opslane_sk_.

    If you’re upgrading from an earlier SDK: version 3.0 rejects the old def_ keys, so create a new ingest key and redeploy. Version 4.0 reads the upload address from the source-map key itself, so create a fresh source-map key and delete OPSLANE_ENDPOINT from CI. The source maps guide has the setup.

    Shipped inv26.8.0@opslane/sdk@3.0.0@opslane/sdk@4.0.0