Version 0.10.0

September 7, 2026 · 100 changes

Early Access is open: you create your account with no invitation, whatever your country. The rest is a long list of fixes, several of them in your favour on billing and on your recovery phrase.

These notes describe WIGGWIGG as it was when this version came out. Some changes apply only to the web app or only to the mobile apps, and mobile changes arrive with the matching app update. Prices and plans may have changed since. See current pricing

New features 2 changes

Create your account from any country, with no invitation

You create a WIGGWIGG account from any country, with no invitation and no seat limit. The account, the vault, contacts, two identities, and the 30-day Vault Premium trial cost nothing, wherever you are. Phone numbers, the 7-day Canadian-number trial, and anything paid, including Vault Premium after the trial, require a Canadian province you select and confirm yourself for taxes. Open registration includes no promised sign-up credit, and a validated invite code keeps the terms it displays.

Your devices are added automatically, and you choose which ones ring

After you accept the updated Privacy Statement, your devices appear automatically when you sign in to WIGGWIGG and unlock your data. If you previously chose not to use calling devices, that choice remains in effect until you turn them back on. By default, devices that are ready can ring. You can name them and remove the ones you no longer use. In the web app, you can also choose which devices ring for each number. Custom names are encrypted on your device.

Fixes 79 changes

The free trial on a number can be activated again

For a few days, starting the free trial failed on every number, whatever you did: a generic error, then “reservation expired” on a number you had just reserved. Five defects sat one behind the other on the same path. All five are fixed, and activation succeeds on the first try while your reservation is live.

Buying a number asks one question at a time

The page had you build a paid plan before revealing, four steps later, that you did not have to. It now asks who owns the number, offers the free trial, then lets you build a plan if you want one. The trial card says what it includes, what happens when it ends, and what becomes of a unit pack chosen below it. The price shown separates what recurs each month from what is charged once. The mobile app follows the same order.

A new account is no longer told about versions released before it

An account created today opened its first session to a “What’s New” badge for a version released a week before it existed. Release notifications no longer reach back before your sign-up. And starting the trial after your 30-minute reservation on a number has expired now tells you the reservation is over, instead of showing you a server error.

The cart button opens your cart again

From the Contacts, Phone, Messages and Vault tabs, tapping the cart icon played the press animation and did nothing else, so nothing could be bought from the app. The cart now opens from every tab.

The cart says why a line is $0 instead of guessing

An add-on added to a running subscription is $0 in the cart because it bills on the subscription’s next invoice. The cart called that an early-access perk, called any $0 basket a free trial, warned about a 30-minute reservation with no number in the cart, and dated an add-on’s renewal from today. It now reads what it holds: a trial, an add-on deferred to the next invoice, or a purchase covered by your credits, each with its own wording.

The cart no longer shows a first month at $0 that nothing covered

The cart mistakenly priced the first month of a number plan at $0 for every Early Access account, with no perk behind it: the subscription then renewed at full price, with nothing backing that $0. No free month is part of Early Access. The cart now follows the same rules billing does and shows the real price from the first month.

The subscription page names the plan you actually have

A pay-per-unit line could show under the name “Lite”, because a plan change never updated the name. And the header printed the plan’s base price where the subscription total belongs, which made two prices for one page. The name now follows your plan, the header no longer shows the base price as if it were your total, and that line is called “Base Price”.

An add-on you paid for works as soon as you buy it

Some voicemail add-ons had been billed and never activated: callers were hung up on instead of reaching voicemail, and the owner could not save a greeting. Activation and purchase now happen in the same transaction, and an activation that fails makes the purchase fail instead of passing in silence. The affected accounts have been repaired.

Checkout is always in Canadian dollars

The payment page could offer a US-dollar price beside the Canadian one, with a warning about exchange fees. Your taxes are computed in Canadian dollars from your province, and your invoice is a Canadian-dollar document; the payment page no longer offers another currency.

Paying with bitcoin from the cart works

The cryptocurrency pay button spun and then did nothing: no address was ever generated. It now leads to a payment page with the amount, the address, a QR code, the confirmations and the expiry. A purchase completes on its own once the payment is confirmed, a pending address is reused if you come back, and a failed payment tells you so and that nothing was charged. A saved wallet is bitcoin only.

