Read the portfolio, not the reel
Your search, knit into cloth. Below, a live scene you can break.
A three js developer portfolio is only proof if it runs live.
You're looking at a three js developer portfolio to answer one question: is this real, or is it a reel? The fastest tell is whether the work runs in your browser right now. A scene you can grab, spin, and stall tells the truth about frame rate. A looping video hides it.
This page is a reading guide, not a sales pitch. Below is a sequence for what to click, a table of green flags and red flags, and the one test that separates a demo from a production system: how it behaves on a mid-range phone.
I'm David Weaver, and I build these scenes solo — the interactive loom on this site's homepage is mine, and you can pull it apart. Start with the mini scene below. It mounts only when you ask it to, which is itself one of the tells you should be checking for elsewhere.
01
Pull apart a live scene (it mounts on tap)
Three.js snippet playground
Static poster first. WebGL mounts only when you ask — the same discipline that keeps heroes green on Core Web Vitals. Snippets are illustrative, not a full IDE.
Snippet
// R3F — spinning box (illustrative)
<mesh rotation={[t, t * 0.4, 0]}>
<boxGeometry />
<meshStandardMaterial color="#ff6b4a" />
</mesh>02
Live and interactive, or a video reel?
A video of a WebGL scene proves someone can render one frame. It says nothing about the forty frames that should follow every second while you interact. When a portfolio ships video instead of the running scene, ask why. Sometimes it's bandwidth. Often the live build was too heavy to leave on the page.
So the first move is trivial: try to interact. Drag it. Scroll into it. Tap it. If nothing responds, you're watching a movie of the work, not the work. That is not an automatic disqualifier — but it moves the burden of proof onto a call, where you can ask them to screen-share the running build.
03
What to click, and what it tells you
Open the portfolio on your own device and go in this order:
The hero scene
Grab it and move. Instant response means it is live. A frozen loop means it is video, or it stalled.
A second project
One live scene can be a fluke or a bought template. Two or three, all interactive, means the skill is theirs.
The load moment
Reload and watch what happens before the 3D appears. Readable text first, then the scene, is right. A blank canvas that hangs is a Core Web Vitals problem you would inherit.
The page source
View source for a second. Real headings and copy in the HTML — not an empty div waiting on JavaScript — is the honesty signal search engines read too.
The contact path
Send a real message. Who replies, and how fast, is part of the portfolio. On a solo shop it should be the builder.
04
Green flags vs. red flags
What separates a portfolio you can trust from a highlight reel:
| Signal | Green flag | Red flag |
|---|---|---|
| The scene | Runs live, responds the instant you touch it | Video loop, or a “coming soon” placeholder |
| On your phone | Stays smooth, phone stays cool | Stutters, heats up, drains battery |
| First paint | Text loads, then the scene mounts | Blank canvas holds the whole page hostage |
| Breadth | Several live scenes in one voice | A single demo cloned from a tutorial |
| Reduced motion | Respected — a calm fallback exists | Motion forced on everyone, no opt-out |
None of these disqualify on their own. A stack of red flags does.
05
The mid-phone frame-rate test
Desktop GPUs forgive lazy work. A three-year-old Android does not. Open the portfolio on a mid-range phone and interact for thirty seconds. If it stays smooth and the phone stays cool, the developer budgeted their draw calls, geometry, and textures. If it stutters or the case gets warm, that same weight lands on your customers — most of whom are on phones, not gaming rigs.
You don't need dev tools for this. Your thumb and the back of the case are enough. Jank you can feel is jank Google can measure, and it is the version of the site most of your visitors will actually meet.
06
What the scene above proves
The mini scene on this page is the standard I'm asking you to hold others to — and me. It mounts only when you tap, so it never taxes first paint. It runs live, so you can feel the frame rate instead of trusting a caption. For more, /work has products you can open and Roblox games you can play right now. Judge the craft in production, not in a pitch PDF.
Proof over promises
Open the work. Judge it live.

2026 · Software · Shipped
Black Nile
A conversational website builder where small businesses talk, a site appears, and their own AI answers customers — metered to the credit.

2026 · Sound · Shipped
DWeaveAi Fan Funnel
A static fan funnel, live at dweaveai.space — one owned landing page per song, routing listeners to every streaming platform.

2026 · Writing · Shipped
BookReader
Cinematic audiobooks where the listener names the price — pay what you want, minimum ninety-nine cents.
Straight answers
Asked often. Answered honestly.
- How do I tell if a Three.js portfolio is live or just a video?
- Try to interact. Drag the scene, scroll into it, tap it. A live WebGL scene responds instantly; a video loop ignores you. If nothing moves under your finger, you're watching a recording of the work, not the work itself.
- The portfolio is video-only — should I walk away?
- Not automatically. Bandwidth and privacy are real reasons to record a scene. But video hides frame rate, so move the proof to a call and ask the developer to screen-share the running build on a throttled connection. If they can't, that tells you something.
- What frame rate should a Three.js scene hit on a phone?
- Aim for a steady 60 fps on a current phone and no worse than a smooth 30 on a mid-range Android from a few years back. Consistency matters more than the number — a steady 30 feels better than a 60 that drops to 20 every time you interact.
- What should I click first when judging a portfolio?
- The hero scene, then a second project, then reload and watch the load order. Live-and-interactive on more than one scene, with readable HTML that paints before the 3D mounts, is the pattern you want. One lonely demo cloned from a tutorial is not.
- How do I check performance without developer tools?
- Your thumb and the back of the phone. Interact for thirty seconds; if the motion stutters or the case gets warm, the scene is over budget. Jank you can feel is jank your customers and Google will feel too.
- Does a beautiful portfolio mean they can build my commercial site?
- Not on its own. Ask who wrote the copy, whether the scene passes Core Web Vitals, and whether anything on the page actually sells. Spectacle that ignores load time and conversion is a showreel, not a business system.
You just judged a live scene instead of a reel. Hold your own project to the same bar — tell me what it should do and who it's for.