Changelog
What changed in Marvey, newest first, each dated by the day the work was merged. Marvey is in private beta, so teams in the beta also hear about changes from us directly, in writing.
Staging and production in one project
A project now has environments. Production comes with every project, and you can add staging or anything else you run. Until now a staging app meant a second project, with its own issues, wiki and Slack.
- Each environment keeps its own end users, events, survey responses, posts, push devices, referrals and invite codes. A build only sees board posts from its own environment, and the same user id in staging and production is two different people.
- Issues, the wiki, the changelog, Slack and your team stay shared. Lists in the dashboard carry an environment badge and filter, and a selector in the header switches between environments.
- Each environment has applications, one per platform. New SDK keys belong to an application and server keys to an environment, all on the new Apps & environments page. Keys you already have keep working.
- A feedback form is one definition for the whole project, live in the environments you choose. In the CLI,
--envpicks the environment, andforms publishandforms unpublishmove a form between them.
- Beta
Invite codes
You can now keep your app closed to everyone without an invite code. The invite gate is new and in beta.
- Opt in when you configure the iOS SDK and it shows a gate at launch until someone enters a valid code. A switch in the dashboard turns gating on and off without an app release.
- Create codes yourself or let Marvey generate them, and email them one at a time or in bulk.
- Embed the access-request form on your website. Requests land in the dashboard, and approving one emails the person a code.
- A code can be claimed any number of times. Your backend can look a code up, create one or revoke one with a server key, and decide whether one code admits one person.
The users list shows your app's version
The users list showed the SDK version where the app version belonged, so everyone on the current SDK looked like they ran the same build. Each user now shows the version of your app from their latest event, with the SDK version labelled as such.
Connecting Google Play also comes with a step-by-step guide: the service account and its key in Google Cloud Console, then the three app permissions to grant it in Play Console.
The dashboard keeps you signed in
The dashboard was signing people out about once an hour, most often with more than one tab open. Tabs now share one session, an expired session is renewed before you are sent to the sign-in page, and a dropped connection no longer signs you out.
Session replay on bug reports
A screenshot report from the SDK can now carry a session replay: a recording of the screens and touches, with your app's events on a timeline you can click through. It plays on the post in the dashboard. A report holds one replay of up to 10 MB, and like debug files it is never shown back in the app, not even to the person who filed the report.
A written summary on the Slack digest
The weekday digest can now open with a few sentences written by Claude, Anthropic's model, in place of the plain list of counts and links. The replies under it keep their lists of what changed.
- Only the activity that digest covers is sent to Anthropic: titles, statuses, excerpts and comments for the posts and issues in it. Email addresses and tokens are never sent.
- It runs on our key and is on by default. Each Slack installation can switch it off.
- If the summary cannot be written, the plain list posts as before, on time.
Feature previews, and feedback linked to issues
- Feature previews: a native coming-soon sheet tied to a post. Your app opens it with the post's id, your team writes the copy in the dashboard, and the main button votes for the post and follows it. Once the post is done, the sheet switches to its available copy with a link to your store listing.
- Followers now get a push when a post moves to planned, in progress, done or won't do. Voting on a post follows it, so voters hear too. Until now the only automatic push about a post went to its author, on approval.
- Your team can write a post from the dashboard. It is published straight away and starts as planned, which is how a feature gets on the board before anyone has asked for it.
- A post can be linked to an issue: open one prefilled from the post, link an existing issue, or unlink it. Several posts can share an issue, and the issue shows the feedback behind it.
Slack digests, and the end of webhooks
Feedback and issue activity no longer posts one Slack message per event.
- At 09:00 on weekdays, in the timezone you set, the Slack app opens one digest thread for feedback and one for issues. Each post or issue gets a single reply that day, edited in place as more happens, with the same buttons as before.
- Releases and store reviews still post as they happen.
- The older incoming-webhook path, for Slack and for Discord, is gone. Slack notifications now come only from the Slack app, and Discord is no longer supported.
Debug files on bug reports
Your app can attach debug files, such as logs or a JSON dump, to a screenshot report: up to five per report, 10 MB each. They show on the post in the dashboard as downloads and are never shown back in the app.
The Slack app
Instead of pasting a webhook, you install a Slack app into your workspace from project settings.
- Pick a channel for each of feedback, issues, releases and store reviews.
- Approve or reject a pending post, change an issue's status or take it with Assign to me, without leaving Slack. A click acts as the dashboard user with the same verified email, with that person's permissions.
- Links to posts and issues in the dashboard unfurl into previews.
/wandkit issuecreates an issue, and/wandkit searchfinds issues and posts. - The bot token is encrypted at rest, like every other credential you connect.
- Earlier
Already in the build before September
Everything below shipped before the dated entries above, and all of it still ships.
In your app
- Event-triggered surveys. Fire an event, the backend decides whether a survey comes back. Six page types: stars, thumbs, multiple choice, free text, notifications opt-in and a thank-you page, with branching on the answer.
- Trigger rules: exactly the Nth or every Nth occurrence of an event, a cooldown, an app version rule, and a priority order when more than one survey qualifies.
- A feedback board with posts, votes, threaded comments, follows, reports and image or video attachments. Every post created from the SDK is held until a team member approves it. Pre-moderation is mandatory and cannot be switched off.
- Duplicate suggestion at submit time. As someone types a title, the five most similar existing posts appear so they can vote instead of filing again.
- Screenshot bug reports, opt-in. iOS signals that a screenshot was taken and the SDK re-renders your own window, so it never touches the photo library and there is no permission prompt.
- Push notifications through APNs, including one to the author when their post goes live.
- Theming for accent, stars, corner radius, color scheme and font. Anonymous users can read; identify() is required to post, vote or comment. An offline queue holds work until the network returns.
In the dashboard
- Post triage with full-text search, status, type and moderation filters, and a command palette.
- Moderation queue, reports, end-user bans, pinned official replies, internal notes and duplicate merging, plus an erasure endpoint for one end user.
- A form builder with branching, publish, pause and archive, and per-form metrics: impressions, responses, dismissals, completion rate, thumbs split, star histogram, per-option counts and individual responses.
- A releases board for App Store Connect and Google Play covering the live build, builds in flight, phased rollout, review state and an activity timeline, with a needs-attention strip for builds stuck in review or approved and unreleased. An App Review rejection files an issue automatically.
- Store reviews with replies, campaigns, referrals and reward grants (in beta), ad-hoc push to a single user, a users directory, a raw log of incoming SDK events (no analytics on top of it yet), an issues kanban with five columns, and a flat markdown wiki.
- Organizations, member roles, invitations and auto-join by email domain.
- How you hear
How beta teams hear about changes
From us, and from their own repository.
DirectWe write to you
If something changes that affects your integration, you hear it from us in writing, including whether there is anything to do about it on your side.
info@wandkit.appSDKYou control the upgrade
A Swift package with zero runtime dependencies, iOS 15 and up. Pin the version in Swift Package Manager and move when it suits your build, not ours.
Swift Package ManagerForms as codeDiff your survey copy
Pull your forms into your repo as JSON. Your own git history then becomes the record of every copy and branching change you make.
pull · diff · push · validateTerminal # survey copy, tracked where the rest of your code is wandkit forms pull wandkit forms diff forms/onboarding.json wandkit forms push forms/onboarding.json
- Access
Want to know when something changes
If you are in the beta, you already hear from us. If you are not, write to us and we will tell you where access stands. Either way, info@wandkit.app reaches us.