A paid invoice shows that it is paid, everywhere

Settling an invoice never recorded the amount received, so a paid invoice kept its pre-payment balance forever. Six screens, including the tax document, printed a balance owing on an invoice marked paid. The amount your card actually paid is now recorded and the balance drops to zero. This covers purchases; subscription renewals follow in a later fix.

Your purchase notification shows what your card was charged

The purchase notification added the subtotal and the taxes without subtracting your credits, so a purchase settled partly with credits announced a higher figure than your card was charged. It now shows what your card paid, and names the credits you used. On mobile this is the only place that figure is shown to you.

A unit pack paid by card is refunded to the card

The choice between refunding a card and issuing credit rested on a figure settlement never kept up to date, which would have returned card money as non-cashable credit once that figure was corrected. The choice now rests on the invoice total. Your data export also wrote the remaining balance where the subtotal and total belong; it now writes the real amounts, and so does the lifetime figure on the transparency page.

A refund is recorded on your invoice

When a refund was granted, the invoice could not move to “refunded”: the system refused that status, and everything that was supposed to follow the refund, including withdrawing the refunded service, was abandoned in silence. The status is now accepted, it is only written on an invoice that was actually paid, and the invoice list and detail show it correctly. The amount returned does not appear on the invoice yet; that follow-up is under way.

The receipt page no longer asks for the same invoice every two seconds

After a purchase, the receipt page asked the server for the same invoice every two seconds for a quarter of an hour, spent your account’s request budget, and locked the rest of the app behind a warning about your identities. The page now stops asking, a list that was already loaded stays on screen when its refresh fails, and the app retries on its own once the limit lifts.

Building a plan no longer promises voicemail

The plan line said “Voicemail and a dedicated identity included”. Voicemail is an add-on, not an inclusion; the line now says a number adds an identity slot. The Vault Premium note now says it is the trial that needs no card. And on the web, opening the notification list now marks it read, incoming texts and missed calls included; the setting stays in the menu if you prefer the old behaviour.

A text or picture the carrier does not deliver gives its unit back

The unit comes off when the carrier accepts your text, because that is the only moment we can take it. Its verdict arrives later, sometimes hours later, and nothing gave the unit back when that verdict was a failure. A text the carrier refused, or accepted and then did not deliver, now gives its unit back, and a picture follows the same rule. A text whose delivery is never confirmed stays charged: nobody can say it failed. If returning the unit fails on our side, we fix it by hand: tell us about a text that was not delivered and stayed charged.

A picture costs the price shown on the rates page

The price of a picture sent internationally was worked out from the text rate instead of the published picture rate, which produced a far higher amount than the rates page shows. Calling and texting abroad is not available yet, so nobody paid it. When international opens, the published price will decide, and a test now blocks any gap between the price shown and the price charged.

An international text that is not delivered will return its amount

An international send takes its amount off your International Balance before it leaves, and until now it came back only if the carrier refused the send outright. Calling and texting abroad is not available yet. When international opens, a text the carrier refuses, or accepts and then drops on the way, will return its amount, once, even if the notice reaches us several times. As with a text in Canada, a text with no delivery confirmation stays charged.

A text blocked by your sending limit tells you why, and that limit covers all your numbers together

Before, a text refused because you had reached your sending limit showed an English error about a content policy violation. It was not one: you had simply sent a lot of texts in a short time. The retry button stayed there, and every attempt was refused the same way. Now the text tells you that you have reached your account’s sending limit, which counts across all your numbers together, and invites you to wait for room to free up. The retry button is gone, because waiting is the only thing that resolves it. Reaching this limit costs you no trust points.

Signing back in within 30 days cancels your account deletion

Our screens tell you that deleting your account becomes final after 30 days, apart from the records the law or the security of the service requires us to keep, and that you can cancel until then. Nothing put that promise into practice: the only way to cancel was a control none of your pages offered, and asking for deletion closes all your sessions. Signing all the way back in, second factor included, now cancels the deletion, exactly as the promise says.

