Comparisons
Builderdex Editorial11 min read2 views

AI App Builder Third-Party Packages in 2026: Five Ways to Add Somebody Else's Code

All eight AI app builders let your app use somebody else's code, and they mean five different things by it: a package registry, a real machine, a plugin marketplace, a design-system registry, or a snippet box. The mechanism decides who patches it.

Flat minimalist diagram: six small coloured blocks on the left, one of them outlined rather than filled, connected by thin lines into a large rounded application shell on the right, representing third-party packages being added to an app built by an AI app builder.
Flat minimalist diagram: six small coloured blocks on the left, one of them outlined rather than filled, connected by thin lines into a large rounded application shell on the right, representing third-party packages being added to an app built by an AI app builder.
On this page

Quick Answer

Ask any of these eight builders whether your app can use a third-party library and all eight say yes. In September 2026 that agreement is worth almost nothing, because the eight answers are not degrees of the same capability. They are five structurally different mechanisms, and the mechanism decides who is responsible for the code after it is in your app.

Two builders give you the public npm registry. Lovable logo Lovable documents that "Every Lovable project can use npm packages" and that you install them by naming one in chat. Base44 logo Base44 now documents the same thing, with an approval step: "You can request to add npm packages, review the request, and approve installation, all from the AI chat inside your app editor."

Two give you a real package manager because they give you a real machine. Replit logo Replit runs a shell and a filesystem, and Bolt.new logo Bolt.new runs Node.js in the browser, which is why its documented ceiling is a language boundary rather than a package boundary.

One gives you a curated marketplace instead of a registry. Bubble logo Bubble documents "a collection of Bubble-developed plugins, and thousands of community-developed plugins", which is a different distribution model with a different failure mode.

One gives you a design-system registry. v0 logo v0 defaults to shadcn/ui and warns that it "is specifically trained on the default implementations", so deviation costs generation quality rather than compatibility.

One gives you a snippet box. Softr logo Softr has no package concept at all; third-party code arrives as pasted HTML, CSS and JavaScript in a Custom code block.

And one gives you npm inside a constraint most people will not anticipate. Webflow logo Webflow Code Components accept npm libraries but render inside a Shadow DOM, so any library that writes styles into the page head needs extra configuration to work at all.

The sentence that matters most is the one both npm builders volunteer. Base44, in its own documentation: "Base44 can't guarantee the quality, reliability, or security of any external package you install." Lovable, in its own documentation: "Lovable installs any public npm package you ask for, but it cannot guarantee the quality, security, or reliability of third-party code." The builder puts the code in. The builder tells you the code is your problem.

Third-party code across eight AI app builders, September 2026

Scroll to see more

BuilderWhat you can addHow it gets inWho maintains it afterwardsDocumented limit
Lovable logo LovableAny public npm package; private packages on EnterpriseName it in project chat, no terminal stepYou, by prompting; Bun records exact versions in a lock filePackages built for other runtimes install without errors and do not work
Base44 logo Base44Public npm packages; separate curated component libraryAsk in AI chat, then click ApproveNot documented on the npm pageVendor disclaims quality, reliability and security of any package
Replit logo ReplitWhatever the environment supports; it is a real machineShell and filesystem, the conventional wayYou, with conventional toolingThe Library panel is design templates, not code
Bolt.new logo Bolt.newAny JavaScript framework that runs on the frontendIn-browser Node.js runtimeYou, in the generated projectJavaScript only; PHP and Python are not compatible
Bubble logo BubbleBubble-made plugins plus thousands of community pluginsInstall from the Plugins tab, configure keys thereThe plugin author, not you and not BubbleNo npm concept; you get the marketplace or nothing
Softr logo SoftrPasted HTML, CSS and JavaScript snippetsCustom code block, paid plans onlyYou, by editing the snippetIn single-page mode, header scripts run only once, on first load
v0 logo v0Other component libraries and frameworks; custom registriesGeneration, or point it at a registryYou, in the exported projectTrained on shadcn/ui defaults; customisations may degrade output
Webflow logo Webflownpm libraries inside Code ComponentsConventional install plus a webpack configurationYou, in your component sourceShadow DOM; CSS-in-JS needs a Shadow Root provider

Every cell is drawn from the vendor's own current documentation, listed in full at the end. Where a vendor does not address something, the cell says so rather than guessing.

Finding one: the mechanism decides who is on the hook, and nobody advertises that

The five mechanisms are not five points on a scale from restrictive to permissive. They allocate responsibility differently, and that allocation survives long after the build.

With a package registry, the code is yours the moment it installs. You chose it, you own the consequences, and both vendors that offer it say so explicitly. With a plugin marketplace, a third party wrote and maintains the plugin, and when it breaks against a platform update you are waiting on that author. With a snippet box, there is no supply chain at all, because there is no version and no update mechanism; what you pasted is what you have forever. With a design-system registry, you are not adding behaviour so much as steering generation. With a real machine, you have whatever the ecosystem has, including the parts that are nobody's job to keep working.

