What’s new in Playcode

101 updates in the last 90 days.

New features, improvements and fixes, newest first.

RSSJSON FeedMarkdown for agents

Our rocket on its pad beside a tall board of update cards: the builder pins a fresh card at the top, Play fits a new part to the rocket, and two passing suits stop to stare.

October 2026

FixedPublish

Custom subdomains pin reliably at publish

Asking for a custom subdomain while publishing a cloud app now reliably gives your site that address.

  • The address you ask for is the address you get. A publish that requests a subdomain (in chat, the publish dialog, the API, or the CLI) now pins it the moment the publish succeeds, and the reported site URL uses it. Before, the request could be silently lost and the site answered only at its generated address.
  • You learn the outcome, not a promise. The publish result now states whether the subdomain was pinned, or exactly why it was refused - for example when the name is already taken.
  • Bad names are refused up front. A subdomain that is malformed, reserved, or already in use is refused before the publish starts, so you never wait through a deploy to learn the name cannot work.
  • Changing the address of an already-published app no longer requires a re-publish from the API or the agent - the same subdomain controls the editor always had are now available everywhere.

Try it: Publish my app with the subdomain my-cool-app

FixedBuild

GPT-6 Luna and GPT-6.1 Sol save files again

When your chat runs on GPT-6 Luna or GPT-6.1 Sol, the agent now creates and rewrites files in your project as expected.

  • New files get written. Before, these models could not save a file: the agent tried again and again, and the file never appeared. Edits to files that already existed were not affected.
  • A rejected step says so. If the agent's attempt to save a file is refused, the chat now shows that the step did not go through, and the agent sees why on its next turn instead of repeating the same attempt.

FixedAccount and billing

The chat now says why AI paused

When a message can't run, the chat now always says why - no more empty replies. And when the reason is your cloud computers, the notice says exactly that, with a Top up button - instead of "You're out of credits" next to a meter that still shows credits.

Your credits cover both AI and your cloud computers. When the balance falls close to about a month of your computers' running costs, AI pauses first so your apps stay up. Add credits and the next message runs.

FixedPublish

Publish confirms your site is live

Publishing a website now waits until the site actually serves before it says done.

  • "Published" means live. The editor confirms success only after your site answers at its address. Before, a rare hosting hiccup could show success while the site still served its previous version, or nothing at all.
  • Failures tell you why. If publishing fails, the editor says so and shows the reason - your previous version stays live, and publishing again is always safe.
  • Site previews match the live site. The dashboard thumbnail is captured only after the site is reachable, so a first publish no longer photographs an empty page.

FixedAccount and billing

Your invoices stay in reach after your plan ends

When a plan ends, Settings, Billing & plans shows the plans again - and now also Billing Portal, above them. Choose Open Billing Portal to download the invoices of the plan that ended, or to add a tax ID, in Stripe's billing portal.

Before, the door went away with the plan, and an old invoice took a message to a person. A workspace that never paid has no invoices, so it shows no door.

Read the docs

FixedAccount and billing

Billing stops when your plan or your account does

Playcode no longer charges your card after you leave.

  • Deleting your account stops your plan renewing. The plan of your Personal workspace stays until the end of the period you paid for, then ends, and the delete window says the date. Before, it kept renewing until the account was erased, 30 days later. Team workspaces keep their plans.
  • Auto-recharge ends with your plan. When a plan ends, auto-recharge turns off, and a workspace without a plan is never charged by it.
  • The monthly card maximum counts the whole charge. Each automatic charge is checked against it as charged, the $15 minimum included.
  • The window states the real charge. Auto-recharge settings now shows what each charge takes: what brings your balance back to your level, and never less than $15.

Read the docs

FixedBuild

Voice messages follow Auto-send, and Undo this change asks first