Account recovery shows you your new phrase before changing anything

When you recover your account with your 24 words, WIGGWIGG now shows you your new recovery phrase and has you confirm it before saving your new password. Nothing changes until you have confirmed. If the page loses your 24 words along the way, it asks for them again instead of failing, and if an old phrase can no longer unlock your data, it tells you clearly.

Your recovery phrase stays valid after a password change

Changing your password while keeping your 24 words no longer makes them unusable: WIGGWIGG now refuses any change that would leave your phrase unable to unlock your data. If your account holds encrypted data or a second sign-in check without an active recovery phrase, WIGGWIGG tells you so and holds new entries until you create one. Accounts whose phrase predates this update are offered a one-time step to bring it up to date with the same 24 words.

Your recovery words appear without a wait

Creating an account on a phone froze for about 30 seconds before the 24 words appeared, with nothing on screen to say so. The computation now runs off the interface. Nothing changes in the words or in what they protect; an older build keeps the old path, slower but identical.

Account creation moves one step at a time

The account-creation steps opened as sheets over the form, which stayed readable underneath, account ID and password included. Each step now takes the whole screen. The 24 words stay concealed until you ask to see them, and the step that called itself the last one no longer does.

Signing out removes the device from notifications

A manual sign-out never removed the device’s push registration, so the account kept sending pushes to a device it no longer served. Deregistration is now the last request of the session, before the session is closed.

An Early Access invite code shows the terms

The Early Access terms were shown according to the general launch state, not the offer your code gave you. An invite code leading to Early Access therefore created an account without ever showing them or recording your acceptance. The terms now follow your code’s offer, on web and mobile.

A new account can get a number without an identity first

A freshly created account has no identity; the number search let you search, tap Reserve, then show an error. A panel above the search now creates your first identity in one tap, and says what it does before you tap. The welcome credit earned by creating it is disclosed afterwards, in a note, rather than by the full-screen celebration.

A contact edited on another device no longer vanishes

Renaming a contact on the web made it disappear from the mobile app, favourites included, until a restart: mobile checked the contact against a stale picture of its vault and quietly set it aside. It now resyncs as soon as a contact or identity changes.

A locked account tells you for how long

After too many password attempts, every screen refused you with the same message and never said how long the lock lasted. The web, the app and the lock screen now tell you what happened and when to try again, and offer account recovery if you no longer remember your password.

Our pages name the Canadian body that receives our reports

When a picture matches material confirmed illegal, the law requires us to keep a copy and send a report to the RCMP’s National Child Exploitation Crime Centre, in Ottawa. The report stays in Canada. Our wording used to name a United States organization that does not receive our reports. The other category, the one the Canadian detector flags as harmful to children, is blocked and kept by our own decision: nothing there is reported as a matter of course, and it is a review concluding it is criminal that leads to a report. The suspension notices, the picture-message consent screen, and the security page now tell that distinction the same way in both languages, and on mobile once the update is installed.

Only your own rules can block an incoming call or text

Automated checks warn you without rejecting the call or message. Your most specific personal rule decides whether the call or message is rejected. We removed switches that could not block yet and kept one warning on Apple’s incoming-call screen, “Likely spam,” when confidence is high enough.

Our contact recognition descriptions now mention texts too

Contact recognition has applied to incoming calls and texts from the start, but our descriptions only mentioned calls. The settings card, the Privacy Statement, and the whitepaper now say so plainly, and also spell out what happens to the fingerprints when you turn the option off.

Record your screening announcements from your phone

The “Record by phone” option did not work. You called your number, you recorded your pickup announcement or the prompt for your callers, and the recording landed in your voicemail instead of replacing the announcement. This is fixed. Like the text read by a synthetic voice and the audio files you upload, this recording is readable by our servers, because the phone network is what has to play it during the call. Our privacy pages now name it.

Call screening actually rings you

