
Maintainer of @Tan_Stack Query
Seoul, Republic of Korea
Joined June 2023
- Tweets67
- Following108
- Followers66
- Likes507
Jonghyeon Ko retweeted
Just launched/updated a bunch of new @Tan_Stack
shirts/sweatshirts/hoodies/etc!
๐งตโฌ๏ธ
All merch is zero-profit at cost of @cottonbureau and IMO, very high quality. Enjoy!
Jonghyeon Ko retweeted
๐๏ธ๋ชจ๋ฅ๋ถ EP.4: ์คํ์์ค ๊ธฐ์ฌํ๊ณ ํ ์ค ํฉ๊ฒฉํ.ssul
- ์คํ์์ค ๊ธฐ์ฌ, ์ค์ ๋ก ์ฑ์ฅ์ ๋์์ด ๋ ๊น์?
- ํด๋ณด๋ ค๋ ๋ง๋งํ๋ฐ, ์ด๋ป๊ฒ ์์ํ ๊น์?
- ํ ์ค๋ ์ ์คํ์์ค๋ฅผ ์ด์ํ ๊น์?
ํ ์ค ๊ฐ๋ฐ์๋ค์ด ์์ํ ์ด์ผ๊ธฐ๋ฅผ ๋ค๋ ค๋๋ฆด๊ฒ์.
youtu.be/SdBL-p597Dw?si=KtnNโฆ
Jonghyeon Ko retweeted
React์ฒ๋ผ ์ ๋๋ฉด ๊ธฐ์ ์ค๋์ญ๋ ๊ฟ๊บฝํ๊ณ ์์ฝ์์คํ
์์ ๊ณต์ง์ ์ฌ๋์ค๊ณ ๊ทธ๋ฐ ๊ฑฐ ๋๊ฐ ๋ชจ๋ฅด๋... ๊ทผ๋ฐ ๊ทธ๋ ๊ฒ ๋๋ ๊ฑด ์ง์ง ์์ ๊ผฝ๋๊ฑด๋ฐ ๊ทธ๋ผ์๋ ๊ณ์ ์คํ์์ค๋ก ๋ธ๋ค๋ ๊ฒฐ์ ์ ํด์ผ์ง ์ ๊ฒ ๋๋๊ฑฐ์ง
Jonghyeon Ko retweeted
From mdn:

