Use Case

floors.js for Apps

Your app has active users right now — but they have no idea anyone else is there. floors.js adds a social presence layer so users see each other, interact, and feel like they're part of something alive.

Get started — from $14/mo See how it works

The invisible user problem

Most apps feel like solo experiences. A user logs in, does their thing, and leaves. They never know that 50 other people were using the app at the same time. There's no sense of life, no social proof, no reason to stick around.

Your app works great — but it feels empty. Even with thousands of users, every session feels like a private one. That's a missed opportunity for engagement, retention, and word-of-mouth.

What floors.js does for apps

floors.js adds a real-time presence layer to your product. Every screen becomes a room. Every active user becomes a 3D avatar. When two users are on the same screen, they see each other and can chat — right inside your app.

Where apps use it

Dashboard & home screen
Users land on their dashboard and see others are online too. The app immediately feels active and alive — not like a lonely spreadsheet.
Feature pages
Someone is exploring a feature for the first time. Another user who already uses it is on the same page. They chat. Organic onboarding happens.
Pricing & upgrade pages
A user is hesitating on the pricing page. You (the founder) see them there and answer their question live. That's the conversion that wouldn't have happened otherwise.
Changelog & updates
You ship a new feature. Users gather on the changelog page to discuss it — instant feedback loop without leaving the app.

Why presence matters more than chat

You can add a chat widget to any app. But chat alone doesn't change how the app feels. A support chat is transactional — type a question, wait for a reply, close the ticket.

Presence is different. When users see 3D avatars walking around, the app feels inhabited. It's the difference between walking into an empty store and walking into one with people in it. You stay longer. You explore more. You come back.

floors.js gives your app that "people are here" feeling — which is the hardest thing to manufacture and the most powerful thing for retention.

One line to install

<script src="https://floorsjs.com/embed.js" data-key="flr_..."></script>

Paste it in your app's HTML shell, layout component, or WebView. Each route becomes a room automatically. Works with React, Next.js, Vue, Nuxt, Svelte, Angular, or any framework. For mobile apps using WebViews (React Native, Capacitor, Ionic), load it inside the WebView.

Frequently asked questions

Does it work in a mobile app?
Yes. If your mobile app uses a WebView (React Native WebView, Capacitor, etc.), you can load the script inside it. Native iOS/Android apps without a WebView would need a custom integration.
Can users see each other across different screens?
Yes. Each route or screen becomes a room. The building overview shows all active screens and who is on each one. Users can see the whole app is alive.
Does it slow down my app?
No. The widget shell loads instantly (< 1 KB). Three.js is loaded asynchronously after your app is ready. No impact on your load time or Core Web Vitals.
Can I disable the chat and keep only presence?
Not yet, but private mode lets you control visibility. Users only see you (the owner), not each other — useful for support-style interactions.
How is this different from adding a chat widget?
Chat widgets are for support tickets. floors.js adds presence — users see other real people using the app at the same time. That social layer makes the app feel alive, not just functional.

Alternatives & Comparisons

Intercom Alternative Crisp Alternative Tidio Alternative tawk.to Alternative vs Gather vs SpatialChat