Caller-intro screening had never rung anyone since it launched: the caller recorded their intro, then waited in silence until they gave up. Announce mode failed too, silently, for any caller whose carrier supplied a name, and the call came straight through as if the setting were off. Both work: your device rings, hears a short line and then the intro, and the pound key ends a recording wherever the prompt promises it. Callers now hear that they are being recorded and have ten seconds after the beep, then ringback while they wait. A caller you do not accept gets whatever your number already does on no answer, your own greeting included, instead of a generic one. A declined intro is no longer filed in your voicemail.

The voice list loads again

One voice badly described by the provider failed the whole list, so the voice pickers for your greeting and your screening showed nothing. A voice whose gender is unknown is no longer presented as male by default, web and mobile apply the same rule, and an empty list is treated as a passing outage rather than the retirement of the voice you had chosen.

A locked iPhone can answer a call

On a passcode-locked iPhone the call rang, slide-to-answer did nothing, and the app ended the call: the session data needed to answer was only readable once the phone was unlocked. It is now readable after the first unlock since boot, on that device only. Your master key stays protected as before.

Answering from the lock screen keeps the call up

Even once a locked iPhone could answer, the call dropped a second and a half later: the registration made when the app woke was already stale, and the hang-up intent from a previous call applied to the next one. A reinstall could also ring the same iPhone twice for one call. All three are fixed.

The app no longer overloads your account with reconnections

A reconnect loop re-registered the device every few seconds, spent your account’s request budget in minutes, and showed “Too many requests. Please wait.” when you had done nothing; the account’s other devices were blocked without saying so. The loop is cut at its source, a reconnection waits out a known limit instead of spending into it, and a blocked device stays blocked for less time.

Removing your emergency address removes only the address

Removing an address asked the carrier to disable the number’s emergency service, not only to drop the address. 911 does not switch off: add, edit and remove apply to the address, and the service is part of the number. A removal that half-failed also left your civic address at the carrier; it now completes. Our records are corrected; if your number has no emergency address, it now says so and asks you to add one. The app and our FAQ talk about the address rather than a 911 that could be switched on or off.

Calls to 911 use none of your units

A 911 call was metered like any other call, and could even bill at the overflow rate on an account past its balance. It is now marked at dial time and never metered.

Adding picture messaging to a trial number works

Adding the MMS add-on to a trial number failed with no explanation: the dialog never showed the photo check you have to consent to. All four web purchase screens now share one consent panel, and a refusal is explained in your language. The “add an emergency address” reminder on a number’s card could never appear; it now shows when an address is missing and clears as soon as one is saved. A trial that carries add-ons also shows the amount its first renewal would bill.

The security sound plays on Safari for iOS

During signup, the control that plays your anti-phishing security sound stayed silent on Safari for iOS while it worked elsewhere. The sound now plays as soon as you press it, with an indicator while it gets ready, and playback is unchanged on other browsers.

Settings search takes you straight to contact recognition

Contact recognition on calls existed, but settings search could not find it, on web or mobile. Searching for “contacts,” “recognition,” or “address book” now takes you straight to the setting, whether you want to turn it on or off.

Your identities no longer disappear after unlocking

After unlocking, your identities could disappear until you refreshed the screen. They were still there. The complete list now reloads on web and in the mobile app. If something still gets in the way, the screen tells you clearly.

Contacts added on the web show their details again

A contact added on the web could appear without a phone number, email address, or call and message buttons even though its details were still saved. Its card now shows the right primary phone number and email address, along with the actions that depend on them.

Fetching your two-factor code no longer interrupts your sign-in

At the two-factor step, leaving the app to open your authenticator, or simply taking a screenshot, wiped the pending challenge. What was left was a sheet with no field, no control to verify, and no way forward: only signing in again from the start got you out. Your verification screen now waits for you when you come back.

WIGGWIGG lets you know when a voicemail arrives

A new voicemail did not tell you. No notification on your phone, no entry in your notification list, no count on the Phone tab. You had to open your voicemail to find it. This is fixed: you now get a notification when the message arrives, and it takes you straight to the right number. Marking a message read or deleting it no longer fires a false notification on your other devices.

Your voicemail messages play again in the web inbox

The web inbox showed “Couldn’t load this recording” for every voicemail received since the last encryption update: the player demanded a key those recordings do not need, then handed it the still-encrypted message as if it were a corrupt audio file. The player now asks for the right key and refuses to play anything but a decrypted recording.

