Video ads now import with correct CTA.
Fixed a bug where the Call-to-Action field was empty when importing single-video ads from Meta. The CTA will now be read correctly and appear in your import preview.
Every release, every fix, every quiet improvement. Newest first. Subscribe via the in-app changelog feed to get pinged in your inbox.
Fixed a bug where the Call-to-Action field was empty when importing single-video ads from Meta. The CTA will now be read correctly and appear in your import preview.
When importing existing ads, the Call to action field now displays the correct value instead of remaining empty. The CTA is now properly mapped and shows in both the preview and the editor.
RunItUp now handles large accounts with hundreds of ads more reliably by intelligently reducing data requests when Meta's API indicates too much information is being requested. This prevents sync failures on accounts that previously couldn't be imported.
Pulse now shows your live ad performance with automatic alerts for underperforming campaigns and one-click pause, resume, and scale actions. Generate AI-powered creative variations and publish new ads directly from the dashboard to combat fatigue.
The Just Launched and Launched tables now cap text at 3 lines per row, preventing long headlines or descriptions from causing inconsistent heights. Rows are now more compact and stable-looking.
The pricing comparison card was showing an outdated price ($599) while the main pricing section displayed the correct live price ($88.88). Both sections now display the same current price, ensuring consistent and accurate billing information across the page.
Fixed an issue where shift+click range selection wasn't working in cloud file pickers (Dropbox, Frame.io, and Google Drive). You can now hold shift and click to select a range of files, just like in Gmail.
The "Auto-generate placement crops" option in the asset importer now defaults to off, letting you opt in only when you need it. Existing preferences are preserved if you've already changed this setting.
A new toggle in Project Settings lets you control whether your ads can appear stacked with other advertisers' ads in Meta's shared ad units. By default, RunItUp now opts your ads out of this format to protect your creative presentation.
Your ad creatives are now opted out of Meta's multi-advertiser ads feature by default, preventing your ads from being stacked or resized alongside other advertisers' content. You can re-enable this feature in Project Settings if desired.
Previously, error messages like "Google Drive access expired" could stay stuck on folders even after you fixed the problem. The sync now properly clears these stale errors when a successful sync completes.
You can now crop each ad once and have the right version automatically show on Instagram feeds, Stories, Reels, and other placements. The crop editor includes a live preview and frame scrubber for videos, and auto-crops are generated automatically on upload.
When a video or image fails to import from your drive due to a temporary error, RunItUp will now automatically retry it up to 3 times instead of silently dropping it. You'll also see the error message persist until the import succeeds or is retried.
Video crops now generate significantly faster by skipping unnecessary re-downloads from Meta's servers. This means your ads launch quicker, especially with large video files.
Resolved a bug where launching ads with "No Instagram" selected would fail on new Meta pages. RunItUp now automatically prepares your page's Instagram account before creating ads, ensuring launches work reliably across all your pages.
Launching ads with pending placement crops no longer fails with a "429" error. We optimized how videos are downloaded during launch to prevent overloading the CDN and eliminated duplicate downloads that occurred when launches raced background crop generation.
RunItUp now automatically generates optimized crops of your images and videos for Facebook feed, Instagram feed, Stories, Reels, and right column placements. You can also manually customize crops for each placement directly in the campaign builder.
When Meta processes your ads, the progress bar now shows an animated indicator with "Finalizing on Meta…" instead of a percentage that appears frozen. This makes it clear that the system is actively working rather than stalled.
Video uploads were previously stuck at around 94% progress due to insufficient progress updates. We've fixed this so the progress bar now advances smoothly throughout the entire upload, giving you accurate feedback on where your video is in the upload process.
Video uploads no longer freeze at 93% while Meta processes the file. The progress indicator now smoothly transitions to show the finalization step in real-time.
When uploading videos, the progress bar now shows real movement while Meta finalizes your assets server-side, instead of appearing frozen. You'll see "Finalizing on Meta…" with a live percentage that reaches 100% when the upload completes.
Video uploads now process in parallel instead of one at a time, reducing the time to finalize a batch from ~10 minutes to ~3 minutes. You'll also see live progress updates while Meta processes your videos, so the progress bar no longer freezes at the end.
Fixed an issue where Pulse all-time backfills would fail when Meta returned error code 1 (a transient error from heavy load). The backfill now retries these errors automatically instead of failing immediately.
We've optimized the dashboard to display cached data instantly on load, then silently refresh it in the background. We've also prefetched project creation defaults for single-account users to skip the loading spinner on the next step.
Pulse backfill now runs in the background, so syncs complete instantly instead of timing out when Meta's rate limits are being recovered. You'll see a "syncing" status while the backfill runs and "ready" when it's done.
We've optimized database performance by adding missing indexes and tuning connection pooling. This means your dashboard, projects list, team settings, and ad editor now load noticeably faster.
Pulse now handles Meta's rate limits gracefully by spacing out requests and automatically retrying when needed. This prevents the occasional "rate limit exceeded" errors you may have seen when running Pulse.
Dashboard pages now display a loading skeleton immediately on page load instead of showing a blank screen. This means you'll see content start to appear much faster, especially on slower connections.
Pulse insight reports were getting stuck loading due to throttling delays. We've improved the data fetching to work synchronously in bounded windows, so reports now load in seconds instead of getting stuck.
Pulse now loads historical spend data much faster for accounts with long ad histories. We switched to Meta's async reporting method, which pulls years of daily data in under two minutes instead of timing out.
Large ad accounts that previously failed to load pulse data will now retry automatically and fetch data in smaller chunks for better reliability. This resolves timeout issues when loading performance data from Meta.
We've optimized project loading by fetching your ad rows on the server instead of waiting for the page to fully load. Your project table now displays almost a second sooner when you open a project.
Pulse syncs were failing when trying to fetch data older than 37 months due to Meta platform restrictions. We've fixed this by automatically limiting historical lookback to Meta's supported range, so syncs will now succeed consistently.
Fixed an issue where fetching all-time historical data for Pulse would timeout or fail on large accounts. Data is now retrieved in smaller time windows to ensure syncs complete reliably.
We've launched a new help center hub at /docs where you can browse and read our guides. The Help & docs links in the dashboard menu now point to this central location instead of a placeholder.
RunItUp's website now has full SEO optimization including proper page titles, social media preview cards, structured data for search engines, and a sitemap. The site is now fully discoverable by search engines and displays correctly when shared on social platforms.
Connected Facebook accounts now display their actual profile photos in the Connections pane instead of just initials. You can now recognize your different accounts at a glance.
When creating ads, you'll now see your most recently used destination URLs suggested in the editor. This speeds up ad setup by letting you quickly select URLs you've used before instead of typing them in every time.
You can now click the pencil icon next to any ad set in the campaign picker to open the full edit modal and update fields like name, budget, bid, targeting, and schedule. Changes are applied instantly to your live campaigns.
The bulk ad selection toolbar now makes it easier to deselect ads. The deselect button sits right next to the selection count, and a "Deselect all" option appears in the footer when ads are selected, matching the "Select all" control.
Toast notifications now appear at the top center of the screen instead of the bottom right, so they won't cover the buttons you just clicked. You'll have a clearer view of your dashboard while notifications appear.
When filtering ads in the "Import from existing ad" flow, the table was incorrectly showing "No ads match your filters" while data was still loading. The loading skeleton now displays properly during all fetches, not just the initial load.
When importing from an existing ad, the Format field is now unchecked by default. This prevents mismatches when the source and target ads support different formats, ensuring you have full control over which format settings to carry over.
When duplicating ads that hit Meta's Dynamic Creative limits, the confirmation modal now explains what's happening and why in plain language. You'll see exactly what new ad sets will be created before launch.
Fixed React hydration mismatches that could cause console errors on the projects dashboard, particularly when viewing on smaller screens. The dashboard now renders consistently between the server and client on first load.
You can now quickly fix a typo in a campaign or ad set name without leaving the editor. Just hover over the name in the picker dropdown, click the pencil icon, edit the text, and press Enter or click away to save.
When importing ad copy into multiple rows, cells now cap their height at approximately 6 lines and scroll internally instead of expanding to full paragraph height. Short copy still displays normally, keeping your table organized and easy to scan.
You can now paste a link to a public Google Drive folder and browse its contents directly in RunItUp, just like browsing Dropbox. Each folder also has a one-click Import button to pull all media files (including nested folders) into your asset selection.
You can now paste a Google Drive link (file or folder) directly into the import tab instead of downloading and re-uploading files to your own Drive. The files resolve instantly and appear ready to use in your ad builds.
When editing multiple ads at once, the "Apply to all" popup no longer appears for ad name changes. Ad names remain individual to each ad, preventing accidental duplication of names across your selection.
Fixed an issue where ad sets would fail to appear when editing campaigns in bulk using the Edit Campaign · Ad set picker. Ad sets now load correctly, matching the behavior of the standard row-by-row editor.
You can now upload assets and import from an existing ad at the same time without losing your uploads. Previously, starting an import while files were still uploading would clear the uploaded assets from view.
When you add ad accounts in Settings and return to the New Project wizard, they'll now appear automatically without requiring a page refresh. We also fixed Settings and account management links to open in the same tab like all other navigation.
The Campaigns section in the sidebar is now visible only to workspace owners and admins, helping organize the interface for non-administrative team members. Non-admin users can no longer see this nav item, though the page remains accessible via direct link if needed.
When offering a free plan, the activation page now displays the regular price struck through next to $0, making the discount more visually clear. Plans without a reference price continue to show just $0.
The onboarding flow now honestly shows that only Meta is required to launch ads, removing the confusion of earlier progress indicators. Your name is also more visually prominent on the onboarding page, and you can now access the RunItUp Discord community from the footer.
The Launched dock was jumping back to the top whenever you tried to scroll through your ads. This has been fixed so scrolling now works smoothly.
All account and billing emails now display the RunItUp logo in their headers instead of a placeholder. The logo automatically adapts to light and dark email clients for a polished, professional appearance.
We've built a new checkout experience at /checkout where you can subscribe to RunItUp. It includes flexible monthly and annual billing options, a 30-day money-back guarantee, and support for multiple payment methods.
You no longer need a beta code to create an account, and your full name can be any non-empty value. RunItUp is now available for all new users.
The Facebook pixel setting has moved from individual ads to the ad set level, matching how Meta handles it. You'll now set the pixel in the Conversions tab when creating or duplicating an ad set, and it applies to all ads in that set.
Fixed an issue where rows in the editor table would unexpectedly move to the top when you imported fields or selected a Facebook page. Rows now stay in their original position as you work.
The pricing page now displays a single, cleaner plan card instead of multiple tiers. The yearly/monthly toggle only appears when both billing options are available.
When you sign up and pay, you're now guided through a focused onboarding page that walks you through connecting Meta and other ad platforms before launching your first campaign. You can skip and start anytime. Nothing is required upfront.
We've added easy access to our Discord community directly in the dashboard. You can now find the Discord link in the account menu and sidebar footer.
The Launched section of the editor now shows your most recently launched ads at the top, making it easier to find and review your latest campaigns.
The Facebook page picker now displays the same orange border as other required fields when left empty, making it clearer that you need to select a page before launching an ad.
The Launched dock at the bottom of the editor was causing rows to visually overlap and jitter when scrolling. This has been fixed.
When editing ads in the EU or Taiwan, the Beneficiary and Payer fields now suggest previously-used company names in a dropdown, making it faster to fill them in correctly. You can still type a custom value if needed.
Saved ad set names now appear immediately when you open a project, instead of staying blank until you click the ad set dropdown. The app now fetches ad set data automatically as rows load.
Fixed an issue where language selections in the Duplicate Ad Set step showed numeric IDs instead of readable names like "English (US)". The language search also now displays all available options when you focus the field, just like the location picker, making it faster to find and select languages.
Long picker lists now use alternating row colors (zebra striping) to make it easier to track rows visually. Hover and selected states remain clearly distinct.
When duplicating an ad set, the source selector now displays status badges (age, campaign, spend) on the dropdown trigger, making it clearer that you're selecting from a list. We also cleaned up the customization section by removing redundant helper text.
The Targeting and Audiences tabs in the ad set customization step are now combined into a single Audiences tab, making it easier to manage audience settings and saved audiences together without switching between tabs.
When duplicating ad sets, you can now search, filter by status, and sort campaigns in the "Duplicating from" picker. This makes it faster to find the right parent campaign, especially when you have many campaigns in your account.
When editing campaigns or ad sets in bulk, the picker now defaults to showing your most recently created or modified items first, so you don't have to re-sort to find what you're working on.
Saved audiences now appear in their own dedicated selector instead of mixing with custom audiences. The Include/Exclude fields now show only custom and lookalike audiences, and applying a saved audience correctly overwrites your entire targeting spec, just like Meta works.
Fixed a bug where language targeting settings selected in the dashboard were being silently dropped when creating or duplicating ads. Language targeting now correctly applies to your ads on Meta.
Launch, import, and duplicate ads without leaving the keyboard. Use Ctrl/⌘+Enter to launch selected ads, Ctrl/⌘+I to import assets, and Ctrl/⌘+D to duplicate, all customizable in the shortcuts overlay.
Creating a new project now takes you straight to the editor with no extra loading step. Bulk actions like duplicate, archive, and delete update your dashboard immediately as you click, instead of waiting for a full refresh.
When you launch ads into an ad set that's already scheduled for a future date, the launch form now warns you and pre-fills the existing schedule so you don't accidentally create conflicting dates. This prevents ads from running at unexpected times due to mismatched scheduling settings.
The Duplicate Ad Set and Campaign modals now display source selection and campaign details in a more intuitive layout. You can expand or collapse campaign details on demand, and switch sources directly from the main editing area.
Pulse insights now pull your account's full available spend history instead of limiting to the last 90 days, and analysis windows are anchored to your most recent active day rather than today's date. This means even paused accounts get accurate performance scores based on real data.
Deleting a project now requires only a single click to confirm, without having to type the project name. The warning message still clearly explains what will happen and that the action is permanent.
When duplicating an ad set, the conversion event and attribution window dropdowns now display the actual values you'll inherit from the source, rather than a generic "No override" label. This makes it immediately clear what settings will apply to your duplicate.
Country flags in the Targeting location chips now render properly on Windows instead of showing as letter codes. The fix uses a specialized font only on Windows devices, so other systems continue to display their native flags.
When you create a project in one browser tab, it will now instantly appear in the projects list on your other open tabs. The list also refreshes automatically when you switch back to a tab after editing or deleting projects elsewhere.
The post picker modal now lets you filter by ad account, campaign, and ad set, just like the import existing ads modal. You can search and filter across any of your connected Meta accounts to find the right post to reuse.
When importing settings from an existing ad, the Post ID field is now unchecked by default instead of automatically inheriting the source ad's post. You can still opt in to reuse the same post by checking the field manually.
Press Tab to quickly apply detected changes across all selected ads when editing multiple ads at once. The shortcut is customizable in Settings and displays live on the suggestion popup.
The projects page now shows your list instantly and loads additional projects in the background, rather than waiting for everything upfront. Typing notes and interacting with individual projects also feels more responsive.
Images throughout RunItUp now load in more efficient formats (AVIF and WebP) based on your browser, reducing file sizes and page load times. Account avatars also show a smooth placeholder while loading, eliminating jarring visual flashes.
When you select ads in the editor, the Filter and Columns menus now remain visible so you can refine your list or adjust which columns you see without deselecting. Only the Search box hides during selection to make room for bulk-action controls.
When you navigate back to your dashboard after visiting another page, cached data now displays instantly instead of showing a loading skeleton. The page still refreshes with the latest data in the background.
The ad set wizard now has an Advanced tab where optimization goal, billing event, conversion event, DSA disclosure, and attribution window settings live. The Delivery and Audiences tabs are now simpler and more focused, with advanced audience options surfaced directly instead of hidden in collapsed menus.
Drag the edge of any column header in the editor to resize it to your preference. Double-click a column divider to reset it, or use the "Reset column widths" option in the Columns menu to reset all at once. Your custom widths are saved automatically.
We've simplified the bulk import workflow with clearer, plainer language for grouping options and removed a redundant choice that was making the decision harder. The review step now emphasizes that you can rearrange assets after import.
When picking a source ad to copy, the import modal now displays ad stats from their entire lifetime rather than just the last 30 days. This makes it easier to spot high-performing ads without manually changing the time range filter.
The editor now hides redundant bulk-action buttons in the top toolbar when using floating mode, leaving the taskbar as the single place to access edit, duplicate, import, and delete actions. This reduces visual clutter and makes it clearer where to find bulk controls.
Bulk edits in the campaign editor now re-render only the rows and creatives you actually changed, instead of refreshing every row on the page. This makes large bulk operations noticeably faster.
The Description column is now hidden when you open the editor, reducing clutter and horizontal scrolling. You can still show it anytime using the column menu.
The ad account picker in your Launch defaults settings now shows the same detailed account information as the Create Project flow, including account status, region, and key performance metrics like spend and ROAS. This makes it easier to pick the right account when setting your defaults.
Clicking the Run It Up logo in the project editor now takes you back to your projects list, making navigation more intuitive.
Dropdowns throughout the app now properly close when you click outside of them. Previously, you had to click another dropdown or re-click the trigger to dismiss one.
When you open a project, the campaign and ad set pickers now display "Loading…" while fetching data instead of showing empty placeholders. This prevents the confusing appearance that your selections have disappeared.
The dashboard now shows how old each ad set is, making it easier to spot and manage duplicate ad sets. This helps you quickly identify which ad sets you want to work with when building or duplicating campaigns.
When you duplicate an ad set or campaign from the editor, the new one now appears in the picker immediately instead of waiting 2-3 seconds. The Meta sync still happens in the background; you'll see the final data once it completes.
Clicking "View in Ads Manager" on a launched ad now shows only that ad in Ads Manager, instead of displaying your entire ad account with just that one ad pre-checked. The ad row is also pre-selected for quick actions.
When duplicating an active campaign or ad set, the On Launch toggle now defaults to Active instead of Paused, matching the source's current status. This saves a manual click for every active duplicate you launch.
Fixed a bug where the Project settings modal would hang indefinitely on load and the dropdown controls would be unresponsive. The modal now opens instantly and remains fully interactive.
Rows in the Launched section of the project editor now display clearly without appearing to overlap when scrolling. Previously, stacked campaign and ad-set information created a visual bleed between rows.
You can now drop image and video files anywhere on the project editor page to instantly create ad rows. Each file becomes one row automatically, with no need to navigate through the import dialog.
We removed the objective filter from campaign and ad set pickers across the app. This streamlines the interface and makes it faster to find and select the campaigns you need.
The "Manage permissions" link in the Ad Profiles dropdown now opens Meta Business Settings in a new tab. Middle-click and Ctrl/Cmd-click now work as expected.
Imported ads were showing a temporary marker suffix (like [riu-mppr920y-2]) on ad names after page refresh or launch. This has been fixed. Imported ad names now display cleanly without any junk suffixes.
The New project wizard now displays accurate 30-day spend, ROAS, and active campaign counts for each of your Meta ad accounts. Previously, these fields were showing as zero regardless of actual account activity.
The password-change flow now requires you to explicitly click "Send verification code" before the OTP email is dispatched, preventing accidental emails if you open the dialog by mistake. You can cancel at any time without triggering a send.
Ad profile selectors now display real Facebook page and Instagram account photos instead of initials, making it easier to identify pages at a glance, especially when managing multiple similar accounts.
When you bulk-launch multiple ads, each one now moves to your Launched section the moment it completes, instead of waiting for the entire batch to finish. The timestamp on each ad accurately reflects when it actually launched.
The bid cap field in the Create Ad Set form now disables itself when your parent campaign uses automatic bidding, preventing confusing Meta API errors. A clear message explains why the field is locked and how to change it.
The "Manage Your Team" section on our marketing homepage was accidentally showing your real team members when you were signed in. It now consistently displays example team data like other sections, so the page gives an accurate preview of the product without exposing your account information.
We've streamlined our pricing to a single Unlimited plan at $88/month (or $70/month billed yearly). All features are now included in one straightforward offering with no tier limitations.
Failed ad launches now remain in your main editor table so you can retry them without switching tabs. A quick retry button appears on each failed row, and you can bulk-relaunch multiple failed ads at once.
Fixed a bug where the red required-field indicator (the dot next to Call to action, Pixel, Ad profiles, and other key fields) would stay visible even after you filled in those fields for all selected rows. The indicator now correctly disappears once you've populated the field across your selection.
The Import from Existing Ad modal now loads ads from a single campaign by default instead of your entire ad account, making the process much faster. You can still switch to any campaign or load all ads at once.
The bulk asset import dialog now shows only the most useful sources. We removed the Meta images tab since it offered fewer options than the Existing ads source and created unnecessary clutter.
The campaign, pixel, and ad profile picker in bulk edit mode now shows all available options instead of hiding them when rows already had values selected. This makes it easier to change these settings on multiple ads at once.
The Create Project wizard now only shows Meta ad accounts you've explicitly added in Settings, instead of showing all accessible accounts. When you have no added accounts, the picker displays a helpful message showing how many accounts are available to add, with a direct link to Settings.
Dropdown menus in the asset picker (for selecting ad accounts, campaigns, and ad sets) now automatically close when you switch to a different source tab. Previously they would remain open and could obscure content from other tabs.
We fixed six issues discovered in QA: dark mode now respects your system preference on first load, project settings no longer lose your typed input during slow network loads, settings tab deep-links now work correctly, the integrations panel no longer flashes "not connected" while loading, and you can now sort projects by their notes field.
Text from ad rows no longer bleeds through the sticky columns when scrolling horizontally in the Launched section. We also cleaned up duplicate cohort information in the section header.
The launch review step now displays actual preview images of your ads instead of generic icons, making it easier to verify which creatives you're launching before they go live.
When importing assets from Google Drive, you'll now see a preview thumbnail and readable file size (like "12 MB") for each file you select, instead of generic placeholders. This makes it easier to verify your selections before importing.
Deleting ads in the editor no longer requires confirming via a modal. Click the delete button or trash icon and the ad disappears immediately, streamlining your workflow.
Campaign and Ad set filter dropdowns in the "Import from existing ad" modal now display correctly, with the label and dropdown arrow properly aligned instead of appearing misaligned or clipped.
When importing from an existing ad, the source picker now displays actual creative thumbnails instead of generic placeholders. This makes it much faster to identify and select the right ad to import.
When editing multiple fields at once, the bulk-edit modal now shows amber warning icons next to the required fields, the same visual cue you see in the regular field dropdown. This makes it clearer which fields must be set before your ads go live.
The campaign and ad set dropdowns in the Existing Ads import tab now display status indicators, counts, and spending information alongside each option. Both dropdowns also show a loading state while data is being fetched, so you won't see an empty picker on first open.
When you edit a field on one of multiple selected ads, a prompt appears asking if you'd like to apply that change to all the other selected ads in one click. The change auto-dismisses after 6 seconds, and respects your original selection. Launched ads are never modified.
You can now instantly copy creative, targeting, and delivery settings from any of your previously-launched Meta ads directly into your bulk editor. Select the fields you want to import, choose which ads to apply them to, and they'll update in seconds.
The "Match same creative" option in bulk asset import now actually groups files by normalized filename and media type, instead of being a decorative label. This is currently a beta feature that matches by filename only.
When you import multiple ads at once, they're now automatically selected so you can launch, configure, or duplicate them with one click instead of manually checking dozens of checkboxes. Your existing selections on other ads remain unchanged.
You can now quickly duplicate existing ads and campaigns directly from the dashboard, saving time when you need to create variations or scale successful campaigns. Use the new duplication flows to copy settings and adapt them for new audiences or markets.
Asset uploads now happen in the background, so you can continue building your ads while files are uploading. You'll see the upload status right in the editor.
Signed-in users who land on a 404 error page are now sent to their dashboard instead of the marketing homepage. The page intelligently routes you based on whether you're logged in.
Fixed a bug where failed ads and workspace tables would lose sync when scrolling horizontally, causing columns to misalign. The retry banner now stays visible and anchored during scrolling instead of drifting off-screen.
The help banner in the Failed tab was missing a space between "Retry" and "when," making it harder to read. This is now fixed.
The Google Drive tab in the asset picker now uses Google's native Picker interface instead of an API endpoint, eliminating confusing reconnection prompts and making it much simpler to browse and import your drive files directly into RunItUp.
The editor now organizes launched and failed ads in a dedicated drawer with persistent cohort tracking across reloads. You can see failed ads in their own tab with a retry option, use shift+click to select ranges within any table, and the "Select all" checkbox now only affects workspace ads, not launched ones.
When Meta validation catches an error, you can now skip that ad and continue launching the rest in one click. No need to go back and edit. Skipped ads stay visible and can be undone anytime.
We've updated the RunItUp logo and browser tab icon to look sharper in dark mode. The branding now adapts intelligently based on your interface theme.
Opening modals like "Import from library" or "Edit multiple fields" no longer flashes the page skeleton while loading. You'll see the veil darken immediately, then the modal slides in smoothly.
The Recent launches panel on the overview page now displays as a proper list with icons and separators instead of unstyled text. We've also added keyboard focus indicators so you can navigate the list with Tab.
Click anywhere on a project row to open it in the editor. No need to click the name link specifically. Hovering over the ad account and last-updated cells now shows more detailed information in a tooltip.
You can now sign in to RunItUp using your Google account. This provides a faster, more secure way to access your dashboard alongside existing login methods.
The dashboard now feels snappier in response to your clicks and typing. We fixed lag in the editor, optimized how the app loads, and eliminated unnecessary re-renders across the interface.
The editor now renders smoothly even with hundreds of ads by only displaying the visible rows, so projects with 938+ ads no longer feel laggy when scrolling or selecting. Projects are also capped at 1,000 ads and 300 launched ads per project, with a clear counter showing how much room you have left.
RunItUp now blocks you from editing ads that have already been launched to Meta. This prevents accidental changes to active campaigns.
The editor now shows a clickable "+ Add a row" zone below your last ad, making it clearer where new rows get added. The dashed border visually continues your table, so the empty space reads as ready-to-grow rather than cut off.
Bulk edit controls are now disabled when all selected ads are launched, with a clear tooltip explaining why. When editing a mix of launched and draft ads, launched rows are automatically skipped and the results show how many were bypassed.
Pull existing ads in from any account - Post IDs, site links, placement customization, all in the bulk editor. Plus full ad-set duplicate across campaigns in one pass.
Frame.io imports are now faster and more reliable. Large projects reconnect automatically, handle more files at once, and no longer drop files mid-import.
Tightened the audience picker: prefetch handling, saved-audience preservation across duplicate and export, and validation toasts that actually tell you what's wrong.
DSA and attribution settings moved to the audiences advanced section. Auto-scrolling lookalike picker. Targeting tab in duplicate mode now scoped to where it makes sense.
Targeting export is built into Ad Set Manager now - location alias expansion, dynamic columns, preview-URL checks before launch.
New file selector with a unified asset tray. Provider lifecycle cleanups. Direct asset import from existing ads. Dropbox refreshes in place and handles unknown file types without choking.
Set day-parting windows and per-ad-set spend caps during creation. Budget type feeds scheduling logic - you control pace, not just total.
Cleaner thumbnail previews, clearer video labels, and file details at a glance. Team spaces and folders are easier to browse.
Placement Asset Customization. Crop each placement independently during bulk upload, preview thumbnails save instantly and persist with the project.