Four fixes in the chat.

  • Auto-send voice messages works. With it on, a finished voice message is sent at once. Turn it off in Settings > AI defaults to check the text before you send it. Before, every voice message was sent at once, whatever the setting said.
  • Voice input uses the project's credits. It is charged to the workspace that pays for the project, as the agent's work is. Before, it used your Personal workspace's credits, even in a team project.
  • Undo this change asks first. Undoing a change also undoes every change the agent made after it. When there are any, Playcode now asks and says how many. The newest change is still undone at once.
  • Memory Records are gone. The agent stopped reading them in July 2026, so the app no longer offers them. Put lasting rules for the agent in the project's AGENTS.md: see Memory.

Read the docs

FixedBuild

Instructions sent to a running build now stick

When you send the agent a new instruction while a build task is already running, that instruction now stays in front of the task until it finishes. Before, it was shown to the task exactly once - mid-work, between two steps - and on a long build the task could lose track of it and finish without it, so you had to ask again. Now a mid-build message keeps its place for the rest of the run, for background tasks and regular chats alike.

FixedPublish

Site names now use hyphens - and old underscore links redirect

Site subdomain names now use hyphens (my-app.playcode.site) instead of underscores. Underscores are not valid in web hostnames, so my_app.playcode.site could never load in a browser - the editor just didn't tell you. Every published site with an underscore name has been renamed to its hyphen twin automatically, old underscore links now redirect permanently to the new address, and your numeric address keeps working as before.

September 2026

FixedAccount and billing

Signing in with GitHub and Microsoft works again

Since March, signing in with GitHub or Microsoft from the Playcode sign-in or sign-up page brought you back to that page, even though you were already signed in. From September 17 to 28 the same buttons led to an error page instead. Both are fixed: you now land in Playcode.

If you started signing up with your email and never finished, signing in with GitHub or Microsoft now finishes it, as long as that account uses the same email address and GitHub or Microsoft has confirmed it.

FixedAccount and billing

Email sign-up works again on our website

For almost two weeks, starting September 16, signing up with email on the Playcode website did not work. Sign-in codes had just become six digits long as part of a round of security hardening, and the code box on our website still accepted only five. The last digit was cut off, so the code could never go through. Sign-up inside the app was not affected.

It's fixed. If you tried to sign up in those days, go back to playcode.io and use the same email. The code works now.

We're sorry. Our automated tests missed this because they still typed an old five-digit test code. They type six digits now, the same as you.

FixedPublish

Turning on www now works for every custom domain

If your domain was connected with an A record - the way most DNS providers connect a root domain - turning on "Also answer at www" failed with a confusing error about Cloudflare, no matter what you changed at your provider. The www setting now follows how your root domain is served: flip the switch, add the one record it shows you, and www goes live on the same address as your root.

FixedBuild

When the AI provider refuses a request, you are told, and not charged

Very rarely, the AI provider's safety filter refuses a request outright and returns nothing. Until now the chat showed an empty reply with no explanation, and the turn was still charged. Both are fixed:

  • You are told. The chat now shows a notice that the provider declined the request, and that the cause is usually something earlier in the conversation rather than your last message. The action offered is Undo & rephrase, because sending the same thing again gets the same refusal.
  • You are not charged for a refused turn that produced nothing.

FixedPublish

A busy month never takes your site offline: bandwidth is included, then metered

Pro includes 100 GB of Playcode Cloud bandwidth a month and Max includes 1 TB. Until today those numbers were enforced as a hard limit: when a workspace crossed it, its published apps were suspended until the next month - with no warning. That was wrong, and it is fixed.

  • Your site keeps running. Past the included amount, Playcode Cloud keeps serving your visitors and the extra traffic is simply metered at $0.05 per GB (0.2 credits), on the same balance as everything else. Nothing is charged for it before September 29, 2026, as announced.
  • You set your own ceiling. Spending controls in Settings → Billing are the only cap - yours, not ours.
  • The pricing page now says exactly this, instead of "100 GB / month", which read like a wall.

If your published apps were suspended by this limit today, they have been restored.

FixedAccount and billing

Sign-in no longer leaves you stuck