The practical test is a single question, and it is not the one people ask. Not can I add a library, but in eighteen months, when this library has a security advisory, what exactly do I do about it, and on whose schedule.

Finding two: on the two npm builders, maintenance is a prompt rather than a command

Lovable documents the whole lifecycle as conversation. Its own FAQ, on updating or removing a package: "Ask in the project chat. Prompts like 'remove the moment package' or 'update recharts to the latest version' work the same way as installing."

That is genuinely convenient and it is also a different operational model from the one most teams assume they are getting. There is no terminal, no manifest to edit by hand, and the documentation says so directly: "There is no terminal step or manual package.json editing." Version state is real underneath, because Lovable records it in a Bun lock file, but the interface to that state is natural language.

Base44's page documents installation and approval thoroughly and does not address updating or removal at all. That is an absence in the documentation we read, not a claim that it cannot be done, and it is the sort of gap worth resolving with the vendor before you build something load-bearing on a package.

Finding three: the failure mode that is not an error

The sharpest sentence in this whole comparison is Lovable's, and it describes a failure that looks like success:

Lovable, on packages built for other environments, verbatim: "Packages built for other environments, such as Electron (desktop apps) or Capacitor native plugins (mobile apps), install without errors but do not work in your published app."

An install that succeeds, a build that succeeds, and a feature that is silently absent in production. This is the category of problem that costs a day, because every signal you would normally check says the work is done. If you are shipping to a browser with a serverless backend, which is what these generated apps are, then a package's target runtime is a compatibility question you have to answer yourself, before you ask for it.

The same class of constraint appears on Webflow from a different direction. Code Components render inside a Shadow DOM, so, in Webflow's words, "some tools that inject styles into the global document.head need additional configuration to scope styles correctly." The library installs, the component renders, and the styling silently does not apply until you wrap it in a Shadow Root provider. Webflow ships utilities for the common CSS-in-JS libraries precisely because this bites.

And on Softr the equivalent trap is navigation. Its single-page-application guidance is explicit: "Scripts in the App header/App footer custom code execute only once, on the first page load. They won't re-execute when navigating between pages." A third-party widget pasted into the app header works on a hard refresh and quietly stops working for anyone who arrives by clicking a link.

Three builders, three different silent failures, none of which produces an error message.

Finding four: Base44 supports npm now, and a lot of writing about it has not caught up

This one is worth stating plainly because we have to correct ourselves on it. Until recently the standard shorthand for Base44, repeated across comparison writing including our own back catalogue, was no npm import. That was a real and material limitation, and it was cited as a reason to pick something else when a project needed a specific library.

It is no longer accurate. Base44 publishes a page titled Adding and using npm packages which describes browsing npmjs.com, naming a package in chat, and approving the install, and which lists animation libraries, chart utilities, date helpers, UI components and drag-and-drop logic as examples. It also ships an npm playground for previewing packages before you commit to them.

Two things follow. The first is a correction to our own archive, which we are recording rather than quietly patching: older Builderdex comparisons that treat no npm import as a live Base44 constraint are describing a state that has changed, and the current documentation supersedes them. The second is a general caution about this category. A capability boundary on an AI app builder is a fast-moving fact. It belongs in a dated note, not in a verdict, which is why we try to rest recommendations on architecture rather than on any single feature's presence.

Finding five: two words in this category mean something other than what you expect

If you evaluate by searching vendor documentation, two words will mislead you.

Library. On Replit, the Library panel is not packages. It is design starting points, and Replit says of its Inspiration tab that it "adds no code to your project". Replit does have excellent third-party code support, but it comes from having a shell and a filesystem, and you will not find it under that heading.

Marketplace. On Bubble it is the plugin ecosystem, on v0 it is Vercel Marketplace integrations that connect services to your chats, and on neither does it mean what it means on an ecommerce project. This is not a small annoyance; it is the reason a documentation search for marketplace returns mostly the wrong thing on two of these eight builders.

Bubble is also worth reading carefully on what a plugin actually is. Its documentation describes plugins as "extensions or modules that add specific features (such as accepting payments with Stripe) or new element types", installed and configured, with API keys, from a single Plugins tab. Note the separate thing with a similar name: Bubble's component library is its own pre-built UI, not third-party code, and the two are not interchangeable.