ALT In practice, the exception you throw should always be an Error object or an instance of an Error subclass, such as RangeError. This is because code that catches the error may expect certain properties, such as message, to be present on the caught value. For example, web APIs typically throw DOMException instances, which inherit from Error.prototype.
Jonghyeon Ko retweeted
Using Bootstrap? Check out overlay-kit! ๐
It integrates smoothly with Bootstrap modals, tooltips, and popovers. No more hassle with modal state managementโoverlay-kit takes care of it.
@getbootstrap #opensource #webdev
overlay-kit.slash.page/
Jonghyeon Ko retweeted
es-toolkit, with 2-3 times faster runtime performance and up to 97% smaller bundle size compared to lodash, has surpassed 1,000 stars on GitHub and achieved the #1 Hot Project ranking on bestofjs.com. ๐
Huge thanks to the 31 contributors who have contributed!
Replying to @TossFrontend
Check out the new "es-toolkit" by Toss! This modern utility library is a big upgrade over the 10+ year old lodash. It's 2-3 times faster, has a bundle size up to 97% smaller, and includes robust types. ๐โจ
Learn more: github.com/toss/es-toolkit
Jonghyeon Ko retweeted
๐กReact์์ ์ค๋ฒ๋ ์ด๋ฅผ ๋ค๋ฃจ๋ ์ ์ธ์ ๋ฐฉ๋ฒ, overlay-kit
๋ชจ๋ฌ, ํ ์คํธ ๊ฐ์ ์ค๋ฒ๋ ์ด๋ฅผ React๋ก ๋ค๋ฃจ๋ ๊ฑด ์๊ฐ๋ณด๋ค ์ด๋ ค์์. ์ด๋ฆฌ๊ณ ๋ซํ ์ํ๋ฅผ ์๋ก ๊ด๋ฆฌํด์ผ ํ๊ฑฐ๋ ์.
ํ ์ค์์ ์ค๋ฒ๋ ์ด๋ฅผ ์ ์ธ์ ์ผ๋ก ์ฝ๊ฒ ๋ค๋ฃฐ ์ ์๊ฒ ๋๋ ์ ์คํ์์ค ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ๊ณต๊ฐํฉ๋๋ค.
github.com/toss/overlay-kit
Jonghyeon Ko retweeted
Replying to @tannerlinsley @tan_stack
What's really fun is that I implemented this experiment with a really tiny hook called `useStreamedQuery` that proxies `useSuspenseQuery`.
As I said, the production version of this hook will be more wholistic via the query client, but it illustrates the simplicity of the Router's data streaming capabilities.
Jonghyeon Ko retweeted
โ๏ธ Suspense๋ฅผ ์ ์ฐ๊ธฐ ์ํ ์ฐฐ๋ก๊ถํฉ ๋ผ์ด๋ธ๋ฌ๋ฆฌ, Suspensive
ํ์
์์ ํ useSuspenseQuery(), ์ฝ๊ฒ ์ฐ๋ <ErrorBoundary />, SSR ์์ ํ <Suspense /> ๋ฑ ๋ค์ํ ๋๊ตฌ๋ฅผ ์ ๊ณตํ๋ Suspensive๋ฅผ ๋ง๋๋ณด์ธ์.
ํ ์ค ํ๋ก ํธ์๋ ๊ฐ๋ฐ์๋ค์ด ์คํ ์์ค๋ก ์ด์ํ๊ณ ์์ด์.
github.com/toss/suspensive
Jonghyeon Ko retweeted
#ReactSummit afterparty #FreeSuspense
Jonghyeon Ko retweeted
๐ ์๊ณ ๋น ๋ฅธ ์ ํธ๋ฆฌํฐ ๋ผ์ด๋ธ๋ฌ๋ฆฌ, es-toolkit
10์ด์ด ๋์ lodash, ๋ ๊ฐ์ ํ ์ง์ ์ ์์๊น์? ํ ์ค์์ ํ๋์ ์ธ ๊ตฌํ์ es-toolkit์ ๊ณต๊ฐํ์ด์.
- 2~3๋ฐฐ ๋น ๋ฅธ ๋ฐํ์ ์ฑ๋ฅ์ ์ ๊ณตํด์.
- ์ต๋ 97% ์์ ๋ฒ๋ค ์ฌ์ด์ฆ๋ฅผ ๊ฐ์ ธ์.
- ๊ฒฌ๊ณ ํ๊ณ ์ ํํ ํ์
์ ๋ด์ฅํด์.
github.com/toss/es-toolkit
Jonghyeon Ko retweeted
๐ ํ ์ค Frontend Platform Engineer ๊ณต๊ฐ์ฑ์ฉ (~6/21)
ํ ์ค์ ํ๊ตญ, ์ ์ธ๊ณ์ ํ๋ก ํธ์๋ ๊ฐ๋ฐ์๋ค์ด ์ผํ๋ ๊ฐ๋ฐํ๊ฒฝ์ ํจ๊ป ๋ง๋ค์ด ๋๊ฐ ๋๋ฃ๋ฅผ ์ฐพ์์!
FE ๊ฐ๋ฐํ๊ฒฝ์ ๋ฒ๋ค๋ฌ๋ถํฐ ํด๋ผ์ฐ๋๊น์ง ์ฒด๊ณ์ ์ผ๋ก ๋ฐฐ์ฐ๋ฉฐ, ์ต๊ณ ์ UX์ DX๋ฅผ ์ ๊ณตํ๋ ํ๋ ์์ํฌ๋ฅผ ๋ง๋ค์ด ๋๊ฐ์.
toss.im/career/job-detail?joโฆ
Jonghyeon Ko retweeted
weird question, but if I want to credit someone in a commit via `Co-authored-by:`, is there a better way than searching for a commit of theirs on the CLI?
GitHub not showing this commit data on the web makes this really cumbersome it seems.
Jonghyeon Ko retweeted
Depth-based blur in CSS.
frosted-glass.shud.in (Chrome preferred)
Jonghyeon Ko retweeted
`iife(() => { return '...' })`
1 line utility to not count brackets brackets when making an IIFE
Jonghyeon Ko retweeted
Neat TypeScript trick:
type Satisfies<Expected, Actual extends Expected> = Actual
typescriptlang.org/play?#codโฆ
Jonghyeon Ko retweeted
a @tan_stack #react query question (@TkDodo, @tannerlinsley )
I've got fresh
"@tanstack/react-query": "^5.28.2"
- got a thin custom hook which directly returns useQuery result
- going into definitions of the properties (isLoading, isRefetching etc.)
- I'm moved to one out of few union members within node_modules/@tanstack/query-core/build/legacy/queryClient-UWB6EkqM.d.ts
QUESTIONS:
- what's the benefit of separate legacy/modern builds?
- how do I determine which one is used?
- (!) why do the properties NOT have JSDocs? (some have, like QueryFilters, but Query*Result seems super important here)
When it comes to the last one, I'd love to help (submit a PR, whatever) as long as you confirm they're really not there / I'm not messing something up.
All in all I'd really love to have docs there.
My original doubt was:
isPending vs isFetching vs isLoading vs isRefetching etc. None of posts I found were 100% clear on this...
TIA ๐
Jonghyeon Ko retweeted
๐ด Tired: enabled not doing any type narrowing
๐ Wired: the brand new skipToken ๐ฅ
Now available in v5.25.0






























![import { skipToken, useQuery } from '@tanstack/react-query'; const [filter, setFilter] = React.useState<Filter>() const { data } = useQuery({ queryKey: ['todos', filter], queryFn: () => fetchTodos(filter) : skipToken, enabled: !!filter, });](https://pbs.twimg.com/media/GH6pNToXkAAn0KF.png?name=small&format=webp)
![import { skipToken, useQuery } from '@tanstack/react-query'; const [filter, setFilter] = React.useState<Filter>() const { data } = useQuery({ queryKey: ['todos', filter], queryFn: filter ? () => fetchTodos(filter) : skipToken, });](https://pbs.twimg.com/media/GH6pU2wWsAA458C.png?name=small&format=webp)