Two ways the sign-in window could leave you with nothing to press are fixed:

  • When the Google button cannot load. Some browser extensions, security tools, and office networks stop Google's sign-in button from loading. The window used to show an empty box and stay that way. Now it tells you within a few seconds that Google sign-in is unavailable, and that you can continue with your email instead - your Google address opens the same account.
  • When your browser fills in your email. If your browser or password manager filled in the email field for you, Continue could stay greyed out. It now always works, and if something is wrong with the address, Playcode says what.

FixedBuild

A file that fails to attach now says why

If a file you attached to the AI chat could not be uploaded, pressing Send used to do nothing - no message, no explanation. That is fixed:

  • Attach a file before you sign up. A file added to your first prompt now travels with it. Before, the message could fail to send right after you created your account.
  • You are told at once, by name. When a file cannot be uploaded, Playcode says which file and why - it could not be read from your device (common with files still syncing in OneDrive, iCloud, or Dropbox), your storage is full, the connection dropped, or it is not an image your browser can open - and what to do next.
  • Send never goes quiet. If a message cannot go because of a failed file, Playcode tells you so. Your text and your other files stay exactly where they were.
  • Nothing gets dropped. When one file in a batch failed, the files that did upload used to disappear from your draft. They stay now.

FixedBuild

Uploaded images no longer break when the AI moves them

When you uploaded an image and the AI moved it into another folder - for example into public - the image could turn blank, even though the AI said the move had succeeded. Images you upload now keep working wherever the AI moves them, and undoing a move restores them correctly.

FixedAdd to your app

Connecting Search Console checks the permission

Google's permission screen lets you continue without ticking the Search Console box. Before, Playcode still showed the account as connected, and every request the agent made on it came back with a permission error.

Now that connection is refused on the spot, and the Connections page says which permission to select before you try again. A connection granted that way earlier is marked as revoked within a couple of hours, with the usual Reconnect button.

FixedAdd to your app

Sending-domain records you can actually copy

When you add your own sending domain in Settings > Email, the DNS records now show every field in full: Name, Value and, for the MX record, Priority, each with its own copy button. Before, the name was cut off on screen and only the value could be copied, so the long DKIM names had to be retyped.

Copy all records puts the whole set on the clipboard as labelled text, for a note or for whoever runs your DNS.

If your domain's DNS runs at GoDaddy or Namecheap, the names are shown the way those providers' Name field expects them, without your domain at the end.

FixedPublish

Custom domains: root domains connect on their own, and connections heal themselves

Two fixes for custom domains on Playcode Cloud.

Root domains now go live. A root domain (example.com, not www.example.com) needs one extra verification record at the edge before it can serve over HTTPS. When Playcode runs your DNS - a domain bought here, or one you moved to Playcode nameservers - that record is now added for you the moment you connect, and the edge is asked to check it right away. If your DNS stays at another provider, the connect dialog shows the record beside the routing record, and the assistant lists both.

Connections no longer get lost while you set up DNS. A connection made before a nameserver change had finished could be dropped as abandoned. Playcode now keeps every connection you make, checks it against the edge every few minutes, and restores it automatically while your domain points at Playcode. If a domain never points at Playcode for a week, you get one email and can reconnect any time.

The Domains settings and the assistant's domain status now say what the edge actually serves, not only whether DNS has landed.

FixedBuild

Preview links that open a file in a new tab now open the file

In the editor's Preview, a link that opens a file in a new tab - a PDF from your public folder, an image, a download - now opens that file, the same way it does on your published site.

  • Before: the new tab showed "The connection has been lost", which made

a correct link look like a bug in your site.

  • Now: the file opens. Pages and routes behave exactly as before.
  • Direct links to the preview (a bookmark, or a page link opened outside

the editor) now say what they are: the preview only runs inside the Playcode editor. Use Open preview in a new window from the preview toolbar to view your project in its own tab.

FixedBuild

Phone preview works with the latest Expo Go again