Picture messages send from the app

Sending a picture from the app failed: the carrier refused the way we handed it the image, and the error told you the recipient’s number was invalid. A picture message is never end-to-end encrypted, so the carrier has to receive a readable copy. We place it behind a secret link that expires within minutes, the carrier fetches it, and we erase it. Your own copy, once past the illegal-content check, stays sealed in your account. Our privacy pages describe this hand-off.

You can send and see pictures from the web app

The web composer offered to sell you the MMS add-on your number already has, and hid the attach button with it, so no picture could leave from the web. Received pictures did not display either, for the same reason as voicemail. Both are fixed, and sending now goes through the same path as on mobile, the one that encrypts the image.

The unread mark on a conversation goes away when you read it

Opening a text conversation left its badge at 1, open after open: the web counted one column and the server marked another. Both now count the same thing, a message that arrived while the tab was in the background is marked when you come back, and marking a conversation unread holds until you open it again.

Outage and maintenance notices now reach you even when your account shows a warning

The notice bar at the top of the app showed only one message at a time. Some account warnings never go away until you act on them, such as two-factor authentication to turn on or more identities than your plan allows. Those warnings always won, so the people carrying one never saw outage or scheduled maintenance notices. The bar can now show a service notice underneath an account warning. Lower-priority news still waits its turn, so the bar does not become a wall.

The French wording for accomplishments is the same everywhere

The web used two words for the same thing and two verbs for unlocking an accomplishment, while notifications and the mobile app already used one of each. The settled term and verb are now everywhere, with three grammar mistakes fixed and one emoji removed from interface text.

The What’s New page now follows your language

Switching language on the What’s New page translated the heading but left the release notes in the other language until you reloaded. Everything changes at once now, and the address follows too: in French it is /nouveautes. A release’s date also showed a day early, and that is fixed. The release notes now carry an index of every change, and you can copy a link to a single change to share it.

Pasting your two-factor code works again

The long press that offered Paste stopped appearing: a code copied from your authenticator had to be retyped digit by digit. An explicit Paste control replaces the gesture. It works on both platforms, a screen reader can reach it, and it accepts only content holding exactly one code, so a phone number in your clipboard cannot submit itself.

Older messages show their date

The time shown in a web conversation carried no date and followed your device’s zone rather than your account’s, so a thread spread over weeks read as one afternoon. The date and time now appear in your language, the way they do in the mobile app.

The credit from an achievement is readable in both themes

The credit pill in the achievement celebration drew its amount in the same colour as its fill: invisible in dark mode, faint in light. The banner’s title and description also lacked contrast. All of it is readable, and the amount uses your language’s format.

A disabled button is still readable

A disabled button was made half transparent twice, once for the button and once for its label, which left the label nearly invisible in light mode. A disabled button is now an opaque muted surface with a readable label, for every variant. A busy button keeps its colour.

Buttons on the calling and verification screens are readable in both themes

The phone-number colour was applied seven different ways, and one of them left white text too faint on the two-factor and phone-verification confirm buttons. Four number tiles also rendered a dull steel blue in dark mode, because their gradient was invalid. Tiles now share one recipe, two-factor takes the security colour, and an automatic check keeps white text from coming back on a fill too pale for it.

Dates show in your language and your time zone

The invoices page printed its dates in US English beside French labels, and other pages passed France French or US English to the formatter. Some pages also came up blank because the date the server computed did not match the browser’s. Every date now carries your language and your time zone.

The site says “achievement credits” and says “up to”

The site used five French names for the same credits; one remains: “achievement credits”. The credits page also announced an amount as a grant: it is a ceiling, in five one-dollar tasks, one of which needs a number and therefore a Canadian province. It now says “up to”, with the condition, and no longer mentions trial credits or multi-month discounts that do not exist.

Improvements 17 changes

The free-trial details are easier to read

The seven trial sentences ran as one pale grey block. They are now grouped into paragraphs, in a readable colour, and your chosen number sits in its own block at the top of the setup step, as on the web.

The number search stops rearranging itself

