Frames make it easy for builders to bring apps and onchain experiences directly to their users. Instead of creating a website and attracting users, you can quickly prototype an idea in a frame and push it to users via the social feed. This makes it faster to test ideas and easier for good ideas to get traction quickly.
Frames work well for this general case, but there are some frustrating parts of the experience:
Frames are slow — frames require images which are harder to develop and slower to generate server-side than plain old HTML/CSS.
Frames are more complex than necessary — the fixed buttons and frame size means that many interactions that could happen in a single web page require multiple tap throughs.
Interactions are limited — developers cannot capture or respond in real-time to taps, swipes, fields and other interactions that are common in modern applications.
1. This is a work in progress and will change a lot based on feedback.
2. Existing frames will continue to work for several months at least.
An App Frame looks just like a regular frame at first glance — it shows up in your feed, has a generated image and an interactive button.
When you tap on an app frame it opens up an app view, which is an html page loaded from the frame server. This loads very fast because it doesn’t rely on images. It will also have context about the user so you can personalize the page for them. The example below shows what Eventcaster might look like in this world.
App frames combine the best of frames and mini-apps unlocking a lot of use cases that weren’t possible with frames. It’s now much easier to animate over long poll actions like waiting for transactions or LLM responses. You can collect user input much more easily by building web forms, and much more.
App frames will also provide a lot of important building blocks that you can trigger:
The biggest difference between “app frames” and frames is that instead of rendering multiple frames in a row, you can just open up a browser and render whatever UI you like, while being able to call back to the originating app for important actions.