I haven't released any personal projects for five years.
I've built plenty of prototypes, but none of them ever felt ready.
Here's what I've been doing, and what I'm going to do next:
btw the areas where you can start scrolling or resizing here are the same
we wait until you start dragging to detect your intention, based on whether the cursor moved more horizontally or vertically
@hiimmox@aidenybai it’s often possible to structure your UI so that the dynamic part of the content doesn’t affect the cumulative layout
when that isn’t possible, it’s best to target being correct for the most common case
I lead the dashboard team at Vercel
every day we ship some changes based on a feedback channel in our Slack
reply here with your feature requests, bug reports, or any other feedback and I'll forward it to that channel
we do this with overscroll-behavior: none
but we gate it behind a (pointer: fine) media query, so that it doesn’t impact touch devices. this means you can still pull to refresh on mobile
@jh3yy we started with an (any-pointer: coarse) query and changed it because of feedback from folks using Windows laptops w/ touchscreens 😅
limiting to the y axis is v good though, and imo you should only do this when you have full-height sidebars or other specific layouts
@RomanHauksson pointer media queries are evaluated against the primary pointing device, so it will still match (pointer: fine) in that case
https://t.co/clgzfd6XGL
we do this with overscroll-behavior: none
but we gate it behind a (pointer: fine) media query, so that it doesn’t impact touch devices. this means you can still pull to refresh on mobile
@dinokupinic@rauchg@JohnPhamous thank you for the feedback!
we’re working on improving the navigation on both desktop and mobile
for the small UI, lack of animations, etc. can you provide specific examples?
• date range
these allow users to select either a common time period (e.g. "this week") or to select a custom timeframe
the text in the search input is parsed when possible, and selecting the custom timeframe brings up a pointer-friendly calendar UI
when users type a query that we can't find a simple match for, we switch to determining the filters using AI
this is primarily done by:
• generating a zod schema based on the relevant filter definitions
• generating an object that matches that schema based on the user's query
but there is additional nuance, like:
• select/multi-select values are matched to their closest valid value on the server
• the LLM can include a special sequence to indicate that a value should match the current user
• dates are passed back raw to the client so that they can be parsed with the user's local timezone