Apple shipped a major Expo Go update this week, which broke the phone preview for mobile projects: scanning the QR code showed an SDK-compatibility error on iPhone. Fixed on both sides - new mobile projects target the Expo version the App Store actually ships, and the AI now checks your project against the current Expo Go before handing you a QR code, upgrading the project first if it is out of date.

The QR code itself also got more reliable: it now always carries the secure exps:// link, so it opens in Expo Go on the first scan.

FixedAdd to your app

Email service DNS records now work on Playcode domains

You can now connect email services like MailerLite, SendGrid, Mailchimp, Klaviyo, and Postmark to a domain managed by Playcode.

These services verify your domain with DKIM records: CNAME records whose target contains an underscore, such as litesrv._domainkey.mlsend.com. Playcode's DNS editor rejected those targets as invalid, which blocked email authentication. Underscores are now accepted in CNAME, ALIAS, NS, and MX targets, so you can add the records exactly as your email service shows them.

August 2026

FixedPublish

Workspace admins can publish team projects again

Publishing asked the wrong question about who you are. If you were a workspace admin opening a project a teammate had created, the Publish button appeared and looked ready - but pressing it did nothing at all. No progress, no message, no explanation. Only the person who originally created the project could publish it.

The button was reading your team permissions, while the publish action behind it was still checking whether you personally created the project. Both now read the same rule: if you can manage the project, you can publish it. Unpublish was affected in the same way and is fixed too.

Nothing changes for personal projects, and nobody gained access they did not already have - editors and viewers are unchanged.

FixedBuild

Closed every panel? Your project now shows the way back

Closing every panel in the editor used to leave a blank screen with no visible way back - it could look like your project was gone. It never was: your work is always saved.

Now the editor keeps its header with the project menu at all times, and an empty workspace shows the AI prompt plus one-click buttons to reopen Preview, AI Chat, and the other panels. Asking the AI from there opens the chat with the answer. And if a saved project somehow ends up with no panels at all, it now opens with the standard layout instead of a blank screen.

FixedPublish

Publishing from a phone works again

The publish dialog could not be scrolled on a phone, which on small screens put the confirm button out of reach. The dialog body now scrolls properly, so you can publish a project from your phone end to end.

FixedBuild

Voice input reads your team's plan, not your personal one

Speaking your idea on the home screen asked the wrong wallet whether you were allowed to. If you were working inside a team workspace, the microphone checked your personal plan and credits instead of the team's - so a team with an active subscription and credits to spare could still be told it needed to subscribe.

Voice now prices the same workspace everything else does: the one you have selected, which is the one a new project is created in and the one that pays for the work. Typing was never affected.

FixedBuild

Opening a template on a new device no longer lands you in an empty editor

If you were signed in but arrived on a device or browser Playcode had never loaded before - a new laptop, a cleared browser, a private window - opening a template link directly (/javascript-template and friends) could leave you staring at an empty editor: no files, no preview, no menu. Reloading did not help.

The editor was starting before your account finished arriving from the server, and then quietly gave up. Two things changed:

  • The editor no longer waits on that data to build your project, so a first

visit on a new device opens the same way a returning one does.

  • If an open genuinely fails, you now get a clear message with a Retry button

instead of a blank page.

FixedBuild

Tapping a field on your phone no longer leaves the page stuck zoomed in

On iPhone, tapping certain inputs - the answer boxes when the AI asks you a question, search fields, rename boxes - zoomed the page in. That part is normal iOS behavior for small text fields. What was not normal is that you could not get back: pinching to zoom out did nothing almost everywhere, so the app stayed magnified and unusable until you reloaded.

Two things were wrong, and both are fixed.

  • Pinch-to-zoom works again across the app. The chat transcript, the message box, and every editor panel were opting out of the browser's zoom gesture - only the top bar still responded to a pinch. They now allow it, while keeping the scrolling and drag behavior they were reaching for.
  • Fields no longer trigger the zoom in the first place. Text you type into is now sized so iOS leaves the page alone on focus, on phones and tablets. It is also simply easier to read.

Nothing changes on desktop.

Show all updates