Changelog
Detailed log of all updates, improvements, and bug fixes for each version.
3.14.1 (15 October 2026)
Added 🌟
- Library grid view: a View menu at the top of the Library switches between Tree, List and Grid. Grid shows each folder's widgets as preview tiles, without the details popup.
- Zoom menu: click the zoom level in the board toolbar for Zoom in, Zoom out, Zoom to fit, Zoom to selection and Zoom to 100%. Zoom goes from 5% to 1000%.
- Figma's keys on the board: + and - zoom in and out, Shift + 1 zooms to fit, Shift + 2 to the selection and Shift + 0 to 100%. Enter selects the layers inside, Shift + Enter the layer above, Esc goes up a layer and then deselects, a double-click selects one layer deeper and Ctrl/Cmd + Click the deepest layer. The Shortcuts sheet has new Zoom and Layers groups.
- Paste to replace: right-click a widget and choose Paste to replace to swap it for the widget you copied. It keeps the target's place and layout and is one undo step. Offered when one widget is selected and it isn't the root of a board item.
- Must match validator: + Add validator offers Must match validator, with Message and Must equal fields, for checks like "Repeat password". A
!=rule written in code loads as Must match. - Edit approval for agents: when an AI agent, Nowa's own or one connected over MCP, is about to change a file outside the package open in Nowa, a dialog names the file. Cancel leaves it unchanged and tells the agent, and Allow lets the change through without asking about that file again until the project is closed.
- UI packages for agents: in a team's UI package (a workspace package with no
lib/main.dart, or with adesign/folder), an agent's previews, mock data and prototypes go todesign/<feature>.dart, and only the widgets and their contract go tolib/. Each new widget lands on the open board in a row of its own, with its states in the order they're written and, for a screen, its prototype. A widget whose UI is built by helper methods gets a "Sealed box" warning. - New MCP tools and options:
list_boards,get_boardandplace_on_board;open_projecttakes apackage(name or path) and lists the workspace's packages;screenshotwith adeclarationshows a widget's@Previewstates two to a row. - AdMob App ID check: a problem is listed when the app uses AdMob but its Android or iOS App ID isn't set, with a way to the AdMob settings.
- Await check: a warning when
awaitis used on a call that no longer returns aFuture, with a one-click fix that removes it. - New File and New Folder in a folder's right-click menu in Files (code mode).
- Arrow keys in number fields: Up and Down change the value by 1, and by 10 with Shift.
Improved ⚙️
- App icons: Nowa writes only the icon files the Flutter template uses (15 for iOS, 7 for macOS) and gives iOS icons a white background, because the App Store rejects icons with transparency. Platforms without a folder in the project are skipped, and
AndroidManifest.xml,project.pbxproj,web/manifest.jsonand theContents.jsonfiles are no longer rewritten. Icons are drawn off the main thread, so the editor stays responsive. - Local notifications on Android: apps using
flutter_local_notificationsget core library desugaring turned on in their Android build. - SHA-1 keys: the Firebase Auth panel recognises SHA-1 keys with or without colons and extra spaces.
- Models from JSON: generated
fromJsonuses a field's default value when an object or list is missing from the response. - Supabase: generated insert and update functions leave out null fields.
- AI with several widgets selected: every selected widget is attached to the prompt.
- AI turns that go quiet: a turn whose stream stops sending is ended and retried.
- Agent tool errors: a tool call with wrong arguments now names the missing, unknown or mistyped ones and lists what the tool takes.
- Team packages: Nowa adds
nowa_runtimeto a workspace package the first time a saved file needs it, declares fonts relative to the package, anddownload_fontreturns theTextStylewith the font'spackage. Fonts declared from the workspace root by older versions move into the package. - Agent guidance for UI packages: sample content stays in
design/, each component gets its own file, a task ends with a screenshot of every screen and component, andget_themein a package without a theme asks forlightThemeanddarkThemeinlib/globals/themes.dart, with brand tokens in a ThemeExtension. - Outline: layers are named by what they show (the data a text reads, an icon's name, an image's file), and right-clicking one of several selected rows keeps them all selected.
- Text properties: the font and size fields show what the text is drawn with, including a theme text style's font and size.
- Circuit: node titles show the object a method is called on, like
emailController.clear. - New screens are placed in the middle of the view.
- Pasting SVG: SVG markup copied from another app is added as an SVG image in your assets.
- Undo: renaming a component from Details can be undone.
- Menus: action and right-click menus show every entry up to the screen's height (menus with a search field keep their cap), and menus round to 8 px.
- Help popups: one help component across Nowa, with selectable text so IDs, URLs and keys can be copied.
- Library previews: show after 100 ms instead of 400 ms.
- Status bar: one line per log, and every count opens Problems.
- Clone to local: cloning a cloud project to your computer no longer needs the Flutter SDK, and the steps that do need it lead to the Flutter SDK setup.
- Git panel: refreshes when Nowa regains focus, so commits and checkouts made in a terminal or another editor show up without saving first.
- Updates on Mac: Nowa swaps in the new app before it restarts, and the update dialog shows an error if the new version can't be put in place.
- Feedback: the project snapshot attached to feedback leaves out assets to stay under the 10 MB limit, and the message is sent even when the snapshot can't be attached.
- Rating prompt: asked only from the third day you use Nowa, as you come back to the dashboard after a work session, never on sign-in.
- Environment setup: the setup wizard's notes, like the Xcode requirement and the low-space warning, are clearer callouts.
Fixed 🩹
- Fixed apps failing to build after editing a widget given an enum-typed field, parameter or property, because Nowa wrote
constin front of it. - Fixed a change made while its file was being saved being lost, such as the imports an agent's code needs.
- Fixed updates on Mac sometimes restarting into the old version and showing the update prompt again.
- Fixed generated Supabase insert and update functions sending null fields, which made them fail on phones.
- Fixed AI prompts with several widgets selected only changing the first one.
- Fixed the AI staying stuck when its connection went quiet in the middle of a task.
- Fixed AI chat breaking on Arabic, emoji and other multi-byte text arriving in pieces, and background errors piling up while offline.
- Fixed the AI's file tools opening and overwriting Nowa's cache files in
.nowa/temp. - Fixed fonts and components an agent adds to a team's package failing the team's checks and build, because
nowa_runtimewasn't added and fonts were declared from the workspace root. - Fixed Android builds failing for apps that use local notifications.
- Fixed SHA-1 keys not being recognised in the Firebase Auth panel.
- Fixed generated
fromJsonleaving objects and lists empty, or crashing, when the response left them out. - Fixed "not equal" validator rules written in code turning into a Required rule after any edit to the validators.
- Fixed Copy as new widget leaving the copy linked to the original, so editing or deleting widgets in the original broke the copy.
- Fixed turning on await for a call with an On Value leaving both in the code.
- Fixed pasting SVG markup from another app pasting its code as text.
- Fixed Create component being offered for function and variable widgets, where it couldn't work.
- Fixed new screens being placed off to the side of the view.
- Fixed right-clicking in the Outline dropping a multi-selection.
- Fixed renaming a component from Details not being undoable.
- Fixed timers started in Play running on after Play stopped.
- Fixed sending feedback getting stuck in local projects with large assets.
- Fixed cloning a project to local failing with a bare error when the Flutter SDK wasn't set up.
- Fixed the Outline red-screening while a component rebuilt, and an error anywhere in the editor failing the canvas mounted last so that Reload couldn't bring it back.
- Fixed the Outline missing the rows of calls into files written at the same time, until the class changed.
- Fixed a board's theme only applying once something else rebuilt the canvases, in projects whose app has no theme.
- Fixed adjacent string literals like
'a ' 'b'showing their quotes on the canvas. - Fixed functions that return from several places showing only their last return on the board.
- Fixed drag and drop choosing the dragged widgets or a component's insides as the drop target.
- Fixed a running design using the editor's snackbars and navigator instead of its own.
- Fixed theme tokens like
colors.inverse.textPrimaryshowing as the plain token. - Fixed Create Variable missing from a button's link menu, and undo for files dropped on the board.
3.14.0 (13 October 2026)
Added 🌟
- Linux desktop app: the Nowa desktop app now runs on Linux, alongside Mac and Windows. Choose Linux when you download Nowa to get the 64-bit version, with an install script that adds Nowa to your app menu.
- Firestore panel: a new Firestore panel in the left sidebar shows your collections and queries, with Add Main Collection and Add New Query.
- Delete account in Firebase Authentication: Authentication now generates
Future<bool> deleteAccount(), which returns false when no user is signed in or a recent login is required. Projects that already have Authentication on get it after turning Authentication off and on. - Google Pay environment: a new Environment dropdown in Stripe (Test or Production) sets the Google Pay mode.
- Restore purchases: the RevenueCat service now includes
restorePurchases(). Only new projects get it. - SSH keys in local projects: an Access Token | SSH Key tab bar for local Git credentials, and
ssh://anduser@host:pathremote URLs are accepted. Keys are looked up inHOME, thenUSERPROFILE. - Later on key reminders: the Important! dialog for the Android signing key and the iOS certificate now has a Later button.
- Unsaved changes warning: the web app asks before you leave while files are still unsaved (not in the playground or guest projects).
Improved ⚙️
- Code Nowa can't load: top-level code Nowa doesn't load (functions, typedefs, exports, extension types) is kept as written, with its comments and in file order, when Nowa rewrites the file. Only load failures are listed in Problems for that file.
- Files Nowa didn't change: Dart is formatted with the package's SDK language version, as
dart formatdoes, so untouched code keeps its style. YAML is edited in place, keeping comments, quoting and layout.nowa_runtimeandnowa_mobile_adsare only bumped when their constraint rules out the current version. New projects declare SDK^3.8.0. - Pubspec assets: refreshing the pubspec keeps the project's own
assetsentries (other folders, files, andpath:,flavors:andtransformers:entries) and only adds or drops Nowa'sassets/folders. - Platform files: App Name, permissions and bundle ID now patch only Nowa's part of
AndroidManifest.xml,Info.plistandbuild.gradle(.kts)instead of rewriting them. - Widget sizes on the board: a widget without a size fits its content instead of 400 × 400, up to the device's width. Content that can't be measured (scroll views,
LayoutBuilder) takes the device's size. Library previews are measured the same way, and resizing a canvas no longer writes auto width or height into the widget's code. - Supabase edge functions: deployed with the JWT check on, and only
stripe-webhookstays public. Pull Backend Files records each function'sverify_jwtand Set up Backend uses it, and the setup summary lists public functions. A public function in a bundle pulled before 3.14 gets the check on its next deploy, so pull the bundle again to keep it public. - Stripe: regenerating the payment service only touches Nowa's own members and skips any you edited. Each migration, deploy and secret step reports its own error. The webhook returns 500 when
STRIPE_WEBHOOK_SECRETisn't set. - Firebase Connect Apps: can be retried after a failure, shows the real error (the app limit only for quota errors), stops waiting after about 5 minutes, and saves the project right away when auto save is on.
- Firebase clean-up: disconnecting removes
google_sign_in(including its iOS config), and turning Email/Password off removessendPasswordResetEmail(). - Deep links: Flutter's deep link handling stays on so links reach the router, the fixed
open.my.apphost is removed (Host is for Android App Links only), saving a field updates every platform file, andInfo.plistholdsCFBundleURLTypesonce. If your project has its ownapp_linkslistener, switch Flutter's deep link handling off by hand. - Package versions: the Enabled switch installs the integration's pinned version, so packages like RevenueCat's no longer clash. The Version of a git or path package is read-only.
- Library: search results are grouped Project, Built-in, Packages, Assets, so Enter picks a built-in widget before a package one. New Model and New Global State open the new file, View Only members can't edit through the Library, and adding a template to an existing project adds its packages.
- Scaffold slots: an App Bar, FAB, Bottom Navigation Bar or Drawer dropped on a screen goes into the Scaffold's slot.
- Assets: renaming or moving an asset updates widgets that use its path, and undo puts them back.
- Missing packages: the check covers the whole dropped tree, including drops from outside the board, and Add Missing Dependencies can always be cancelled and shows a failed install.
- Detach: replaces the component's parameters with the values passed to it, or their defaults. A component that uses its own state can't be detached, and says so.
- Menus and search: one menu design with a pinned search, fuzzy matching with highlighted matches, and arrow keys, Enter and Esc. The board, package and Git branch pickers use it, and a menu closes when what opened it is pressed again.
- New look: colors and text styles across Nowa now come from one set of design tokens, and Run and New project are split buttons.
- Problems panel: rebuilt, and the code editor's error banner opens the console's Problems tab. Guests and the playground see "Code check needs an account" instead of an error.
- Flutter processes: Nowa stops the Flutter processes it started when it exits, even after a crash. Local projects start Nowa Run when the preview is opened, not when the project opens.
- Flutter SDK install: extracting the SDK no longer freezes the window.
- Imported projects: open on the package's first board instead of a new empty one.
- Run on: devices and emulators are refreshed every time the menu opens, an emulator gets one retry after a timeout, and errors show in the menu.
- Restore Checkpoint: says "Undo N Requests?" and lists the files of every request it undoes.
- Error messages: no longer start with "Exception: " and stay on screen for 4 seconds.
- Status bar: the error count opens Problems, and the warning and info counts open Logs.
- Server errors: a 503 opens maintenance mode and other server errors open the server error screen, instead of sending you to sign in.
- Board requests: in design mode, Dio requests get a mocked response, so the board no longer sends real requests.
- REST API: an
x-www-form-urlencodedbody uses the plain text editor, Ctrl/Cmd + Z undoes request body edits, and None shows in the Select API, Supabase and Firestore pickers. The DOWNLOAD method is no longer offered (requests already using it still open). - Circuit: functions with
for,switch,breakorcontinuenow open, with those statements shown as an Edit in code mode node. - Dart support:
try/catchwithontypes,if (x case ...)with guards, and closures with named or optional parameters now run in the designer. A widget with only named constructors defaults to the first public one. - iOS certificate key: the key must be a PEM private key, the picker offers
.pem,.keyand.p12, and the download is a.pemfile. - Publishing: a failed code check stops web publish instead of leaving it on Deploying, a failed build start no longer greys out Deploy and Build, and iOS builds use the project's current bundle ID.
- AI chat: Attach text file works on the web, and Auto-approve tools (all connectors) is in the Supabase MCP menu too.
- Shortcuts: the Shortcuts sheet matches the real keys, Windows and Linux show Ctrl hints, sidebar tooltips show the right numbers, and Ctrl/Cmd + B only opens the board picker in design mode.
- Passwords: a new password needs at least 8 characters.
- New dialogs: the suggested name is selected, so typing replaces it.
- Playground: a playground too large to keep in the browser now says so instead of silently reverting to an older copy.
- Other touches: a new Slider follows the theme's Primary color, the Empty Page template offers device sizes, View Only members get Copy and Export on the board, and only owners see member actions.
Fixed 🩹
- Fixed Accept Local after Bring my changes throwing away your own edits, because the Local and Remote panes were swapped.
- Fixed Accept Remote sometimes writing the next file's text into the file you resolved.
- Fixed accepting one conflicted file clearing every conflict.
- Fixed deleting an imported local project deleting its folder. Older entries now name the folder in a Delete Project and Files dialog.
- Fixed Remove on a group deleting every child but the first.
- Fixed local Revert only staging the undo instead of committing it, and Revert and Undo doing nothing but reporting success when there were uncommitted changes.
- Fixed a missing Git identity showing a raw error, and local pulls dropping conflicts and errors from their merge.
- Fixed Firestore collections and queries missing from the pickers after reopening a project, until Refresh was clicked.
- Fixed the Firestore query builder's add and doc steps failing with "The function 'add' isn't defined", and clicking a query parameter blanking the builder.
- Fixed Firebase Google sign-in code not compiling against
google_sign_in7.x. - Fixed an expired Google sign-in during Send Test Notification disconnecting Firebase from the project.
- Fixed the Firebase iOS app being registered with a re-cased bundle ID.
- Fixed removing Google keeping "Managed by Firebase", and the phone auth toggle not being saved.
- Fixed the
stripe-cancel-subscriptionedge function being generated with a syntax error. - Fixed Supabase Connect staying on "Waiting for Authorization..." when no organization was found.
- Fixed Supabase template functions getting invalid names like
getAllTodo Items. - Fixed Fix with AI saying the backend was already configured. The prompt now names the failed step, the error and the migration SQL.
- Fixed Open Supabase doing nothing for some hosts, and the backend bundle being unknown after reopening a project.
- Fixed typing
/in a Details field focusing the AI chat, which saved paths like/product/:idasproduct:id. - Fixed Create Variable... on a property left at its default making a variable with no value.
- Fixed Min length and Max length validators losing their number.
- Fixed Navigator, GoRouter, Media Query and Show snackbar being offered in functions with no
context. - Fixed switching a screen's group from Column to Row breaking its App Bar.
- Fixed Route Settings dropping edits to a route's Path and a parameter's Default value, Add Redirect Logic still showing +, and Full Path keeping the old path.
- Fixed Google Maps and AdMob fields missing after reopening a project.
- Fixed Import from curl keeping only the path.
- Fixed false "Undefined name 'headers'" problems in Dio interceptors.
- Fixed the Dropdown Value row editing the wrong property, and Create Param... hitting a null check.
- Fixed void functions missing from an event's link menu.
- Fixed a pending custom domain that couldn't be removed.
- Fixed Attach all on the shared preview throwing, and the Single Screen Preview warning showing on screens that have a route.
- Fixed playing another screen still showing the first one.
- Fixed the AI chat toolbar breaking in the playground when signed out.
- Fixed Linux starting on a black window without NetworkManager, and Browse doing nothing without a file dialog portal.
- Fixed failed Figma, Supabase and GitHub connections waiting without saying why.
- Fixed the Git panel getting stuck on an error after opening a project.
- Fixed Clone from GitHub showing an empty box when GitHub wasn't connected.
- Fixed New Folder... in the Library doing nothing, and the Library search losing the first letter you typed.
- Fixed Expand being offered to a child of a Wrap.
- Fixed Globals hiding variables that aren't final.
- Fixed a big zoom step breaking the board view, even after a reload.
- Fixed T, R and V switching tools while renaming.
- Fixed a Bottom Navigation Bar set through the Scaffold slot not being connected.
- Fixed a Shift-drag leaving its screen, and dragging across an app bar turning Auto sizes into fixed ones.
- Fixed a canvas going blank on a Row or Column emptied by its ifs, and a board loading forever when a file it depends on was moved or deleted.
- Fixed Add to board on a variant putting its preview function inside the app.
- Fixed Cmd/Ctrl + K needing a second click after clicking outside a text field.
- Fixed holding the mouse on the board opening the context menu.
- Fixed Add Function not selecting the new function, and the component crumb missing for a component's top widget.
- Fixed Details showing "Instance of 'PlaceData'" after choosing Shape or Text, pasting a BMP image doing nothing, and the breadcrumb keeping "Stack" after changing a group to Column.
- Fixed Set up on a Deploy row opening the Android tab, and Download code spinning forever.
- Fixed build logs showing HTML entities, and Explain with AI sending raw HTML.
- Fixed picking a
$variable selecting the whole field. - Fixed the feedback popup coming back and stealing focus.
- Fixed the Web View documentation link, the Library filter saying "Classs", Create Theme Setup naming the wrong files, and several labels and typos in dialogs.
3.13.0 (6 October 2026)
Added 🌟
- Library panel: replaces the Widgets panel. One searchable list of your screens, components, models, global states, classes, functions and variables, the widgets in your packages, Nowa's built-in widgets and Flutter's libraries, and your assets. Filter it by kind, turn sources on and off with the Project, Packages, Built-in and Assets chips, insert with drag and drop or Ctrl/Cmd + Enter, and jump to the code with Show in code.
- Add and go to from the keyboard: Ctrl/Cmd + K and the toolbar's Widget tool open the Library ready to add a widget. In the designer, Ctrl/Cmd + O opens it to go to one.
- Back and Forward: arrows in the top bar, and Ctrl + - / Ctrl + Shift + - (Control on macOS too), step through the screens and files you opened.
- Board picker: the board chip lists every board in your project, with search, rename, delete and Create new board. Ctrl/Cmd + B opens it.
- Linux desktop app: a 64-bit
.tar.gzwith aninstall.shthat adds Nowa to your app menu. On Linux, updates are downloaded from the update dialog, and your app's preview opens in your browser. - Widget variants from
@Preview: each Flutter@Previewbecomes a named variant of its widget, shown next to the component, as a choice in the widget picker, and under the widget in the Library. - Theme extensions in the pickers: the color picker has a tab per theme extension next to Material, and the text style picker groups each extension's styles.
- Default option first in the dropdown of an enum property that can be left empty.
- Branch search in the Git branch menu.
- Package support:
gap,flutter_animate,google_fontsandsmooth_page_indicatornow work in the designer.
Improved ⚙️
- Files panel: now in code mode only, with keyboard navigation, and several selected files drag into a folder together.
- Menus and shortcuts: Bring forward, Send backward, Bring to front and Send to back replace the old move entries, and Ctrl/Cmd + Alt/Option + ] or [ moves a widget all the way. Key hints list modifiers in Mac order (⌃⌥⇧⌘), and menus close when the board pans or zooms.
- Packages: in local projects,
git:andpath:dependencies load as packages, andsdk:dependencies likeflutter_localizationscount as installed. - Hand-written code on the board: relational and
&&switch patterns, named arguments passed tosuper(...), callable classes,firstWhere(orElse:)and more. Screens from open-source apps like compass_app and Wonderous render. - Placeholders: a package widget Nowa can't draw is a small box sized to its label, one that wraps a child shows the child, unset optional colors and enums keep the widget's own defaults, and a placeholder image with no size is 48 × 48 px.
- Local projects: dependencies added to
pubspec.yamloutside Nowa load without reopening the project, and hidden editor temp files are never loaded as code. nowa_runtime0.2.0: no longer includessmooth_page_indicator. Projects that use it get a Page indicator migration dialog that adds it topubspec.yaml.- Playing from a title: playing a screen or component from its title also selects it.
- New look: refreshed buttons, lists, trees and menus.
- Announcements: at most two banners at a time, and expired announcements no longer show as banners.
Fixed 🩹
- Fixed edits made in another editor right after Nowa saved being ignored in local projects.
- Fixed
partandlibrarylines being dropped when Nowa saved a file. - Fixed a hand-written
main()being rewritten by Nowa. - Fixed a project's own
LocalizationsDelegateblanking the board when it failed to load. - Fixed screens painting outside their frame on the board, so overflow, error boxes and blurs no longer cover the screens next to them.
- Fixed snap guides that didn't line up with widgets at some zoom levels.
- Fixed Material 2 themes showing a grey background behind widgets on the board.
- Fixed the editor's font, which fell back to the system font instead of Albert Sans.
- Fixed
.nowa/settings.jsonbeing rewritten by every new release, which showed up as a change in Git. - Fixed
index.htmlfiles that inline Flutter's bootstrap being replaced when Nowa opened the project. - Fixed the Shortcuts sheet showing the wrong key for adding a widget, and the right-click menu showing one key for both move entries.
3.12.5 (25 September 2026)
Added 🌟
- Play any board item: Instant Play now works on any item on the board, including plain widgets and wrapped components, not only screens and components. Right-click a widget and choose Play to play the item it belongs to, and while something plays, select another item to play that one instead.
- Switch branches with local changes: switch or create a Git branch without committing first. Changes that don't clash with the other branch come along automatically. When they do clash, Nowa asks before bringing them along and opens the conflict resolver if they don't apply cleanly. Unsaved edits are saved before switching. Works in local and cloud projects.
- Images for connected agents: the new
add_image_assetstool lets Claude Code, Claude Desktop, and Cursor add images from links (like the asset links Figma's MCP returns) or from local files. Nowa downloads them intoassets/images/and registers them inpubspec.yaml. Supports PNG, JPG, GIF, WebP, BMP, and SVG. - Package support:
equatable(classes extendingEquatableor usingEquatableMixincompare by theirprops),auto_size_text, andpackage:collectioniterable extensions likemapIndexedandflattenednow work in the designer.
Improved ⚙️
- Big board performance: up to 50x faster on big boards. Canvases build one per frame with the visible ones first, off-screen canvases hold their rebuilds until they're back in view, animations and timers only run on the canvas you're hovering, selecting, or playing, and when more than 8 canvases are in view the rest are drawn from a snapshot. Panning no longer rebuilds canvas titles.
- Faster project opening: the analysis of packages from the pub cache is now saved on disk and reused across sessions, only each package's API is read, and packages are analyzed one at a time so they no longer wait on each other.
- Widgets panel previews: previews play their animations for a moment, then pause, and are no longer rebuilt from scratch every time the panel updates.
- Snapping: moving and resizing snap more precisely to nearby edges and centers, and resizing only snaps the edge being dragged.
- FlutterFlow projects: pages calling
safeSetState, custom functions called through an import prefix, streams of Firestore records, and flags written asflag!now render in the designer with placeholder data. A field whose stream can't start without Firebase no longer stops the whole page from rendering. - Placeholder widgets: a widget the designer has no value for now shows as a small slot instead of taking over the layout.
Fixed 🩹
- Fixed projects that import the same files from nearly everywhere, like the theme and utility files in FlutterFlow exports, hanging while loading their dependencies.
- Fixed screens that import a design system through a single file that re-exports it rendering before the theme it re-exports had loaded.
- Fixed custom app bars that extend
AppBarbeing rejected as a screen's app bar. - Fixed custom fonts declared in
pubspec.yamlshowing as a default font on the canvas. Font families now load under their own names in every weight, and Nowa keeps your own font declarations (families, weights, styles) when it updates the pubspec, instead of replacing them. - Fixed stateful components running
didUpdateWidgetbefore receiving their new values and withoutoldWidget, which kept components like text fields from reacting to their new values. - Fixed overrides that read
super, like an app bar overridingleading, calling themselves until the editor froze. - Fixed constructors that set fields in their initializer list, like a tab bar creating its
TabBarthere, leaving those fields empty in the designer. - Fixed gradient masks: a
ShaderMaskgiven a method likegradient.createShadernow paints its gradient. - Fixed
NotificationListenerpassing its callback notifications of other types, which could stop the canvas from responding to the mouse. - Fixed components with animations showing an error when removed from the board, and not restarting when shown again.
- Fixed a missing SVG file taking down the whole canvas. Now only that image stays empty.
- Fixed SVG colors defined with CSS variables turning black when saved from the AI chat or by a connected agent.
- Fixed theme extensions from a previously opened project carrying over into the next one.
- Fixed date pickers failing in the designer when their optional dates were filled with placeholder values.
- Fixed items that size themselves playing at the wrong size in Instant Play.
- Fixed several Dart expressions in the designer:
intvalues assigned todoubleproperties (likePaint()..strokeWidth = 2),??,&&and||with anawaitoperand, method calls ondynamicvalues, optional named parameters in function types, andRegExpdefaulting to case-insensitive.
3.12.3 (22 September 2026)
Added 🌟
- Figma MCP: connect your Figma account and Nowa AI can bring your images and icons (SVGs included) into your project as assets, and turn your Figma colors and text styles into your app's theme. Turn it on from the Figma icon in the AI chat, and connect or disconnect anytime from Account Details → Connected Accounts. Works in cloud and local projects, and is available to everyone.
- One-click web support: when the in-app preview can't run because your app has no
web/folder, Nowa explains why and can add web support for you. - Problems panel filter: choose whether Nowa checks only the code it generated or All files in your project.
- Package problems: the Problems panel now lists packages that failed to load and why, and points out when a package is only a dev dependency.
- Permissions for connected agents: Claude Code, Claude Desktop, and Cursor can now add or remove platform permissions through Nowa's settings, the same way the Permissions panel does.
- Claude Code setup command: the Connect External Agent dialog now includes a ready-made Claude Code command to copy and run.
Improved ⚙️
- Dart support: Nowa now opens and renders much more hand-written Flutter code, including Dart 3 patterns in
switchexpressions and destructuring, InheritedWidgets, mixins, enhanced enums, redirecting constructors,super.parameters, widgets that extend other widgets (your own or Flutter's), and generic function references likeidentity<int>. - Theme extensions: themes can now hold up to 8 theme extensions, up from 5.
- Partial file loading: code Nowa can't read yet is skipped on its own, so the rest of the file still loads, and the Problems panel shows what was skipped.
- Placeholder values: components that take records or typed lists now render in the designer with sensible placeholder values.
- Null-aware chains:
?.in widget arguments now resolves to null in the designer instead of breaking the widget, and is saved exactly as written instead of being turned into!. - Project checks: valid projects without a
main.dartorweb/folder, like packages or mobile-only apps, are no longer flagged as broken. - Problems on open: the Problems panel waits for packages to finish loading before reporting, so it no longer shows false errors while a project opens.
- Board performance: smoother panning and zooming, plus faster code loading and lookups, especially in bigger projects.
- Safer AI edits: an edit that would leave a Dart file with syntax errors is now refused and nothing is written, so a typo can't turn into mangled code. Applies to Nowa AI and connected agents.
- Imports after AI edits: a file's imports now update automatically after an AI edit.
- AI code checks: when
flutter analyzecan't run, the AI is told so instead of treating the project as clean. - Connected agent guidance: agents receive Nowa's building rules as soon as they connect, and can ask for them again at any time.
- Agent screenshots: now report widgets that failed to build, overflows, and placeholder values, so agents can find and fix layout issues themselves.
- Agent safeguards: edits based on an outdated widget reference are refused instead of landing on a neighboring widget, and switching projects is blocked while the current one has failed to save.
Fixed 🩹
- Fixed the board not updating when changing its color or grid.
- Fixed the Libraries panel missing from the sidebar after the top bar was rebuilt.
- Fixed one canvas that fails to build leaving every canvas after it stuck on its loading placeholder.
- Fixed widgets that extend a widget from another file sometimes loading as plain classes and not rendering.
- Fixed constructors written by a connected agent being dropped instead of applied.
- Fixed packages in local projects sometimes failing to load when several resolved at the same time.
- Fixed the screenshot tool for connected agents.
3.12.0 (15 September 2026)
Added 🌟
- Connect your own AI agent: the Nowa desktop app can now be driven by Claude Code, Claude Desktop, or Cursor. Your agent can open and switch projects, see your screens, components, theme and current selection, build with Nowa's own tools, open a screen or highlight a widget on the canvas, take a screenshot, and save, all while your board keeps up. Enterprise only for now, so email
team@nowa.devif you'd like access. - Workspace and monorepo support: import a Flutter app that lives inside a bigger repository, choose which package Nowa edits, and switch packages from a chip in the top bar. Git keeps covering the whole repository.
- Sign in with Apple: sign in to Nowa with your Apple ID on the web and on iOS.
- Git over SSH: local projects can push and pull over SSH, using a key you choose or the keys already loaded in your ssh-agent.
- Component descriptions: write a short description for any screen or component in the details panel, right next to its fields.
- Preview links for a single screen: playing a screen from the board now produces a share link that opens on that exact screen.
- Go to definition: hold ⌘ (or Ctrl) in the code editor and click a name to jump to where it's defined.
- Constructor picker: choose which constructor to use for widgets that offer more than one.
- Diff navigator: move between changes in the diff view instead of scrolling to find them.
- Cloning progress: see how far along a project is while it clones from GitHub.
- Custom app bars: your own widgets can now be used as a screen's app bar.
Improved ⚙️
- A tidier interface: the top bar was rebuilt and the dashboard cleaned up.
- Code mode: switching to code now jumps to the code behind the widget you had selected, and the run and preview controls stay available while you're there.
- Formatting: Nowa now reads your project's own rules from
analysis_options.yaml, so saved files keep the shape your project already uses and diffs only show what actually changed. - Project sync and loading: faster and lighter when opening and syncing projects.
- Login screen: now works with your password manager's autofill.
- Build quota: running out of builds now shows a clear message explaining what happened.
- Field initializers in the designer: widgets that set up their fields on creation now render and edit correctly.
Fixed 🩹
- Fixed
$inside a text value breaking the text it sat in, so prices like$20stay as typed. - Fixed variables inside loops losing their value.
- Fixed Firebase screens not displaying correctly in the designer.
- Fixed images stored inside packages not rendering.
- Fixed Git leaving a project stuck in a merge conflict after a commit.
- Fixed the outline and top bar falling out of sync with the current selection.
- Fixed the QR code placement in the run toolbar.
- Fixed the run target pointing at the wrong place in projects with more than one package.
- Fixed errors in the widget list.
- Fixed the board jumping to the wrong page when opening a different project.
- Fixed an issue in the new project dialog.
- Fixed build issues on macOS.
Gemini 3.7 Flash Upgrade (13 August 2026)
Added 🌟
- Nowa AI now runs on Gemini 3.7 Flash — the agent moved to Google's new model the day it launched, replacing Gemini 3.6 Flash.
- Double the daily limits on every plan — 3.7 Flash costs 50% less than the model it replaces, and we passed the full saving on. Effective immediately, at the same price, with nothing to claim or upgrade.
Improved ⚙️
- UI generation — 3.7 Flash is ranked #1 on Code Arena for building real, working interfaces, so screens come out right on the first try more often.
- Design fidelity — the agent follows a screenshot, image, or design system far more faithfully than before.
- Long, multi-step tasks — long-horizon engineering work improved from 49% to 65% on the DeepSWE benchmark, meaning fewer dropped threads and fewer retries.
- Code quality — production code quality improved from 34.4% to 43.6% on FrontierCode, so less debugging after a build.
- Token efficiency — the new model completes the same task using fewer tokens, so credits stretch further on top of the doubled limits.
- Agent improvements — a round of improvements to the agent itself, with a particular focus on UI generation.
3.10.5 (14 July 2026)
Added 🌟
- Full mobile browser support — access Nowa from your smartphone to check projects, make quick updates, and deploy directly from your mobile browser.
- Post-launch support package — after successfully deploying an app, claim $25 in Nowa AI credits, direct support from the Nowa team, and help with exposure, monetization, feedback, and app improvements. The package is available from the deployment panel.
Improved ⚙️
- Workspace experience — improved team invitations and collaboration, workspace organization, and project management.
Fixed 🩹
- Fixed an issue that affected some Windows users working with Git in Nowa.
3.9 (13 June 2026)
Added 🌟
- Rebuilt multi-agent AI system — several subagents now work on your project in parallel to plan, build, and refine at once, delivering better UI/UX, reliable complex logic across large projects, and smooth pub.dev package handling (including platform-file setup).
- Smart context fetching — the AI reads exactly what it needs without over- or under-reading, keeping it fast and cost-efficient.
- App Run — compile and run your real app directly inside Nowa, matching exactly what you'll get on deployment (pub.dev packages, custom code, and native parts included).
- App preview on the board — hover over any screen and hit play to instantly run your app right where you're working.
- New Assets panel — a dedicated panel for uploading and managing assets.
- Dedicated code editor — open the full code panel from the
<>icon in the top right; every change now compiles automatically. - New deployment UI — more detail and easier management for clearer, more controlled deployments.
- New settings page — a cleaner, more organized home for your project settings.
- Refer a friend — you and your friend each get 15 free credits when they sign up.
Improved ⚙️
- Smarter Planning Mode — presents a clear, readable plan anyone can follow and better matches what you want to build before work begins.
- Outline moved to the left side — out of the board and into the left-side options for a cleaner workspace.
- Files merged into code editing — the separate Files panel is gone; everything now lives alongside your code.
- Smarter logs — now cover both App Run and preview for full visibility.
Fixed 🩹
- Fixed high AI costs — the new system is dramatically more efficient, so you get far more done per credit.
- Fixed AI struggling with complex tasks — it now handles long, intricate jobs across your project reliably.
- Fixed platform file editing — editing platform files and native parts is now smooth and stable.
- Fixed App Run issues — running your app now reflects exactly what you'll get on deployment.
3.7.3 (26 April 2026)
Added 🌟
- Localisation support — make your app run in multiple languages with ease. Just ask Nowa AI to set it up and it'll handle everything end to end.
- AI font downloads — ask Nowa AI to set any font and, if it's not already in your project, it'll download and set it up automatically. Useful when importing designs from Figma or other tools.
Improved ⚙️
- Package conflict handling — Nowa AI now automatically detects and resolves package conflicts, so you don't have to dig through dependency errors yourself.
Fixed 🩹
- Fixed an issue where the widget menu wasn't working on the web version.
3.7.2 (23 April 2026)
Added 🌟
- New Packaging System — completely revamped integration with pub.dev packages for much greater stability and better handling by Nowa AI when working with external packages.
- Experimental UI Updates — AI has moved to a toolbar at the bottom of the board, accessible by hitting /, with project components visible in real-time. Enable it from App Settings → Project details → Experimentals → "New UX".
Improved ⚙️
- Faster project loading — packages now load after the project opens, so you can start working sooner.
- AI handling of external packages — Nowa AI is now significantly better at working with pub.dev packages across your projects.
Fixed 🩹
- Fixed issues with missing imports — AI can now work with imports properly, resolving problems some users faced on certain projects.
- Fixed an issue with the Rive widget on Web.
- Fixed issues with AI integrating APIs — resolved problems some users ran into when asking the AI to connect to external APIs.
3.6.1 (12 March 2026)
Improved ⚙️
- Editable
main.dart— a new system now lets both you and the AI agent freely modify themain.dartfile without running into issues. - AI stability on weak connections — Nowa now handles weak and moderate internet connections much more gracefully, preventing unexpected disconnects mid-task.
Fixed 🩹
- Fixed an issue where some projects weren't loading correctly after the 3.6 update.
3.6 (6 March 2026)
Added 🌟
- RevenueCat Integration — monetize your iOS and Android apps with in-app purchases using RevenueCat, set up in just a few clicks.
- AI Planning Mode — the AI now deeply analyzes your project, asks clarifying questions, and presents a detailed plan before implementing. Review and refine the plan, then get results built correctly from the first shot with fewer credits.
- Todos in Agent Mode — for complex prompts, the agent creates an internal plan with todos and completes them one by one, ensuring nothing is missed.
- Google Sign-In with Supabase — ask Nowa AI to implement Google Sign-In with Supabase directly.
- Onboarding for New Projects — new projects now include a guided onboarding experience to help you get started.
Improved ⚙️
- AI search & project analysis — the agent searches across your project much faster and consumes far fewer credits. It can also trigger source-code analysis to catch issues Nowa might miss.
- Automatic AI issue reporting — the AI can automatically report issues it encounters (without private data) and provide a report ID for follow-up.
- General performance and stability improvements across the editor.
Fixed 🩹
- Fixed an issue where the AI was adding incorrect package versions. Package versions are now managed by Nowa and default to the latest from pub.dev unless the AI has a specific reason not to.
3.5 (9 February 2026)
Added 🌟
- Nowa Agent V3 — new AI foundation with 4 modes: Instant, Thinking, Deep Thinking, and Max.
- GoRouter by default — all new projects use GoRouter routing with screen paths and deep linking support.
- Git for Local Projects — Git is enabled by default for local projects (commit, history, push/pull).
Improved ⚙️
- AI efficiency & quality — new modes (except Max) use 5× fewer credits, run 4× faster, and produce 2–3× better results.
- Supabase workflows — stronger results when working with Supabase MCP.
- UI boards performance — smoother screen switching, panning, and zooming on large boards.
3.4 (19 January 2026)
Added 🌟
- Supabase MCP — connect Supabase and let the AI agent build the frontend + backend (tables, RLS, triggers, and Edge Functions).
- Agent Creation Summary — a post‑chat summary box listing everything the agent created, with drag‑and‑drop to the board and file previews.
- New tutorials — Google Maps integration and instant preview sharing videos.
Improved ⚙️
- Showing publishing errors so if App Store deployment failed at the publishing stage (last stage) you will know exactly why.
Fixed 🩹
- Fixed “[AppState] not found” errors after AI changes.
- Improved generated code stability for more reliable outputs.
3.3.5 (30 December 2025)
Added 🌟
- Commit History in Nowa — view your full commit history directly in the Git panel, preview changed files line by line, and revert specific commits with a right‑click.
- One‑click GitHub integration — connect projects to GitHub from
Project Settings → Git → Connect to GitHubwithout creating tokens manually. - Faster local project loading — large local projects now load dependencies faster by using your local Flutter SDK instead of refetching everything from
pub.dev.
Fixed 🩹
- Fixed an issue where some imports disappeared when loading projects.
- Fixed cases of double
intconversion when using AI, causing incorrect expressions. - Multiple fixes to code generation and type mismatches for more reliable AI output.
- General stability and performance improvements across editor and preview.
3.3.3 (15 December 2025)
Fixed 🩹
- Fixed an issue where some imports were not being saved correctly, causing inconsistencies in code generation and preview.
3.3.2 (10 December 2025)
Added 🌟
- Google Maps Widget — use Google Maps directly inside Nowa without writing custom code.
- Add it from the Widget Picker
- Fully customizable visually or via AI
- Preview real map results in the simulator
Improved ⚙️
- Added loading indicators to show progress when opening projects.
- Improved UI rendering and consistency across screens and previewer.
- Enhanced performance for a smoother experience when switching between views.
Fixed 🩹
- Fixed false error logs caused by
printstatements in code. - Fixed previewer issues where some screens failed to render.
- Fixed files disappearing after reopening a project.
- Fixed feedback form hanging during submission.
- Minor UI polish and general stability improvements.
3.2.0 (14 November 2025)
Added 🌟
- AI That Uses Custom Packages — the AI can now fetch and use packages directly from pub.dev, reading documentation and applying them automatically.
- Enabled by default for new projects.
- Can be manually activated in
Settings → Packages → Load Packages (Experimental).
- Cloud Git Integration — all cloud projects now come with Git pre-configured, with a badge showing pending changes and in-app commit support.