►
From YouTube: FE Pairing - 20200925 - Optimizing Webpack Chunks
Description
In this video we discuss a lot about optimizing Webpack bundling chunks and observe that GraphQL is being loaded in every page specific chunk.
Here's the resulting MR:
https://gitlab.com/gitlab-org/gitlab/-/merge_requests/43421
A
Let
me
end:
okay,
hi
everyone,
I'm
just
closing
some
windows
and
moving
slack
windows
so
that
I
don't
expose
like
stuff
that
we
don't
want
to
have
on
the
recording,
like
private
messages
and
download
folders
and
nico
asked
asked
me
why
the
bundle
size
in
one
of
his
mr's
in
increased
like
dramatically
and
and
we're
going
to
have
a
look,
how
you
know
how,
if
you
get
such
a
report,
what
what
does
ip
actually
do
and
what
can
you
do
to
maybe
have
a
first
understanding
of
what
actually
happened.
A
So
you
can
see
here
here.
We
have
a
report,
the
bundle
size
here
increased
by
400
kilobytes
and
on
this
page
and
we're
basically
just
adding
a
few
graphql
things,
and
it
seems
really
weird
that
the
size
increased
that
much
so,
let's
dive
into
it.
So
generally,
if
you
have
this
bundle
size
report,
there
is
the
full
report
button
which
gives
you
a
nice
similar
view
to
the
markdown
comment.
A
But
what's
really
essential
is
that
here
you
have
a
list
of
all
the
chunks
that
are
actually
loaded
on
that
page
and
if
you
are.
A
So,
basically,
if
you're
going
on
the
pages
project,
settings
ci
cd
show,
all
of
these
chunks
are
loaded
and
the
size
to
the
right
is
everything
except
the
main
chunk,
and
this
is
historically
we
when
we
started
doing
the
bundle
size
review
and
maybe
we
should
change
it
in
the
future,
is
because
the
main
chunk
is
now
really
small
back
when
we
started
the
main
chunk
was
like
eight
megabytes
and
it
was
really
confusing
if
you
had
like
a
chunk
that
grew
from
eight
megabytes
to
you
know
eight
and
a
half
megabytes
and
you're
like.
A
Why
is
this
you
know
or
like
the
the
entry
point
right
terminology
is
hard.
It
was
a
bit
confusing,
but
now,
given
that
the
main
chunk
is
smaller,
we
might
be
able
to
edit.
Maybe
we
should
just
change
it
so
that
if
you
have
one
entry
point,
everything
is
considered
to
the
size
of
the
entry
point,
because
if
you
actually
look
at
the
size
of
the
largest
entry
points,
you
have
to
add
the
the
size
of
the
main
chunk
in
your
mind
right,
so
we're
not
loading
10
megabytes
here.
A
We're
loading
12
megabytes
and
then,
on
the
other
hand,
we're
also
not
loading
12
megabytes,
but
it's
less
because
this
is
the
raw
size
and
not
the
past
size.
The
path
size
would
be
very
interesting,
but
it's
very
hard
to
get
past
size
would
be.
How
much
characters
is
the
abstract
syntax
tree
right,
and
then
we
have
the
g
sub
size,
which
is
like
how
much
stuff
goes
down
the
pipeline.
A
So
actually,
what
would
be
interesting
is
the
past
size,
but
as
these
all
kind
of
depend
on
each
other,
you
know
if
we
send
four
megabytes
down
the
wire
and
it's
eight
megabytes
past
and
the
raw
size
is
10
megabytes.
You
know
it's
still
like
larger
is
larger.
So
right,
like
you,
can
you
you
know.
This
is
obviously
about
10
times
as
large
as
one.
B
A
A
Page
chunks,
so
yeah
now
now
also
some
more
things.
What
are
these
chunks
right?
So
the
main
chunk
is
the
chunk,
that's
loaded
on
every
page,
and
we
have
these
other
chunks,
so
you
can,
for
example,
clc.
This
is
basically
the
the
chunk.
That's
loaded
that
loads
the
stuff.
That's
just
on
the
page
and
I'm
putting
air
quotes
here
for
reasons
we
get
into
in
a
second
and
you
can
see
what
what
happens-
and
these
are
basically
the
comments.
A
Ones
are
shared
chunks,
so
you,
for
example,
see
hey
the
pages
project
licenses
index
and
pages
project
settings.
Ci
cd
apparently
share
some
code
and
that
shared
code
has
been
put
here.
So
if
you
actually
visit
this
page
and
then
go
to
that
other
page,
you
know-
and
this
whole
chunk,
let's
say
is
1.5
megabytes.
A
You
don't
don't
need
to
download
1.5
megabytes
again
right,
so
this
is
basically
like
the
thing
of
cash
ability
and
where
do
stuff
end
up
and
this
all
these
common
chunks
are
basically
chunks
that
are
magically
generated
by
webpack
got
it,
but
because
we
have
a
lot
of
entry
points,
it
might
be
that
these
common
strongs
are
sometimes
small
and
it
might-
and
this
is
what's
happened
here-
it
might
lead
a
situation
where
certain
things
don't
end
up
in
common
chunks
that
potentially
could
end
up
in
common
chunks
and
in
this
case
graphql.
B
A
A
few
things
here,
one
of
the
problems
is
that
we
recently
changed
it
because
before
we
just
had
like
four
or
five
common
chunks,
so
per
page,
and
now
we
have
a
higher
maximum
because
of
http
2.
We,
you
know
it
doesn't
really
matter,
it's
actually
good.
If
we
have
a
lot
smaller
chunks
that
get
delivered
over
the
pipeline,
because
those
chunks
were
those
chunks
can
be
delivered
in
parallel.
A
And
you
know,
computers
with
more
than
one
cpu
can
already
start
pausing
the
multiple
files
in
parallel
right,
there's,
obviously
a
downside
with
the
magic
here,
and
this
is
what
we're
going
to
see
in
a
second
I
I
think
it
doesn't
really
matter.
I
mean
in
the
end,
if
you
deliver
1.7
megabytes
of
javascript
on
this
page,
either
in
one
file
or
in
10
files
on
five
files
in
the
end,
you're
delivering
1.7
megabytes
of
javascript.
The
only
thing
that
I'm
concerned
here
with
the
graphql
stuff
is
hey.
We
use
graphql
in
more
pages.
A
So
I
wouldn't
want
to
put
it
in
the
main
chunk.
Actually
my
goal
would
be
in
the
future
or
the
general
goal
is.
The
main
chunk
should
be
as
tiny
as
possible,
because,
yes,
if
ninety
percent
of
the
pages
are
loading
graphql,
if
of
you
or
whatever
right,
it's
it's
cool
if
it's
in
the
main
chunk,
but
still
sometimes
you
have
pages
you
go
to
like,
let's
say
let's
say,
for
example,
I
don't
know
if
it's
the
reality,
I'm
just
making
up
an
example.
A
Yeah
if
you
are
on
the
login
page
and
the
login
page
is
just
a
normal
form
without
any
javascript.
Imagine
it
were
like
that.
I
don't
know
if
it
is
or
a
404
page.
Why
would
you
need
to
load
if
you
on
the
404
page
load
the
main
chunk,
because
the
main
chunk
is
loaded
on
every
page?
Why
would
you
want
to
load
graphql
on
a
404
page
or
the
sign-in
page?
A
If
you
don't
need
it
there
right,
so
that
makes
sense
and
it
sounds
like
the
cost
is
pretty
low
to
put
it
in
its
own
chunk.
Yes,
exactly
exactly
so.
What
have
I
done?
I
have
opened
the
compile
production
assets,
one
or
maybe
even
easier
is
you
can
go
to
the
bundle,
size
review
job
and
we
should
link
it
at
some
point.
A
But
the
bundle
size
review
actually
has
like
the
the
markdown
get
that
gets
put
in
and
the
html
page
that
we're
already
looking
at
here
right.
The
comparison
one
and
you
can
see,
there's
a
bundle
report
one
and
we
should
just
add
a
link,
because
the
bundle
report
is
the
one
and
I'm
increasing
my
font
size,
because
people
were
complaining
about
it
before
and
I'm
just
going
to
open
the
bundle
report
in
a
new
tab.
A
A
This
is
before
gt
yeah.
This
is
before
jesus
jesus
is.
Jesus
is
like
11.6
megabytes
across
all
of
the
javascript
right,
but
even
past
you
can
see
that
monaco
is
quite
big
and
so,
for
example,
the
problem
that
we
had
here
have
here
with
graphql
is
the
problem
that
we
had
before,
but
for
monaco
and
e
charts
and
that's
the
reason
why
we
put
in
monaco
and
e
charts
into
a
bundle,
because
it's
like
hey,
even
if
one
is
used
in
snippets
and
the
other
in,
is
used
in
the
web
ide.
A
It
probably
makes
sense
if
there's
just
like
one
bundle.
So
the
thing
that
I
usually
usually
do
here
is
I
deselect
everything
I
select
the
main
one
and
we
can
save
us
some
time.
I
basically
just
copy
the
file
names
here,
search
for
it
and
enable
it,
and
you
can
see
that
some
of
the
common
chunks
are
actually
quite
small
right
and,
let's,
let's
save
us,
you
know
adding
10
of
these,
because
if
we
add
the
last
one,
we
actually
see.
A
Aha
apollo
cache,
apollo
client
viewer
apollo,
and,
if
I'm
looking
here,
okay
73
98
56,
it
seems
pretty
reasonable
that
this
is
the
400
kilobytes
that
we're
seeing,
because
we
need
to
look
at
the
the
the
raw,
the
the
the
stat
size,
the
unpassed
size
right
and
here's
apollo
util.
So
we
can
see
that
all
in
a
po-
or
it
seems
like
I
mean
actually
all
of
the
new
modules
here,
more
or
less
right
or
most
of
them
not
modulus
here
is
like
hey
and
okay.
A
This
is
pretty
interesting
and
if
we
turn
on
all
chunks
again,
we
just
for
we
can
just
search
for
view
apollo
and
before
we
would
find
it
in
main.js,
but
main
js
is
really
tiny
now,
so
you
can
see.
Okay,
apparently
like
there
are
a
bunch
of
chunks
that
you
know
rem.
Have
you
apollo
and
you
know
like
static
site,
editor
cicd
show
sas
configuration
whatever
and
obviously
it's
not
bad.
A
The
only
thing
because
it
will
just
work
and
you
will
download
the
javascript
and
so
on.
The
thing
is
bad
is
like
hey.
If
I
go
to
the
milestone,
show
page
and
then
I
go
to
whatever
other
page
like
size,
configuration
or
the
idcd
shows
includes
also
the
graphql
package.
A
That
box
by
the
way
is
like
because
we
recently
changed
how
webpack
compiles
assets
before
webpack.
These
hashes
were
unique
for
each
compile,
so
there
isn't
long-term
caching,
but
if
we
actually
end
up
putting
viewer
apollo,
graphql
and
the
related
stuff
into
one
bundle
and
assume
we
don't
update
it
for
three
months
or
something
you
know,
there's
even
the
the
added
benefit
that
this
thing
might
be
catched
for
for
three
months
right,
while
if
it
ends
up
in
the
project,
setting
cicd
show
bundle
chunk,
I'm
always
saying
bundle,
but
I
mean
chunk.
A
C
So
just
ap
does
this
brings
any
consideration
when
we
update
one
of
those
thing
that
these
are
in
these
common
boxes.
So
if
do
we
need
to
do
a
special
procedure
for
it
to
be
sure,
no.
A
No,
no,
no,
this
will.
This
will
just
happen
automatically.
So,
for
example,
like
I
don't
know
how
often
we
update
each
other,
I
assume
it's
not
that
often
so
just
for
fun
we
could
go
back,
and
this
is
actually
something
that
you
know
long
term.
Cash
ability
is
not
a
big
concern
of
gitlab
because
I
don't
know
even
which
kind
of
cash
headers
we
serve,
so
it
could
even
be
that
our
cash
headers
say
10
minutes
anyway,
I
don't
know
we
even
include
like
the
checksum.
A
Yes,
yeah.
We
include
the
checksums
in
the
url,
but
also
I
think
there
are
etag
headers.
How
are
they
called?
So?
Let's
have
a
look,
for
example,
application
main
jazz
right,
so
cache
control
max
h.
Oh,
this
is
a
really
long
max
age,
so
it
is
definitely
beneficial
to
have
long
term
caching,
but
I
mean
it's
fine
right
because
as
soon
as
you
update
view
apollo,
the
next
deployment
on
gitlab.com
will
have
a
new
hash
in
the
file
name.
A
It
will
also
have
a
new
etag,
because
etags
are
based
on
the
contents
of
the
file
and
it
will
just
work
and
people
get
the
updated
bundle.
We
had
a
problem
in
the
past
like
three
four
years
ago
that
you
know.
Basically,
this
didn't
happen
so
that
the
browsers
you
know
were
getting
an
old
main.js
or
you
had
cached
an
old
main.js
and
nobody
told
the
browsers,
hey,
you
need
a
new
main.js
and
then
the
people
ran
into
errors,
because
the
other
code
changed
right.
That's
enough!
A
B
So
I
have
to
admit
that
this
is
like
the
first
time,
I'm
looking
at
the
bundle,
analysis,
stuff,
yeah
and
it's
really
cool
but
I'd
be
curious
to
know
what
do
we
do
for
axios,
because
that
seems
to
have
a
similar
use
usage
of
it's.
It's
something.
That's
spread
across
our
application,
that's
used
everywhere
and
it
makes
sense
kind
of
being
its
own
chunk.
But
so
exos
actually
ends
up
in
the
main
chunk,
and
this
is.
A
So,
let's,
let's
have
a
look
at
the
main
chunk,
because
the
main
chunk
is
really
it's.
The
thing
that's
stupid
about
the
main
chunk
is
that
it's
loaded
on
every
page.
It
contains
our
general
bootstrapping
on
every
page,
so
we
generally
try
to
remove
as
much
as
possible
from
the
main
chunk
right
and
we
are
even
some
things
and
the
reason
I
think
the
reason
why
we
had
a
graphql
in
the
main
chunk
before
is,
I
think,
the
obviously
there's
not
one
here
like.
A
I
think
these
pop
overs
are
using
graphql,
I'm
not
a
hundred
percent
sure,
but
something
something
something
uses
graphql,
that's
potentially
on
every
page.
We
just
made
it
so
that
it's
loaded
asynchronously
only.
I
think,
if,
if
like
one
of
these
elements
exists-
and
this
is
the
reason
why
it
isn't
in
the
main
bundle
pair
default
anymore-
and
it
could
potentially
happen
to
axios
as
well.
If
we
don't
do
a
single
axios
call
anymore
right
or
it
could
actually
happen
to
jquery.
A
B
A
What
we're
slowly
trying
to
get
rid
of
same
with
bootstrap
same
with.
We
want
to
have
view
in
a
smaller
bundle
right,
and
I
mean
it's
looking
like
views
a
little
bigger
than
jquery.
Yes,.
A
And
jakeberry
yeah,
no,
the
the
reason
why
vue
is
relatively
large
years
at
the
moment
we
still
add
a
version
of
view
that
also
has
a
live
template
compilation.
D
A
Yes
still,
I
just
deleted
a
few
today
and-
and
you
know
the
problem,
this
is
also
one
of
those
unfortunate
problems
where
it's
like
hey.
We
cannot
switch
to
this
smaller
view
thing
until
the
last
one
is
actually
removed
right,
yeah
similar,
like
font,
awesome
like
we
cannot
get
rid
of
the
font,
awesome
font
unless
we
have
removed
every
single
icon
right.
So
all
of
these
efforts
of
removing
font
awesome
at
the
moment
don't
yield
any
performance
benefits
until
we
have
removed
the
last
one
same
with
bootstrap
right.
B
And
they're
all
contributing
to
the
potential
performance
benefit
exactly
hey
natalia
view.
Three
is:
is
there
a
bundle
size
change
just
for
fun.
D
It's
smaller
and
it's
more
performant,
and
if
we
will
be
able
to
switch
the
composition
api,
at
least
partly
it
will
be
even
smaller
because
it
grows.
When
you
have
this
syntactic
sugar,
we
call
an
option
options,
api,
which
we
use
right
now
over
the
composition
api.
But
this
is
just
a
dream:
we
will
never
switch
the
composition.
Api
completely
still
bundle
size
is
smaller.
B
B
A
Think
it
doesn't
that's
that's
the
reason
why
we
now
load
the
performance
by
asynchronously.
So
if
we
would
have
view
in
a
separate
bundle,
it
would
actually.
Oh
you
want
to
load
the
performance
bar
okay.
Let
me
grab
view
for
you
and
the
performance
barcode
and
bring
it
together.
Okay-
and
you
know
often,
this
is
like
an
overhead,
especially
if
then
view
is
cached
is
an
overhead
of
10
milliseconds
right
and
also
one
thing
is
the
more
stuff
there
is
in
the
main
bundle.
A
B
A
A
It's
it's
it's
fine.
I
mean
I
kind
of
agree
with
you.
The
thing
is
we
really
trust
so
the
thing
is
we
really
trust
webpack
to
do
its
thing
in
a
smart
way,
but
the
crazy
thing
is:
we
have
328
entry
points
and
there
is
bound
to
be.
Then
we
have
stupid
things
that
skew
our
views
of
entry
points.
A
So,
for
example,
if
I'm
here
seeing
a
lot
of
similar
sizes
and
if
I
see
like
the
names
of
those
bundles,
I
assume
that
this
actually
could
just
be
one
entry
point
right,
but
the
way
how
our
entry
points
are
structured,
there's
no
deduplication
similar,
for
example,
with
all
the
pipelines
views
right
so
like
we
have
one
entry
point
for
each
of
the
pipelines,
views
and
so
webpack.
A
Also,
basically,
things
like
this
code
is:
if
there's
one
line,
that's
shared
just
between
those
seven
files,
right,
webpack,
think:
oh,
this
file
is
really
important
because
it's
you
know
queried
seven
times,
even
though
in
reality
we
actually
just
have
it
once
that's
interesting.
These
are
a
few
of
the
downsides
with
the
webpack,
smartness
and
webpack.
You
know
just
looks
at
the
current
snapshot
of
dependencies
in
code
that
you
have
webpack
doesn't
know
hey.
It
would
be
smart
to
bundle
view
in
a
different
bundle,
because
you
folks
update
vue
just
every
three
years.
A
B
A
But,
and
the
good
thing
is,
though,
the
config
is
rather
simple
yeah,
so
it's
like
okay,
maybe
maybe
we
can
be
smart
ourselves
and
don't
need
the
machines
to
be
smart
and
define
a
few
things
and
that's
a
good
point
right
all
right.
So
where
do
we
have
it
it's
somewhere
here
here
we
have
it
so
here
you
can
see.
We
have
these
cache
groups,
so
there's
the
split
chunks
plugin.
This
is
the
thing
that
splits,
the
chunks
and
there
we
have
a
definition
of
monaco
e
charts
security
reports,
vendors
comments.
A
These
are
all
the
chunks.
You
know
that
are
ending
up
in
all
of
the
things
comments,
comment
and
comments.
Now,
I'm
a
bit
confused
myself.
A
Okay-
and
this
is
like
the
stuff
that
ends
up
in
you
know
it
must
I
make
this-
is
the
main
chunk?
Yes
common.
So
this
is
a
bit
confusing
comments.
Are
the
different
ones
that
are
split
between
the
pages
and
the
common
chunks
or
comment
between
everything
is
the
chunk.
There
is
the
main
chunk
and
you
can
see
we
basically
have
a
really
smart
heuristic
is
like
hey
everything.
That's
on
ninety
percent
of
the
pages
is
going
to
end
up
on
the
main
track,
oh
cool.
A
A
I
would
give
it
a
priority
of
16,
because
I
think
it's
more
important
than
monaco
a
priority
basically
just
says
which
rule
is
going
to
be
taken.
So
if,
in
the
future
we
use
graphql
90
of
the
page
on
91
of
the
pages,
it
would
end
up
in
the
main
chunk
again.
Otherwise
you
know
right
now.
Yeah
I
mean
we
could
probably
make
it
higher
priority
to
force
it.
But
let's
just
you
know,
try
this.
A
For
now
we
can
iterate
on
it
and
let
mike
review
the
merge
request,
because
I
talk
all
day
and
he
actually
has
better
understanding
so
name
and
should
be
pretty
clear
right.
This
is
just
how
it's
going
to
be
named
this
chunks.
All
basically
just
does,
because
there
are
async
chunks.
If
you
have
the
dynamic
import
and
there
are
static,
chunks
and
chunks.
A
All
just
says:
hey
doesn't
matter
if,
like
something
async
uses
the
graphql
stuff
or
something
sync
uses
the
graphql
stuff
give
them
both
the
same
chunk
test
is
just
going
to
be
the
thing
that
test
is
just
going
to
be
the
thing
that
you
know
where
we're
going
to
cry,
because
we
have
to
write
a
regex,
and
I
think
we
can
just
copy
the
test
from
here
and
now
I
would
need
all
the
package
names
and
my
idea
would
be
that
these
are
view
apollo.
A
Okay
emo,
then
we
have
dot
okay.
This
is
going
to
be
a
bit
tricky,
so
we're
going
to
have
like
something
that
is
not
a
slash,
a
backslash
or
slash,
and
there
we
can
have
multiple
ones
right.
Then
we
have
apollo.
Then
we
going
to
have
this
thing.
B
A
B
Apollo,
what
was
the
other
stuff
right
and
it's
the
same
thing,
and
I
would
even
you
know
what
would
that
not
yeah
yeah?
I
would,
I
would
say
you
could
put
those
things
on
the
outside
and
what
we
could
even
do
to
be
kind
of
crazy
is
put.
If
we
really
want
emmer.
B
A
A
Let's
just
go
for
consistency
here,
graphql
you're,
saying
right:
it's
beautiful
okay,
so
I
think
that's
it.
To
be
honest,
the
only
question
now
would
be
like
production.
Now,
let's
find
no.
This
is
a
rake
assets.
A
Yes,
cool,
I
I
think
it's
even
yarn
run.
Let's
see
how
it's
named,
I
think
it's
even
called
webpack
product
yeah
and
we
won't
get
the
nice
bundle
size
analysis,
but
we
will
get.
We
can
just
look
which
files
are
going
to
be
generated
and
then
we
can
never
check
that
those
files
are
what
we
expect
them
to
be
right.
B
Cool,
well,
that's
awesome,
so
the
the
catalyst
for
us
making
this
change
was.
We
saw
that
bundle,
size,
increased
and
yeah,
because
graphql
was
being
included.
Yes,
we
realized.
All
of
these
entry
points
are
including
graphql.
We
should
put
this
in
its
own
chunk,
and
so,
if
we
see
bundle
size
increase
and
it's
not
because
of
a
new
library
or
something
like
that,
but
it's
because
okay,
here's
just
a
common
thing,
that's
kind
of
huge.
A
A
It's
going
to
be
cached,
it's
not
yeah!
Unless
you
always
just
visit
the
ci
cd
settings
that
you're
changing
and
it's
the
only
task
you
do
with
gitlab.
You
will
have
the
benefit
that
the
graph.
B
A
That's
a
really
really
good
good
call
out
the
problem
is
we
have
so
many
files
and
it's
really
hard
to
distinguish
and
we
could
potentially
we
could.
What
would
be
really
interesting-
and
I
know
I
don't
know
if
it
could
be
done-
it
probably
could
be
done,
is
if
we
really
compare
and
say
hey,
these
are
the
new
files
in
your
diff
right.
A
So
you
this
this,
the
400
kilobytes
are
coming
from
graphql
right,
yeah,
yeah,
the
only
way
how
you
could
have
done
it
is
essentially
opening
at
the
moment
the
bundle
report
for
the
mr
and
the
bundle
report
for
master
and
compare
what
is
the
difference
between
you
know
these
chunks,
which
is
sometimes
tricky
because
the
chunks
might
change
because
of
the
webpage
automatics
right.
B
A
Yeah,
so
it's
it's
just
a
bit
a
little
bit
of
experience
and
and
looking
into
it,
and
you
know,
I
think
the
first
thing
to
just
look
at
these
chunks
and,
for
example,
oh
now.
This
obviously
doesn't
do
anything
like
looking
at
this
chunk
and
be
like
hey
it's
it's
a
bit
weird
like
because
I
expect
this
chunk
to
be
rather
tiny
and
just
contain
the
page
specific
code.
Why
does
all
this
stuff
end
up
here
right.
B
Oh
there's
there's
one
apollo
cache
and
memory.
Oh,
but
that's
an
apollo
thing
we're
catching
up.
Yes,
apollo.
A
D
Is
not
a
polyfill.
This
is
an
implementation
on
which
apollo
cache
in
memory
works.
It
appears
should
be
a
pure
dependency
of
apollo
caching
memory.
If
it's
not
a
pure
dependency,
we
should
edit
as
well
because
they
have
their
own
implementation
of
observables.
It's
not
a
risk.
She
has
observables,
it's
unobservable,
yeah,
sorry
for
some
reason.
For
some
reason,
I
thought
it
should
be
included
into
apollo
cache
in
memory,
but
it
isn't.
Okay,.
B
A
This
is,
for
example,
like
with
the
echos
one,
with
the
e-charts
you're,
like
hey,
e-charts
and
z-render
right,
that
render
is
e-charts,
svg,
rendering
library
yeah
or,
for
example,
if
monaco
would
have
external
dependencies,
you
would
do
the
same
thing.
Yeah.
B
B
You
kind
of
mentioned,
like
webpack,
knows
like
hey.
This
line
of
code
is
only
used
here
like
I
feel
like
it
could
be.
I'm
I
I'm
a
bit
unsure
about
the
observer,
but
it
could
be
that
we
can
try
it
with
that,
we're
already
trying
without
it
and
then,
let's
see,
okay.
That
sounds
like
a
good
idea.
I
need.
I
need
to
step
away
for
one
minute
I'll,
be
right
back
thanks.
That's
good!.
A
A
It's
like
also
the
screen
share
has
not
happened.
I'm
just
going
to
stop
my
screen
share
for
a
second
until
until
this
thing
is
compiled,
just
experience
also
stop
my.
C
Decay
should
we
have
a
procedure
where,
when
we
see
that
that
during
maintainer
or
reviews-
and
we
see
a
big
increase,
we
should,
I
don't
know
open
an
issue
for
you
to
look
at
or
just
being.
A
I
mean
I'm
going
to
be
on
parental
leave
soon,
so
pinging
pinging
mic
is
also
helpful
and
I
mean
sometimes
sometimes
it
also.
The
problem
is
that
until
I
think
an
issue
would
make
sense
right,
especially
if
we
want
to
iterate
and
iterate
and
develop
a
feature.
I
think
the
only
thing
where
you
need
to
be
like
stop,
I'm
not
going
to
merge
this,
mr,
is
if
you
have
a
really
sudden
increase
on
main
js,
for
example
right.
A
I
mean
you're
you're
currently
in
this,
mr
changing
a
route
that
I
don't
know,
probably
someone
visits
once
a
year
yeah,
so
400,
kilobytes,
more
or
less,
probably
not
a
big
problem,
but
it
actually
is
as
right
now
and
every
time
I
see
a
big
bundle,
size
increase
it's
because
of
something
different
right,
yeah,
because
sometimes
dependencies
are
pulling
in
other
stuff.
That's
larger
than
expected.
A
We
had
that
recently
with
jsyarmel,
because
js
yama
ships
a
complete,
javascript
parser,
for
whatever
reason
the
reason
is
actually
stupid,
not
stupid,
but,
like
you
can
serialize
javascript
objects
into
yaml,
which
you
should
not
do,
and
what
safe
load
and
safe
dump
doesn't
do
right,
there's
load
and
dump
and
safe
load
which
doesn't
do
the
javascripty
stuff,
but
yeah,
because
that
package
is
not
tree
shakeable.
A
A
What
really
would
be
amazing
if
browsers,
should
graphql
support
by
themselves
so
that
you
don't
you
know,
need
to
include
like
looking
at
it
right
now
that
you
don't
need
to
include
the
whole
parser
and
stuff
yourself
right
similar
to
I
mean
the
one
big
benefit
of
jason.
Is
that
you
know
every
browser
just
supports
it
by
default,
and
you
don't
need
to
care
about.
You
know
getting
your
own
parser
in
and
so
on
and
so
on.
So
that's
kind
of.
B
This
that's
kind
of
related
to
the
original
dream
of
like
having
your
third
party
things
coming
from
a
cdn
like
when
jquery
was
around.
It
was
like.
Oh,
you
know,
all
of
your
clients
that
are
using
jquery.
They
can
load
on
this
page
and
it's
the
same
jquery.
That's
on
this
page
and
it's
like
because
it's
all
cached
from
this
centralized
cdn.
B
A
I
mean
the
first
thing
when
that
fell
apart
is
like
hey,
here's
a
different
version
and
then,
if
every
web
page
you
know,
one
is
like
loading
view:
2
6,
0,
the
other
2
6
11,
the
other
2
6
12,
and
this
is
where
it
already
falls
apart
and
then,
suddenly
you
know,
network
speeds
are
also
now
different.
Oh
yeah,
it
built
the
thing.
Network
speeds
are
now
different
and
faster
and
yeah.
Maybe
we
shouldn't
be
writing
so
much
javascript.
A
Yes,
no.
I
just
created
a
much
request
that
deletes
1
300
lines
and
I'm
so
happy
about
it.
Oh
wow
of
javascript,
mostly
javascript,
but
also
unused
hammer
views
speaking.
A
I
I
think
this
is
perfectly
the
way
I
would
probably
do
it,
and
I
don't
know
how
view
three
works
at
the
moment,
but
the
way
how
I
would
probably
do
it
is,
I
would
just
create
a
second
package
that
is
basically
just
a
proxy
for
view
right.
So
something
like.
Oh
no,
I
think
view
three
already
uses
ad
view
right,
so
it's
different
a
different
name
space
than
the
normal
view
right.
D
B
D
D
It
will
in
december,
probably
I
hope
so
in
compatibility
mode.
I
mean
this
is
for
internet
explorer,
because
if
compatibility
build
is
for
ie
11,
but
there
will
be
also
in
between
migration,
build
which
will
be
2.7,
and
we
will
probably
upgrade
to
this
one,
because
it's
backwards
compatible,
but
also
has
deprecation
warnings.
D
A
So
I
I
think
I
think
the
biggest
the
biggest
we
could
do
it.
We
would
just
need
a
good
migration
path
to
actually
migrate.
Most
of
our
view
code
over
right,
and
I
think
the
biggest
problem
will
stem
from
things
like
with
u3.
There
are
still
single
fire
components
or
we
would
likely
still
be
using
them
for
some
use
cases
right.
A
Okay,
exactly
so,
this
would
actually
be
a
problem
in
our
case,
because
if
you
now
have
a
bunch
of
view
files,
how
would
webpack,
for
example,
know
hey?
This
is
a
view
tooth
file,
and
this
is
a
view
three
file
right
and
stuff
like
that.
So
we
might
need
to
end
up
with
single
file,
components
that
are
named
w3
or
something-
and
you
know
we
might
the
hardest
thing
for
us
will
be
gosh.
We
need
to
maintain
two
versions
of
gitlab
ui
and
yeah.
D
D
A
Yeah,
to
be
perfectly
blunt,
the
idea
and
why
I
pushed
back
then
pushed
for
git
lab
ui.
A
In
a
separate
repository
and
wrapping
bootstrap
view
was
like
hey:
if
we
don't
change
the
api
of
gitlab
ui,
actually,
whether
you
wrap
bootstrap
view
or
wrap,
something
else
doesn't
really
matter.
So
obviously
we
could
just
start
working
and
completely
remove
bootstrap
view
from
gitlab
ui
and
just
have.
I.
B
Because
that's
a
good
call-
and
I
think
it
is
really
nice
that
we've
already
we
have
all
these
adapters
and
that
that
that's
already
in
place
is
really
nice.
But
what's
a
little
scary
is
we
haven't
been
explicit
with
the
adapters
and
so
there's
a
lot
of
implicit
behavior
of
bootstrap
view
that
we
depend
on
so
our
api.
B
We
haven't
necessarily
totally
defined
it.
It
is
still
coming
from
bootstrap
view,
but
we
can,
I
think,
probably
the
first
migration
step.
If
we
were
seriously
considering.
This
would
be
stop
implying
the
api
from
bootstrap
view.
We
need
to
do
explicitly
passing
props
through
whatever,
so
we
harden
our
api.
A
D
Yeah,
the
actually
the
author
was
was
kind
of
surprising
because
there
was
an
issue
asking
do
you
plan
a
migration
to
view
three
and
they're
like
yeah?
We
are
working
at
this
and
yesterday
they
fired
like
we
started
working
on
migrating.
The
library
and
the
code
of
bootstrap
view
is
like
completely
view
free
and
friendly.
A
A
Yes,
I
mean,
to
be
honest,
like
I
know,
a
company
that
has
quite
some
money
in
the
bank
and
uses
bootstrap
view
and
has
like
60
front-end
engineers.
What
was
their
name?
What
was
their
name
anyway?
Yeah
you
know
it's
like
you.
A
Be
honest
to
be
honest
like
given
the
state
that
view
is
in,
I
would
rather
have
us,
invest
in
the
ecosystem,
like
we've
run
into
the
limits
of
the
test
utils
before.
B
I'm
so
stoked
that
you're
saying
this
natalia.
This
is
my
idea
and
natalia
was
like
no
there's
a
community.
There.
A
B
A
search
for
the
observable
stuff
like
was
it
was
it
called,
but
did
you
re-run
after
you
added
the
query.
A
Yeah,
maybe
not
I
don't
know
it's
it's
hard
to
guess.
I
would
say:
let's
just
push
it
and
be
a
bit
more
explicit
about
the
zen
observable
and
have
it
in
there.
No,
but
it
was.
B
B
A
Let's
do
it
differently.
Let's
look
at
the
project
settings
ci
cd
show
thing
pages,
save.
C
A
Projects
settings
ci
cd,
show.
A
Okay,
things
here
copy
relative
path.
B
A
B
A
It
took
everything
out
right:
yes,
it
took
almost
everything
out
could
be
that
still
some
good
lab
ui
is
in
there
or
something
but
yeah.
There
is
view
x,
probably
in
there,
but
it's
difficult,
I
think
view
x
is
probably
if
we
actually
look
here
view
x
is
by
the
way
we're
really
smart
that
we're
looking
at
this
bundle,
because
it
makes
no
sense,
because
I
didn't
branch
off
your
branch,
so
we
will
never
find
graphql
in
here.
A
A
Oh
yeah
pages,
ide
apollo,
I
mean
no
import
words
had
as
imports.
Yeah
imports
is
fine,
I
mean.
Maybe
I
should
look
at
the
size
of
it
and
just
you
know,
copy
relative
path.
I
think
the
easiest
actually
will
be,
and
I'm
now
angry
at
myself
that
I
just
didn't
push.
While
we
did
the
thing
470
kilobytes
pages
ide.
Where
do
we
have
pages
dot?
A
A
Yes,
exactly
I
mean
this
had
nothing
to
do
with
graphql
by
the
way
right.
It's
just.
B
Yeah,
so
this
was
super
educational.
This
is
a
really
interesting
way
of
you
know.
I
don't.
I
don't
think
about
this
problem
a
lot.
So
I
appreciate
you
bringing
up
this
issue.
A
Yeah,
let's
all
thank
nico
for
yeah.
C
B
We're
not
just
you
know,
brushing
past
that
that
was
that
was
good.
Reading
the
error
messages.
A
Oh
no
graphql
and
related
dependencies
get
included
multiple
times
into
different
chunks.
A
Latino
no,
this
is
this
is
a
new
into
where
you
can
directly
define
urls
and
the
dependencies.
A
I
see
into
different
trends
by
manually
defining
a
graphql
chunk.
We
can
increase
cash
ability.
B
Ability
to
be
an
ip,
so
let
me
ask
you
another
another
question
of
just
while
we're
talking
about
this
problem.
Let's
say
someone
sees
that.
Oh,
I
increase
the
bundle
size.
I
can
improve
things
by
adding
a
chunk
and
they're
just
kind
of
doing
this
on
their
own.
They
create
some
are
that
chunks
decides
to
chunk
things
based
on
a
certain
test
and
it
hits
a
container's
desk
that
doesn't
actually
know
you
know
like.
I
don't
really
have
a
whole
lot
of
expertise
here.
A
Think
you
know,
if
you
don't
know
about
the
stuff
as
a
maintainer.
That's
completely
fine,
because
you
don't
know
everything
so
yes,
asking
for
an
expert
would
be
good.
It
would
also
be
good
maybe
to
raise
awareness
of
this
session
or
what
we've
done
here
in
the
maintainer
call,
so
that
people
learn
about
it
and
then
you
know,
I
think
I
think
we
need
to
educate
folks-
and
I
don't
know
this
is
a
problem
that
I
had
in
previous
companies
and
so
on.
A
It's
like
this,
this
understanding
of
how
our
assets
are
delivered
right,
not
everybody
needs
a
hundred
percent
of
under
understanding
of
that,
but
yeah
and
you
know
cash
ability
and
stuff
this.
A
These
are
all
things
and
there
are
like
multiple
considerations
here
like
because,
if
it's
like
a
whole,
basically
all
this
apollo
stuff
in
graphql
always
comes
together
in
one
chunk
right,
while
in
other
cases
it
might
not
have
made
sense,
for
example
with
gitlab
ui,
we
don't
want
to
deliver
one
big
gitlab
ui
chunk
all
the
time,
because
some
of
the
gitlab
ui
components
like
charts
are
rather
large
and
we'd.
A
Rather
have
you
know
the
total
of
gitlab
ui
is
rather
large,
but
the
individual
stuff,
that's
loaded
on
the
on
on
pages,
is
rather
tiny
right.
But
here
the
downside
is
really
like.
Oh
gosh
in,
like
I
don't
know
how
many
these
are,
but
we
basically
loaded
it
like
20
times
right
in
an
ideal
world,
and
that
would
be
amazing,
but
I
don't
know
how
much
processing
power
and
understanding
it
takes.
A
We
would
have
each
dependency
exactly
once
somehow
in
this
view,
but
yeah
I
don't
know
how
to
achieve
it
and
because,
on
the
other
side
like
I,
you
know,
you
don't
want
to
create
like
send
down
500
javascript
files.
B
Right
plus,
if
you,
if
you're
paying-
and
I
don't
know
if
how
accurate
this
is
but
like
that
does
mean
that
your
point,
you
now
have
one
point
of
failure
and
the
chances
that
it's
going
to
fail.
If
I
hit
it,
20
times
is
less
than
the
chances
it's
going
to
fail.
If
I
hit
500
times
so,
I
do
think
that
there
is
a
motivation
for
not
chunking
all
the
things,
but
these
this
kind
of
iterative
approach
of
like
here's,
an
opportunity,
let's
take
it.
That
makes
a
lot
of
sense.
B
A
Yeah
definitely-
and
it's
it's
just
something
that
we
need
to
that.
We
need
to
improve
upon
and,
to
be
honest,
I
think
for
maintainers.
You
also
need
to
think
about
what
is
changing
right.
Then
it's
highlighted
so
now
we
can
say
the
most
important
things
at
the
end,
just
between
the
two
of
us.
A
No,
so,
for
example,
one
example
that
I
want
to
give
is
like-
and
this
is
what
I
mentioned
earlier
right,
even
if
that
page
grew
by
400
kilobyte,
and
it's
because
you
know
I
don't
know
someone
added
a
new
dependency
that
you
know
contains
the
color
blue
500
times.
It's
not
that
bad,
because
it's
a
root
projects
settings
the
icd
show
you
visit
that
route
five
times
a
year.
A
Balsamic
viewer
is
gargantuan.
Pdf
viewers
are
gargantuan,
but
it's
not
a
use
case
that
someone
is
like
hey.
I
review
thousands
of
pdf
files
all
day
with
gitlab
right,
but
if
suddenly
the
issues
list
page
and
the
merge
request
page
increased
by
a
hundred
megabytes,
you
know
it's,
that's
like
really
bad,
and
it's
also,
you
know-
and
this
is
actually
you
know,
merge
request-
show-
is
7.31
megabytes,
but.
A
Then
you
should,
then
you
should
load
monaco
and
keep
the
size
small.
Then
you
should
load
monaco
when
the
user
requests
it
right.
For
example,
we
actually
have
some
code
in
there
for
resolving
merge
conflicts
and
I
think
the
code
for
resolving
merge
conflicts
is
loaded
every
time
you
don't
need
to
resolve
much
conflicts
every
time
in
the
ui
in
right
or
like
these
e
chart
stuff,
like
we
have
these
nice
little
charts
in
nursery
quest
right
that
you
know
and
each
other's
ridiculously
large.
A
B
A
A
You
know
once
a
user
actually
focuses
this
thing
or
we
can
maybe
defer
the
loading
a
little
bit,
because
you
don't
you
know,
you're
not
like
bam
and
immediately
can
enter
something
right,
yeah
and
then
only
that
only
takes
effect
when
you're
previewing,
something
too
right.
Yes,
yeah,
I
bet
no
gitlab.
Flavored
markdown
is
also
the
autocompletion
and
stuff.
Oh
right.
B
Right,
no,
that's
that's
a
good
point!
Well,
hey,
there's!
So
much
so
much
praise
for
setting
these
watcher
things
up
because
yeah
this
is
so
off
my
radar
of
thinking
of
like
maintainability
and
sharing
code.
That's
a
good
thing!
Balancing
with
this
is
a
huge
deal,
and
so
this
is
awesome
that
we
we
have
the
bells
going
off
when
when
things
do
happen,
that's.
A
The
cool
thing
is,
and
actually
I
thought
about
it-
we
actually
record
the
bundle
size
on
master
and
I
wanted
to
build
a
pipeline
that
runs
once
a
week
that
just
you
know,
does
a
comparison
to
the
previous
result
from
the
previous
week
and
then
we
could
just
be
like
hey,
oh
look
what
happened
last
week
and
you
know
because
then
it's
okay,
if
you
missed
something
or
we
can
create
issues
for
it
right,
yeah.
B
But
I'm
probably
gonna
try
to
motivate
you
to
write
it
in
dino,
anyways,
hey
I'll
catch
you
later
ip.
This
is
a
lot
of
fun
thanks
for
hopping
on.