What to check before you commit

  • Ask the maintenance question, not the capability question. Every builder here can add third-party code. Find out what updating it looks like eighteen months from now, and who is on the hook when it breaks.
  • Check the target runtime of any package you are counting on. On the npm builders, a package for the wrong runtime installs cleanly and does nothing. Confirm it is built for a browser with a serverless backend before it becomes load-bearing.
  • On Bubble, read the plugin's own maintenance history before the feature list. A community plugin is a dependency on an individual author. That is a legitimate trade and it should be a conscious one.
  • On Softr, decide early whether you are in single-page mode. It changes how pasted scripts behave, and the difference only shows up when a visitor navigates rather than reloads.
  • On Webflow, budget for the Shadow DOM. If your component library is CSS-in-JS, the integration work is real and is documented up front.
  • On v0, treat leaving shadcn/ui as a generation-quality decision. The vendor says the model is trained on the defaults. You can use other libraries; expect to correct more output.
  • Check whether private packages are a plan gate. On Lovable the managed registry is an Enterprise feature and is in beta, which matters if your design system already ships as a private package.

If the code the builder writes is the thing you care about keeping, the adjacent question is who actually owns the output and on what terms, because a package is only as portable as the project it sits in.

Verdict, September 2026

For a team that expects to pull in real libraries and keep them current, Replit and Bolt.new are the honest picks, because a shell and a real runtime mean you are using the JavaScript ecosystem rather than a curated slice of it. Bolt's constraint is clearly documented and easy to check against: JavaScript only, which is a language decision rather than a package one.

For a team that wants npm without operating anything, Lovable is the most thoroughly documented option in this group, including the parts that are inconvenient. Naming the wrong-runtime failure in its own documentation is the kind of disclosure that saves somebody a day, and the managed registry gives an enterprise a real answer for private code, with the plan gate stated up front.

Base44 has closed the gap that used to disqualify it here, and the approval step is a sensible piece of design. Verify the update and removal path with the vendor before you depend on a package, since the current documentation does not cover it.

Bubble is the strongest option in this group if what you need already exists as a plugin, and the weakest if it does not, because there is no fallback to a package registry. Judge it on the specific plugins your project needs, not on the size of the catalogue.

Webflow and v0 both accept third-party libraries with a named, documented constraint attached, which is a fair trade as long as you price the constraint in. Softr is the one to be careful with if third-party code is central to your plan, because a snippet box has no versions and no update path, and its single-page behaviour changes how snippets run.

One thing is true across all eight, and it is the note to end on. If a package touches native code, the builder stops being the relevant actor entirely, and shipping the change becomes an app store problem rather than a build problem.

Sources

All twelve source URLs were verified to return HTTP 200 on September 23, 2026 before citation.

Frequently asked questions

Can every AI app builder use third-party libraries?

All eight builders we track can use third-party code in some form, but they do it in five structurally different ways. Lovable and Base44 install packages from the public npm registry. Replit and Bolt.new give you a real runtime, so you use the ecosystem conventionally. Bubble gives you a plugin marketplace instead of a registry. v0 gives you a component and design-system registry. Softr has no package concept and takes pasted code snippets. The mechanism matters more than the yes, because it decides who maintains the code afterwards.

Does Base44 still block npm imports?

No. Base44 documents a page called Adding and using npm packages, which describes browsing npmjs.com, naming a package in the AI chat, and clicking Approve to install it. The widely repeated shorthand that Base44 has no npm import, which appears in older comparison writing including our own back catalogue, describes a state that has changed. The vendor also ships an npm playground for previewing packages.

Who is responsible for a third-party package once it is in my app?

You are, and both npm builders say so in their own documentation. Base44 writes that it cannot guarantee the quality, reliability or security of any external package you install. Lovable writes that it installs any public npm package you ask for but cannot guarantee the quality, security or reliability of third-party code. On Bubble the situation is different again, because a community plugin is maintained by its author rather than by you or by Bubble.

How do I update or remove a package on Lovable?

By prompting. Lovable's documentation states that prompts such as remove the moment package or update recharts to the latest version work the same way as installing, and that there is no terminal step or manual package manifest editing. Version state is real underneath, because Lovable records exact versions in a Bun lock file, but the interface to it is natural language rather than a command line.

Why did my package install successfully but not work?

Most often because it targets the wrong runtime. Lovable documents this directly: packages built for other environments, such as Electron for desktop apps or Capacitor native plugins for mobile, install without errors and do not work in your published app. These generated apps run in a browser with a serverless backend, so check a package's target environment before you depend on it. Webflow has a related trap, where a library installs but its styles do not apply until it is scoped to the Shadow DOM.

What does the Library panel in Replit contain?

Design starting points, not code packages. Replit's documentation describes three tabs, Templates, Inspiration and Library, and says of the Inspiration tab that it adds no code to your project. Replit does have strong third-party code support, but it comes from having a shell and a filesystem rather than from anything under that heading. This is one of two words in this category, along with marketplace, that will mislead a documentation search.

Can I use private or internal packages?

On Lovable, yes, on the Enterprise plan, through a managed registry that is currently in beta. It provides one privately hosted npm registry per workspace, set up by a workspace owner or admin, and any project in the workspace can install from it. Lovable names internal design systems, shared utility libraries and proprietary API clients as the intended use cases. The other builders in this comparison do not document an equivalent private registry.