
Research
Namastex.ai npm Packages Hit with TeamPCP-Style CanisterWorm Malware
Malicious Namastex.ai npm packages appear to replicate TeamPCP-style Canister Worm tradecraft, including exfiltration and self-propagation.
next-lovable
Advanced tools
Cross-platform tool to migrate Lovable React projects to Next.js with credit-free single file conversion
An intelligent CLI tool to automatically migrate React applications to Next.js 13+ (App Router), specializing in React Router to App Router conversions.
npm install -g next-lovable
Authentication with your nextlovable.com account is required for all conversions:
Starting from version 0.0.7, the CLI uses subcommands:
# Full project migration (requires auth + migration credits)
next-lovable migrate <source-directory> [target-directory]
# Single file conversion (requires auth + file conversion credits)
next-lovable convert <file> [options]
# Check your file conversion credit balance
next-lovable credits
Note: In versions before 0.6, use the legacy format:
next-lovable <source-directory> [target-directory]
Convert individual React files to Next.js with credit tracking:
# Convert a single component (consumes 1 file conversion credit)
next-lovable convert MyComponent.tsx
# Save to different location
next-lovable convert MyComponent.tsx --output ./converted/MyComponent.tsx
# Apply specific transformations only
next-lovable convert MyComponent.tsx --transform router,client
# Preview changes without consuming credits
next-lovable convert MyComponent.tsx --dry-run --show-diff
# List available transformations (no auth required)
next-lovable convert --list
router: React Router → Next.js Router (useNavigate, Link, etc.)helmet: React Helmet → Next.js Headclient: Add "use client" directive where neededcontext: Context provider transformationsall: Apply all transformations (default)-o, --output <path>: Output file path (default: overwrite input)-t, --transform <types>: Comma-separated transformations (default: all)-d, --dry-run: Preview changes without modification--show-diff: Show before/after comparison (with --dry-run)--legacy: Use legacy transformers instead of enhanced ones--list: List available transformationsnext-lovable migrate ./my-react-app --dry-run
The --dry-run option provides:
next-lovable migrate ./my-react-app ./next-app --yes --install
-y, --yes: Skip confirmation prompts-i, --install: Install dependencies after migration-d, --dry-run: Simulation mode without changes-e, --enhanced: Use enhanced migration (default)--legacy: Use legacy migration mode--help: Show help informationAuthentication & Validation (Full Migration Only)
Smart Analysis
Automated Transformations
Post-Migration Setup (Full Migration Only)
# Test router conversion on a specific component (free with dry-run)
next-lovable convert src/components/Navigation.tsx --dry-run
# Convert only routing-related code (consumes 1 credit)
next-lovable convert src/pages/Dashboard.tsx --transform router --output ./test-output.tsx
# Preview all transformations with diff (free)
next-lovable convert src/App.tsx --dry-run --show-diff
# 0. Check your file conversion credit balance
next-lovable credits
# 1. Test key components individually (free with dry-run)
next-lovable convert src/App.tsx --dry-run
next-lovable convert src/components/Layout.tsx --dry-run
# 2. Run full project dry-run (consumes migration credits)
next-lovable migrate ./my-react-app --dry-run
# 3. Execute full migration
next-lovable migrate ./my-react-app ./next-app --install
router)useNavigate() → useRouter() from next/navigation<Link to="/path"> → <Link href="/path"> from next/linkuseLocation() → usePathname() + useSearchParams()useParams() → Next.js useParams()to={\/user/${id}`}→href={`/user/${id}`}`helmet)<Helmet> → <Head> from next/headclient)src/appnpm run devBefore (React Router):
import { Link, useNavigate, useLocation } from 'react-router-dom';
export const Navigation = () => {
const navigate = useNavigate();
const location = useLocation();
return (
<nav>
<Link to="/dashboard">Dashboard</Link>
<Link to={`/profile/${userId}`}>Profile</Link>
<button onClick={() => navigate('/settings')}>
Settings
</button>
<p>Current: {location.pathname}</p>
</nav>
);
};
After (Next.js) - using next-lovable convert:
'use client';
import Link from 'next/link';
import { useRouter, usePathname } from 'next/navigation';
export const Navigation = () => {
const router = useRouter();
const pathname = usePathname();
return (
<nav>
<Link href="/dashboard">Dashboard</Link>
<Link href={`/profile/${userId}`}>Profile</Link>
<button onClick={() => router.push('/settings')}>
Settings
</button>
<p>Current: {pathname}</p>
</nav>
);
};
Before:
import { Helmet } from 'react-helmet';
export const PageMeta = ({ title, description }) => (
<Helmet>
<title>{title}</title>
<meta name="description" content={description} />
</Helmet>
);
After:
import Head from 'next/head';
export const PageMeta = ({ title, description }) => (
<Head>
<title>{title}</title>
<meta name="description" content={description} />
</Head>
);
| Task | Command | Credits Required |
|---|---|---|
| List transformations | next-lovable convert --list | ❌ No |
| Check credit balance | next-lovable credits | ❌ No (auth required) |
| Test single file | next-lovable convert MyComponent.tsx --dry-run | ❌ No |
| Convert single file | next-lovable convert MyComponent.tsx | ✅ 1 file credit |
| Preview project migration | next-lovable migrate ./my-app --dry-run | ✅ Migration credits |
| Full project migration | next-lovable migrate ./my-app ./next-app | ✅ Migration credits |
Start with Dry-Run Testing (Free)
convert --dry-runEfficient Credit Usage
Full Project Migration
migrate --dry-run firstIncremental Approach
# Test individual files first (free with dry-run)
next-lovable convert src/App.tsx --dry-run
next-lovable convert src/components/*.tsx --dry-run
# Convert specific files (consumes file credits)
next-lovable convert src/App.tsx
next-lovable convert src/components/Navigation.tsx
# Then migrate the full project (consumes migration credits)
next-lovable migrate ./my-react-app --dry-run
next-lovable migrate ./my-react-app ./next-app --install
migrate, convert)FAQs
Cross-platform tool to migrate Lovable React projects to Next.js with credit-free single file conversion
We found that next-lovable demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago. It has 1 open source maintainer collaborating on the project.
Did you know?

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Research
Malicious Namastex.ai npm packages appear to replicate TeamPCP-style Canister Worm tradecraft, including exfiltration and self-propagation.

Product
Explore exportable charts for vulnerabilities, dependencies, and usage with Reports, Socket’s new extensible reporting framework.

Product
Socket for Jira lets teams turn alerts into Jira tickets with manual creation, automated ticketing rules, and two-way sync.