Saving a number jumped it to the top of the results, under your cursor. Results now keep the order they arrived in, saved numbers have their own section above, and the red heart is replaced by the same yellow star as everywhere else. Two notices that did not help choose a number have left the search page; the province is still asked at the point where it matters.

The welcome-credit steps have a permanent home

Hiding the list on the dashboard made it disappear for good, and nothing else said which steps earn a credit. The credits page now keeps it as a reference, collapsible but never hidden. The card’s buttons were also nearly invisible in both themes; they read now, and hiding the list no longer looks like a destructive action.

Your recovery phrase is part of creating your account

On the web, creating an account now ends with your 24-word recovery phrase, with no step to skip. You see it, you keep it, you confirm it, and the account is created. It is your only way back in if you forget your password: WIGGWIGG cannot replace it for you.

With no recovery phrase, WIGGWIGG says so and holds new additions

If your account holds data only a 24-word phrase can recover and that phrase does not exist, both web and mobile say so at all times, with the link to create one. Everything you already have stays readable and usable, and this message affects neither your calls nor your messages. Adding new contacts or new vault entries waits for your phrase, whether one at a time or by import, because adding is the one thing that grows what you could lose.

Copying your recovery words keeps the numbering

Copying gave 24 words on one line, while the website expects the numbered list the web produces. Mobile copy is now numbered, one word per line, tells you if it failed, and the clipboard is cleared after 30 seconds as long as the app stays open.

Identity fields copy the way contact fields do

Every identity field now has a Copy button and long-press to copy, with a confirmation. Every identity value is treated as protected: the copy is kept out of the clipboard preview and keyboard history on Android, and the app clears the clipboard after 30 seconds if it is still open. Hidden fields hide themselves again when you leave the app. Screen readers hear the label and the displayed value, never a masked one, and the edit screen is translated.

Our newsletter form now collects only what it needs

The newsletter form accepted the page you arrived from, the browser and device you were using, and three campaign tracking codes, on top of your email address. It no longer accepts them, but what was collected before this change stays on file. It now asks for your email address, the list you chose, your language, and a short label saying where the signup came from. A country is asked only for international updates, where it tells us which countries people are asking about. When a signup fails, the technical note it leaves holds neither your email address nor your country.

The sign-up screens read more plainly

The sign-up panel answered a question nobody had asked about a sign-up credit; it now says what registration includes. The trust badge on the home and sign-in pages names the four encrypted data classes, passwords, identity information, contacts and stored message content, no more, and is no longer a link. The responsible-disclosure page is a link in the welcome step. On mobile, the warning under the 24 words explains why a screenshot is a risk, and the three badges stack instead of sharing the screen in three columns.

The “See my rules” link looks like a link

It rendered as small grey text with its icon stranded at the far edge of the card. It now has a link’s colour, its icon beside it, a large enough target, and a name assistive technology announces.

The mobile apps page offers one choice, with the right file

The page asked the same question twice: three cards at the top, then the same buttons lower down. Each card now ends in what it promises, the web app or its own Android variant with the version, date and file fingerprint. A variant with no file available no longer offers a button to nothing.

The credits page thanks the people who gave time, and says the mascots are AI-generated

The page announced three contributor categories and named people in only one. It now has a design section and a founder’s note for the helping hands: a loaned old iPhone, more than fifty bug reports, and the support of family. Crediting the tools behind Patch and the Wiggs makes public, for the first time, that all mascot art is AI-generated from the founder’s own reference images; our page on how we use AI says so too, with the intention to hire an illustrator when the project can pay for one.

The banner asking you to refresh for a new version is gone

A blue band appeared at the top of the app to tell you a new version was ready, and refreshing forced you to unlock your vault again. The interruption cost more than it gave, so it is gone. You still get the latest version whenever you open or reload the app normally. A tab left open for a very long time may keep running the version it started with.

Security 2 changes

A failed unlock attempt leaves your session locked

In some cases a failed unlock attempt could reopen your session unlocked without asking for a factor again. Your session now stays locked until an unlock succeeds, and a lock required by your security policy applies immediately. Unlocking with a time-based code or a passkey keeps working.

Link to this change